Exemplo n.º 1
0
         g_working.data,
         1,
         False,
         wavelet_analysis.morlet,
         dj=0,
         s0=s0,
         j1=0,
         k0=k0)  # perform wavelet
     phase = np.arctan2(np.imag(wave),
                        np.real(wave))  # get phases from oscillatory modes
     start_cut = date(start_year + cnt * WINDOW_SHIFT, sm, sd)
     idx = g_working.get_data_of_precise_length(WINDOW_LENGTH, start_cut,
                                                None, True)  # 16k or 13462
     print 'data ', g.get_date_from_ndx(
         start_idx), ' - ', g.get_date_from_ndx(end_idx)
     print 'cut from ', start_cut, ' to ', g_working.get_date_from_ndx(-1)
     last_mid_year = date.fromordinal(g_working.time[WINDOW_LENGTH /
                                                     2]).year
     phase = phase[0, idx[0]:idx[1]]
     phase_bins = get_equidistant_bins()  # equidistant bins
     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 MEANS:
             cond_means[i] = np.mean(g_working.data[ndx])
         else:
             cond_means[i] = np.var(g_working.data[ndx], ddof=1)
     difference_data.append(cond_means.max() -
                            cond_means.min())  # append difference to list
     meanvar_data.append(np.mean(cond_means))
 else:
Exemplo n.º 2
0
_, _, idx = g.get_data_of_precise_length(WINDOW_LENGTH, date.fromordinal(g.time[4*y]), None, False)
first_mid_year = date.fromordinal(g.time[idx[0]+WINDOW_LENGTH/2]).year


while end_idx < g.data.shape[0]:
    
    # data
    g_working.data = g.data[start_idx : end_idx].copy()
    g_working.time = g.time[start_idx : end_idx].copy()
    if np.all(np.isnan(g_working.data) == False):
        wave, _, _, _ = wavelet_analysis.continous_wavelet(g_working.data, 1, False, wavelet_analysis.morlet, dj = 0, s0 = s0, j1 = 0, k0 = k0) # perform wavelet
        phase = np.arctan2(np.imag(wave), np.real(wave)) # get phases from oscillatory modes
        start_cut = date(start_year+cnt*WINDOW_SHIFT, sm, sd)
        idx = g_working.get_data_of_precise_length(WINDOW_LENGTH, start_cut, None, True) # 16k or 13462
        print 'data ', g.get_date_from_ndx(start_idx), ' - ', g.get_date_from_ndx(end_idx)
        print 'cut from ', start_cut, ' to ', g_working.get_date_from_ndx(-1)
        last_mid_year = date.fromordinal(g_working.time[WINDOW_LENGTH/2]).year
        phase = phase[0, idx[0] : idx[1]]
        phase_bins = get_equidistant_bins() # equidistant bins
        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 MEANS:
                cond_means[i] = np.mean(g_working.data[ndx])
            else:
                cond_means[i] = np.var(g_working.data[ndx], ddof = 1)
        difference_data.append(cond_means.max() - cond_means.min()) # append difference to list    
        meanvar_data.append(np.mean(cond_means))
    else:
        difference_data.append(np.nan)
        meanvar_data.append(np.nan)
        
Exemplo n.º 3
0
            wave, _, _, _ = wavelet_analysis.continous_wavelet(
                g_working_amp.data, 1, False, wavelet_analysis.morlet, dj=0, s0=s0_amp, j1=0, k0=k0
            )  # perform wavelet
            amplitude = np.sqrt(np.power(np.real(wave), 2) + np.power(np.imag(wave), 2))
            amplitude = amplitude[0, :]
            phase_amp = np.arctan2(np.imag(wave), np.real(wave))
            phase_amp = phase_amp[0, :]
            reconstruction = amplitude * np.cos(phase_amp)
            fit_x = np.vstack([reconstruction, np.ones(reconstruction.shape[0])]).T
            m, c = np.linalg.lstsq(fit_x, g_working_amp.data)[0]
            amplitude = m * amplitude + c

        start_cut = date(start_year + cnt * WINDOW_SHIFT, sm, sd)
        idx = g_working.get_data_of_precise_length(WINDOW_LENGTH, start_cut, None, True)
        print "data ", g.get_date_from_ndx(start_idx), " - ", g.get_date_from_ndx(end_idx)
        print "cut from ", start_cut, " to ", g_working.get_date_from_ndx(-1)
        # last_mid_year = date.fromordinal(g_working.time[WINDOW_LENGTH/2]).year
        last_mid_year += 1
        print last_mid_year
        phase = phase[0, idx[0] : idx[1]]
        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)
Exemplo n.º 4
0
    if SEASON == None:
        cond_means = np.zeros((BINS, 2, 1))
    else:
        cond_means = np.zeros((BINS, 2, 2))
else:
    cond_means = np.zeros((BINS, 2, 2))

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

# start_cut = date(1958,1,1)
start_cut = date(1962,1,1)
l = 17532
if STATIONS == None:
    g_data.data, g_data.time, idx = g.get_data_of_precise_length(l, start_cut, None, False)
    print g_data.get_date_from_ndx(0), g_data.get_date_from_ndx(-1)
    phase = phase[0, idx[0] : idx[1]]
    if AMPLITUDE:
        amplitude = amplitude[idx[0] : idx[1]]
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: