#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Tue Nov 12 12:54:39 EST 2019 import sys, os.path, os, datetime import xarray as xr, numpy as np, pandas as pd #import matplotlib.pyplot as plt print() data_name = 'tas' ifile_historical = f'../byExperiment/historical/{data_name}/{data_name}.historical.1850-2014.nc' ifile_ssp = f'../byExperiment/ssp585/{data_name}/{data_name}.ssp585.2015-2100.nc' ofile = f'{data_name}.historical_ssp585.1850-2100.nc' if __name__ == '__main__': tformat = '%Y-%m-%d %H:%M:%S' t0 = datetime.datetime.now() print('[start]:', t0.strftime(tformat)) # open datasets print(ifile_historical,'...') da_historical = xr.open_dataset(ifile_historical)[data_name] print(ifile_ssp, '...') da_ssp = xr.open_dataset(ifile_ssp)[data_name] # models in common models = [m for m in da_ssp.model.values if m in da_historical.model.values] print(models) # concat experiments print('concat...') da = xr.concat([da_historical.sel(model=models), da_ssp.sel(model=models)], dim='time') # load data into memory print('loading...') ds = da.to_dataset(name=data_name).load() # save dataset print('saving...') encoding = {data_name: {'dtype': 'float32', 'zlib': True, 'complevel': 1}} ds.to_netcdf(ofile, encoding=encoding) print('[saved]:', ofile, f'{os.path.getsize(ofile)/1e9:.1f}G') t1 = datetime.datetime.now() print('[total time used]:', f'{(t1-t0).seconds:,} seconds') print('[end]:', t1.strftime(tformat)) print()