Пример #1
0
def log_en_ratio_adj(corr_o,corr_s,g_speed,window_params):

    success = False

    window = wn.get_window(corr_o.stats,g_speed,window_params)
    win = window[0]
    #msr_o = rm.log_en_ratio(corr_o,g_speed,window_params)
    #msr_s = rm.log_en_ratio(corr_s,g_speed,window_params)
    data = wn.my_centered(corr_s.data,corr_o.stats.npts)

    if window[2] == True:
        sig_c = corr_s.data * win
        sig_a = corr_s.data * win[::-1]
        E_plus = np.trapz(np.power(sig_c,2))*corr_s.stats.delta
        E_minus = np.trapz(np.power(sig_a,2))*corr_s.stats.delta
        # to win**2
        u_plus = sig_c * win
        u_minus = sig_a * win[::-1]
        #adjt_src = 2./pi * (msr_s-msr_o) * (u_plus / E_plus - u_minus / E_minus)
        # I don't know where that factor 1/pi came from. Not consistent with new derivation of kernels
        adjt_src = 2. * (u_plus / E_plus - u_minus / E_minus)
        success = True
    else:
        adjt_src = win-win+np.nan
    return adjt_src, success
Пример #2
0
def log_en_ratio_adj(corr_o, corr_s, g_speed, window_params):

    success = False

    window = wn.get_window(corr_o.stats, g_speed, window_params)
    win = window[0]
    #msr_o = rm.log_en_ratio(corr_o,g_speed,window_params)
    #msr_s = rm.log_en_ratio(corr_s,g_speed,window_params)
    data = wn.my_centered(corr_s.data, corr_o.stats.npts)

    if window[2] == True:
        sig_c = corr_s.data * win
        sig_a = corr_s.data * win[::-1]
        E_plus = np.trapz(np.power(sig_c, 2)) * corr_s.stats.delta
        E_minus = np.trapz(np.power(sig_a, 2)) * corr_s.stats.delta
        # to win**2
        u_plus = sig_c * win
        u_minus = sig_a * win[::-1]
        #adjt_src = 2./pi * (msr_s-msr_o) * (u_plus / E_plus - u_minus / E_minus)
        # I don't know where that factor 1/pi came from. Not consistent with new derivation of kernels
        adjt_src = 2. * (u_plus / E_plus - u_minus / E_minus)
        success = True
    else:
        adjt_src = win - win + np.nan
    return adjt_src, success
Пример #3
0
def test_windows():

    array1 = np.zeros(7, dtype=np.int)
    array2 = np.zeros(8, dtype=np.int)
    array1[3] = 1
    array2[4] = 1

    assert (my_centered(array1, 5))[2] == 1
    assert (my_centered(array2, 5))[2] == 1
    assert (my_centered(array1, 9))[4] == 1
    assert (my_centered(array2, 9))[4] == 1

    tr = Trace()
    tr.stats.sac = {}
    tr.stats.sac['dist'] = 3.0
    tr.data = my_centered(array1, 15) + 1
    params = {}
    params['hw'] = 1
    params['sep_noise'] = 0
    params['win_overlap'] = True
    params['wtype'] = 'hann'
    params['causal_side'] = True
    win = get_window(tr.stats, g_speed=1.0, params=params)
    assert (len(win) == 3)
    assert (pytest.approx(win[0][10]) == 1.0)

    snr = snratio(tr, g_speed=1.0, window_params=params)
    assert (int(snr) == 1)
Пример #4
0
def windowed_waveform(correlation, g_speed, window_params):
    window = get_window(correlation.stats, g_speed, window_params)
    win = window[0]
    if window[2]:
        win_caus = (correlation.data * win)
        win_acaus = (correlation.data * win[::-1])
        msr = win_caus + win_acaus
    else:
        msr = win - win + np.nan
    return msr
Пример #5
0
def log_en_ratio(correlation, g_speed, window_params):
    delta = correlation.stats.delta
    window = get_window(correlation.stats, g_speed, window_params)
    win = window[0]
    if window[2]:
        E_plus = np.trapz((correlation.data * win)**2) * delta
        E_minus = np.trapz((correlation.data * win[::-1])**2) * delta
        msr = log(E_plus / (E_minus + np.finfo(E_minus).tiny))
        if window_params['plot']:
            plot_window(correlation, win, msr)
    else:
        msr = np.nan
    return msr
Пример #6
0
def energy(corr_o, corr_s, g_speed, window_params):

    success = False
    window = wn.get_window(corr_o.stats, g_speed, window_params)

    win = window[0]
    if window[2]:
        u1 = 2 * np.multiply(np.power(win, 2), corr_s.data)
        u2 = 2 * np.multiply(np.power(win[::-1], 2), corr_s.data)
        adjt_src = [u1, u2]
        success = True
    else:
        adjt_src = [win - win + np.nan, win - win + np.nan]

    return adjt_src, success
