Пример #1
0
    def test__likelihood__is_sum_of_separations_divided_by_noise(self):
        positions = al.GridCoordinates([
            [(0.0, 0.0), (0.0, 1.0), (0.0, 0.5)],
            [(0.0, 0.0), (0.0, 0.0), (3.0, 3.0)],
            [(0.0, 0.0), (1.0, 1.0), (3.0, 3.0)],
        ])

        tracer = MockTracerPositions(positions=positions)

        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.chi_squared_map[0] == 1.0
        assert fit.chi_squared_map[1] == pytest.approx(18.0, 1e-4)
        assert fit.chi_squared_map[2] == pytest.approx(18.0, 1e-4)
        assert fit.figure_of_merit == pytest.approx(-0.5 * (1.0 + 18 + 18),
                                                    1e-4)

        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=2.0)
        assert fit.chi_squared_map[0] == (1.0 / 2.0)**2.0
        assert fit.chi_squared_map[1] == pytest.approx(
            (np.sqrt(18.0) / 2.0)**2.0, 1e-4)
        assert fit.chi_squared_map[2] == pytest.approx(
            (np.sqrt(18.0) / 2.0)**2.0, 1e-4)
        assert fit.figure_of_merit == pytest.approx(
            -0.5 * ((1.0 / 2.0)**2.0 + (np.sqrt(18.0) / 2.0)**2.0 +
                    (np.sqrt(18.0) / 2.0)**2.0),
            1e-4,
        )
Пример #2
0
    def test__positions_do_not_trace_within_threshold__raises_exception(
        self, phase_interferometer_7, interferometer_7, mask_7x7, visibilities_mask_7x2
    ):
        interferometer_7.positions = al.GridCoordinates([[(1.0, 100.0), (200.0, 2.0)]])

        phase_interferometer_7 = al.PhaseInterferometer(
            phase_name="test_phase",
            real_space_mask=mask_7x7,
            galaxies=dict(
                lens=al.Galaxy(redshift=0.5, mass=al.mp.SphericalIsothermal()),
                source=al.Galaxy(redshift=1.0),
            ),
            settings=al.SettingsPhaseInterferometer(
                settings_lens=al.SettingsLens(positions_threshold=0.01)
            ),
            search=mock.MockSearch(),
        )

        analysis = phase_interferometer_7.make_analysis(
            dataset=interferometer_7,
            mask=visibilities_mask_7x2,
            results=mock.MockResults(),
        )
        instance = phase_interferometer_7.model.instance_from_unit_vector([])

        with pytest.raises(exc.RayTracingException):
            analysis.log_likelihood_function(instance=instance)
Пример #3
0
    def test__results_of_phase_include_positions__available_as_property(
        self, imaging_7x7, mask_7x7, samples_with_result
    ):

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase", search=mock.MockSearch(samples=samples_with_result)
        )

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

        assert result.positions == None

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            galaxies=dict(lens=al.Galaxy(redshift=0.5), source=al.Galaxy(redshift=1.0)),
            search=mock.MockSearch(samples=samples_with_result),
            settings=al.SettingsPhaseImaging(
                settings_lens=al.SettingsLens(positions_threshold=1.0)
            ),
        )

        imaging_7x7.positions = al.GridCoordinates([[(1.0, 1.0)]])

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

        assert (result.positions[0] == np.array([1.0, 1.0])).all()
Пример #4
0
    def test_multiple_positions__mock_position_tracer__maximum_separation_is_correct(
            self):
        positions = al.GridCoordinates([[(0.0, 0.0), (0.0, 1.0), (0.0, 0.5)]])
        tracer = MockTracerPositions(positions=positions)
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separations[0] == 1.0

        positions = al.GridCoordinates([[(0.0, 0.0), (0.0, 0.0), (3.0, 3.0)]])
        tracer = MockTracerPositions(positions=positions)
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separations[0] == np.sqrt(18)

        al.GridCoordinates([[(0.0, 0.0), (1.0, 1.0), (3.0, 3.0)]])
        tracer = MockTracerPositions(positions=positions)
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separations[0] == np.sqrt(18)

        positions = al.GridCoordinates([[
            (-2.0, -4.0),
            (1.0, 3.0),
            (0.1, 0.1),
            (-0.1, -0.1),
            (0.3, 0.4),
            (-0.6, 0.5),
        ]])
        tracer = MockTracerPositions(positions=positions)
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separations[0] == np.sqrt(
            np.square(3.0) + np.square(7.0))

        positions = al.GridCoordinates([[(8.0, 4.0), (8.0, 4.0),
                                         (-9.0, -4.0)]])
        tracer = MockTracerPositions(positions=positions)
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separations[0] == np.sqrt(
            np.square(17.0) + np.square(8.0))
