#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Sun Feb 19 11:28:20 EST 2023 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 from misc import get_kws_from_argv from misc.modelout import update_modelout_data import geoxarray # if __name__ == '__main__': tt.check('end import') # #start from here #daname = get_kws_from_argv('daname', 't_surf') daname = None model = 'CM2.1p1' expname = 'CTL1860_1-4-1xCO2_tigercpu_intelmpi_18_80PE' dsname = 'ice_month' #func = lambda x: x.load().geo.fldmean() S = 4*np.pi*6370**2/1e6 #earth surface area, million km**2 units = 'million km**2' funcname = 'glbSIE' funcname = get_kws_from_argv('funcname', funcname) if funcname == 'nhSIE': func = lambda ds: (ds['EXT'].load()*ds['CELL_AREA'].load()*S).sel(yt=slice(0,None)).sum(['xt', 'yt']).assign_attrs(units=units, long_name='NH sea ice extent') elif funcname == 'shSIE': func = lambda ds: (ds['EXT'].load()*ds['CELL_AREA'].load()*S).sel(yt=slice(None,0)).sum(['xt', 'yt']).assign_attrs(units=units, long_name='SH sea ice extent') elif funcname == 'glbSIE': func = lambda ds: (ds['EXT'].load()*ds['CELL_AREA'].load()*S).sum(['xt', 'yt']).assign_attrs(units=units, long_name='global sea ice extent') da = update_modelout_data(daname=daname, model=model, expname=expname, dsname=dsname, func=func, funcname=funcname) units = da.attrs['units'] if __name__ == '__main__': from wyconfig import * #my plot settings da_ = da.groupby('time.year').mean('time').rolling(year=9, center=True, min_periods=1).mean().assign_attrs(units=units) da_.plot(label='1-4-1xCO2') da_.sel(year=slice(1140,1001,-1)).assign_coords(year=range(1141,1280+1)).plot(ls='--', label='mirror recovery') ax = plt.gca() ax.legend() ymin = np.floor(da_.min()) ymax = ymin + 7 ax.set_ylim(ymin, ymax) #savefig if 'savefig' in sys.argv or 's' in sys.argv: #figname = __file__.replace('.py', '.png') if daname is None: figname = f'{funcname}_{model}_{expname}.png' else: figname = f'{daname}_{model}_{expname}_{funcname}.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()