예제 #1
0
    def test__different_interferometer_without_mock_objects__customize_constructor_inputs(
        self
    ):
        primary_beam = aa.kernel.ones(shape_2d=(7, 7), pixel_scales=1.0)

        interferometer = aa.interferometer(
            visibilities=aa.visibilities.ones(shape_1d=(19,)),
            primary_beam=primary_beam,
            noise_map=2.0 * aa.visibilities.ones(shape_1d=(19,)),
            uv_wavelengths=3.0 * np.ones((19, 2)),
        )

        visibilities_mask = np.full(fill_value=False, shape=(19, 2))

        real_space_mask = aa.mask.unmasked(
            shape_2d=(19, 19), pixel_scales=1.0, invert=True, sub_size=8
        )
        real_space_mask[9, 9] = False

        masked_interferometer_7 = aa.masked.interferometer.manual(
            interferometer=interferometer,
            visibilities_mask=visibilities_mask,
            real_space_mask=real_space_mask,
            primary_beam_shape_2d=(7, 7),
        )

        assert (masked_interferometer_7.visibilities == np.ones((19, 2))).all()
        assert (masked_interferometer_7.noise_map == 2.0 * np.ones((19, 2))).all()
        assert (
            masked_interferometer_7.interferometer.uv_wavelengths
            == 3.0 * np.ones((19, 2))
        ).all()
        assert (masked_interferometer_7.primary_beam.in_2d == np.ones((7, 7))).all()

        assert masked_interferometer_7.primary_beam_shape_2d == (7, 7)
예제 #2
0
def make_interferometer_7(visibilities_7x2, noise_map_7x2, primary_beam_3x3,
                          uv_wavelengths_7x2):
    return aa.interferometer(
        visibilities=visibilities_7x2,
        noise_map=noise_map_7x2,
        uv_wavelengths=uv_wavelengths_7x2,
        primary_beam=primary_beam_3x3,
    )
예제 #3
0
    def test__visibilities_and_model_are_identical__inversion_included__changes_certain_properties(
            self):

        visibilities_mask = np.full(fill_value=False, shape=(2, 2))

        real_space_mask = aa.mask.manual(
            mask_2d=np.array([[False, False], [False, False]]),
            sub_size=1,
            pixel_scales=(1.0, 1.0),
        )

        data = aa.visibilities.manual_1d(visibilities=[[1.0, 2.0], [3.0, 4.0]])
        noise_map = aa.visibilities.manual_1d(
            visibilities=[[2.0, 2.0], [2.0, 2.0]])

        interferometer = aa.interferometer(visibilities=data,
                                           noise_map=noise_map,
                                           uv_wavelengths=np.ones(shape=(2,
                                                                         2)))

        masked_interferometer = aa.masked.interferometer(
            interferometer=interferometer,
            visibilities_mask=visibilities_mask,
            real_space_mask=real_space_mask,
        )

        model_data = aa.visibilities.manual_1d(
            visibilities=[[1.0, 2.0], [3.0, 4.0]])

        inversion = mock_inversion.MockFitInversion(
            regularization_term=2.0,
            log_det_curvature_reg_matrix_term=3.0,
            log_det_regularization_matrix_term=4.0,
        )

        fit = aa.fit(
            masked_dataset=masked_interferometer,
            model_data=model_data,
            inversion=inversion,
        )

        assert fit.chi_squared == 0.0
        assert fit.reduced_chi_squared == 0.0
        assert fit.noise_normalization == np.sum(
            np.log(2 * np.pi * noise_map**2.0))
        assert fit.likelihood == -0.5 * (fit.chi_squared +
                                         fit.noise_normalization)

        assert fit.likelihood_with_regularization == -0.5 * (
            fit.chi_squared + 2.0 + fit.noise_normalization)
        assert fit.evidence == -0.5 * (fit.chi_squared + 2.0 + 3.0 - 4.0 +
                                       fit.noise_normalization)
        assert fit.figure_of_merit == fit.evidence
