nroll = 7 tseries = utils.get_mfc_box(mfcfiles, precipfiles, None, years, nroll, lat1, lat2, lon1, lon2) # Monsoon onset day and index timeseries if onset_nm.startswith('CHP'): # Use precip/MFC already loaded data = tseries[onset_nm.split('_')[1] + '_ACC'] else: data = None index = utils.get_onset_indices(onset_nm, indfiles[onset_nm], years, data) onset, retreat, length = index['onset'], index['retreat'], index['length'] tseries[onset_nm] = index['tseries'] # ENSO enso = utils.get_enso_indices(years) enso = xray.DataArray(enso[enso_nm]).rename({'Year' : 'year'}) # ---------------------------------------------------------------------- # Climatology index_clim = index.mean(dim='year') tseries_clim = tseries.mean(dim='year') enso_clim = enso.mean(dim='year').values # Tile the climatology to each year for plot_tseries_together vals = atm.biggify(tseries_clim[onset_nm], index['tseries'].values, tile=True) _, _, coords, dims = atm.meta(index['tseries']) ts_clim = xray.DataArray(vals, name=tseries_clim[onset_nm].name, coords=coords, dims=dims) tseries[onset_nm + '_clim'] = ts_clim
nroll, lat1, lat2, lon1, lon2) # Monsoon onset/retreat indices if onset_nm.startswith('CHP'): # --- Use precip/MFC already loaded data = tseries[onset_nm.split('_')[1] + '_ACC'] files = None else: data = None files = datafiles[onset_nm] index = utils.get_onset_indices(onset_nm, files, years, data) index = index[['onset', 'retreat']].to_dataframe() index['length'] = index['retreat'] - index['onset'] # ENSO enso = utils.get_enso_indices(years, enso_keys) # Monsoon strength mfc = tseries['MFC_UNSM'] precip = tseries['PCP_UNSM'] ssn = utils.get_strength_indices(years, tseries['MFC_UNSM'], tseries['PCP_UNSM'], index['onset'], index['retreat']) # ---------------------------------------------------------------------- # Helper functions def detrend(df): df_detrend = df.copy() x = df.index.values for col in df.columns: