示例#1
0
    def test(dataset,
             xy_mask,
             tracer,
             self_calibration,
             transformer_class=al.TransformerFINUFFT):

        masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask)

        grid = masked_dataset.grid

        transformer = transformer_class(
            uv_wavelengths=masked_dataset.uv_wavelengths, grid=grid.in_radians)

        model_data = tracer.profile_visibilities_from_grid_and_transformer(
            grid=grid, transformer=transformer)

        if self_calibration:
            phase_errors = calibration_utils.phase_errors_from_A_and_B_matrices(
                phases=masked_dataset.phases,
                model_phases=model_data.phases,
                A=masked_dataset.A,
                B=masked_dataset.B)

            model_phases_corrected = np.add(
                model_data.phases, np.matmul(masked_dataset.f.T, phase_errors))

            model_data = aa.structures.visibilities.Visibilities(
                visibilities_1d=np.stack(arrays=(
                    model_data.amplitudes * np.cos(model_phases_corrected),
                    model_data.amplitudes * np.sin(model_phases_corrected)),
                                         axis=-1))

        fit_temp = fit.DatasetFit(masked_dataset=masked_dataset,
                                  model_data=model_data)

        # print("likelihood = ", fit_temp.likelihood)
        #
        # fit_plots.residual_map(
        #     fit=fit_temp,
        #     transformer=transformer,
        #     output_filename=None,
        #     output_path=None,
        #     output_format="show",
        # )

        return fit_temp.likelihood
示例#2
0
    def test(dataset,
             xy_mask,
             tracer,
             self_calibration,
             transformer_class=al.TransformerFINUFFT):

        masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask)

        grid = masked_dataset.grid

        transformer = transformer_class(
            uv_wavelengths=masked_dataset.uv_wavelengths, grid=grid.in_radians)

        model_data = tracer.profile_visibilities_from_grid_and_transformer(
            grid=grid, transformer=transformer)

        fit_plots.residual_map(fit=fit.DatasetFit(
            masked_dataset=masked_dataset, model_data=model_data),
                               transformer=transformer,
                               output_format="show")
示例#3
0
    def fit_from_model_data(self, model_data):

        return f.DatasetFit(masked_dataset=self.masked_dataset,
                            model_data=model_data)
示例#4
0
    # NOTE: Plotting visibilities
    # for i in range(dataset.visibilities.shape[0]):
    #     plt.figure()
    #     plt.plot(
    #         dataset.visibilities[i, :, 0],
    #         dataset.visibilities[i, :, 1],
    #         linestyle="None",
    #         marker="o",
    #         color="black"
    #     )
    #     plt.show()
    # exit()

    masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask)

    fit_temp = fit.DatasetFit(masked_dataset=masked_dataset,
                              model_data=visibilities)
    # plot_utils.plot_cube(
    #     cube=dirty_cube_from_visibilities(
    #         visibilities=fit_temp.residual_map,
    #         transformers=transformers,
    #         shape=cube.shape
    #     ),
    #     ncols=8
    # )
    # print("likelihood = ", fit_temp.likelihood)
    # exit()

    model_1 = af.PriorModel(profiles.EllipticalSersic)
    model_1.centre_0 = af.GaussianPrior(mean=0.0, sigma=0.25)
    model_1.centre_1 = af.GaussianPrior(mean=0.0, sigma=0.25)
    model_1.intensity = af.LogUniformPrior(lower_limit=5.0 * 10**-6.0,
示例#5
0
    def fit_from_masked_dataset_model_data_and_inversion(
            self, masked_dataset, model_data, inversion):

        return f.DatasetFit(masked_dataset=masked_dataset,
                            model_data=model_data,
                            inversion=inversion)
示例#6
0
    def test(dataset,
             xy_mask,
             profiles,
             lens_redshift,
             source_redshift,
             transformer_class=al.TransformerFINUFFT):
        def src_model_from_profiles(profiles, masked_dataset):

            return sum([
                profile.profile_cube_from_grid(
                    grid=masked_dataset.grid_3d.grid_2d,
                    shape_3d=masked_dataset.grid_3d.shape_3d,
                    z_step_kms=masked_dataset.z_step_kms)
                for profile in profiles
            ])

        masked_dataset = MaskedDataset(dataset=dataset, xy_mask=xy_mask)

        transformers = []
        for i in range(masked_dataset.uv_wavelengths.shape[0]):
            transformers.append(
                transformer_class(
                    uv_wavelengths=masked_dataset.uv_wavelengths[i],
                    grid=masked_dataset.grid_3d.grid_2d.in_radians))

        len_profiles = []
        src_profiles = []
        for profile in profiles:
            if isinstance(profile, al.mp.MassProfile):
                len_profiles.append(profile)
            else:
                src_profiles.append(profile)

        galaxies = []
        for profile in len_profiles:
            galaxies.append(al.Galaxy(
                redshift=lens_redshift,
                mass=profile,
            ))

        galaxies.append(
            al.Galaxy(redshift=source_redshift, light=al.lp.LightProfile()))

        tracer = al.Tracer.from_galaxies(galaxies=galaxies)

        cube = src_model_from_profiles(profiles=src_profiles,
                                       masked_dataset=masked_dataset)

        lensed_cube = autolens_tracer_utils.lensed_cube_from_tracer(
            tracer=tracer, grid=masked_dataset.grid_3d.grid_2d, cube=cube)

        model_data = np.zeros(shape=masked_dataset.data.shape)
        for i in range(model_data.shape[0]):
            model_data[i] = transformers[i].visibilities_from_image(
                image=Image(array_2d=lensed_cube[i]))

        # dirty_cube = autolens_plot_utils.dirty_cube_from_visibilities(
        #     visibilities=masked_dataset.data,
        #     transformers=transformers,
        #     shape=masked_dataset.grid_shape_3d
        # )
        #
        # dirty_model_cube = autolens_plot_utils.dirty_cube_from_visibilities(
        #     visibilities=model_data,
        #     transformers=transformers,
        #     shape=masked_dataset.grid_shape_3d
        # )
        #
        #
        # velocities = np.linspace(
        #     -n_channels * z_step_kms / 2.0,
        #     +n_channels * z_step_kms / 2.0,
        #     n_channels
        # )
        # dirty_moment_0 = spectral_utils.moment_0(
        #     cube=dirty_cube,
        #     velocities=velocities
        # )
        # dirty_model_moment_0 = spectral_utils.moment_0(
        #     cube=dirty_model_cube,
        #     velocities=velocities
        # )
        # plt.figure()
        # plt.imshow(dirty_moment_0 - dirty_model_moment_0, cmap="jet")
        # plt.show()
        # exit()

        fit_plots.residual_map(fit=fit.DatasetFit(
            masked_dataset=masked_dataset, model_data=model_data),
                               transformers=transformers)