Пример #5
0
    def test__threshold__if_not_met_returns_ray_tracing_exception(self):

        positions = al.GridCoordinates([[(0.0, 0.0), (0.0, 1.0)]])
        tracer = MockTracerPositions(positions=positions)
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)

        assert fit.maximum_separation_within_threshold(threshold=100.0)
        assert not fit.maximum_separation_within_threshold(threshold=0.1)
Пример #6
0
    def test__above_with_real_tracer(self):

        tracer = al.Tracer.from_galaxies(galaxies=[
            al.Galaxy(redshift=0.5,
                      mass=al.mp.SphericalIsothermal(einstein_radius=1.0)),
            al.Galaxy(redshift=1.0),
        ])

        positions = al.GridCoordinates([[(1.0, 0.0), (-1.0, 0.0)]])
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separation_within_threshold(threshold=0.01)

        positions = al.GridCoordinates([[(1.2, 0.0), (-1.0, 0.0)]])
        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)
        assert fit.maximum_separation_within_threshold(threshold=0.3)
        assert not fit.maximum_separation_within_threshold(threshold=0.15)
Пример #7
0
    def test__positions_are_input__are_used_in_analysis(
            self, image_7x7, noise_map_7x7, mask_7x7):
        # If position threshold is input (not None) and positions are input, make the positions part of the lens dataset.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0), (2.0, 2.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2)),
        )

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7,
                                         results=mock.MockResults())
        phase_imaging_7x7.modify_settings(dataset=imaging_7x7,
                                          results=mock.MockResults())

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=mock.MockResults())

        assert (analysis.masked_dataset.positions.in_list[0][0] == np.array(
            [1.0, 1.0])).all()
        assert (analysis.masked_dataset.positions.in_list[0][1] == np.array(
            [2.0, 2.0])).all()
        assert analysis.settings.settings_lens.positions_threshold == 0.2

        # If position threshold is input (not None) and but no positions are supplied, raise an error

        with pytest.raises(exc.PhaseException):

            imaging_7x7 = al.Imaging(image=image_7x7,
                                     noise_map=noise_map_7x7,
                                     positions=None)

            phase_imaging_7x7 = al.PhaseImaging(
                phase_name="test_phase",
                search=mock.MockSearch(),
                settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                    positions_threshold=0.2)),
            )

            phase_imaging_7x7.modify_dataset(dataset=imaging_7x7,
                                             results=mock.MockResults())
            phase_imaging_7x7.modify_settings(dataset=imaging_7x7,
                                              results=mock.MockResults())
Пример #8
0
    def test__positions_do_not_trace_within_threshold__raises_exception(
        self, ):

        tracer = al.Tracer.from_galaxies(galaxies=[
            al.Galaxy(redshift=0.5, mass=al.mp.SphericalIsothermal()),
            al.Galaxy(redshift=1.0),
        ])

        settings = al.SettingsLens(positions_threshold=50.0)
        settings.check_positions_trace_within_threshold_via_tracer(
            tracer=tracer,
            positions=al.GridCoordinates([[(1.0, 1.0), (2.0, 2.0)]]))

        settings = al.SettingsLens(positions_threshold=0.0)
        with pytest.raises(exc.RayTracingException):
            settings.check_positions_trace_within_threshold_via_tracer(
                tracer=tracer,
                positions=al.GridCoordinates([[(1.0, 1.0), (2.0, 2.0)]]))

        # No mass profile - doesnt raise exception

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

        settings.check_positions_trace_within_threshold_via_tracer(
            tracer=tracer,
            positions=al.GridCoordinates([[(1.0, 1.0), (2.0, 2.0)]]))

        # Single plane - doesnt raise exception

        tracer = al.Tracer.from_galaxies(galaxies=[
            al.Galaxy(redshift=0.5, mass=al.mp.SphericalIsothermal())
        ])

        settings.check_positions_trace_within_threshold_via_tracer(
            tracer=tracer,
            positions=al.GridCoordinates([[(1.0, 1.0), (2.0, 2.0)]]))
