Ejemplo n.º 1
0
    def test_frequency_range(self):
        new = self.TEST_CLASS('test', frequency_range=(1, 40))
        assert isinstance(new.frequency_range, units.Quantity)
        utils.assert_quantity_equal(new.frequency_range, (1, 40) * units.Hz)

        with pytest.raises(TypeError):
            Channel('', frequency_range=1)
Ejemplo n.º 2
0
 def test_crop(self, array):
     a2 = array.crop(10, 20)
     utils.assert_quantity_equal(array[10:20], a2)
     # check that warnings are printed for out-of-bounds
     with pytest.warns(UserWarning):
         array.crop(array.xspan[0] - 1, array.xspan[1])
         array.crop(array.xspan[0], array.xspan[1] + 1)
Ejemplo n.º 3
0
    def test_frequency_range(self):
        new = self.TEST_CLASS('test', frequency_range=(1, 40))
        assert isinstance(new.frequency_range, units.Quantity)
        utils.assert_quantity_equal(new.frequency_range, (1, 40) * units.Hz)

        with pytest.raises(TypeError):
            Channel('', frequency_range=1)
Ejemplo n.º 4
0
    def test_getitem(self, array, create_kwargs):
        array = self.create(name='test_getitem', **create_kwargs)

        # test element returns as quantity
        element = array[0, 0]
        assert element == array[0][0]
        assert isinstance(element, units.Quantity)
        utils.assert_quantity_equal(element, array.value[0, 0] * array.unit)

        # test column slice returns as _columnclass
        utils.assert_quantity_sub_equal(array[2], array[2, :])
        column = array[0, 0::2]
        utils.assert_quantity_sub_equal(column, self.TEST_CLASS._columnclass(
            array.value[0, 0::2], x0=array.y0, dx=array.dy*2, name=array.name,
            channel=array.channel, unit=array.unit, epoch=array.epoch))

        # test row slice returns as _rowclass
        row = array[1:10:3, 0]
        utils.assert_array_equal(row.value, array.value[1:10:3, 0])
        utils.assert_quantity_sub_equal(row, self.TEST_CLASS._rowclass(
                array.value[1:10:3, 0],
                x0=array.x0+array.dx, dx=array.dx*3,
                name=array.name, channel=array.channel, unit=array.unit),
            exclude=['epoch'])

        # test dual slice returns type(self) with metadata
        subarray = array[1:5:2, 1:5:2]
        utils.assert_quantity_sub_equal(subarray, self.TEST_CLASS(
                array.value[1:5:2, 1:5:2],
                x0=array.x0+array.dx, dx=array.dx*2,
                y0=array.y0+array.dy, dy=array.dy*2,
                name=array.name, channel=array.channel, unit=array.unit),
            exclude=['epoch'])
Ejemplo n.º 5
0
 def test_crop(self, array):
     a2 = array.crop(10, 20)
     utils.assert_quantity_equal(array[10:20], a2)
     # check that warnings are printed for out-of-bounds
     with pytest.warns(UserWarning):
         array.crop(array.xspan[0]-1, array.xspan[1])
     with pytest.warns(UserWarning):
         array.crop(array.xspan[0], array.xspan[1]+1)
Ejemplo n.º 6
0
    def test_filter(self, array):
        a2 = array.filter([100], [1], 1e-2)
        assert isinstance(a2, type(array))
        utils.assert_quantity_equal(a2.frequencies, array.frequencies)

        # manually rebuild the filter to test it works
        b, a, = signal.zpk2tf([100], [1], 1e-2)
        fresp = abs(signal.freqs(b, a, array.frequencies.value)[1])
        utils.assert_array_equal(a2.value, fresp * array.value)
Ejemplo n.º 7
0
    def test_filter(self, array):
        a2 = array.filter([100], [1], 1e-2)
        assert isinstance(a2, type(array))
        utils.assert_quantity_equal(a2.frequencies, array.frequencies)

        # manually rebuild the filter to test it works
        b, a, = signal.zpk2tf([100], [1], 1e-2)
        fresp = abs(signal.freqs(b, a, array.frequencies.value)[1])
        utils.assert_array_equal(a2.value, fresp * array.value)
