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
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
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)
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
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
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
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
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
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
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
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)
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
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