#!/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)['tau_x'].load() \ .rename(grid_xt='lon', grid_yt='lat') ifile = '30000101.ocean.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 = xr.open_dataset(ifile)['tau_x'].load() \ .rename(xu_ocean='x', yu_ocean='y', geolon_c='lon', geolat_c='lat') #print(da_o); sys.exit() #regrid regridder = xe.Regridder(da_i, da_o, 'bilinear', periodic=True) da_r = regridder(da_i) units = da_o.attrs['units'] if __name__ == '__main__': from wyconfig import * #my plot settings from geoplots import mapplot s = f'tau_x on ocean grid [{units}]' 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'__ocean.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) #atmos tau_x has opposite sign as ocean tau_x s = f'regridded tau_x on ocean grid [{units}]' 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 = f'regridded tau_x - raw tau_x on ocean grid [{units}]' 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()