Ejemplo n.º 1
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)
Ejemplo n.º 2
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)
Ejemplo n.º 3
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)
Ejemplo n.º 4
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)
Ejemplo n.º 5
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')
Ejemplo n.º 6
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')