Ejemplo n.º 8
0
 def test_copy(self):
     new = self.TEST_CLASS('X1:TEST', sample_rate=128, unit='m',
                           frequency_range=(1, 40), safe=False,
                           dtype='float64')
     copy = new.copy()
     for attr in ('name', 'ifo', 'system', 'subsystem', 'signal',
                  'trend', 'type', 'sample_rate', 'unit', 'dtype',
                  'frametype', 'model', 'url', 'frequency_range', 'safe'):
         a = getattr(new, attr)
         b = getattr(copy, attr)
         if isinstance(a, units.Quantity):
             utils.assert_quantity_equal(a, b)
         else:
             assert a == b
Ejemplo n.º 9
0
    def test_new(self):
        super(TestSpectrogram, self).test_new()

        # check handling of epoch vs t0
        a = self.create(epoch=10)
        b = self.create(t0=10)
        utils.assert_quantity_sub_equal(a, b)
        with pytest.raises(ValueError) as exc:
            self.TEST_CLASS(self.data, epoch=1, t0=1)
        assert str(exc.value) == 'give only one of epoch or t0'

        # check times
        times = numpy.arange(self.data.shape[0])
        a = self.create(times=times)
        utils.assert_quantity_equal(a.times, times * units.second)
Ejemplo n.º 10
0
 def test_copy(self):
     new = self.TEST_CLASS('X1:TEST',
                           sample_rate=128,
                           unit='m',
                           frequency_range=(1, 40),
                           safe=False,
                           dtype='float64')
     copy = new.copy()
     for attr in ('name', 'ifo', 'system', 'subsystem', 'signal', 'trend',
                  'type', 'sample_rate', 'unit', 'dtype', 'frametype',
                  'model', 'url', 'frequency_range', 'safe'):
         a = getattr(new, attr)
         b = getattr(copy, attr)
         if isinstance(a, units.Quantity):
             utils.assert_quantity_equal(a, b)
         else:
             assert a == b
Ejemplo n.º 11
0
    def test_sample_rate(self):
        """Test `gwpy.timeseries.TimeSeriesBase.sample_rate`
        """
        # check basic conversion from dt -> sample_rate
        a = self.create(dt=0.5)
        assert a.sample_rate == 2 * units.Hz

        # test that we can't delete sample_rate
        with pytest.raises(AttributeError):
            del a.sample_rate

        # check None gets preserved
        a.sample_rate = None
        with pytest.raises(AttributeError):
            a._t0

        # check other types
        a.sample_rate = units.Quantity(128, units.Hz)
        utils.assert_quantity_equal(a.dt, units.s / 128.)
        a.sample_rate = units.Quantity(16.384, units.kiloHertz)
        utils.assert_quantity_equal(a.dt, units.s / 16384)
Ejemplo n.º 12
0
    def test_yindex(self):
        y = numpy.linspace(0, 100, num=self.data.shape[0])

        # test simple
        series = self.create(yindex=y)
        utils.assert_quantity_equal(
            series.yindex, units.Quantity(y, self.TEST_CLASS._default_yunit))

        # test deleter
        del series.yindex
        del series.yindex
        y1 = series.y0.value + series.shape[0] * series.dy.value
        y_default = numpy.linspace(series.y0.value,
                                   y1,
                                   num=series.shape[0],
                                   endpoint=False)
        utils.assert_quantity_equal(
            series.yindex,
            units.Quantity(y_default, self.TEST_CLASS._default_yunit))

        # test setting of y0 and dy
        series = self.create(yindex=units.Quantity(y, 'Farad'))
        assert series.y0 == units.Quantity(y[0], 'Farad')
        assert series.dy == units.Quantity(y[1] - y[0], 'Farad')
        assert series.yunit == units.Farad
        assert series.yspan == (y[0], y[-1] + y[1] - y[0])

        # test that setting yindex warns about ignoring dy or y0
        with pytest.warns(UserWarning):
            series = self.create(yindex=units.Quantity(y, 'Farad'), dy=1)
        with pytest.warns(UserWarning):
            series = self.create(yindex=units.Quantity(y, 'Farad'), y0=0)

        # test non-regular yindex
        y = numpy.logspace(0, 2, num=self.data.shape[0])
        series = self.create(yindex=units.Quantity(y, 'Mpc'))
        with pytest.raises(AttributeError):
            series.dy
        assert series.y0 == units.Quantity(1, 'Mpc')
        assert series.yspan == (y[0], y[-1] + y[-1] - y[-2])
