#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Sat May 7 11:36:44 EDT 2022 if __name__ == '__main__': import sys from misc.timer import Timer tt = Timer('start ' + ' '.join(sys.argv)) import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports from misc.modelout import get_modelout_data_ens # if __name__ == '__main__': tt.check('end import') # #start from here def get_kws_from_argv(key, default=None): """get kws from sys.argv, e.g. daname='precip' """ kws = [s for s in sys.argv if s.startswith(f'{key}=')] if kws: value = kws[-1].split('=')[-1] print(f'{key}={value}') return kws[-1].split('=')[-1] else: print(f'{key}={default}') return default #model and experiment model = 'AM2.1p1' model = get_kws_from_argv('model', model) expname = 'LMR2019SST1551_ens_tigercpu_intelmpi_18_30PE' #if get_kws_from_argv('expname') is None else get_kws_from_argv('expname') expname = get_kws_from_argv('expname', expname) ens = range(1,5+1) ens = get_kws_from_argv('ens', ens) if type(ens)==str: start,stop = [int(s) for s in ens.split(':')] ens = range(start,stop+1) years = range(1551,1650+1) #daname = 't_ref_max' #if 't_ref' in sys.argv: # daname = 't_ref' #default is t_ref_max daname = 'precip' #if get_kws_from_argv('daname') is None else get_kws_from_argv('daname') #dsname = 'atmos_daily' dsname = 'atmos_month' #specific event definition #funcname = 'Pernambuco' #5S-10S, 34.5-36W #func = lambda x: x.sel(grid_xt=slice(360-36, 360-34.5), grid_yt=slice(-10, -5)).load() #funcname = 'UK' #51.25-54N, 3.5W-0.5E funcname = 'monthly' #20-40N, 60-90E #func = lambda x: xr.concat([x.sel(grid_xt=slice(360-3.5, None), grid_yt=slice(51.25, 54)).load(), # x.sel(grid_xt=slice(None,0.5), grid_yt=slice(51.25, 54)).load()], dim='grid_lon') #func = lambda x: x.isel(grid_xt=(x.grid_xt>=(360-3.5))|(x.grid_xt<=0.5)).sel(grid_yt=slice(51.25, 54)).load() func = lambda x: x.load() #get data da = get_modelout_data_ens(daname=daname, model=model, expname=expname, ens=ens, years=years, func=func, funcname=funcname, dsname=dsname, loop_files=True) if __name__ == '__main__': #from wyconfig import * #my plot settings #savefig if len(sys.argv)>1 and 'savefig' in sys.argv[1:]: figname = __file__.replace('.py', f'.png') if 'overwritefig' in sys.argv[1:]: wysavefig(figname, overwritefig=True) else: wysavefig(figname) tt.check(f'**Done**') print() #plt.show()