예제 #1
0
    def test_dtypes0(self):
        """Test output is float64 by default"""
        inttypes = ["int8", "int16", "int32", "uint8", "uint16", "uint32"]
        floattypes = ["float32", "float64", "float128"]
        mdtype = numpy.dtype("uint8")
        ddtype = numpy.dtype("float64")
        rows = 3
        columns = 4
        for dtype in inttypes:
            data = numpy.zeros(10, dtype=dtype)
            data[5:] = 10
            data = numpy.tile(self.data, (rows, columns, 1))
            res = fowler_array(data)
            self.assertIs(res[0].dtype, ddtype)
            self.assertIs(res[1].dtype, ddtype)
            self.assertIs(res[2].dtype, mdtype)
            self.assertIs(res[3].dtype, mdtype)

        for dtype in floattypes:
            data = numpy.zeros(10, dtype=dtype)
            data[5:] = 10
            data = numpy.tile(self.data, (rows, columns, 1))
            res = fowler_array(data)
            self.assertIs(res[0].dtype, ddtype)
            self.assertIs(res[1].dtype, ddtype)
            self.assertIs(res[2].dtype, mdtype)
            self.assertIs(res[3].dtype, mdtype)
예제 #2
0
    def test_badpixel1(self):
        """Test we handle correctly None badpixel mask."""
        self.emptybp[...] = 0
        values = [2343, 2454, 2578, 2661, 2709, 24311, 24445, 24405, 24612, 24707]
        self.data = numpy.empty((10, 3, 4), dtype="int32")
        for i in range(10):
            self.data[i, ...] = values[i]
        arr = self.data[5:, 0, 0] - self.data[:5, 0, 0]
        mean = arr.mean()

        res = fowler_array(self.data, saturation=self.saturation, badpixels=self.emptybp, blank=self.blank)

        for nn in res[2].flat:
            self.assertEqual(nn, 5)

        for n in res[3].flat:
            self.assertEqual(n, 0)

        # We have ti = texp = ts =0
        # So the noise is 2*sigma / N_p
        for v in res[1].flat:
            self.assertAlmostEqual(v, 2.0 / 5)

        for v in res[0].flat:
            self.assertAlmostEqual(v, mean)

        self.emptybp = None
        res = fowler_array(self.data, saturation=self.saturation, badpixels=self.emptybp, blank=self.blank)

        for nn in res[2].flat:
            self.assertEqual(nn, 5)

        for n in res[3].flat:
            self.assertEqual(n, 0)

        for v in res[1].flat:
            self.assertAlmostEqual(v, 2.0 / 5)

        for v in res[0].flat:
            self.assertAlmostEqual(v, mean)

        res = fowler_array(self.data, saturation=self.saturation, blank=self.blank)

        for nn in res[2].flat:
            self.assertEqual(nn, 5)

        for n in res[3].flat:
            self.assertEqual(n, 0)

        for v in res[1].flat:
            self.assertAlmostEqual(v, 2.0 / 5)

        for v in res[0].flat:
            self.assertAlmostEqual(v, mean)
예제 #3
0
    def test_results1(self):
        """Test we obtain correct values in Fowler mode"""

        data = numpy.zeros((10, 4, 5), dtype="int32")
        vals = numpy.array([10, 13, 15, 17, 20, 411, 412, 414, 417, 422])
        ovals = vals[5:] - vals[:5]
        mean = ovals.mean()
        var = ovals.var()

        for i in range(10):
            data[i, ...] = vals[i]

        res = fowler_array(data, saturation=self.saturation, blank=self.blank)

        for nn in res[2].flat:
            self.assertEqual(nn, 5)

        for n in res[3].flat:
            self.assertEqual(n, 0)

        for v in res[1].flat:
            self.assertAlmostEqual(v, 2.0 / 5)

        for v in res[0].flat:
            self.assertAlmostEqual(v, mean)
예제 #4
0
    def test_badpixel0(self):
        """Test we ignore badpixels in Fowler mode."""
        mask_val = 2
        self.emptybp[...] = mask_val

        res = fowler_array(self.data, saturation=self.saturation, badpixels=self.emptybp, blank=self.blank)

        for nn in res[2].flat:
            self.assertEqual(nn, 0)

        for n in res[3].flat:
            self.assertEqual(n, mask_val)

        for v in res[1].flat:
            self.assertEqual(v, self.blank)

        for v in res[0].flat:
            self.assertAlmostEqual(v, self.blank)
예제 #5
0
    def test_saturation1(self):
        """Test we count correctly saturated pixels in Fowler mode."""

        saturation = 50000
        self.data[7:, ...] = saturation

        res = fowler_array(self.data, saturation=saturation, blank=self.blank)

        for nn in res[2].flat:
            self.assertEqual(nn, 2)

        for n in res[3].flat:
            self.assertEqual(n, MASK_GOOD)

        for v in res[1].flat:
            self.assertAlmostEqual(v, 2.0 / 2)

        for v in res[0].flat:
            self.assertAlmostEqual(v, 5)
예제 #6
0
    def test_saturation0(self):
        """Test we count correctly saturated pixels in Fowler mode."""

        # No points
        self.data[:] = 50000  # - 32768
        saturation = 40000  # - 32767

        res = fowler_array(self.data, saturation=saturation, blank=self.blank)

        # Number of points
        for nn in res[2].flat:
            self.assertEqual(nn, 0)

        # Mask value
        for n in res[3].flat:
            self.assertEqual(n, MASK_SATURATION)

        # Variance
        for v in res[1].flat:
            self.assertEqual(v, self.blank)

        # Values
        for v in res[0].flat:
            self.assertEqual(v, self.blank)