Ejemplo n.º 13
0
    def test_xindex(self):
        x = numpy.linspace(0, 100, num=self.data.shape[0])

        # test simple
        series = self.create(xindex=x)
        utils.assert_quantity_equal(
            series.xindex, units.Quantity(x, self.TEST_CLASS._default_xunit))

        # test deleter
        del series.xindex
        del series.xindex
        x1 = series.x0.value + series.shape[0] * series.dx.value
        x_default = numpy.linspace(series.x0.value,
                                   x1,
                                   num=series.shape[0],
                                   endpoint=False)
        utils.assert_quantity_equal(
            series.xindex,
            units.Quantity(x_default, self.TEST_CLASS._default_xunit))

        # test setting of x0 and dx
        series = self.create(xindex=units.Quantity(x, 'Farad'))
        assert series.x0 == units.Quantity(x[0], 'Farad')
        assert series.dx == units.Quantity(x[1] - x[0], 'Farad')
        assert series.xunit == units.Farad
        assert series.xspan == (x[0], x[-1] + x[1] - x[0])

        # test that setting xindex warns about ignoring dx or x0
        with pytest.warns(UserWarning):
            series = self.create(xindex=units.Quantity(x, 'Farad'), dx=1)
        with pytest.warns(UserWarning):
            series = self.create(xindex=units.Quantity(x, 'Farad'), x0=0)

        # test non-regular xindex
        x = numpy.logspace(0, 2, num=self.data.shape[0])
        series = self.create(xindex=units.Quantity(x, 'Mpc'))
        with pytest.raises(AttributeError):
            series.dx
        assert series.x0 == units.Quantity(1, 'Mpc')
        assert series.xspan == (x[0], x[-1] + x[-1] - x[-2])
Ejemplo n.º 14
0
    def test_xindex(self):
        x = numpy.linspace(0, 100, num=self.data.shape[0])

        # test simple
        series = self.create(xindex=x)
        utils.assert_quantity_equal(
            series.xindex, units.Quantity(x, self.TEST_CLASS._default_xunit))

        # test deleter
        del series.xindex
        del series.xindex
        x1 = series.x0.value + series.shape[0] * series.dx.value
        x_default = numpy.linspace(series.x0.value, x1, num=series.shape[0],
                                   endpoint=False)
        utils.assert_quantity_equal(
            series.xindex,
            units.Quantity(x_default, self.TEST_CLASS._default_xunit))

        # test setting of x0 and dx
        series = self.create(xindex=units.Quantity(x, 'Farad'))
        assert series.x0 == units.Quantity(x[0], 'Farad')
        assert series.dx == units.Quantity(x[1] - x[0], 'Farad')
        assert series.xunit == units.Farad
        assert series.xspan == (x[0], x[-1] + x[1] - x[0])

        # test that setting xindex warns about ignoring dx or x0
        with pytest.warns(UserWarning):
            series = self.create(xindex=units.Quantity(x, 'Farad'), dx=1)
        with pytest.warns(UserWarning):
            series = self.create(xindex=units.Quantity(x, 'Farad'), x0=0)

        # test non-regular xindex
        x = numpy.logspace(0, 2, num=self.data.shape[0])
        series = self.create(xindex=units.Quantity(x, 'Mpc'))
        with pytest.raises(AttributeError):
            series.dx
        assert series.x0 == units.Quantity(1, 'Mpc')
        assert series.xspan == (x[0], x[-1] + x[-1] - x[-2])
