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)
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, )
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
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)
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)