#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Mon Feb 3 10:51:22 AM 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 # if __name__ == '__main__': try: tt.check('end import') except: pass # #start from here #daname = 'rv_o_h2o' daname = 'LWS_lake' daname = get_kws_from_argv('daname', daname) PminusE = True if 'PminusE' in sys.argv else False if PminusE: daname = 'precip'; print(daname) noRivers = True if 'noRivers' in sys.argv else False model = 'HiRAM' if 'HiRAM' in sys.argv else 'FLOR' """ if daname in ('rv_o_h2o', 'precip', 'evap_land', 't_ref'): ifile = '/projects/w/wenchang/MODEL_OUT/FLOR/CTL1860_newdiag_tigercpu_intelmpi_18_576PE/POSTP_deflate1/00010101.land_month.nc' elif noRivers: ifile = '/scratch/gpfs/GEOCLIM/wenchang/tiger3/FLOR/work/test_CTL1860_tiger3_intelmpi_24_1116PE_noRivers/POSTP/00010101.land_inst_month.nc' elif model == 'HiRAM': ifile = '/scratch/gpfs/GEOCLIM/wenchang/tiger3/HIRAM/work/CTL1990s_v201910_tiger3_intelmpi_24_1440PE/POSTP/01010101.land_inst_month.nc' else: ifile = '/projects/w/wenchang/MODEL_OUT/FLOR/CTL1860_newdiag_tigercpu_intelmpi_18_576PE/POSTP_deflate1/00010101.land_inst_month.nc' """ ifile = '/projects/w/wenchang/MODEL_OUT/FLOR/CTL1860_newdiag_tigercpu_intelmpi_18_576PE/POSTP/00010101.land_month.nc' if model == 'HiRAM': ifile = ifile.replace('/projects/w/wenchang/MODEL_OUT/FLOR/CTL1860_newdiag_tigercpu_intelmpi_18_576PE', '/scratch/gpfs/GEOCLIM/wenchang/tiger3/HIRAM/work/CTL1990s_v201910_tiger3_intelmpi_24_1440PE') \ .replace('0001', '0101') elif noRivers: ifile = ifile.replace('/projects/w/wenchang/MODEL_OUT/FLOR/CTL1860_newdiag_tigercpu_intelmpi_18_576PE', '/scratch/gpfs/GEOCLIM/wenchang/tiger3/FLOR/work/test_CTL1860_tiger3_intelmpi_24_1116PE_noRivers') try: ds = xr.open_dataset(ifile) da = ds[daname].rename(grid_xt='lon', grid_yt='lat') except KeyError: ifile = ifile.replace('month', 'inst_month') ds = xr.open_dataset(ifile) da = ds[daname].rename(grid_xt='lon', grid_yt='lat') print('inst_month instead of month data are used') print(ifile) if PminusE: da = (da - ds['evap_land'].rename(grid_xt='lon', grid_yt='lat')).pipe(lambda x: x*24*3600).assign_attrs(units='mm/day', long_name='P - E') elif daname in ('precip', 'evap_land'): da = (da * 24 *3600).assign_attrs(units='mm/day') elif daname in ('t_ref',): da = (da - 273.15).assign_attrs(units='degC') if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot if daname == 'rv_o_h2o': g = da.plot(col='time', col_wrap=4, vmax=0.05, extend='both') elif PminusE: cmap = 'BrBG' g = da.sel(lon=slice(10,40), lat=slice(-10,10)).plot(col='time', col_wrap=4, cmap=cmap, vmax=10, extend='both') elif daname in ('precip', 'evap_land'): cmap = 'YlGnBu' if daname in ('precip',) else 'BrBG_r' g = da.sel(lon=slice(10,40), lat=slice(-10,10)).plot(col='time', col_wrap=4, cmap=cmap)#, vmax=1e5)#, extend='both') elif daname in ('t_ref',): cmap = None g = da.sel(lon=slice(10,40), lat=slice(-10,10)).plot(col='time', col_wrap=4, cmap=cmap)#, vmax=1e5)#, extend='both') else: g = da.sel(lon=slice(10,40), lat=slice(-10,10)).plot(col='time', col_wrap=4, vmax=1e5)#, extend='both') for ax in g.axes.flat: plt.sca(ax) if daname != 'rv_o_h2o': mapplot() ax.set_xlabel('') ax.set_ylabel('') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__{daname}.png') if noRivers: figname = figname.replace('.png', '_noRivers.png') if model == 'HiRAM': figname = figname.replace('.png', '_HiRAM.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()