Esempio n. 1
0
    def test_channelizetask(self):
        """Test channelization task."""
        ct = Channelize(self.fh, self.n)

        # Channelize everything.
        data1 = ct.read()
        assert ct.tell() == ct.shape[0]
        assert (ct.time - ct.start_time
                - ct.shape[0] / ct.sample_rate) < 1*u.ns
        assert ct.dtype is self.ref_data.dtype is data1.dtype
        assert np.all(self.ref_data == data1)

        # Seeking and selective decode.
        ct.seek(-3, 2)
        assert ct.tell() == ct.shape[0] - 3
        data2 = ct.read()
        assert data2.shape[0] == 3
        assert np.all(self.ref_data[-3:] == data2)

        ct.seek(-2, 2)
        with pytest.raises(EOFError):
            ct.read(10)

        ct.close()
        assert ct.closed
        with pytest.raises(ValueError):
            ct.read(1)
        with pytest.raises(AttributeError):
            ct.ih
Esempio n. 2
0
    def test_channelize_samples_per_frame(self, samples_per_frame):
        """Test channelization task."""
        ct = Channelize(self.fh, self.n, samples_per_frame=samples_per_frame)

        # Channelize everything.
        data1 = ct.read()
        assert len(data1) % samples_per_frame == 0
        assert (len(data1) // samples_per_frame
                == len(self.ref_data) // samples_per_frame)
        ref_data = self.ref_data[:len(data1)]
        assert np.all(data1 == ref_data)

        # Seeking and selective decode.
        ct.seek(-3, 2)
        assert ct.tell() == ct.shape[0] - 3
        data2 = ct.read()
        assert data2.shape[0] == 3
        assert np.all(data2 == ref_data[-3:])
Esempio n. 3
0
 def test_dechannelizetask_complex(self):
     """Test dechannelization round-tripping."""
     fh = self.fh_freq
     raw_data = fh.read()
     ct = Channelize(fh, self.n)
     dt = Dechannelize(ct)
     nrec = (fh.shape[0] // self.n) * self.n
     assert dt.shape == (nrec,) + fh.shape[1:]
     data = dt.read()
     # Note: round-trip is not perfect due to rounding errors.
     assert np.allclose(data, raw_data[:nrec], atol=1.e-5)
     assert np.all(dt.frequency == fh.frequency)
     assert np.all(dt.sideband == fh.sideband)
     # Check class method
     dt2 = ct.inverse(ct)
     data2 = dt2.read()
     assert np.all(data2 == data)
     # Check inverse inverse as well.
     ct2 = dt2.inverse(fh)
     ct.seek(0)
     ft = ct.read()
     ft2 = ct2.read()
     assert np.all(ft == ft2)
     dt2.close()