示例#1
0
    def test__results_of_phase_include_pixelization__available_as_property(
            self, imaging_7x7, mask_7x7):
        lens = al.Galaxy(redshift=0.5,
                         light=al.lp.EllipticalSersic(intensity=1.0))
        source = al.Galaxy(
            redshift=1.0,
            pixelization=al.pix.VoronoiMagnification(shape=(2, 3)),
            regularization=al.reg.Constant(),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_imaging_7x7 = al.PhaseImaging(
            settings=al.SettingsPhaseImaging(),
            search=mock.MockSearch("test_phase", samples=samples),
        )

        result = phase_imaging_7x7.run(dataset=imaging_7x7,
                                       mask=mask_7x7,
                                       results=mock.MockResults())

        assert isinstance(result.pixelization, al.pix.VoronoiMagnification)
        assert result.pixelization.shape == (2, 3)

        lens = al.Galaxy(redshift=0.5,
                         light=al.lp.EllipticalSersic(intensity=1.0))
        source = al.Galaxy(
            redshift=1.0,
            pixelization=al.pix.VoronoiBrightnessImage(pixels=6),
            regularization=al.reg.Constant(),
        )

        source.hyper_galaxy_image = np.ones(9)

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_imaging_7x7 = al.PhaseImaging(
            settings=al.SettingsPhaseImaging(),
            search=mock.MockSearch("test_phase", samples=samples),
        )

        result = phase_imaging_7x7.run(dataset=imaging_7x7,
                                       mask=mask_7x7,
                                       results=mock.MockResults())

        assert isinstance(result.pixelization, al.pix.VoronoiBrightnessImage)
        assert result.pixelization.pixels == 6
示例#2
0
    def test__max_log_likelihood_tracer_source_light_profile_centres_correct(
            self, analysis_imaging_7x7):

        lens = al.Galaxy(redshift=0.5, light=al.lp.SphSersic(intensity=1.0))

        source = al.Galaxy(redshift=1.0,
                           light=al.lp.SphSersic(centre=(1.0, 2.0),
                                                 intensity=2.0))

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = res.Result(samples=samples,
                            analysis=analysis_imaging_7x7,
                            model=None,
                            search=None)

        assert result.source_plane_light_profile_centre.in_list == [(1.0, 2.0)]

        source = al.Galaxy(
            redshift=1.0,
            light=al.lp.SphSersic(centre=(1.0, 2.0), intensity=2.0),
            light1=al.lp.SphSersic(centre=(3.0, 4.0), intensity=2.0),
        )

        source_1 = al.Galaxy(redshift=1.0,
                             light=al.lp.SphSersic(centre=(5.0, 6.0),
                                                   intensity=2.0))

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source, source_1])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = res.Result(samples=samples,
                            analysis=analysis_imaging_7x7,
                            model=None,
                            search=None)

        assert result.source_plane_light_profile_centre.in_list == [(1.0, 2.0)]

        tracer = al.Tracer.from_galaxies(galaxies=[al.Galaxy(redshift=0.5)])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = res.Result(samples=samples,
                            analysis=analysis_imaging_7x7,
                            model=None,
                            search=None)

        assert result.source_plane_light_profile_centre == None
示例#3
0
def make_samples():
    galaxy_0 = al.Galaxy(redshift=0.5, light=al.lp.EllSersic(centre=(0.0, 1.0)))
    galaxy_1 = al.Galaxy(redshift=1.0, light=al.lp.EllSersic())

    tracer = al.Tracer.from_galaxies(galaxies=[galaxy_0, galaxy_1])

    return mock.MockSamples(max_log_likelihood_instance=tracer)