Пример #9
0
    def test_multiple_sets_of_positions__multiple_sets_of_max_distances(self):
        positions = al.GridCoordinates([
            [(0.0, 0.0), (0.0, 1.0), (0.0, 0.5)],
            [(0.0, 0.0), (0.0, 0.0), (3.0, 3.0)],
            [(0.0, 0.0), (1.0, 1.0), (3.0, 3.0)],
        ])
        tracer = MockTracerPositions(positions=positions)

        fit = al.FitPositionsSourcePlaneMaxSeparation(positions=positions,
                                                      tracer=tracer,
                                                      noise_value=1.0)

        assert fit.maximum_separations[0] == 1.0
        assert fit.maximum_separations[1] == np.sqrt(18)
        assert fit.maximum_separations[2] == np.sqrt(18)
Пример #10
0
    def test__uses_auto_update_factor(self, image_7x7, noise_map_7x7,
                                      mask_7x7):
        tracer = al.Tracer.from_galaxies(
            galaxies=[al.Galaxy(redshift=0.5),
                      al.Galaxy(redshift=1.0)])

        # Auto positioning is OFF, so use input positions + threshold.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.1)),
        )

        results = mock.MockResults(max_log_likelihood_tracer=tracer)

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)
        phase_imaging_7x7.modify_settings(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.settings.settings_lens.positions_threshold == 0.1

        # Auto positioning is ON, but there are no previous results, so use separate of postiions x positions factor..

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 0.0), (-1.0, 0.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.1, auto_positions_factor=1.0)),
        )

        results = mock.MockResults(max_log_likelihood_tracer=tracer)

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)
        phase_imaging_7x7.modify_settings(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.settings.settings_lens.positions_threshold == 2.0

        # Auto position is ON, and same as above but with a factor of 3.0 which increases the threshold.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 0.0), (-1.0, 0.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2, auto_positions_factor=3.0)),
        )

        results = mock.MockResults(max_log_likelihood_tracer=tracer,
                                   updated_positions_threshold=0.2)

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)
        phase_imaging_7x7.modify_settings(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.settings.settings_lens.positions_threshold == 6.0

        # Auto position is ON, and same as above but with a minimum auto positions threshold that rounds the value up.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 0.0), (-1.0, 0.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2,
                auto_positions_factor=3.0,
                auto_positions_minimum_threshold=10.0,
            )),
        )

        results = mock.MockResults(max_log_likelihood_tracer=tracer,
                                   updated_positions_threshold=0.2)

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)
        phase_imaging_7x7.modify_settings(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.settings.settings_lens.positions_threshold == 10.0

        # Auto positioning is ON, but positions are None and it cannot find new positions so no threshold.

        imaging_7x7 = al.Imaging(image=image_7x7,
                                 noise_map=noise_map_7x7,
                                 positions=None)

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                auto_positions_factor=1.0)),
        )

        results = mock.MockResults(max_log_likelihood_tracer=tracer)

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)
        phase_imaging_7x7.modify_settings(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.settings.settings_lens.positions_threshold == None
Пример #11
0
    def test__updates_correct_using_factor(self, imaging_7x7, image_7x7,
                                           noise_map_7x7, mask_7x7):
        tracer = al.Tracer.from_galaxies(
            galaxies=[al.Galaxy(redshift=0.5),
                      al.Galaxy(redshift=1.0)])

        # Auto positioning is OFF, so use input positions + threshold.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.1)),
        )

        results = mock.MockResults(max_log_likelihood_tracer=tracer)

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.masked_dataset.positions.in_list == [[(1.0, 1.0)]]

        # Auto positioning is ON, but there are no previous results, so use input positions.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2, auto_positions_factor=2.0)),
        )

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.masked_dataset.positions.in_list == [[(1.0, 1.0)]]

        # Auto positioning is ON, there are previous results so use their new positions and threshold (which is
        # multiplied by the auto_positions_factor). However, only one set of positions is computed from the previous
        # result, to use input positions.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2, auto_positions_factor=2.0)),
        )

        results = mock.MockResults(
            max_log_likelihood_tracer=tracer,
            updated_positions=al.GridCoordinates(coordinates=[[(2.0, 2.0)]]),
            updated_positions_threshold=0.3,
        )

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.masked_dataset.positions.in_list == [[(1.0, 1.0)]]

        # Auto positioning is ON, but the tracer only has a single plane and thus no lensing, so use input positions.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2, auto_positions_factor=1.0)),
        )

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

        results = mock.MockResults(
            max_log_likelihood_tracer=tracer_x1_plane,
            updated_positions=al.GridCoordinates(coordinates=[[(2.0,
                                                                2.0), (3.0,
                                                                       3.0)]]),
            updated_positions_threshold=0.3,
        )

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.masked_dataset.positions.in_list == [[(1.0, 1.0)]]

        # Auto positioning is ON, there are previous results so use their new positions and threshold (which is
        # multiplied by the auto_positions_factor). Multiple positions are available so these are now used.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(1.0, 1.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.2, auto_positions_factor=2.0)),
        )

        results = mock.MockResults(
            max_log_likelihood_tracer=tracer,
            updated_positions=al.GridCoordinates(coordinates=[[(2.0,
                                                                2.0), (3.0,
                                                                       3.0)]]),
            updated_positions_threshold=0.3,
        )

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.masked_dataset.positions.in_list == [[(2.0, 2.0),
                                                              (3.0, 3.0)]]

        # Auto positioning is Off, but there are previous results with updated positions relative to the input
        # positions, so use those with their positions threshold.

        imaging_7x7 = al.Imaging(
            image=image_7x7,
            noise_map=noise_map_7x7,
            positions=al.GridCoordinates([[(2.0, 2.0)]]),
        )

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="test_phase",
            search=mock.MockSearch(),
            settings=al.SettingsPhaseImaging(settings_lens=al.SettingsLens(
                positions_threshold=0.1)),
        )

        results = mock.MockResults(
            max_log_likelihood_tracer=tracer,
            positions=al.GridCoordinates(coordinates=[[(3.0, 3.0), (4.0,
                                                                    4.0)]]),
            updated_positions_threshold=0.3,
        )

        phase_imaging_7x7.modify_dataset(dataset=imaging_7x7, results=results)

        analysis = phase_imaging_7x7.make_analysis(dataset=imaging_7x7,
                                                   mask=mask_7x7,
                                                   results=results)

        assert analysis.masked_dataset.positions.in_list == [[(3.0, 3.0),
                                                              (4.0, 4.0)]]
