#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Wed May 11 11:39:24 EDT 2022 if __name__ == '__main__': import sys from misc.timer import Timer tt = Timer('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 # if __name__ == '__main__': tt.check('end import') # #start from here ii = None args_ens = [arg for arg in sys.argv if arg.startswith('ens=')] if args_ens: ii = int(args_ens[-1].split('=')[-1]) daname = 'gmst_smoothed' if 'smoothed' in sys.argv else 'gmst' ifile = 't_surf_FLOR_HistRCP45_tigercpu_intelmpi_18_576PE_5ens_1860-2100_glbmean_yearly.nc' #ifile = 't_surf_AM2.5C360_amipHadISSTlong_chancorr_tigercpu_intelmpi_18_1080PE_10ens_1871-2021_glbmean_yearly.nc' daname_old = 't_surf' units = 'degC' ofile = ifile.replace(daname_old, 'wwa_'+daname).replace('_glbmean_yearly', '_yearly') if ii is not None: ofile = ofile.replace('.nc', f'_ens{ii}.nc') if os.path.exists(ofile): da = xr.open_dataarray(ofile) print('[loaded]:', ofile) else: da = xr.open_dataarray(ifile) time = [datetime.datetime(year, 6, 30) for year in da.year.values] #year->time; anomaly from 1951-1980; 5-year rolling average; units degC da = da.rename(year='time').assign_coords(time=time) \ .pipe(lambda x: x - x.sel(time=slice('1951', '1980')).mean('time')) if daname == 'gmst_smoothed': da = da.rolling(time=5, min_periods=1).mean() da = da.assign_attrs(units=units) \ .transpose('time', 'ens') if ii is not None: da = da.sel(ens=slice(ii,ii)) print('saving...') encoding = {daname: {'_FillValue': None}} da.to_dataset(name=daname).to_netcdf(ofile, encoding=encoding) print('[saved]:', ofile) if __name__ == '__main__': #from wyconfig import * #my plot settings #savefig if len(sys.argv)>1 and 'savefig' in sys.argv[1:]: figname = __file__.replace('.py', f'.png') if 'overwritefig' in sys.argv[1:]: wysavefig(figname, overwritefig=True) else: wysavefig(figname) tt.check(f'**Done**') print() if 'notshowfig' in sys.argv: pass else: plt.show()