#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Mon Sep 19 13:41:47 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 import xlinregress from misc.seasons import sel_season from misc import get_kws_from_argv # if __name__ == '__main__': tt.check('end import') # #start from here model = 'AM2.1p1' model = get_kws_from_argv('model', model) season = 'JJA' lmr_version = '2019' if '2018' in sys.argv: lmr_version = '2018' yearslice = slice(1551,1650) def do_season_trend(da, season): da = da.pipe(sel_season, season=season).groupby('time.year').mean('time').mean('ens') da = da.sel(year=yearslice) rg = da.linregress.on(da.year) rg['slope'] = (rg['slope']*100).assign_attrs(units='mm/day/century') return rg def wyplot_lonlatbox(lonmin, lonmax, latmin, latmax, **kws): ax = kws.pop('ax', plt.gca()) ax.plot([lonmin, lonmax, lonmax, lonmin, lonmin], [latmin, latmin, latmax, latmax, latmin], **kws) def wyplot_region(region_name, **kws): if region_name == 'north-central': lonmin,lonmax,latmin,latmax = 100,120,30,40 elif region_name == 'northeast': lonmin,lonmax,latmin,latmax = 120,140,40,50 wyplot_lonlatbox(lonmin, lonmax, latmin, latmax, **kws) ifile = f'precip_{model}_LMR{lmr_version}SST1551_ens_tigercpu_intelmpi_18_30PE_5ens_1551-1650_monthly.nc' if model == 'AM2.5': ifile = ifile.replace('30PE', '540PE').replace('5ens', '3ens') da = xr.open_dataarray(ifile).load() ds = do_season_trend(da, season) print(ds) title = f'{model} {season} precip lintrend {yearslice.start}-{yearslice.stop} LMR{lmr_version}SST' tag = '_' + '_'.join(title.split()).replace('.', 'p') if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot cmap = 'BrBG' fig,ax = plt.subplots() func = lambda da: da.sel(lon=slice(60, 180), lat=slice(0,60)) ds.slope.pipe(func).plot.contourf(cmap=cmap, levels=21) ds.pvalue.where(ds.pvalue<0.05).pipe(func).plot.contourf(colors='none', hatches=['......'], add_colorbar=False) mapplot() ax.set_title(title) wyplot_region('north-central', color='C0') wyplot_region('northeast', color='C1') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'{tag}.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()