#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Tue Jun 29 16:14:32 EDT 2021 #SBATCH -N 1 # 1 node #SBATCH -n 40 # 40 cores #SBATCH -t 5:00:00 #SBATCH --mail-type=begin #SBATCH --mail-type=end #SBATCH --mail-user=wenchang@princeton.edu 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 import salem # if __name__ == '__main__': tt.check('end import') # #start from here #shapefile for the region cntry_name = 'Madagascar' shdf = salem.read_shapefile(salem.get_demo_file('world_borders.shp')) shdf = shdf[ shdf['CNTRY_NAME']==cntry_name ] daname = 'precip' daname_new = 'precip' units_new = 'mm/day' rename_grid = lambda x: x.rename(grid_xt='lon', grid_yt='lat') #sel_region = lambda x: x.sel(lon=slice(-20, -12), lat=slice(30, 42)) sel_region = lambda x: x.salem.subset(shape=shdf, margin=1) sel_land = lambda x: x.salem.roi(shape=shdf) convert_units = lambda x: (x*24*3600).assign_attrs(units='mm/day') #years = range(1871,2020) years = range(1860,2101) ens = range(1,6) ofile_nc = __file__.replace('.py', '.nc').replace('get_', 'data_') #ofile_nc = 'test.nc' if os.path.exists(ofile_nc): da = xr.open_dataarray(ofile_nc) print('[loaded]:', ofile_nc) else: #idir = '/tigress/wenchang/MODEL_OUT/AM2.5C360/amipHadISSTlong_chancorr_tigercpu_intelmpi_18_1080PE' idir = '/tigress/wenchang/MODEL_OUT/HistRCP45_tigercpu_intelmpi_18_576PE' 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] print('openning...') da = xr.open_mfdataset(ifiles)[daname] print('loading...') da = da.pipe(rename_grid).pipe(sel_region).load() das_ens.append(da) print('concatenating...') da = xr.concat(das_ens, dim=pd.Index(ens, name='ens')) print('kg/m^2/s -> mm/day') da = da.pipe(convert_units) #land mask da = da.pipe(sel_land) 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()