示例#4
0
    def test___image_dict(self, analysis_imaging_7x7):

        galaxies = af.ModelInstance()
        galaxies.lens = al.Galaxy(redshift=0.5)
        galaxies.source = al.Galaxy(redshift=1.0)

        instance = af.ModelInstance()
        instance.galaxies = galaxies

        result = ResultImaging(
            samples=mock.MockSamples(max_log_likelihood_instance=instance),
            model=af.ModelMapper(),
            analysis=analysis_imaging_7x7,
            search=None,
        )

        image_dict = result.image_galaxy_dict
        assert isinstance(image_dict[("galaxies", "lens")], np.ndarray)
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)

        result.instance.galaxies.lens = al.Galaxy(redshift=0.5)

        image_dict = result.image_galaxy_dict
        assert (image_dict[("galaxies", "lens")].native == np.zeros(
            (7, 7))).all()
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)
示例#5
0
    def test__image_plane_multiple_image_positions_and_threshold(
            self, analysis_imaging_7x7):

        tracer = al.Tracer.from_galaxies(galaxies=[
            al.Galaxy(
                redshift=0.5,
                mass=al.mp.EllIsothermal(
                    centre=(0.1, 0.0),
                    einstein_radius=1.0,
                    elliptical_comps=(0.0, 0.0),
                ),
            ),
            al.Galaxy(redshift=1.0, bulge=al.lp.SphSersic(centre=(0.0, 0.0))),
        ])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = res.Result(samples=samples,
                            model=None,
                            analysis=analysis_imaging_7x7,
                            search=None)

        assert result.image_plane_multiple_image_positions.in_list[0][
            0] == pytest.approx(1.0004, 1.0e-2)
        assert result.image_plane_multiple_image_positions.in_list[1][
            0] == pytest.approx(-1.0004, 1.0e-2)

        assert result.positions_threshold_from() == pytest.approx(
            0.000973519, 1.0e-4)
        assert result.positions_threshold_from(factor=5.0) == pytest.approx(
            5.0 * 0.000973519, 1.0e-4)
        assert result.positions_threshold_from(
            minimum_threshold=0.2) == pytest.approx(0.2, 1.0e-4)