Ejemplo n.º 15
0
    def test_yindex(self):
        y = numpy.linspace(0, 100, num=self.data.shape[1])

        # test simple
        series = self.create(yindex=y)
        utils.assert_quantity_equal(
            series.yindex, units.Quantity(y, self.TEST_CLASS._default_yunit))

        # test deleter
        del series.yindex
        del series.yindex
        y1 = series.y0.value + series.shape[1] * series.dy.value
        y_default = numpy.linspace(series.y0.value, y1, num=series.shape[1],
                                   endpoint=False)
        utils.assert_quantity_equal(
            series.yindex,
            units.Quantity(y_default, self.TEST_CLASS._default_yunit))

        # test setting of y0 and dy
        series = self.create(yindex=units.Quantity(y, 'Farad'))
        assert series.y0 == units.Quantity(y[0], 'Farad')
        assert series.dy == units.Quantity(y[1] - y[0], 'Farad')
        assert series.yunit == units.Farad
        assert series.yspan == (y[0], y[-1] + y[1] - y[0])

        # test that setting yindex warns about ignoring dy or y0
        with pytest.warns(UserWarning):
            series = self.create(yindex=units.Quantity(y, 'Farad'), dy=1)
        with pytest.warns(UserWarning):
            series = self.create(yindex=units.Quantity(y, 'Farad'), y0=0)

        # test non-regular yindex
        y = numpy.logspace(0, 2, num=self.data.shape[0])
        series = self.create(yindex=units.Quantity(y, 'Mpc'))
        with pytest.raises(AttributeError):
            series.dy
        assert series.y0 == units.Quantity(1, 'Mpc')
        assert series.yspan == (y[0], y[-1] + y[-1] - y[-2])
Ejemplo n.º 16
0
    def test_getitem(self, array):
        # item access
        utils.assert_quantity_equal(
            array[0], units.Quantity(array.value[0], array.unit))

        # slice
        utils.assert_quantity_equal(array[1::2], self.TEST_CLASS(
            array.value[1::2], x0=array.x0+array.dx, dx=array.dx*2,
            name=array.name, epoch=array.epoch, unit=array.unit),
        )

        # index array
        a = numpy.array([3, 4, 1, 2])
        utils.assert_quantity_equal(array[a], self.TEST_CLASS(
            array.value[a], xindex=array.xindex[a],
            name=array.name, epoch=array.epoch, unit=array.unit),
        )
Ejemplo n.º 17
0
 def test_frequencies(self, array):
     assert array.frequencies is array.xindex
     utils.assert_quantity_equal(
         array.frequencies, numpy.arange(array.size) * array.df + array.f0)
Ejemplo n.º 18
0
 def test_zpk(self, array):
     a2 = array.zpk([100], [1], 1e-2)
     assert isinstance(a2, type(array))
     utils.assert_quantity_equal(a2.frequencies, array.frequencies)
Ejemplo n.º 19
0
 def test_median(self, array):
     utils.assert_quantity_equal(array.median(),
                                 numpy.median(array.value) * array.unit)
Ejemplo n.º 20
0
 def test_abs(self, array):
     utils.assert_quantity_equal(array.abs(), numpy.abs(array))
Ejemplo n.º 21
0
 def test_zpk(self, array):
     a2 = array.zpk([100], [1], 1e-2)
     assert isinstance(a2, type(array))
     utils.assert_quantity_equal(a2.frequencies, array.frequencies)
Ejemplo n.º 22
0
 def test_abs(self, array):
     utils.assert_quantity_equal(array.abs(), numpy.abs(array))
Ejemplo n.º 23
0
 def test_frequencies(self, array):
     assert array.frequencies is array.xindex
     utils.assert_quantity_equal(
         array.frequencies,
         numpy.arange(array.size) * array.df + array.f0)
Ejemplo n.º 24
0
 def test_median(self, array):
     utils.assert_quantity_equal(
         array.median(), numpy.median(array.value) * array.unit)