## Takes a quantiles.py configuration file and generates separate ## quantiles for each model. ## Syntax: python iterquant.py <quantile-config>.yml import os import yaml from lib import results, configs, impacts config = configs.read_default_config() allimpacts = config['only-impacts'] if config.get('only-impacts', 'all') != 'all' else impacts.allimpacts print "Collecting all available models." allmodels = set() for (batch, rcp, model, realization, pvals, targetdir) in configs.iterate_valid_targets(config, allimpacts, verbose=False): allmodels.add(model) outdir = config['output-dir'] if not os.path.exists(outdir): os.mkdir(outdir) for model in allmodels: print "Processing", model modeloutdir = os.path.join(outdir, model) if not os.path.exists(modeloutdir): os.mkdir(modeloutdir) config['output-dir'] = modeloutdir config['only-models'] = [model] config['allow-partial'] = 1
vectransforms.append(lambda x: -x) else: basenames.append(basename) transforms.append(lambda x: x) vectransforms.append(lambda x: x) # Collect all available results data = {} # { filestuff => { rowstuff => { batch-gcm-iam => value } } } observations = 0 if config.get('verbose', False): message_on_none = "No valid target directories found" else: message_on_none = "No valid target directories found; try --verbose" for batch, rcp, gcm, iam, ssp, targetdir in configs.iterate_valid_targets( config, basenames): message_on_none = "No valid results sets found within directories." print targetdir # Ensure that all basenames are accounted for foundall = True for basename in basenames: if basename + '.nc4' not in os.listdir(targetdir): foundall = False break if not foundall: continue # Extract the values for ii in range(len(basenames)): try:
combine_years = np.mean else: combine_years = lambda x: x if not os.path.exists(outdir): os.mkdir(outdir) for impact in allimpacts: print impact # Collect all available results data = { } # { rcp-year0 => { region => { batch-realization => { model => value } } } } for (batch, rcp, model, realization, pvals, targetdir) in configs.iterate_valid_targets(config, [impact]): print targetdir collection = batch + '-' + realization # Extract the values for region, fp in bundles.iterate_bundle(targetdir, impact, suffix, working_suffix): if do_yearsets: values = bundles.get_yearses(fp, yearses) else: values = bundles.get_years(fp, years, column=column) if not values: continue
if do_yearsetmeans: combine_years = np.mean else: combine_years = lambda x: x if not os.path.exists(outdir): os.mkdir(outdir) for impact in allimpacts: print impact # Collect all available results data = {} # { rcp-year0 => { region => { batch-realization => { model => value } } } } for (batch, rcp, model, realization, pvals, targetdir) in configs.iterate_valid_targets(config, [impact]): print targetdir collection = batch + "-" + realization # Extract the values for region, fp in bundles.iterate_bundle(targetdir, impact, suffix, working_suffix): if do_yearsets: values = bundles.get_yearses(fp, yearses) else: values = bundles.get_years(fp, years, column=column) if not values: continue if do_yearsets:
## Syntax: python iterquant.py <quantile-config>.yml import os import yaml from lib import results, configs, impacts config = configs.read_default_config() allimpacts = config['only-impacts'] if config.get( 'only-impacts', 'all') != 'all' else impacts.allimpacts print "Collecting all available models." allmodels = set() for (batch, rcp, model, realization, pvals, targetdir) in configs.iterate_valid_targets(config, allimpacts, verbose=False): allmodels.add(model) outdir = config['output-dir'] if not os.path.exists(outdir): os.mkdir(outdir) for model in allmodels: print "Processing", model modeloutdir = os.path.join(outdir, model) if not os.path.exists(modeloutdir): os.mkdir(modeloutdir) config['output-dir'] = modeloutdir