예제 #1
0
    def test_model(self):
        frame_shape = (10, 20, 30)
        frame = scarlet.Frame(frame_shape)

        shape = (5, 4, 6)
        on_location = (1, 2, 3)
        sed = np.zeros(shape[0])
        sed[on_location[0]] = 1

        fparams = np.array(on_location[1:])

        def f(*params):
            morph = np.zeros(shape[1:])
            morph[tuple(params)] = 1
            return morph

        sed = scarlet.Parameter(sed)
        fparams = scarlet.Parameter(fparams)
        origin = (2, 3, 4)
        bbox = scarlet.Box(shape, origin=origin)

        component = scarlet.FunctionComponent(frame,
                                              sed,
                                              fparams,
                                              f,
                                              bbox=bbox)
        model = component.get_model()

        # everything zero except at one location?
        test_loc = tuple(np.array(on_location) + np.array(origin))
        mask = np.zeros(model.shape, dtype='bool')
        mask[test_loc] = True
        assert_array_equal(model[~mask], 0)
        assert model[test_loc] == 1
예제 #2
0
    def test_model(self):
        frame_shape = (10, 20, 30)
        frame = scarlet.Frame(frame_shape)

        shape = (5, 4, 6)
        on_location = (1, 2, 3)
        sed = np.zeros(shape[0])
        sed[on_location[0]] = 1
        morph = np.zeros(shape[1:])
        morph[on_location[1:]] = 1

        sed = scarlet.Parameter(sed)
        morph = scarlet.Parameter(morph)
        origin = (2, 3, 4)
        bbox = scarlet.Box(shape, origin=origin)

        component = scarlet.FactorizedComponent(frame, sed, morph, bbox=bbox)
        model = component.get_model()

        # everything zero except at one location?
        test_loc = tuple(np.array(on_location) + np.array(origin))
        mask = np.zeros(model.shape, dtype='bool')
        mask[test_loc] = True
        assert_array_equal(model[~mask], 0)
        assert model[test_loc] == 1

        # now with shift
        shift_loc = (0, 1, 0)
        shift = scarlet.Parameter(np.array(shift_loc[1:]))
        component = scarlet.FactorizedComponent(frame,
                                                sed,
                                                morph,
                                                shift=shift,
                                                bbox=bbox)
        model = component.get_model()

        # everything zero except at one location?
        test_loc = tuple(
            np.array(on_location) + np.array(origin) + np.array(shift_loc))
        mask = np.zeros(model.shape, dtype='bool')
        mask[test_loc] = True
        assert_almost_equal(model[~mask], 0)
        assert_almost_equal(model[test_loc], 1)
예제 #3
0
    def test_model(self):
        frame_shape = (10, 20, 30)
        frame = scarlet.Frame(frame_shape)

        shape = (5, 4, 6)
        on_location = (1, 2, 3)
        cube = np.zeros(shape)
        cube[on_location] = 1
        cube = scarlet.Parameter(cube)
        origin1 = (2, 3, 4)
        bbox1 = scarlet.Box(shape, origin=origin1)
        component1 = scarlet.CubeComponent(frame, cube, bbox=bbox1)

        sed = np.zeros(shape[0])
        sed[on_location[0]] = 1
        morph = np.zeros(shape[1:])
        morph[on_location[1:]] = 1

        sed = scarlet.Parameter(sed)
        morph = scarlet.Parameter(morph)

        origin2 = (5, 6, 7)
        bbox2 = scarlet.Box(shape, origin=origin2)
        component2 = scarlet.FactorizedComponent(frame, sed, morph, bbox=bbox2)

        tree = scarlet.ComponentTree([component1, component2])
        model = tree.get_model()

        # everything zero except at one location?
        test_locs = [
            tuple(np.array(on_location) + np.array(origin1)),
            tuple(np.array(on_location) + np.array(origin2))
        ]
        mask = np.zeros(model.shape, dtype='bool')
        for test_loc in test_locs:
            mask[test_loc] = True
        assert_array_equal(model[~mask], 0)
        assert_array_equal(model[mask], 1)
