#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Tue Jun 29 16:14:32 EDT 2021 if __name__ == '__main__': from misc.timer import Timer tt = Timer(f'start {__file__}') import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports import geoxarray # if __name__ == '__main__': tt.check('end import') # #start from here daname = 't_ref_max' daname_new = 'tmax' rename_grid = lambda x: x.rename(grid_xt='lon', grid_yt='lat') #sel_region = lambda x: x.sel(lon=slice(360-123, 360-119), lat=slice(45, 52)) sel_region = lambda x: x.sel(lon=slice(360-125, 360-117), lat=slice(43, 54)) #years = range(1860,2101) years = range(1870,2015) years_extend = range(2015,2021) #ens = range(1,6) #ens = [0,] + list(range(11, 15)) ens = [0,] + list(range(21, 25)) #new ens ofile_nc = __file__.replace('.py', '.nc').replace('get_', 'data_') if os.path.exists(ofile_nc): da = xr.open_dataarray(ofile_nc) print('[loaded]:', ofile_nc) else: #idir = '/tigress/wenchang/MODEL_OUT/HistRCP45_tigercpu_intelmpi_18_576PE' #idir = '/tigress/wenchang/MODEL_OUT/AM4_urban/amip1870_urban_luh2_tigercpu_intelmpi_18_576PE' idir = '/tigress/wenchang/MODEL_OUT/AM4_urban/amip1870_urban_luh2_wasteCool_0urban_tigercpu_intelmpi_18_576PE' idir_extend = idir+'_extend' das_ens = [] for en in ens: print(f'{en = }') ifiles = [os.path.join(idir, f'en{en:02d}', 'POSTP', f'{year:04d}0101.atmos_daily.nc') for year in years] ifiles_extend = [os.path.join(idir_extend, f'en{en:02d}', 'POSTP', f'{year:04d}0101.atmos_daily.nc') for year in years_extend] ifiles = ifiles + ifiles_extend print('openning...') da = xr.open_mfdataset(ifiles)[daname] print('loading...') da = da.pipe(rename_grid).pipe(sel_region).load() das_ens.append(da) """ das_years = [] for year in years: print(f'{en = }; {year = }') ifile = os.path.join(idir, f'en{en:02d}', 'POSTP', f'{year:04d}0101.atmos_daily.nc') #print('loading...') da = xr.open_dataset(ifile)[daname].pipe(rename_grid).pipe(sel_region).load() das_years.append(da) #print('concatenating...') das_years = xr.concat(das_years, dim='time') das_ens.append(das_years) """ print('concatenating...') da = xr.concat(das_ens, dim=pd.Index(ens, name='en')) print('saving...') encoding = {daname_new: dict(zlib=True, complevel=1)} da.to_dataset(name=daname_new).to_netcdf(ofile_nc, encoding=encoding) print('[saved]:', ofile_nc) if __name__ == '__main__': """ from wyconfig import * #my plot settings from geoplots import mapplot fig, ax = plt.subplots(figsize=(6,6)) da.mean('year').pipe(lambda x: x-273.15).assign_attrs(units='$^\circ$C').plot.contourf(ax=ax, levels=np.arange(20,41), extend='both') mapplot(ax=ax, xticks=np.arange(360-125, 360-117+1), yticks=np.arange(43, 54+1)) """ #savefig if 'savefig' in sys.argv: figname = __file__.replace('.py', f'.png') wysavefig(figname) tt.check(f'**Done**') #plt.show()