#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Thu Jun 13 14:57:42 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 import xesmf as xe # if __name__ == '__main__': tt.check('end import') # #start from here ifile = '30000101.atmos_month.nc' da_i = xr.open_dataset(ifile)['t_surf'].load() \ .rename(grid_xt='lon', grid_yt='lat') ifile = '30000101.ice_month.nc' ds_o = xr.open_dataset(ifile)[['TS', 'SST', 'GEOLON', 'GEOLAT']].load() \ .rename(xt='x', yt='y', GEOLON='lon', GEOLAT='lat') da_o = ds_o['TS'].where(ds_o['TS']<0, other=ds_o['SST']) + 273.15 #surface temp: TS over ice, SST over no-ice da_o = da_o.assign_coords(lon=ds_o['lon'], lat=ds_o['lat']) regridder = xe.Regridder(da_i, ds_o, 'bilinear', periodic=True) da_r = regridder(da_i) if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot s = 'SST/TS on ice grid [K]' g = da_o.plot(x='lon', y='lat', col='time', col_wrap=4, levels=21, robust=True, figsize=(11.5,6.5), cbar_kwargs={'label': s}) for ax in g.axes.flat: plt.sca(ax) mapplot() ax.set_xlabel('') ax.set_ylabel('') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__ice.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) s = 't_surf regridded on ice grid [K]' g = da_r.plot(x='lon', y='lat', col='time', col_wrap=4, levels=21, robust=True, figsize=(11.5,6.5), cbar_kwargs={'label': s}) for ax in g.axes.flat: plt.sca(ax) mapplot() ax.set_xlabel('') ax.set_ylabel('') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__regridded_from_atmos.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) s = 'regridded t_surf $-$ TS/SST on ice grid [K]' g = (da_r - da_o).plot(x='lon', y='lat', col='time', col_wrap=4, levels=21, robust=True, figsize=(11.5,6.5), cbar_kwargs={'label': s}) for ax in g.axes.flat: plt.sca(ax) mapplot() ax.set_xlabel('') ax.set_ylabel('') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'__bias.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()