예제 #4
0
    def test_model(self):
        frame_shape = (10, 20, 30)
        frame = scarlet.Frame(frame_shape, channels=np.arange(10))

        shape = (5, 4, 6)
        on_location = (1, 2, 3)
        sed = np.zeros(shape[0])
        sed[on_location[0]] = 1
        morph = np.zeros(shape[1:])
        morph[on_location[1:]] = 1

        origin = (2, 3, 4)
        box = scarlet.Box(shape, origin=origin)
        spectrum = scarlet.TabulatedSpectrum(frame, sed, bbox=box[0])
        morphology = scarlet.ImageMorphology(frame, morph, bbox=box[1:])

        component = scarlet.FactorizedComponent(frame, spectrum, morphology)
        model = component.get_model(frame=frame)

        # everything zero except at one location?
        test_loc = tuple(np.array(on_location) + np.array(origin))
        mask = np.zeros(model.shape, dtype="bool")
        mask[test_loc] = True
        assert_array_equal(model[~mask], 0)
        assert model[test_loc] == 1

        # now with shift
        shift_loc = (0, 1, 0)
        shift = scarlet.Parameter(np.array(shift_loc[1:]),
                                  step=0.1,
                                  name="shift")
        morphology = scarlet.ImageMorphology(frame,
                                             morph,
                                             bbox=box[1:],
                                             shift=shift)

        component = scarlet.FactorizedComponent(frame, spectrum, morphology)
        model = component.get_model(frame=frame)

        # everything zero except at one location?
        test_loc = tuple(
            np.array(on_location) + np.array(origin) + np.array(shift_loc))
        mask = np.zeros(model.shape, dtype="bool")
        mask[test_loc] = True
        assert_almost_equal(model[~mask], 0)
        assert_almost_equal(model[test_loc], 1)
예제 #5
0
    def test_model(self):
        frame_shape = (10, 20, 30)
        frame = scarlet.Frame(frame_shape)

        shape = (5, 4, 6)
        cube = np.zeros(shape)
        on_location = (1, 2, 3)
        cube[on_location] = 1
        cube = scarlet.Parameter(cube)
        origin = (2, 3, 4)
        bbox = scarlet.Box(shape, origin=origin)

        component = scarlet.CubeComponent(frame, cube, bbox=bbox)
        model = component.get_model()

        # everything zero except at one location?
        test_loc = tuple(np.array(on_location) + np.array(origin))
        mask = np.zeros(model.shape, dtype='bool')
        mask[test_loc] = True
        assert_array_equal(model[~mask], 0)
        assert model[test_loc] == 1
예제 #6
0
    def test_model(self):
        frame_shape = (10, 20, 30)
        frame = scarlet.Frame(frame_shape, channels=np.arange(10))

        shape = (5, 4, 6)
        origin = (2, 3, 4)
        box = scarlet.Box(shape, origin=origin)
        on_location1 = (1, 2, 3)
        cube = np.zeros(shape)
        cube[on_location1] = 1
        cube = scarlet.Parameter(cube, name="cube")
        component1 = scarlet.CubeComponent(frame, cube, bbox=box)

        # make factorized component with a different origin
        on_location2 = (1, 1, 1)
        sed = np.zeros(shape[0])
        sed[on_location2[0]] = 1
        morph = np.zeros(shape[1:])
        morph[on_location2[1:]] = 1

        spectrum = scarlet.TabulatedSpectrum(frame, sed, bbox=box[0])
        morphology = scarlet.ImageMorphology(frame, morph, bbox=box[1:])
        component2 = scarlet.FactorizedComponent(frame, spectrum, morphology)

        combined = scarlet.CombinedComponent([component1, component2])
        model = combined.get_model(frame=frame)

        # everything zero except at one location?
        test_locs = [
            tuple(np.array(on_location1) + np.array(origin)),
            tuple(np.array(on_location2) + np.array(origin)),
        ]
        mask = np.zeros(model.shape, dtype="bool")
        for test_loc in test_locs:
            mask[test_loc] = True
        assert_array_equal(model[~mask], 0)
        assert_array_equal(model[mask], 1)
예제 #7
0
 def __init__(self, model_frame, on_pixel, bbox=None):
     self._bbox = bbox
     self._on_pixel = scarlet.Parameter(on_pixel,
                                        step=1,
                                        name="on_pixel")
     super().__init__(model_frame, self._on_pixel, bbox=bbox)