Пример #12
0
    positions = solver.solve(
        lensing_obj=tracer,
        source_plane_coordinate=tracer.source_plane.galaxies[0].light.centre,
    )

    positions_true = al.GridCoordinates.load(file_path=pickle_path,
                                             filename=f"positions_{str(i)}")

    minimum_separations = util.minimum_separations_from(
        positions_true=positions, positions=positions_true)
    in_positions_true = util.check_if_positions_in_positions_true(
        positions_true=positions_true, positions=positions, threshold=0.1)

    print()
    print(positions_true.in_list)
    print(positions.in_list)
    print(minimum_separations)
    print(in_positions_true)

    positions_plot = al.GridCoordinates(
        coordinates=[positions.in_list[0], positions_true.in_list[0]])

    aplt.Tracer.image(
        tracer=tracer,
        grid=grid,
        positions=positions_plot,
        include=aplt.Include(origin=False,
                             critical_curves=True,
                             caustics=False),
    )
Пример #13
0
 mass-model is clearly not accurate.
    
 2) By removing these solutions, a global-maximum solution may be reached instead of a local-maxima. This is 
 because removing the incorrect mass models makes the non-linear parameter space less complex.

We can easily check the image-positions are accurate by plotting them using our _Imaging_ _Plotter_ (they are the magenta 
dots on the image).

To specify these positions, we use the *GridCoordinates* object, which is used by __PyAutoLens__ in general to specify (y,x)
coordinates.
"""

# %%

positions = al.GridCoordinates(coordinates=[(1.6,
                                             0.0), (0.0,
                                                    1.6), (-1.6,
                                                           0.0), (0.0, -1.6)])

aplt.Imaging.subplot_imaging(imaging=imaging, positions=positions)

# %%
"""
For the positions to be used in a Phase, we associate them with the _Imaging_ data.
 
We also pass the _SettingsPhaseImaging_ a new object, _SettingsLens_. This includes the *position_threshold* used 
during modeling to resample inaccurate mass models.
"""

# %%
imaging = al.Imaging(
    image=imaging.image,