if AMPLITUDE:
     amplitude = amplitude[idx[0]:idx[1]]
 if PLOT_PHASE and BEGIN:
     phase_till = date(start_year + (cnt + 1) * WINDOW_SHIFT, sm, sd)
     ndx = g_working.find_date_ndx(phase_till)
     if ndx != None and cnt < 125:
         phase_total.append(phase[:ndx])
     else:
         phase_total.append(phase)
 if PLOT_PHASE and not BEGIN:
     ndx = g_working.find_date_ndx(last_day)
     phase_total.append(phase[ndx:])
     last_day = g_working.get_date_from_ndx(-1)
 # season
 if SEASON != None:
     ndx_season = g_working.select_months(SEASON)
     phase = phase[ndx_season]
     if AMPLITUDE:
         amplitude = amplitude[ndx_season]
 else:
     ndx_season = None
 phase_bins = get_equidistant_bins()  # equidistant bins
 # if AMPLITUDE:
 smooth_amp.append(np.std(g_working.data))
 for i in range(cond_means.shape[0]
                ):  # get conditional means for current phase range
     ndx = ((phase >= phase_bins[i]) & (phase <= phase_bins[i + 1]))
     if MOMENT == 'std':
         if AMPLITUDE:
             cond_means[i] = func(amplitude[ndx], ddof=1)
         else:
Example #2
0
cond_means = np.zeros((BINS, ))


def get_equidistant_bins(num):
    return np.array(np.linspace(-np.pi, np.pi, num + 1))


start_cut = date(1958, 1, 1)
g_data.data, g_data.time, idx = g.get_data_of_precise_length(
    '16k', start_cut, None, False)
phase = phase[0, idx[0]:idx[1]]
if AMPLITUDE:
    amplitude = amplitude[idx[0]:idx[1]]
# subselect season
if EVAL_SEASON:
    ndx_season = g_data.select_months(season)
    phase = phase[ndx_season]
    if AMPLITUDE:
        amplitude = amplitude[ndx_season]

phase_bins = get_equidistant_bins(BINS)  # equidistant bins

if AMPLITUDE:
    data_mom = func(amplitude)
else:
    data_mom = func(g_data.data)
for i in range(cond_means.shape[0]):
    ndx = ((phase >= phase_bins[i]) & (phase <= phase_bins[i + 1]))
    if AMPLITUDE:
        cond_means[i] = func(amplitude[ndx])
    else:
 if AMPLITUDE:
     amplitude = amplitude[idx[0] : idx[1]]
 if PLOT_PHASE and BEGIN:
     phase_till = date(start_year + (cnt + 1) * WINDOW_SHIFT, sm, sd)
     ndx = g_working.find_date_ndx(phase_till)
     if ndx != None and cnt < 125:
         phase_total.append(phase[:ndx])
     else:
         phase_total.append(phase)
 if PLOT_PHASE and not BEGIN:
     ndx = g_working.find_date_ndx(last_day)
     phase_total.append(phase[ndx:])
     last_day = g_working.get_date_from_ndx(-1)
 # season
 if SEASON != None:
     ndx_season = g_working.select_months(SEASON)
     phase = phase[ndx_season]
     if AMPLITUDE:
         amplitude = amplitude[ndx_season]
 else:
     ndx_season = None
 phase_bins = get_equidistant_bins()  # equidistant bins
 # if AMPLITUDE:
 smooth_amp.append(np.std(g_working.data))
 for i in range(cond_means.shape[0]):  # get conditional means for current phase range
     ndx = (phase >= phase_bins[i]) & (phase <= phase_bins[i + 1])
     if MOMENT == "std":
         if AMPLITUDE:
             cond_means[i] = func(amplitude[ndx], ddof=1)
         else:
             cond_means[i] = func(g_working.data[ndx], ddof=1)
pool = Pool(NUM_WORKERS)
net.wavelet(1, 'y', pool = pool, cut = 1)
net.get_continuous_phase(pool = pool)
net.get_phase_fluctuations(rewrite = True, pool = pool)
pool.close()
pool.join()

nao = DataField()
raw = np.loadtxt("%sNAO.station.monthly.1865-2016.txt" % (path_to_data))
raw = raw[:, 1:]
nao.data = raw.reshape(-1)
nao.create_time_array(date_from = date(1865, 1, 1), sampling = 'm')
nao.select_date(date(1949, 1, 1), date(2015, 1, 1))
nao.anomalise()
jfm_index = nao.select_months([1,2,3], apply_to_data = False)

jfm_nao = nao.data[jfm_index]
_, _, y = nao.extract_day_month_year()
y = y[jfm_index]
ann_nao = []
for year in np.unique(y):
    ann_nao.append(np.mean(jfm_nao[np.where(year == y)[0]]))
    
ann_nao = np.array(ann_nao)

