Example #1
0
    def test_init(self):
        # Successful init
        ns = sigpropy.TimeSeries([1, 1, 1], dt=1)
        ew = sigpropy.TimeSeries([1, 1, 1], dt=1)
        vt = sigpropy.TimeSeries([1, 1, 1], dt=1)
        sensor = hvsrpy.Sensor3c(ns, ew, vt)

        # Check timeseries
        for attr, expected in zip(["ns", "ew", "vt"], [ns, ew, vt]):
            returned = getattr(sensor, attr)
            self.assertEqual(expected, returned)

        # Bad ns, should be TimeSeries
        _ns = [1, 1, 1]
        self.assertRaises(TypeError, hvsrpy.Sensor3c, _ns, ew, vt)

        # Bad ew, should be TimeSeries
        _ew = [1, 1, 1]
        self.assertRaises(TypeError, hvsrpy.Sensor3c, ns, _ew, vt)

        # Bad dt, should be 1
        ns = sigpropy.TimeSeries([1, 1, 1], dt=2)
        self.assertRaises(ValueError, hvsrpy.Sensor3c, ns, ew, vt)

        # Bad length, will trim
        amp = np.array([1, 1])
        ns = sigpropy.TimeSeries(amp, dt=1)
        hvsrpy.Sensor3c(ns, ew, vt)
        self.assertArrayEqual(amp, ew.amp)
        self.assertArrayEqual(amp, vt.amp)
Example #2
0
    def test_transform(self):
        # Setup.
        amplitude = [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0]
        dt = 1

        expected_frq = np.array([
            0.00000000000000000, 0.09090909090909091, 0.18181818181818182,
            0.2727272727272727, 0.36363636363636365, 0.4545454545454546
        ])
        expected_amp = np.array([
            25.0 + 0.0 * 1j, -11.843537519677056 + -3.477576385886737 * 1j,
            0.22844587066117938 + 0.14681324646918337 * 1j,
            -0.9486905697966428 + -1.0948472814948405 * 1j,
            0.1467467171062613 + 0.3213304885841657 * 1j,
            -0.08296449829374097 + -0.5770307602665046 * 1j
        ])
        expected_amp *= 2 / len(amplitude)

        # nseries = 1
        tseries = sigpropy.TimeSeries(amplitude, dt)
        sensor = hvsrpy.Sensor3c(tseries, tseries, tseries)
        fft = sensor.transform()

        for val in fft.values():
            for expected, returned in [(expected_frq, val.frequency),
                                       (expected_amp, val.amplitude)]:
                self.assertArrayAlmostEqual(expected, returned)

        # nseries = 2
        amplitude = np.array([amplitude, amplitude])
        tseries = sigpropy.TimeSeries(amplitude, dt)
        sensor = hvsrpy.Sensor3c(tseries, tseries, tseries)
        fft = sensor.transform()

        for val in fft.values():
            for expected, returned in [(expected_frq, val.frequency),
                                       (expected_amp, val.amplitude[0])]:
                self.assertArrayAlmostEqual(expected, returned)

        # Bad TimeSeries
        sensor.ew = "bad TimeSeries"
        self.assertRaises(TypeError, sensor.transform)
Example #3
0
    def test_detrend(self):
        # Simple case
        signal = np.array([0, -0.2, -0.5, -0.2, 0, 0.2, 0.5, 0.2]*5)
        noise = np.linspace(0, 5, 40)
        component = sigpropy.TimeSeries(signal + noise, dt=1)
        sensor = hvsrpy.Sensor3c(component, component, component)
        sensor.detrend()

        expected = signal
        for returned in sensor:
            self.assertArrayAlmostEqual(expected, returned.amp, delta=0.1)
Example #4
0
    def test_split(self):
        # Simple Case
        component = sigpropy.TimeSeries([0, 1, 2, 3, 4, 5, 6], dt=1)
        sensor = hvsrpy.Sensor3c(component, component, component)
        wlen = 2
        sensor.split(windowlength=wlen)

        expected = sigpropy.WindowedTimeSeries.from_timeseries(component,
                                                               windowlength=wlen)
        for returned in sensor:
            self.assertEqual(expected, returned)
Example #5
0
    def test_normalization_factor(self):
        ns = sigpropy.TimeSeries([-1, 1, 1], dt=1)
        ew = sigpropy.TimeSeries([1, 2, 1], dt=1)
        vt = sigpropy.TimeSeries([1, 1, -5], dt=1)
        sensor = hvsrpy.Sensor3c(ns, ew, vt)

        expected = 5
        self.assertEqual(expected, sensor.normalization_factor)

        # Find second maximum
        sensor.vt.amp[2] = 0
        expected = 2
        self.assertEqual(expected, sensor.normalization_factor)
