def test_gaussian_filter(self): from am_signal import gaussian_filter from obspy.signal.freqattributes import cfrequency import matplotlib.pyplot as plt dt = 0.01 width = 1.0 gauss1, t1 = gaussian_filter(width, 1.0, dt) gauss5, t5 = gaussian_filter(width, 5.0, dt) npts1 = len(gauss1) npts5 = len(gauss5) self.assertEquals(npts1, npts5) self.assertAlmostEquals(t1, t5) self.assertAlmostEquals(np.argmax(gauss1), t1 / dt) self.assertAlmostEquals(np.argmax(gauss5), t5 / dt) data_trace5 = self.data_trace.copy() data_trace5.data = np.real( np.convolve(data_trace5.data, gauss5, 'same')) cf5 = cfrequency(data_trace5.data, 1 / dt, 0, 0) self.assertAlmostEquals(cf5, 5.0, 0)
def test_rt_gaussian_filter(self): from am_signal import gaussian_filter data_trace = self.data_trace.copy() gauss5,tshift = gaussian_filter(1.0, 5.0, 0.01) rt_trace=RtTrace() rt_single=RtTrace() for rtt in [rt_trace, rt_single]: rtt.registerRtProcess('convolve',conv_signal=gauss5) rt_single.append(data_trace, gap_overlap_check = True) for tr in self.traces: # pre-apply inversed time-shift before appending data tr.stats.starttime -= tshift rt_trace.append(tr, gap_overlap_check = True) # test the waveforms are the same diff=self.data_trace.copy() diff.data=rt_trace.data-rt_single.data self.assertAlmostEquals(np.mean(np.abs(diff)),0.0) # test the time-shifts starttime_diff=rt_single.stats.starttime-self.data_trace.stats.starttime self.assertAlmostEquals(starttime_diff,0.0)
def test_rt_gaussian_filter(self): from am_signal import gaussian_filter data_trace = self.data_trace.copy() gauss5, tshift = gaussian_filter(1.0, 5.0, 0.01) rt_trace = RtTrace() rt_single = RtTrace() for rtt in [rt_trace, rt_single]: rtt.registerRtProcess('convolve', conv_signal=gauss5) rt_single.append(data_trace, gap_overlap_check=True) for tr in self.traces: # pre-apply inversed time-shift before appending data tr.stats.starttime -= tshift rt_trace.append(tr, gap_overlap_check=True) # test the waveforms are the same diff = self.data_trace.copy() diff.data = rt_trace.data - rt_single.data self.assertAlmostEquals(np.mean(np.abs(diff)), 0.0) # test the time-shifts starttime_diff = rt_single.stats.starttime - self.data_trace.stats.starttime self.assertAlmostEquals(starttime_diff, 0.0)
def test_gaussian_filter(self): from am_signal import gaussian_filter from obspy.signal.freqattributes import cfrequency import matplotlib.pyplot as plt dt=0.01 width=1.0 gauss1, t1=gaussian_filter(width, 1.0, dt) gauss5, t5=gaussian_filter(width, 5.0, dt) npts1=len(gauss1) npts5=len(gauss5) self.assertEquals(npts1,npts5) self.assertAlmostEquals(t1,t5) self.assertAlmostEquals(np.argmax(gauss1),t1/dt) self.assertAlmostEquals(np.argmax(gauss5),t5/dt) data_trace5=self.data_trace.copy() data_trace5.data=np.real(np.convolve(data_trace5.data,gauss5,'same')) cf5=cfrequency(data_trace5.data,1/dt,0,0) self.assertAlmostEquals(cf5,5.0,0)
def _register_preprocessing(self, waveloc_options): wo = waveloc_options # if this is a synthetic if wo.is_syn: # do dummy processing only for rtt in self.obs_rt_list: rtt.registerRtProcess('scale', factor=1.0) else: # get gaussian filtering parameters f0, sigma, dt = wo.gauss_filter gauss, self.filter_shift = gaussian_filter(f0, sigma, dt) # get kwin # for now just use one window kwin = wo.opdict['kwin'] # register pre-processing of data here for rtt in self.obs_rt_list: rtt.registerRtProcess('convolve', conv_signal=gauss) rtt.registerRtProcess('sw_kurtosis', win=kwin) rtt.registerRtProcess('boxcar', width=50) rtt.registerRtProcess('differentiate') rtt.registerRtProcess('neg_to_zero')
def _register_preprocessing(self, waveloc_options): wo=waveloc_options # if this is a synthetic if wo.is_syn: # do dummy processing only for rtt in self.obs_rt_list: rtt.registerRtProcess('scale', factor=1.0) else: # get gaussian filtering parameters f0, sigma, dt = wo.gauss_filter gauss, self.filter_shift = gaussian_filter(f0, sigma, dt) # get kwin # for now just use one window kwin = wo.opdict['kwin'] # register pre-processing of data here for rtt in self.obs_rt_list: rtt.registerRtProcess('convolve', conv_signal=gauss) rtt.registerRtProcess('sw_kurtosis', win=kwin) rtt.registerRtProcess('boxcar', width=50) rtt.registerRtProcess('differentiate') rtt.registerRtProcess('neg_to_zero')