#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Wed Oct 5 11:09:59 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 modelout import get_modelout_data, update_modelout_data from misc import get_kws_from_argv import xfilter nwindow, dimlp = 12*1, 'time' lowpass = lambda x: x.filter.lowpass(1/nwindow, dim=dimlp, padtype=None) #lowpass = lambda x: x.filter.lowpass(1/nwindow, dim=dimlp, method='gust') #lowpass = lambda x: x.rolling(year=nwindow, center=True, min_periods=1).mean() if x.year.size>9 else x import geoxarray from misc.seasons import sel_season # if __name__ == '__main__': tt.check('end import') # #start from here season = get_kws_from_argv('season', 'annual') #daname = 't_surf' from modelout.getdata import funcs daname = get_kws_from_argv('daname', 'qo3')# 'blk_crb') #temp,qo3 funcname = get_kws_from_argv('funcname', 'glbmean') #func = lambda x: x.load().geo.fldmean() func = funcs[funcname] dsname = 'atmos_month' if daname in ('blk_crb'): dsname = 'atmos_month_aer' model = 'AM4.1' expname = 'CTL1990_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='CTL')#, years=range(100,201)) da_ctl1990 = da expname = 'CTL1990v202604_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='CTL')#, years=range(100,201)) da_ctl1990v202604 = da units = da.attrs['units'] if __name__ == '__main__': from wyconfig import * #my plot settings #ctl fig,axes = plt.subplots(1,2)#figsize=(8,4)) yname = 'lat' if funcname=='zonalmean' else 'pfull' with xr.set_options(keep_attrs=True): ax = axes[0] #ctl1990 da = da_ctl1990 da = da.sel(time=slice('0011', None)).pipe(sel_season, season).mean('time') if yname == 'lat': da.plot(x=yname, label='CTL1990', ax=ax) else: da.plot(y=yname, yincrease=False, yscale='log', label='CTL1990', ax=ax) #ctl1990v202604 da = da_ctl1990v202604 da = da.sel(time=slice('0002', None)).pipe(sel_season, season).mean('time') if yname == 'lat': da.plot(x=yname, label='CTL1990v202604', ax=ax) else: da.plot(y=yname, yincrease=False, yscale='log', label='CTL1990v202604', ax=ax) ax = axes[1] da = da_ctl1990v202604.sel(time=slice('0002', None)).pipe(sel_season, season).mean('time') \ - da_ctl1990.sel(time=slice('0011', None)).pipe(sel_season, season).mean('time') if yname == 'lat': da.plot(x=yname, label='CTL1990v202604$-$CTL1990', ax=ax, color='C2') else: da.plot(y=yname, yincrease=False, yscale='log', label='CTL1990v202604$-$CTL1990', ax=ax, color='C2') title = f'{model} {funcname} {season} {daname}' axes[0].set_title(title) #ax.legend(loc='upper left', bbox_to_anchor=(1,1)) for ax in axes: ax.legend() #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__{daname}_{funcname}.png') if season != 'annual': figname = figname.replace('.png', f'_{season}.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) tt.check(f'**Done**') print() if 'notshowfig' in sys.argv: pass else: plt.show()