Exemplo n.º 1
0
    def inversion_interferometer_from(
            self,
            grid,
            visibilities,
            noise_map,
            transformer,
            settings_pixelization=aa.SettingsPixelization(),
            settings_inversion=aa.SettingsInversion(),
            preloads=aa.Preloads(),
    ):

        linear_obj_list = self.linear_obj_list_from(
            grid=grid,
            settings_pixelization=settings_pixelization,
            preloads=preloads)

        return inversion_interferometer_unpacked_from(
            visibilities=visibilities,
            noise_map=noise_map,
            transformer=transformer,
            linear_obj_list=linear_obj_list,
            regularization_list=self.regularization_list,
            settings=settings_inversion,
            profiling_dict=self.profiling_dict,
        )
Exemplo n.º 2
0
    def inversion_imaging_from(
            self,
            grid,
            image,
            noise_map,
            convolver,
            w_tilde,
            settings_pixelization=aa.SettingsPixelization(),
            settings_inversion=aa.SettingsInversion(),
            preloads=aa.Preloads(),
    ):

        linear_obj_list = self.linear_obj_list_from(
            grid=grid,
            settings_pixelization=settings_pixelization,
            preloads=preloads)

        return inversion_imaging_unpacked_from(
            image=image,
            noise_map=noise_map,
            convolver=convolver,
            w_tilde=w_tilde,
            linear_obj_list=linear_obj_list,
            regularization_list=self.regularization_list,
            settings=settings_inversion,
            profiling_dict=self.profiling_dict,
        )
Exemplo n.º 3
0
    def linear_obj_list_from(
            self,
            grid,
            settings_pixelization=aa.SettingsPixelization(),
            preloads=aa.Preloads(),
    ):

        if not self.has_pixelization:
            return None

        sparse_grid_list = self.sparse_image_plane_grid_list_from(grid=grid)

        linear_obj_list = []

        pixelization_list = self.pixelization_list
        hyper_galaxy_image_list = self.hyper_galaxies_with_pixelization_image_list

        for mapper_index in range(len(sparse_grid_list)):

            mapper = self.mapper_from(
                source_grid_slim=grid,
                source_pixelization_grid=sparse_grid_list,
                pixelization=pixelization_list[mapper_index],
                hyper_galaxy_image=hyper_galaxy_image_list[mapper_index],
                data_pixelization_grid=sparse_grid_list[mapper_index],
                settings_pixelization=settings_pixelization,
                preloads=preloads,
            )

            linear_obj_list.append(mapper)

        return linear_obj_list
Exemplo n.º 4
0
    def __init__(
        self,
        dataset: Union[aa.Imaging, aa.Interferometer],
        hyper_dataset_result: ResultDataset = None,
        cosmology=cosmo.Planck15,
        settings_pixelization: aa.SettingsPixelization = None,
        settings_inversion: aa.SettingsInversion = None,
    ):
        """
        Abstract Analysis class for all model-fits which fit galaxies (or objects containing galaxies like a plane)
        to a dataset, like imaging or interferometer data.

        This class stores the settings used to perform the model-fit for certain components of the model (e.g. a
        pixelization or inversion), the Cosmology used for the analysis and hyper datasets used for certain model
        classes.

        Parameters
        ----------
        dataset
            The dataset that is the model is fitted too.
        hyper_dataset_result
            The hyper-model image and hyper galaxies images of a previous result in a model-fitting pipeline, which are
            used by certain classes for adapting the analysis to the properties of the dataset.
        cosmology
            The Cosmology assumed for this analysis.
        settings_pixelization
            settings controlling how a pixelization is fitted during the model-fit, for example if a border is used
            when creating the pixelization.
        settings_inversion
            Settings controlling how an inversion is fitted during the model-fit, for example which linear algebra
            formalism is used.
        """
        super().__init__(cosmology=cosmology)

        self.dataset = dataset
        self.hyper_dataset_result = hyper_dataset_result

        if self.hyper_dataset_result is not None:

            if hyper_dataset_result.search is not None:
                hyper_dataset_result.search.paths = None

            self.set_hyper_dataset(result=self.hyper_dataset_result)

        else:

            self.hyper_galaxy_image_path_dict = None
            self.hyper_model_image = None

        self.settings_pixelization = settings_pixelization or aa.SettingsPixelization()
        self.settings_inversion = settings_inversion or aa.SettingsInversion()

        self.preloads = aa.Preloads()
Exemplo n.º 5
0
    def mapper_from(
            self,
            source_grid_slim,
            source_pixelization_grid,
            pixelization,
            hyper_galaxy_image,
            data_pixelization_grid=None,
            settings_pixelization=aa.SettingsPixelization(),
            preloads=aa.Preloads(),
    ):

        return pixelization.mapper_from(
            source_grid_slim=source_grid_slim,
            source_pixelization_grid=source_pixelization_grid,
            data_pixelization_grid=data_pixelization_grid,
            hyper_image=hyper_galaxy_image,
            settings=settings_pixelization,
            preloads=preloads,
            profiling_dict=self.profiling_dict,
        )
Exemplo n.º 6
0
    def test__preloads(self):

        matrix_shape = (9, 3)

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

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

        blurred_mapping_matrix = 2.0 * np.ones(matrix_shape)

        curvature_matrix = 18.0 * np.ones((matrix_shape[1], matrix_shape[1]))

        curvature_matrix_sparse_preload, curvature_matrix_preload_counts = aa.util.inversion.curvature_matrix_sparse_preload_via_mapping_matrix_from(
            mapping_matrix=blurred_mapping_matrix
        )

        inversion = inversions.InversionImagingMatrix.from_data_mapper_and_regularization(
            image=np.ones(9),
            noise_map=np.ones(9),
            convolver=mock.MockConvolver(matrix_shape),
            mapper=mock.MockMapper(matrix_shape=matrix_shape, source_grid_slim=grid),
            regularization=mock.MockRegularization(matrix_shape),
            settings=aa.SettingsInversion(check_solution=False),
            preloads=aa.Preloads(
                blurred_mapping_matrix=blurred_mapping_matrix,
                curvature_matrix_sparse_preload=curvature_matrix_sparse_preload,
                curvature_matrix_preload_counts=curvature_matrix_preload_counts,
            ),
        )

        assert (inversion.blurred_mapping_matrix == blurred_mapping_matrix).all()