#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Fri Jun 20 02:33:46 PM EDT 2025 if __name__ == '__main__': import sys,os try: from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] start ' + ' '.join(sys.argv)) except: pass import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports wython = '/tigress/wenchang/wython' if wython not in sys.path: sys.path.append(wython); print('added to python path:', wython) #from misc import get_kws_from_argv from modelout import get_modelout_data from modelout.getdata import funcs from misc.landmask import whereland from geoplots.cartopy.api import cartoproj # if __name__ == '__main__': try: tt.check('end import') except: pass # #start from here funcname = 'annualmax' func = funcs[funcname] daname = 'precip' model = 'AM2.5C360' expname = 'amipHadISSTrcp45_tigercpu_intelmpi_18_1080PE' ens = range(6,6+1) dsname = 'atmos_daily' da = get_modelout_data(daname=daname, model=model, expname=expname, ens=ens, years=range(2001,2020+1), dsname=dsname, func=func, funcname=funcname) da_ref = da da = get_modelout_data(daname=daname, model=model, expname=expname, ens=ens, years=range(2081,2100+1), dsname=dsname, func=func, funcname=funcname) def wyplot(ax=None, **kws): units = lambda x: x.assign_attrs(units=da.attrs['units'])#, long_name='specific humidity') vmax = None #5 cmap = 'BrBG' proj = cartoproj('robin') dproj = cartoproj('cyl') if ax is None: ax = plt.axes(projection=proj) daa = da.mean('time') - da_ref.mean('time') im = daa.pipe(whereland).pipe(units).plot(ax=ax, transform=dproj, extend='both', vmax=vmax, center=0, cmap=cmap, robust=True, **kws) title = 'AM2.5C360 annual max of daily mean precip\n change from 2001-2020 to 2081-2100' ax.set_title('') ax.set_title(title, loc='center') return im if __name__ == '__main__': from wyconfig import * #my plot settings wyplot() #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) try: tt.check(f'**Done**') except: pass print() if 'notshowfig' in sys.argv or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()