Example #6
0
    def test_to_and_from_json(self):
        # Simple Case
        ns = sigpropy.TimeSeries([1, 2, 3], dt=1)
        ew = sigpropy.TimeSeries([1, 4, 5], dt=1)
        vt = sigpropy.TimeSeries([1, -1, 1], dt=1)
        expected = hvsrpy.Sensor3c(ns, ew, vt)

        json_repr = expected.to_json()
        returned = hvsrpy.Sensor3c.from_json(json_repr)

        for comp in ["ns", "ew", "vt"]:
            exp = getattr(expected, comp).amp
            ret = getattr(returned, comp).amp
            self.assertArrayEqual(exp, ret)
Example #7
0
    def test_bandpassfilter(self):
        # Simple case
        tseries = np.random.random(50)
        component = sigpropy.TimeSeries(tseries, dt=1 / 10)

        sensor = hvsrpy.Sensor3c(component, component, component)
        settings = dict(flow=0.3, fhigh=3, order=5)
        sensor.bandpassfilter(**settings)

        expected = sigpropy.TimeSeries(tseries, dt=1 / 10)
        expected.bandpassfilter(**settings)

        for returned in sensor:
            self.assertArrayEqual(expected.amplitude, returned.amplitude)
Example #8
0
    def test_to_and_from_json(self):
        # Simple Case
        ns = sigpropy.TimeSeries([1, 2, 3], dt=1)
        ew = sigpropy.TimeSeries([1, 4, 5], dt=1)
        vt = sigpropy.TimeSeries([1, -1, 1], dt=1)
        original = hvsrpy.Sensor3c(ns, ew, vt)

        original_as_json_string = original.to_json()
        recovered = hvsrpy.Sensor3c.from_json(original_as_json_string)

        for key in ["ns", "ew", "vt", "meta"]:
            expected = getattr(original, key)
            returned = getattr(recovered, key)
            self.assertEqual(expected, returned)
Example #9
0
    def test_to_and_from_dict(self):
        # Simple Case
        ns = sigpropy.TimeSeries([1., 2, 3], dt=1)
        ew = sigpropy.TimeSeries([1., 4, 5], dt=1)
        vt = sigpropy.TimeSeries([1., 1, 1], dt=1)
        original = hvsrpy.Sensor3c(ns, ew, vt, meta={"windowlength": 1})

        original_as_dict = original.to_dict()
        recovered = hvsrpy.Sensor3c.from_dict(original_as_dict)

        for key in ["ns", "ew", "vt", "meta"]:
            expected = getattr(original, key)
            returned = getattr(recovered, key)
            self.assertEqual(expected, returned)
Example #10
0
    def test_to_and_from_dict(self):
        # Simple Case
        ns = sigpropy.TimeSeries([1., 2, 3], dt=1)
        ew = sigpropy.TimeSeries([1., 4, 5], dt=1)
        vt = sigpropy.TimeSeries([1., 1, 1], dt=1)
        expected = hvsrpy.Sensor3c(ns, ew, vt, meta={"windowlength": 1})

        dict_repr = expected.to_dict()
        returned = hvsrpy.Sensor3c.from_dict(dict_repr)

        for comp in ["ns", "ew", "vt", "meta"]:
            exp = getattr(expected, comp)
            ret = getattr(returned, comp)
            self.assertEqual(exp, ret)
Example #11
0
    def test_combine_horizontals(self):
        dt = 0.01
        amplitude = np.sin(2 * np.pi * 1 * np.arange(0, 4, dt))
        tseries = sigpropy.TimeSeries(amplitude, dt)
        fseries = sigpropy.FourierTransform.from_timeseries(tseries)
        sensor = hvsrpy.Sensor3c(tseries, tseries, tseries)

        for invalid_method in ["average"]:
            self.assertRaises(NotImplementedError,
                              sensor._combine_horizontal_td,
                              method=invalid_method,
                              azimuth=2.)
            self.assertRaises(NotImplementedError,
                              sensor._combine_horizontal_fd,
                              method=invalid_method,
                              ns=fseries,
                              ew=fseries)
Example #12
0
 def new_sensor():
     ns = sigpropy.TimeSeries(np.ones(10), dt=1)
     ew = sigpropy.TimeSeries(np.ones(10), dt=1)
     vt = sigpropy.TimeSeries(np.ones(10), dt=1)
     return hvsrpy.Sensor3c(ns, ew, vt)
Example #13
0
 def new_sensor():
     component = sigpropy.TimeSeries(np.ones(10), dt=1)
     return hvsrpy.Sensor3c(component, component, component)