#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Mon May 20 13:11:12 EDT 2024 if __name__ == '__main__': import sys,os from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] 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 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, roll_lon # if __name__ == '__main__': tt.check('end import') # #start from here daname = get_kws_from_argv('daname', 't_surf') case_2k = True if '2k' in sys.argv else False years = range(101, 150+1) ifiles = [f'/tigress/wenchang/MODEL_OUT/AM2.1/CTL1990_tigercpu_intelmpi_18_30PE/POSTP/{year:04d}0101.atmos_month.nc' for year in years] da = xr.open_mfdataset(ifiles)[daname].load().mean('time', keep_attrs=True) da0 = da if case_2k: ifiles = [f'/tigress/wenchang/MODEL_OUT/AM2.1/CTL1990_plus2K_tropATL_tigercpu_intelmpi_18_30PE/POSTP/{year:04d}0101.atmos_month.nc' for year in years] da = xr.open_mfdataset(ifiles)[daname].load().mean('time', keep_attrs=True) else: ifiles = [f'/tigress/wenchang/MODEL_OUT/AM2.1/CTL1990_plusP5K_tropATL_tigercpu_intelmpi_18_30PE/POSTP/{year:04d}0101.atmos_month.nc' for year in years] da = xr.open_mfdataset(ifiles)[daname].load().mean('time', keep_attrs=True) if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot fig,ax = plt.subplots() cmap = 'BrBG' if daname == 'precip' else None daa = (da - da0).assign_attrs(units=da.attrs['units']).pipe(roll_lon) if daname == 'precip': daa = (daa*24*3600).assign_attrs(units='mm/day') #units convert daa.plot.contourf(levels=21, cmap=cmap) ax.set_xticks(range(-180,181,60)) mapplot() ax.set_xlabel('') ax.set_ylabel('') title = f'{daname} anomaly from AM2.1 $+$0.5K experiment' if case_2k: title = title.replace('0.5K', '2K') ax.set_title(title) #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__{daname}.png') if case_2k: figname = figname.replace('.png', '_2K.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 or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()