Skip to content

Commit

Permalink
Fix bug when single predictand
Browse files Browse the repository at this point in the history
  • Loading branch information
jvegreg committed Jun 11, 2024
1 parent c401483 commit 9c3c20a
Showing 1 changed file with 18 additions and 14 deletions.
32 changes: 18 additions & 14 deletions esmvaltool/diag_scripts/spy4cast/mca.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,43 +50,47 @@ def main(cfg):
if len(variables['predictand']) == 1:
predictand = variables['predictand'][0]
z = Dataset(name=predictand['filename'], folder=cfg['work_dir']).open(var=predictand['short_name'])
z_ppcessed = spy4cast.Preprocess(z)
z_ppcessed = spy4cast.Preprocess(z, period=7, order=4)
z_ppcessed.save(f'preprocessed_z_{predictand["alias"]}', folder=cfg['work_dir'])
single_predictand = True
single_predictand = True #Por si cogemos uno solo, sino nos vamos al alias que tiene toda la info. El Slice lo haces en la recipe, en la receta metes el predictando y el predictor

groups = group_metadata(input_data, 'alias', sort='alias')
for dataset in groups:
# logger.info("Processing dataset %s", dataset)
logger.info("Processing dataset %s", dataset)
variables = group_metadata(groups[dataset], 'variable_group')
if 'predictor' not in variables or 'predictand' not in variables:
logger.info(f"Dataset {dataset} incomplete: variables: {variables.keys()}")
if 'predictor' not in variables:
continue
predictor = variables['predictor'][0]
predictand = variables['predictand'][0]
if single_predictand:
if 'predictor' not in variables:
logger.info(f"Dataset {dataset} does not have predictand: {variables.keys()}")
continue
else:
if 'predictor' not in variables or 'predictand' not in variables:
logger.info(f"Dataset {dataset} incomplete: variables: {variables.keys()}")
continue

predictor = variables['predictor'][0]
y = Dataset(name=predictor['filename'], folder=cfg['work_dir']).open(var=predictor['short_name'])
# y.q(Region(-5, 10, -30, -10, Month.JUN, Month.JUL, 1850, 2000), skip=0)
y_ppcessed = spy4cast.Preprocess(y)
y_ppcessed = spy4cast.Preprocess(y, period=7, order=4)
y_ppcessed.save('save_preprocessed_y_', folder=cfg['work_dir'])

if not single_predictand:
predictand = variables['predictand'][0]
z = Dataset(name=predictand['filename'], folder=cfg['work_dir']).open(var=predictand['short_name'])
# z.slice(Region(35, 45, 345, 360, Month.JUN, Month.JUL, 1850, 2000), skip=0)
z_ppcessed = spy4cast.Preprocess(z)
z_ppcessed = spy4cast.Preprocess(z, period=7, order=4)
z_ppcessed.save(f'preprocessed_z_{predictand["alias"]}', folder=cfg['work_dir'])

nm = cfg['modes']
alpha = cfg['alpha']
mca = spy4cast.MCA(y_ppcessed, z_ppcessed, nm, alpha)
mca = spy4cast.MCA(y_ppcessed, z_ppcessed, nm, alpha, sig='monte-carlo', montecarlo_iterations=10)
#mca = spy4cast.MCA(y_ppcessed, z_ppcessed, nm, alpha)
logger.info("Saving MCA...")
mca.save(f'mca_{dataset}', folder=cfg['work_dir'])
mca.save(f'mca_{dataset}', folder=cfg['work_dir']) #Aquí es donde lo guarda
logger.info("Plotting...")
mca.plot(save_fig=True, cmap='viridis', folder=cfg['plot_dir'], name=f'mca-{dataset}.png')
logger.info('Finished!!!')

if cfg['cross_validation']:
if cfg['cross_validation']: #Meter cross si podemos
cross = spy4cast.Crossvalidation(y_ppcessed, z_ppcessed, nm, alpha)
cross.save(f'cross_{dataset}', folder=cfg['work_dir'])
cross.plot(save_fig=True, folder=cfg['plot_dir'], name=f'crossvalidation-{dataset}.png')
Expand Down

0 comments on commit 9c3c20a

Please sign in to comment.