예제 #4
0
    def test__interferometer(self):

        visibilities_mask = np.full(fill_value=False, shape=(7, 2))

        real_space_mask = np.array([
            [False, False, False, False, False, False, False],
            [False, False, False, False, False, False, False],
            [False, False, False, False, False, False, False],
            [False, False, False, False, False, False, False],
            [False, False, False, False, False, False, False],
            [False, False, False, False, False, False, False],
            [False, False, False, False, False, False, False],
        ])

        real_space_mask = aa.mask.manual(mask_2d=real_space_mask,
                                         pixel_scales=0.1,
                                         sub_size=1)

        grid = aa.masked.grid.from_mask(mask=real_space_mask)

        pix = aa.pix.VoronoiMagnification(shape=(7, 7))

        sparse_grid = pix.sparse_grid_from_grid(grid=grid)

        mapper = pix.mapper_from_grid_and_sparse_grid(
            grid=grid, sparse_grid=sparse_grid, inversion_uses_border=False)

        reg = aa.reg.Constant(coefficient=0.0)

        visibilities = aa.visibilities.manual_1d(visibilities=[
            [1.0, 0.0],
            [1.0, 0.0],
            [1.0, 0.0],
            [1.0, 0.0],
            [1.0, 0.0],
            [1.0, 0.0],
            [1.0, 0.0],
        ])
        noise_map = aa.visibilities.ones(shape_1d=(7, ))
        uv_wavelengths = np.ones(shape=(7, 2))

        interferometer = aa.interferometer(
            visibilities=visibilities,
            noise_map=noise_map,
            uv_wavelengths=uv_wavelengths,
        )

        masked_data = aa.masked.interferometer(
            interferometer=interferometer,
            visibilities_mask=visibilities_mask,
            real_space_mask=real_space_mask,
        )

        inversion = aa.inversion(masked_dataset=masked_data,
                                 mapper=mapper,
                                 regularization=reg)

        assert inversion.mapped_reconstructed_visibilities[:,
                                                           0] == pytest.approx(
                                                               np.ones(shape=(
                                                                   7, )),
                                                               1.0e-4)
        assert inversion.mapped_reconstructed_visibilities[:,
                                                           1] == pytest.approx(
                                                               np.zeros(shape=(
                                                                   7, )),
                                                               1.0e-4)
예제 #5
0
    def test__visibilities_and_model_are_different__no_masking__check_values_are_correct(
            self):

        visibilities_mask = np.full(fill_value=False, shape=(2, 2))

        real_space_mask = aa.mask.manual(
            mask_2d=np.array([[False, False], [False, False]]),
            sub_size=1,
            pixel_scales=(1.0, 1.0),
        )

        data = aa.visibilities.manual_1d(visibilities=[[1.0, 2.0], [3.0, 4.0]])
        noise_map = aa.visibilities.manual_1d(
            visibilities=[[2.0, 2.0], [2.0, 2.0]])

        interferometer = aa.interferometer(visibilities=data,
                                           noise_map=noise_map,
                                           uv_wavelengths=np.ones(shape=(2,
                                                                         2)))

        masked_interferometer = aa.masked.interferometer(
            interferometer=interferometer,
            visibilities_mask=visibilities_mask,
            real_space_mask=real_space_mask,
        )

        model_data = aa.visibilities.manual_1d(
            visibilities=[[1.0, 2.0], [3.0, 3.0]])

        fit = aa.fit(masked_dataset=masked_interferometer,
                     model_data=model_data)

        assert (fit.visibilities_mask == np.array([[False, False],
                                                   [False, False]])).all()

        assert (fit.visibilities.in_1d == np.array([[1.0, 2.0], [3.0,
                                                                 4.0]])).all()

        assert (fit.noise_map.in_1d == np.array([[2.0, 2.0], [2.0,
                                                              2.0]])).all()

        assert (fit.signal_to_noise_map.in_1d == np.array([[0.5, 1.0],
                                                           [1.5, 2.0]])).all()

        assert (fit.model_visibilities.in_1d == np.array([[1.0, 2.0],
                                                          [3.0, 3.0]])).all()

        assert (fit.residual_map.in_1d == np.array([[0.0, 0.0], [0.0,
                                                                 1.0]])).all()

        assert (fit.normalized_residual_map.in_1d == np.array([[0.0, 0.0],
                                                               [0.0,
                                                                0.5]])).all()

        assert (fit.chi_squared_map.in_1d == np.array([[0.0, 0.0],
                                                       [0.0, 0.25]])).all()

        assert fit.chi_squared == 0.25
        assert fit.reduced_chi_squared == 0.25 / 4.0
        assert fit.noise_normalization == np.sum(
            np.log(2 * np.pi * noise_map**2.0))
        assert fit.likelihood == -0.5 * (fit.chi_squared +
                                         fit.noise_normalization)