示例#6
0
    def test___image_dict(self, masked_imaging_7x7):

        galaxies = af.ModelInstance()
        galaxies.lens = al.Galaxy(redshift=0.5)
        galaxies.source = al.Galaxy(redshift=1.0)

        instance = af.ModelInstance()
        instance.galaxies = galaxies

        analysis = al.PhaseImaging.Analysis(
            masked_imaging=masked_imaging_7x7,
            settings=al.SettingsPhaseImaging(),
            results=mock.MockResults(),
            cosmology=cosmo.Planck15,
        )

        result = al.PhaseImaging.Result(
            samples=mock.MockSamples(max_log_likelihood_instance=instance),
            previous_model=af.ModelMapper(),
            analysis=analysis,
            search=None,
        )

        image_dict = result.image_galaxy_dict
        assert isinstance(image_dict[("galaxies", "lens")], np.ndarray)
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)

        result.instance.galaxies.lens = al.Galaxy(redshift=0.5)

        image_dict = result.image_galaxy_dict
        assert (image_dict[("galaxies", "lens")].native == np.zeros(
            (7, 7))).all()
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)
示例#7
0
    def test__max_log_likelihood_tracer_source_centres_correct(
        self, imaging_7x7, mask_7x7
    ):

        lens = al.Galaxy(redshift=0.5, light=al.lp.SphericalSersic(intensity=1.0))
        source = al.Galaxy(
            redshift=1.0,
            light=al.lp.SphericalSersic(centre=(9.0, 8.0), intensity=2.0),
            pixelization=al.pix.Rectangular((3, 3)),
            regularization=al.reg.Constant(coefficient=1.0),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_dataset_7x7 = al.PhaseImaging(
            search=mock.MockSearch("test_phase_2", samples=samples)
        )

        result = phase_dataset_7x7.run(
            dataset=imaging_7x7, mask=mask_7x7, results=mock.MockResults()
        )

        assert result.source_plane_centre.in_list == [(0.0, 0.0)]
示例#8
0
    def test__results_include_pixelization__available_as_property(
            self, analysis_imaging_7x7):

        lens = al.Galaxy(redshift=0.5, light=al.lp.EllSersic(intensity=1.0))
        source = al.Galaxy(
            redshift=1.0,
            pixelization=al.pix.VoronoiMagnification(shape=(2, 3)),
            regularization=al.reg.Constant(),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = res.ResultDataset(samples=samples,
                                   analysis=analysis_imaging_7x7,
                                   model=None,
                                   search=None)

        assert isinstance(result.pixelization, al.pix.VoronoiMagnification)
        assert result.pixelization.shape == (2, 3)

        lens = al.Galaxy(redshift=0.5, light=al.lp.EllSersic(intensity=1.0))
        source = al.Galaxy(
            redshift=1.0,
            pixelization=al.pix.VoronoiBrightnessImage(pixels=6),
            regularization=al.reg.Constant(),
        )

        source.hyper_galaxy_image = np.ones(9)

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = res.ResultDataset(samples=samples,
                                   analysis=analysis_imaging_7x7,
                                   model=None,
                                   search=None)

        assert isinstance(result.pixelization, al.pix.VoronoiBrightnessImage)
        assert result.pixelization.pixels == 6
示例#9
0
    def test__max_log_likelihood_tracer__multiple_image_positions_of_source_plane_centres_and_separations(
        self, imaging_7x7, mask_7x7
    ):

        lens = al.Galaxy(
            redshift=0.5,
            mass=al.mp.EllipticalIsothermal(
                centre=(0.001, 0.001),
                einstein_radius=1.0,
                elliptical_comps=(0.0, 0.111111),
            ),
        )

        source = al.Galaxy(
            redshift=1.0,
            light=al.lp.SphericalSersic(centre=(0.0, 0.0), intensity=2.0),
            light1=al.lp.SphericalSersic(centre=(0.0, 0.1), intensity=2.0),
            pixelization=al.pix.Rectangular((3, 3)),
            regularization=al.reg.Constant(coefficient=1.0),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_dataset_7x7 = al.PhaseImaging(
            search=mock.MockSearch("test_phase_2", samples=samples)
        )

        result = phase_dataset_7x7.run(
            dataset=imaging_7x7, mask=mask_7x7, results=mock.MockResults()
        )

        mask = al.Mask2D.unmasked(
            shape_native=(100, 100), pixel_scales=0.05, sub_size=1
        )

        result.analysis.masked_dataset.mask = mask

        multiple_images = (
            result.image_plane_multiple_image_positions_of_source_plane_centres
        )

        grid = al.Grid2D.from_mask(mask=mask)

        solver = al.PositionsSolver(grid=grid, pixel_scale_precision=0.001)

        multiple_images_manual = solver.solve(
            lensing_obj=tracer,
            source_plane_coordinate=result.source_plane_inversion_centre[0],
        )

        assert multiple_images.in_list[0] == multiple_images_manual.in_list[0]
示例#10
0
    def test__max_log_likelihood_tracer_source_inversion_centres_correct(
            self, analysis_imaging_7x7):

        lens = al.Galaxy(redshift=0.5, light=al.lp.SphSersic(intensity=1.0))

        source = al.Galaxy(
            redshift=1.0,
            pixelization=al.pix.Rectangular((3, 3)),
            regularization=al.reg.Constant(coefficient=1.0),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = ResultImaging(samples=samples,
                               analysis=analysis_imaging_7x7,
                               model=None,
                               search=None)

        assert (result.source_plane_inversion_centre.in_list[0] ==
                result.max_log_likelihood_fit.inversion.
                brightest_reconstruction_pixel_centre_list[0].in_list[0])

        lens = al.Galaxy(redshift=0.5, light=al.lp.SphSersic(intensity=1.0))
        source = al.Galaxy(redshift=1.0)

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = ResultImaging(samples=samples,
                               analysis=analysis_imaging_7x7,
                               model=None,
                               search=None)

        assert result.source_plane_inversion_centre == None
示例#11
0
def make_samples(model):
    galaxy_0 = al.Galaxy(redshift=0.5,
                         light=al.lp.EllSersic(centre=(0.0, 1.0)))
    galaxy_1 = al.Galaxy(redshift=1.0, light=al.lp.EllSersic())

    tracer = al.Tracer.from_galaxies(galaxies=[galaxy_0, galaxy_1])

    parameters = [model.prior_count * [1.0], model.prior_count * [10.0]]

    sample_list = Sample.from_lists(
        model=model,
        parameter_lists=parameters,
        log_likelihood_list=[1.0, 2.0],
        log_prior_list=[0.0, 0.0],
        weight_list=[0.0, 1.0],
    )

    return mock.MockSamples(model=model,
                            sample_list=sample_list,
                            max_log_likelihood_instance=tracer)
示例#12
0
    def test__max_log_likelihood_tracer__multiple_image_positions_of_source_plane_centres_and_separations(
            self, analysis_imaging_7x7):

        lens = al.Galaxy(
            redshift=0.5,
            mass=al.mp.EllIsothermal(
                centre=(0.001, 0.001),
                einstein_radius=1.0,
                elliptical_comps=(0.0, 0.111111),
            ),
        )

        source = al.Galaxy(
            redshift=1.0,
            light=al.lp.SphSersic(centre=(0.0, 0.0), intensity=2.0),
            light1=al.lp.SphSersic(centre=(0.0, 0.1), intensity=2.0),
            pixelization=al.pix.Rectangular((3, 3)),
            regularization=al.reg.Constant(coefficient=1.0),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = ResultImaging(samples=samples,
                               analysis=analysis_imaging_7x7,
                               model=None,
                               search=None)

        multiple_images = result.image_plane_multiple_image_positions

        assert multiple_images.in_list[0][0] == pytest.approx(
            1.20556641, 1.0e-4)
        assert multiple_images.in_list[0][1] == pytest.approx(
            -1.10205078, 1.0e-4)
        assert multiple_images.in_list[1][0] == pytest.approx(
            -0.19287109, 1.0e-4)
        assert multiple_images.in_list[1][1] == pytest.approx(
            0.27978516, 1.0e-4)
示例#13
0
    def test__max_log_likelihood_tracer_source_centres_correct(
            self, analysis_imaging_7x7):

        lens = al.Galaxy(redshift=0.5, light=al.lp.SphSersic(intensity=1.0))
        source = al.Galaxy(
            redshift=1.0,
            light=al.lp.SphSersic(centre=(9.0, 8.0), intensity=2.0),
            pixelization=al.pix.Rectangular((3, 3)),
            regularization=al.reg.Constant(coefficient=1.0),
        )

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        result = ResultImaging(samples=samples,
                               analysis=analysis_imaging_7x7,
                               model=None,
                               search=None)

        assert result.source_plane_centre.in_list[0] == pytest.approx(
            (-0.916666, -0.916666), 1.0e-4)
    def test__make_result__result_imaging_is_returned(self,
                                                      masked_imaging_7x7):

        model = af.Collection(galaxies=af.Collection(galaxy_0=al.Galaxy(
            redshift=0.5)))

        instance = model.instance_from_prior_medians()

        samples = mock.MockSamples(max_log_likelihood_instance=instance)

        search = mock.MockSearch(name="test_search", samples=samples)

        analysis = al.AnalysisImaging(dataset=masked_imaging_7x7)

        def modify_after_fit(paths: af.DirectoryPaths,
                             model: af.AbstractPriorModel, result: af.Result):
            pass

        analysis.modify_after_fit = modify_after_fit

        result = search.fit(model=model, analysis=analysis)

        assert isinstance(result, ResultImaging)
    def test__max_log_likelihood_tracer_source_light_profile_centres_correct(
            self, imaging_7x7, mask_7x7):
        lens = al.Galaxy(redshift=0.5,
                         light=al.lp.SphericalSersic(intensity=1.0))

        source = al.Galaxy(redshift=1.0,
                           light=al.lp.SphericalSersic(centre=(1.0, 2.0),
                                                       intensity=2.0))

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_dataset_7x7 = al.PhaseImaging(
            search=mock.MockSearch("test_phase_2", samples=samples))

        result = phase_dataset_7x7.run(dataset=imaging_7x7,
                                       mask=mask_7x7,
                                       results=mock.MockResults())

        assert result.source_plane_light_profile_centres.in_grouped_list == [[
            (1.0, 2.0)
        ]]

        source = al.Galaxy(
            redshift=1.0,
            light=al.lp.SphericalSersic(centre=(1.0, 2.0), intensity=2.0),
            light1=al.lp.SphericalSersic(centre=(3.0, 4.0), intensity=2.0),
        )

        source_1 = al.Galaxy(redshift=1.0,
                             light=al.lp.SphericalSersic(centre=(5.0, 6.0),
                                                         intensity=2.0))

        tracer = al.Tracer.from_galaxies(galaxies=[lens, source, source_1])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_dataset_7x7 = al.PhaseImaging(
            search=mock.MockSearch("test_phase_2", samples=samples))

        result = phase_dataset_7x7.run(dataset=imaging_7x7,
                                       mask=mask_7x7,
                                       results=mock.MockResults())

        assert result.source_plane_light_profile_centres.in_grouped_list == [
            [(1.0, 2.0), (3.0, 4.0)],
            [(5.0, 6.0)],
        ]

        tracer = al.Tracer.from_galaxies(galaxies=[al.Galaxy(redshift=0.5)])

        samples = mock.MockSamples(max_log_likelihood_instance=tracer)

        phase_dataset_7x7 = al.PhaseImaging(
            search=mock.MockSearch("test_phase_2", samples=samples))

        result = phase_dataset_7x7.run(dataset=imaging_7x7,
                                       mask=mask_7x7,
                                       results=mock.MockResults())

        assert result.source_plane_light_profile_centres == []