示例#1
0
class TestShapeletSetPolarExp(object):
    """
    class to test Shapelets
    """
    def setup(self):
        self.shapeletSet = ShapeletSetPolar(exponential=True)
        self.shapelets = ShapeletsPolarExp()
        self.x, self.y = util.make_grid(10, 0.1, 1)

    def test_shapelet_set(self):
        """

        #:return:
        """
        n_max = 2
        beta = 1.
        amp = [1, 0, 0, 0, 0, 0, 0, 0, 0]
        output = self.shapeletSet.function(np.array(1),
                                           np.array(1),
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        npt.assert_almost_equal(output, 0.19397908887786985, decimal=8)
        input = np.array(0.)
        input += output

        output = self.shapeletSet.function(self.x,
                                           self.y,
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        npt.assert_almost_equal(output[10], 0.4511844400064266, decimal=8)
        output = self.shapeletSet.function(1,
                                           1,
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        npt.assert_almost_equal(output, 0.19397908887786985, decimal=8)

        n_max = -1
        beta = 1.
        amp = [1, 0, 0]
        output = self.shapeletSet.function(np.array(1),
                                           np.array(1),
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        assert output == 0

    def test_decomposition(self):
        """

        #:return:
        """
        scale = 10
        n_max = 2
        beta = 1. * scale
        deltaPix = 0.5 * scale
        amp = np.array([1, 1, -1, 1, 1, 1, 1, 1, 1])
        x, y = util.make_grid(1000, deltaPix, 1)
        input = self.shapeletSet.function(x,
                                          y,
                                          amp,
                                          n_max,
                                          beta,
                                          center_x=0,
                                          center_y=0)
        amp_out = self.shapeletSet.decomposition(input,
                                                 x,
                                                 y,
                                                 n_max,
                                                 beta,
                                                 deltaPix,
                                                 center_x=0,
                                                 center_y=0)
        print(amp_out, 'amp_out')
        for i in range(len(amp)):
            print(self.shapeletSet.shapelets.index2poly(i))
        for i in range(len(amp)):
            print(i, 'i test')
            npt.assert_almost_equal(amp_out[i], amp[i], decimal=2)

    def test_function_split(self):
        n_max = 2
        beta = 10.
        deltaPix = 0.1
        amp = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1])
        x, y = util.make_grid(10, deltaPix, 1)
        function_set = self.shapeletSet.function_split(x,
                                                       y,
                                                       amp,
                                                       n_max,
                                                       beta,
                                                       center_x=0,
                                                       center_y=0)
        test_flux = self.shapelets.function(x,
                                            y,
                                            amp=1.,
                                            n=0,
                                            m=0,
                                            complex_bool=False,
                                            beta=beta,
                                            center_x=0,
                                            center_y=0)
        print(np.shape(function_set))
        print(np.shape(test_flux))
        assert function_set[0][10] == test_flux[10]

    def test_index2poly(self):
        index = 0
        n, m, complex_bool = self.shapeletSet.index2poly(index)
        assert n == 0
        assert m == 0
        assert complex_bool is False
示例#2
0
class TestShapeletSetPolar(object):
    """
    class to test Shapelets
    """
    def setup(self):
        self.shapeletSet = ShapeletSetPolar()
        self.shapelets = ShapeletsPolar()
        self.x, self.y = util.make_grid(10, 0.1, 1)

    def test_shapelet_set(self):
        """

        :return:
        """
        n_max = 2
        beta = 1.
        amp = [1, 0, 0, 0, 0, 0]
        output = self.shapeletSet.function(np.array(1),
                                           np.array(1),
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        npt.assert_almost_equal(output, 0.20755374871029739, decimal=8)
        input = np.array(0.)
        input += output

        output = self.shapeletSet.function(self.x,
                                           self.y,
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        npt.assert_almost_equal(output[10], 0.47957022395315946, decimal=8)
        output = self.shapeletSet.function(1,
                                           1,
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        npt.assert_almost_equal(output, 0.20755374871029739, decimal=8)

        n_max = -1
        beta = 1.
        amp = [1, 0, 0, 0, 0, 0]
        output = self.shapeletSet.function(np.array(1),
                                           np.array(1),
                                           amp,
                                           n_max,
                                           beta,
                                           center_x=0,
                                           center_y=0)
        assert output == 0

    def test_decomposition(self):
        """

        :return:
        """
        n_max = 2
        beta = 10.
        deltaPix = 2
        amp = np.array([1, 1, -1, 1, 1, 1])
        x, y = util.make_grid(100, deltaPix, 1)
        input = self.shapeletSet.function(x,
                                          y,
                                          amp,
                                          n_max,
                                          beta,
                                          center_x=0,
                                          center_y=0)
        amp_out = self.shapeletSet.decomposition(input,
                                                 x,
                                                 y,
                                                 n_max,
                                                 beta,
                                                 deltaPix,
                                                 center_x=0,
                                                 center_y=0)
        print(amp_out, 'amp_out')
        for i in range(len(amp)):
            print(i, 'i test')
            npt.assert_almost_equal(amp_out[i], amp[i], decimal=4)

    def test_function_split(self):
        n_max = 2
        beta = 10.
        deltaPix = 0.1
        amp = np.array([1, 1, 1, 1, 1, 1])
        x, y = util.make_grid(10, deltaPix, 1)
        function_set = self.shapeletSet.function_split(x,
                                                       y,
                                                       amp,
                                                       n_max,
                                                       beta,
                                                       center_x=0,
                                                       center_y=0)
        test_flux = self.shapelets.function(x,
                                            y,
                                            amp=1.,
                                            n=0,
                                            m=0,
                                            complex_bool=False,
                                            beta=beta,
                                            center_x=0,
                                            center_y=0)
        print(np.shape(function_set))
        print(np.shape(test_flux))
        assert function_set[0][10] == test_flux[10]