lat1, lat2 = 10, 30 subset_dict = {'lat' : (lat1, lat2), 'lon' : (lon1, lon2)} # ---------------------------------------------------------------------- # Read data ts = xray.Dataset() for nm in files: var = atm.combine_daily_years(nm, files[nm], years, yearname='year', subset_dict=subset_dict) var = atm.mean_over_geobox(var, lat1, lat2, lon1, lon2) units = var.attrs.get('units') if units in ['kg/m2/s', 'kg m-2 s-1']: var = atm.precip_convert(var, units, 'mm/day') elif units in ['kg/m2', 'kg m-2']: var.attrs['units'] = 'mm' long_name = var.attrs.get('long_name') var.attrs = {'units' : units, 'long_name' : long_name} ts[nm] = utils.wrapyear_all(var, daymin, daymax) # dW/dt dwdt = atm.gradient(ts['TQV'], ts['day'].values, axis=-1) dwdt.attrs['units'] = 'mm/day' dwdt.attrs['long_name'] = 'd/dt of ' + ts['TQV'].attrs.get('long_name') ts['DWDT'] = dwdt ts = ts.rename({'DQVDT_ANA' : 'DWDT_ANA'}).drop('TQV') for nm, val in zip(['lat1', 'lat2', 'lon1', 'lon2'], [lat1, lat2, lon1, lon2]): ts.attrs[nm] = val print('Saving to ' + savefile) ts.to_netcdf(savefile)
index.load() index = index.sel(year=years) d0 = index[ind_nm].values # Precip data if pcp_nm == 'cmap': pcp = precipdat.read_cmap(pcpfiles, yearmin=min(years), yearmax=max(years)) # Interpolate to daily resolution name, attrs, coords, dimnames = atm.meta(pcp) days = np.arange(3, 364) interp_func = scipy.interpolate.interp1d(pcp['day'], pcp, axis=1) vals = interp_func(days) coords['day'] = xray.DataArray(days, coords={'day' : days}) pcp = xray.DataArray(vals, dims=dimnames, coords=coords, name=name, attrs=attrs) else: pcp = atm.combine_daily_years(None, pcpfiles, years, yearname='year', subset_dict=subset_dict) # Wrap from following year to get extended daily range daymin = min(d0) - npre daymax = max(d0) + npost pcp = utils.wrapyear_all(pcp, daymin=daymin, daymax=daymax) # Daily relative to onset/withdrawal pcp_rel = utils.daily_rel2onset(pcp, d0, npre, npost) print('Saving to ' + savefile) atm.save_nc(savefile, pcp_rel)