Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 36 additions & 11 deletions test_autoarray/dataset/imaging/test_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def make_test_data_path():
return test_data_path


def test__grid__uses_mask_and_settings(
def test__grid__uses_mask_and_settings__lp_grid_matches_grid_2d_7x7(
image_7x7,
noise_map_7x7,
mask_2d_7x7,
Expand All @@ -57,7 +57,7 @@ def test__grid__uses_mask_and_settings(
assert (masked_imaging_7x7.grids.lp.slim == grid_2d_7x7).all()


def test__grids_pixelization__uses_mask_and_settings(
def test__grids_pixelization__uses_mask_and_settings__default_over_sample__matches_grid_2d_7x7(
image_7x7,
noise_map_7x7,
mask_2d_7x7,
Expand All @@ -75,6 +75,17 @@ def test__grids_pixelization__uses_mask_and_settings(
assert (masked_imaging_7x7.grids.pixelization == grid_2d_7x7).all()
assert (masked_imaging_7x7.grids.pixelization.slim == grid_2d_7x7).all()


def test__grids_pixelization__uses_mask_and_settings__custom_over_sample__returns_grid2d_with_correct_size(
image_7x7,
noise_map_7x7,
mask_2d_7x7,
grid_2d_7x7,
):
masked_image_7x7 = aa.Array2D(values=image_7x7.native, mask=mask_2d_7x7)

masked_noise_map_7x7 = aa.Array2D(values=noise_map_7x7.native, mask=mask_2d_7x7)

masked_imaging_7x7 = aa.Imaging(
data=masked_image_7x7,
noise_map=masked_noise_map_7x7,
Expand All @@ -86,7 +97,9 @@ def test__grids_pixelization__uses_mask_and_settings(
assert masked_imaging_7x7.grids.over_sample_size_pixelization[0] == 4


def test__grid_settings__sub_size(image_7x7, noise_map_7x7):
def test__grid_settings__sub_size__returns_correct_over_sample_sizes(
image_7x7, noise_map_7x7
):
dataset_7x7 = aa.Imaging(
data=image_7x7,
noise_map=noise_map_7x7,
Expand Down Expand Up @@ -116,7 +129,7 @@ def test__no_noise_map__raises_exception():
aa.Imaging(data=image)


def test__from_fits():
def test__from_fits__separate_fits_files__loads_data_psf_noise_map_correctly():
dataset = aa.Imaging.from_fits(
pixel_scales=0.1,
data_path=path.join(test_data_path, "3x3_ones.fits"),
Expand All @@ -134,6 +147,8 @@ def test__from_fits():
assert dataset.psf.kernel.mask.pixel_scales == (0.1, 0.1)
assert dataset.noise_map.mask.pixel_scales == (0.1, 0.1)


def test__from_fits__all_data_in_one_fits_file_multiple_hdus__loads_data_psf_noise_map_correctly():
dataset = aa.Imaging.from_fits(
pixel_scales=0.1,
data_path=path.join(test_data_path, "3x3_multiple_hdu.fits"),
Expand All @@ -155,7 +170,9 @@ def test__from_fits():
assert dataset.noise_map.mask.pixel_scales == (0.1, 0.1)


def test__output_to_fits(imaging_7x7, test_data_path):
def test__output_to_fits__round_trips_data_psf_noise_map_correctly(
imaging_7x7, test_data_path
):

imaging_7x7.output_to_fits(
data_path=path.join(test_data_path, "data.fits"),
Expand All @@ -176,7 +193,9 @@ def test__output_to_fits(imaging_7x7, test_data_path):
assert dataset.pixel_scales == (0.1, 0.1)


def test__apply_mask(imaging_7x7, mask_2d_7x7, psf_3x3):
def test__apply_mask__data_noise_map_psf_correctly_masked(
imaging_7x7, mask_2d_7x7, psf_3x3
):
masked_imaging_7x7 = imaging_7x7.apply_mask(mask=mask_2d_7x7)

assert (masked_imaging_7x7.data.slim == np.ones(9)).all()
Expand All @@ -198,7 +217,9 @@ def test__apply_mask(imaging_7x7, mask_2d_7x7, psf_3x3):
assert type(masked_imaging_7x7.psf) == aa.Convolver


def test__apply_noise_scaling(imaging_7x7, mask_2d_7x7):
def test__apply_noise_scaling__masked_pixel_data_zeroed_and_noise_set_to_noise_value(
imaging_7x7, mask_2d_7x7
):
masked_imaging_7x7 = imaging_7x7.apply_noise_scaling(
mask=mask_2d_7x7, noise_value=1e5
)
Expand All @@ -207,7 +228,7 @@ def test__apply_noise_scaling(imaging_7x7, mask_2d_7x7):
assert masked_imaging_7x7.noise_map.native[4, 4] == 1e5


def test__apply_noise_scaling__use_signal_to_noise_value(
def test__apply_noise_scaling__use_signal_to_noise_value__noise_map_scaled_to_match_snr(
image_7x7, psf_3x3, noise_map_7x7, mask_2d_7x7
):

Expand All @@ -233,7 +254,7 @@ def test__apply_noise_scaling__use_signal_to_noise_value(
assert masked_imaging_7x7.noise_map.native[3, 3] == 10.0


def test__apply_mask__noise_covariance_matrix():
def test__apply_mask__noise_covariance_matrix__submatrix_extracted_for_unmasked_pixels():
image = aa.Array2D.ones(shape_native=(2, 2), pixel_scales=(1.0, 1.0))

noise_covariance_matrix = np.array(
Expand Down Expand Up @@ -263,7 +284,7 @@ def test__apply_mask__noise_covariance_matrix():
)


def test__different_imaging_without_mock_objects__customize_constructor_inputs():
def test__different_imaging_without_mock_objects__customize_constructor_inputs__single_unmasked_pixel_correct():

kernel = aa.Array2D.ones(shape_native=(7, 7), pixel_scales=3.0)
psf = aa.Convolver(kernel=kernel)
Expand Down Expand Up @@ -291,14 +312,18 @@ def test__different_imaging_without_mock_objects__customize_constructor_inputs()
assert (masked_dataset.noise_map == np.array([2.0])).all()


def test__noise_map_unmasked_has_zeros_or_negative__raises_exception():
def test__noise_map_unmasked_has_zeros__raises_exception():
array = aa.Array2D.no_mask([[1.0, 2.0]], pixel_scales=1.0)

noise_map = aa.Array2D.no_mask([[0.0, 3.0]], pixel_scales=1.0)

with pytest.raises(aa.exc.DatasetException):
aa.Imaging(data=array, noise_map=noise_map)


def test__noise_map_unmasked_has_negative_values__raises_exception():
array = aa.Array2D.no_mask([[1.0, 2.0]], pixel_scales=1.0)

noise_map = aa.Array2D.no_mask([[-1.0, 3.0]], pixel_scales=1.0)

with pytest.raises(aa.exc.DatasetException):
Expand Down
40 changes: 37 additions & 3 deletions test_autoarray/dataset/interferometer/test_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
)


def test__dirty_properties(
def test__dirty_image__shape_native_matches_real_space_mask(
visibilities_7,
visibilities_noise_map_7,
uv_wavelengths_7x2,
Expand All @@ -28,12 +28,39 @@ def test__dirty_properties(
)

assert dataset.dirty_image.shape_native == (7, 7)

assert (dataset.transformer.image_from(visibilities=dataset.data)).all()


def test__dirty_noise_map__shape_native_matches_real_space_mask(
visibilities_7,
visibilities_noise_map_7,
uv_wavelengths_7x2,
mask_2d_7x7,
):
dataset = aa.Interferometer(
data=visibilities_7,
noise_map=visibilities_noise_map_7,
uv_wavelengths=uv_wavelengths_7x2,
real_space_mask=mask_2d_7x7,
)

assert dataset.dirty_noise_map.shape_native == (7, 7)
assert (dataset.transformer.image_from(visibilities=dataset.noise_map)).all()


def test__dirty_signal_to_noise_map__shape_native_matches_real_space_mask(
visibilities_7,
visibilities_noise_map_7,
uv_wavelengths_7x2,
mask_2d_7x7,
):
dataset = aa.Interferometer(
data=visibilities_7,
noise_map=visibilities_noise_map_7,
uv_wavelengths=uv_wavelengths_7x2,
real_space_mask=mask_2d_7x7,
)

assert dataset.dirty_signal_to_noise_map.shape_native == (7, 7)
assert (
dataset.transformer.image_from(visibilities=dataset.signal_to_noise_map)
Expand Down Expand Up @@ -102,7 +129,7 @@ def test__output_all_arrays(mask_2d_7x7):
assert (dataset.uv_wavelengths[:, 1] == 6.0 * np.ones(3)).all()


def test__transformer(
def test__transformer__dft_class__returns_transformer_dft_instance(
visibilities_7,
visibilities_noise_map_7,
uv_wavelengths_7x2,
Expand All @@ -118,6 +145,13 @@ def test__transformer(

assert type(interferometer_7.transformer) == transformer.TransformerDFT


def test__transformer__nufft_class__returns_transformer_nufft_instance(
visibilities_7,
visibilities_noise_map_7,
uv_wavelengths_7x2,
mask_2d_7x7,
):
interferometer_7 = aa.Interferometer(
data=visibilities_7,
noise_map=visibilities_noise_map_7,
Expand Down
19 changes: 12 additions & 7 deletions test_autoarray/mask/derive/test_mask_2d.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,29 @@ def make_derive_mask_2d_9x9():
return aa.DeriveMask2D(mask=mask_2d)


def test__unmasked_mask(derive_mask_2d_9x9):
def test__unmasked_mask__all_false__returns_full_false_array(derive_mask_2d_9x9):
assert (
derive_mask_2d_9x9.all_false == np.full(fill_value=False, shape=(9, 9))
).all()


def test__blurring_mask_from(derive_mask_2d_9x9):
@pytest.mark.parametrize("kernel_shape_native", [(3, 3)])
def test__blurring_mask_from__3x3_kernel__matches_util_result(
derive_mask_2d_9x9, kernel_shape_native
):
blurring_mask_via_util = aa.util.mask_2d.blurring_mask_2d_from(
mask_2d=derive_mask_2d_9x9.mask,
kernel_shape_native=(3, 3),
kernel_shape_native=kernel_shape_native,
)

blurring_mask = derive_mask_2d_9x9.blurring_from(kernel_shape_native=(3, 3))
blurring_mask = derive_mask_2d_9x9.blurring_from(
kernel_shape_native=kernel_shape_native
)

assert (blurring_mask == blurring_mask_via_util).all()


def test__edge_mask(derive_mask_2d_9x9):
def test__edge_mask__9x9_ring_mask__edge_pixels_are_unmasked(derive_mask_2d_9x9):
assert (
derive_mask_2d_9x9.edge
== np.array(
Expand All @@ -60,7 +65,7 @@ def test__edge_mask(derive_mask_2d_9x9):
).all()


def test__edge_buffed_mask():
def test__edge_buffed_mask__5x5_mask_with_centre_masked__buffed_mask_matches_util():
mask = aa.Mask2D.all_false(shape_native=(5, 5), pixel_scales=1.0)
mask[2, 2] = True

Expand All @@ -73,7 +78,7 @@ def test__edge_buffed_mask():
assert (derive_mask_2d.edge_buffed == edge_buffed_mask_manual).all()


def test__border_mask(derive_mask_2d_9x9):
def test__border_mask__9x9_ring_mask__inner_pixels_are_masked(derive_mask_2d_9x9):
assert (
derive_mask_2d_9x9.border
== np.array(
Expand Down
Loading
Loading