#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Fri Mar 7 02:06:42 PM EST 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 misc.seasons import sel_season # if __name__ == '__main__': try: tt.check('end import') except: pass # #start from here season = get_kws_from_argv('season', 'ASO') dsname = get_kws_from_argv('dsname', 'PI') ifile = f'{dsname}_ERA5_1979-2024.nc' da = xr.open_dataarray(ifile).load() #mclim with xr.set_options(keep_attrs=True): da_clim = da.groupby('time.month').mean('time') da = da.groupby('time.month') - da_clim da = da.pipe(sel_season, season).groupby('time.year').mean('time') daa = da.sel(lon=slice(260,360), lat=slice(30,0)) if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot add_colorbar = True if 'add_colorbar' in sys.argv else False if dsname in ('PI',): vmax = 20 elif dsname in ('Vshear',): vmax = 10 elif dsname in ('omega500',): vmax = 0.1 else: vmax = None fig,axes = plt.subplots(2, 2, figsize=(8,6)) years = [2005, 2010, 2023, 2024] for ax,year in zip(axes.flat, years): im = daa.sel(year=year).plot(ax=ax, levels=21, vmax=vmax, center=0, add_colorbar=add_colorbar, extend='both') plt.sca(ax) mapplot(fill_continents=True) fig.colorbar(im, ax=axes, orientation='horizontal', shrink=0.8, label=f'{season} {dsname} [{daa.attrs["units"]}]') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__{season}_{dsname}.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()