#!/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 = 9, 'year' #lowpass = lambda x: x.filter.lowpass(1/nwindow, dim=dimlp, padtype='odd') lowpass = lambda x: x.rolling(year=nwindow, center=True, min_periods=1).mean() if x.year.size>9 else x import geoxarray # if __name__ == '__main__': tt.check('end import') # #start from here #daname = 't_surf' from modelout.getdata import funcs daname = None #get_kws_from_argv('daname', 'blk_crb_col') #qo3_col clearsky = True if 'clearsky' in sys.argv else False funcname = 'netrad_toa_clr' if clearsky else 'netrad_toa' #get_kws_from_argv('funcname', 'glbmean') #func = lambda x: x.load().geo.fldmean() def netrad_toa(ds): if clearsky: da = ds.swdn_toa_clr - ds.swup_toa_clr - ds.olr_clr else: da = ds.swdn_toa - ds.swup_toa - ds.olr da = da.rename(grid_xt='lon', grid_yt='lat').load() da = da.geo.fldmean() da.attrs['units'] = 'W/m^2' if clearsky: da.attrs['long_name'] = 'glbmean netrad_toa_clr' else: da.attrs['long_name'] = 'glbmean netrad_toa' return da func = netrad_toa #funcs[funcname] dsname = 'atmos_month' 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_ctl = da das = []; labels = [] # expname = 'CTL1990_BC_lat0_L8_0p1Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L8_0p1Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L6_0p1Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L6_0p1Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L2_0p1Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L2_0p1Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L8_0p2Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L8_0p2Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L6_0p2Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L6_0p2Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L2_0p2Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L2_0p2Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L8_0p5Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L8_0p5Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L6_0p5Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L6_0p5Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L2_0p5Tg_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L2_0p5Tg_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L6_Y0011plus_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L6_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) # expname = 'CTL1990_BC_lat0_L6_Y0011_tiger3_intel24ifort_openmpi_1536PE' da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname)#, odir='BC_lat0_L6_Y0011plus') das.append(da) labels.append(expname.split("_tiger3")[0]) if __name__ == '__main__': from wyconfig import * #my plot settings pct = True if 'pct' in sys.argv else False #ctl fig,ax = plt.subplots(figsize=(8,4)) with xr.set_options(keep_attrs=True): da_ref = da_ctl.groupby('time.month').mean('time') for da_bc,label in zip(das, labels): if pct: daa = ( da_bc.groupby('time.month')/da_ref - 1) *100 daa.attrs['units'] = '%' else: daa = da_bc.groupby('time.month') - da_ref daa.plot(label=label) ax.axhline(0, color='gray', ls='--') title = f'{model} {funcname} anom' ax.set_title(title) ax.legend(loc='upper left', bbox_to_anchor=(1,1)) #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__{funcname}_anom.png') if pct: figname = figname.replace('_anom.png', '_pct.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()