ann_phase_fluc = np.zeros([ann_nao.shape[0]] + list(net.get_spatial_dims()))
for lat in range(net.lats.shape[0]):
    for lon in range(net.lons.shape[0]):
        jfm_data = net.phase[jfm_index, lat, lon]
        for i, year in zip(range(np.unique(y).shape[0]), np.unique(y)):
Example #5
0
    print("Oscillatory series fitted to SAT data with coeff. %.3f and intercept %.3f" % (m, c))

cond_means = np.zeros((BINS,))

def get_equidistant_bins(num):
    return np.array(np.linspace(-np.pi, np.pi, num+1))
    

start_cut = date(1958,1,1)
g_data.data, g_data.time, idx = g.get_data_of_precise_length('16k', start_cut, None, False)
phase = phase[0, idx[0] : idx[1]]
if AMPLITUDE:
    amplitude = amplitude[idx[0] : idx[1]]
# subselect season
if EVAL_SEASON:
    ndx_season = g_data.select_months(season)
    phase = phase[ndx_season]
    if AMPLITUDE:
        amplitude = amplitude[ndx_season]

phase_bins = get_equidistant_bins(BINS) # equidistant bins

if AMPLITUDE:
    data_mom = func(amplitude)
else:
    data_mom = func(g_data.data)
for i in range(cond_means.shape[0]):
    ndx = ((phase >= phase_bins[i]) & (phase <= phase_bins[i+1]))
    if AMPLITUDE:
        cond_means[i] = func(amplitude[ndx])
    else:
Example #6
0
pool = Pool(NUM_WORKERS)
net.wavelet(1, 'y', pool=pool, cut=1)
net.get_continuous_phase(pool=pool)
net.get_phase_fluctuations(rewrite=True, pool=pool)
pool.close()
pool.join()

nao = DataField()
raw = np.loadtxt("%sWeMO.monthly.1821-2013.txt" % (path_to_data))
raw = raw[:, 1:]
nao.data = raw.reshape(-1)
nao.create_time_array(date_from=date(1821, 1, 1), sampling='m')
nao.select_date(date(1949, 1, 1), date(2014, 1, 1))
nao.anomalise()
jfm_index = nao.select_months([1, 2, 3], apply_to_data=False)

jfm_nao = nao.data[jfm_index]
_, _, y = nao.extract_day_month_year()
y = y[jfm_index]
ann_nao = []
for year in np.unique(y):
    ann_nao.append(np.mean(jfm_nao[np.where(year == y)[0]]))

ann_nao = np.array(ann_nao)

ann_phase_fluc = np.zeros([ann_nao.shape[0]] + list(net.get_spatial_dims()))
for lat in range(net.lats.shape[0]):
    for lon in range(net.lons.shape[0]):
        jfm_data = net.phase[jfm_index, lat, lon]
        for i, year in zip(range(np.unique(y).shape[0]), np.unique(y)):
Example #7
0
else:
    for i in range(len(STATIONS)):
        locals()['g_data' + str(i)].data, locals()['g_data' + str(i)].time, idx = locals()['g' + str(i)].get_data_of_precise_length('16k', start_cut, None, False)
        locals()['phase' + str(i)] = locals()['phase' + str(i)][0, idx[0] : idx[1]]
        if AMPLITUDE:
            locals()['amplitude' + str(i)] = locals()['amplitude' + str(i)][idx[0] : idx[1]]

phase_bins = get_equidistant_bins(BINS)
mons = {0: 'J', 1: 'F', 2: 'M', 3: 'A', 4: 'M', 5: 'J', 6: 'J', 7: 'A', 8: 'S', 9: 'O', 10: 'N', 11: 'D'}
if SEASON != None:
    idx = 0
    for se in SEASON:
        print("[%s] Only %s season will be evaluated.." % (str(datetime.now()), ''.join([mons[m-1] for m in se])))
        g_seasons = DataField(data = g_data.copy_data(), time = g_data.time.copy())
        phase_seasons = phase.copy()
        ndx_season = g_seasons.select_months(se)
        phase_seasons = phase_seasons[ndx_season]
        if AMPLITUDE:
            amplitude = amplitude[ndx_season]

        phase_bins = get_equidistant_bins(BINS)
        for i in range(cond_means.shape[0]):
            print se, i
            ndx = ((phase_seasons >= phase_bins[i]) & (phase_seasons <= phase_bins[i+1]))
            if AMPLITUDE:
                cond_means[i, 0, idx] = np.mean(amplitude[ndx])
                cond_means[i, 1, idx] = np.std(amplitude[ndx], ddof = 1)
            else:
                cond_means[i, 0, idx] = np.mean(g_seasons.data[ndx])
                cond_means[i, 1, idx] = np.std(g_seasons.data[ndx], ddof = 1)
        idx += 1