Пример #7
0
def windowed_waveform(corr_o, corr_s, g_speed, window_params):
    success = False
    window = wn.get_window(corr_o.stats, g_speed, window_params)
    win = window[0] + window[0][::-1]
    if window[2]:

        u_s = np.multiply(win, corr_s.data)
        u_o = np.multiply(win, corr_o.data)

        adjt_src = np.multiply(win, (u_s - u_o))
        success = True
    else:
        adjt_src = win - win + np.nan

    return adjt_src, success
Пример #8
0
def windowed_waveform(corr_o,corr_s,g_speed,window_params):
    success = False
    window = wn.get_window(corr_o.stats,g_speed,window_params)
    win = window[0] + window[0][::-1]
    if window[2]:

        u_s = np.multiply(win,corr_s.data)
        u_o = np.multiply(win,corr_o.data)

        adjt_src = np.multiply(win,(u_s-u_o))
        success = True
    else:
        adjt_src = win-win+np.nan

    return adjt_src, success
Пример #9
0
def log_en_ratio(correlation, g_speed, window_params):
    delta = correlation.stats.delta
    window = get_window(correlation.stats, g_speed, window_params)
    win = window[0]
    data = my_centered(correlation.data, correlation.stats.npts)

    if window[2]:
        #E_plus = np.trapz((correlation.data * win)**2) * delta
        #E_minus = np.trapz((correlation.data * win[::-1])**2) * delta
        sig_c = correlation.data * win
        sig_a = correlation.data * win[::-1]
        E_plus = np.trapz(np.power(sig_c, 2)) * delta
        E_minus = np.trapz(np.power(sig_a, 2)) * delta
        msr = log(E_plus / E_minus)  #+np.finfo(E_minus).tiny))
        if window_params['plot']:
            plot_window(correlation, win, msr)
    else:
        msr = np.nan
    return msr
Пример #10
0
def energy(corr_o,corr_s,g_speed,window_params):

    success = False

    window = wn.get_window(corr_o.stats,g_speed,window_params)

    #if window_params['causal_side']:
    win = window[0]
    #else:
     #   win = window[0][::-1]

    if window[2]:
        u1 = 2* np.multiply(np.power(win,2),corr_s.data)
        u2 = 2* np.multiply(np.power(win[::-1],2),corr_s.data)
        adjt_src = [u1,u2]
        success = True
    else:
        adjt_src = [win-win+np.nan,win-win+np.nan]

    return adjt_src, success
Пример #11
0
def energy(correlation, g_speed, window_params):

    window = get_window(correlation.stats, g_speed, window_params)
    msr = [np.nan, np.nan]
    win = window[0]

    if window[2]:
        # causal
        E = np.trapz((correlation.data * win)**2)
        msr[0] = E
        if window_params['plot']:
            plot_window(correlation, win, E)

        # acausal
        win = win[::-1]
        E = np.trapz((correlation.data * win)**2)
        msr[1] = E
        if window_params['plot']:
            plot_window(correlation, win, E)

    return np.array(msr)
Пример #12
0
def log_en_ratio_adj(corr_o, corr_s, g_speed, window_params):

    success = False
    window = wn.get_window(corr_o.stats, g_speed, window_params)
    win = window[0]

    wn.my_centered(corr_s.data, corr_o.stats.npts)

    if window[2]:
        sig_c = corr_s.data * win
        sig_a = corr_s.data * win[::-1]
        E_plus = np.trapz(np.power(sig_c, 2)) * corr_s.stats.delta
        E_minus = np.trapz(np.power(sig_a, 2)) * corr_s.stats.delta
        # to win**2
        u_plus = sig_c * win
        u_minus = sig_a * win[::-1]
        adjt_src = 2. * (u_plus / E_plus - u_minus / E_minus)
        success = True
    else:
        adjt_src = win - win + np.nan
    return adjt_src, success
Пример #13
0
def inst_mf(corr_obs, corr_syn, g_speed, window_params):
    window = get_window(corr_obs.stats, g_speed, window_params)
    win = window[0]

    if window[2]:

        sig1 = corr_obs.data * (win + win[::-1])
        sig2 = corr_syn.data * (win + win[::-1])
        # phase misfit .. try instantaneous phase
        # hilbert gets the analytic signal (only the name is confusing)
        a1 = hilbert(sig1)
        a2 = hilbert(sig2)

        cc = a1 * np.conjugate(a2)

        boxc = np.clip((win + win[::-1]), 0, 1)
        dphase = 0.5 * np.trapz(np.angle(cc * boxc)**2)

        if window_params['plot']:
            plot_window(corr_obs, win, dphase)
    else:
        dphase = np.nan

    return dphase