Beispiel #1
0
 def test_multiple_galaxies(self, mapper):
     mapper.galaxy_1 = aast.GalaxyModel(
         redshift=aast.Redshift,
         light_profile=aast.lp.EllipticalDevVaucouleurs,
         mass_profile=aast.mp.EllipticalCoredIsothermal,
     )
     mapper.galaxy_2 = aast.GalaxyModel(
         redshift=aast.Redshift,
         light_profile=aast.lp.EllipticalDevVaucouleurs,
         mass_profile=aast.mp.EllipticalCoredIsothermal,
     )
     assert len(mapper.prior_model_tuples) == 2
Beispiel #2
0
    def test_make_galaxy_from_instance_profile(self, mass_and_light):
        prior = aast.GalaxyModel(redshift=0.5, profile=mass_and_light)

        galaxy = prior.instance_for_arguments({})

        assert galaxy.light_profiles[0] == mass_and_light
        assert galaxy.mass_profiles[0] == mass_and_light
Beispiel #3
0
    def test_make_galaxy_from_model_profile(self):
        galaxy_model = aast.GalaxyModel(redshift=0.5,
                                        profile=aast.lmp.EllipticalSersic)

        arguments = {
            galaxy_model.profile.centre.centre_0: 1.0,
            galaxy_model.profile.centre.centre_1: 0.2,
            galaxy_model.profile.axis_ratio: 0.4,
            galaxy_model.profile.phi: 0.5,
            galaxy_model.profile.intensity.value: 0.6,
            galaxy_model.profile.effective_radius.value: 0.7,
            galaxy_model.profile.sersic_index: 0.8,
            galaxy_model.profile.mass_to_light_ratio.value: 3.0,
        }

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.light_profiles[0] == galaxy.mass_profiles[0]
        assert isinstance(galaxy.light_profiles[0], aast.lmp.EllipticalSersic)

        assert galaxy.mass_profiles[0].centre == (1.0, 0.2)
        assert galaxy.mass_profiles[0].axis_ratio == 0.4
        assert galaxy.mass_profiles[0].phi == 0.5
        assert galaxy.mass_profiles[0].intensity == 0.6
        assert galaxy.mass_profiles[0].effective_radius == 0.7
        assert galaxy.mass_profiles[0].sersic_index == 0.8
        assert galaxy.mass_profiles[0].mass_to_light_ratio == 3.0
Beispiel #4
0
def make_galaxy_model(mapper, ):
    galaxy_model_1 = aast.GalaxyModel(
        redshift=aast.Redshift,
        light_profile=aast.lp.EllipticalDevVaucouleurs,
        mass_profile=aast.mp.EllipticalCoredIsothermal,
    )
    mapper.galaxy_1 = galaxy_model_1
    return galaxy_model_1
Beispiel #5
0
 def test_init_to_model_mapper(self, mapper):
     mapper.galaxy_1 = aast.GalaxyModel(
         redshift=aast.Redshift,
         light_profile=aast.lp.EllipticalDevVaucouleurs,
         mass_profile=aast.mp.EllipticalCoredIsothermal,
     )
     print(mapper.galaxy_1.redshift)
     assert len(mapper.prior_tuples_ordered_by_id) == 13
Beispiel #6
0
    def test_fixed_light(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift, light_profile=aast.lp.EllipticalSersic())

        arguments = {galaxy_model.redshift.redshift: 2.0}

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert len(galaxy.light_profiles) == 1
Beispiel #7
0
    def test_fixed_mass(self):
        galaxy_model = aast.GalaxyModel(redshift=aast.Redshift,
                                        nass_profile=aast.mp.SphericalNFW())

        arguments = {galaxy_model.redshift.redshift: 2.0}

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert len(galaxy.mass_profiles) == 1
Beispiel #8
0
    def test_get_prior_model(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile=aast.lp.EllipticalSersic,
            mass_profile=aast.mp.EllipticalSersic,
        )

        assert isinstance(galaxy_model.light_profile, af.PriorModel)
        assert isinstance(galaxy_model.mass_profile, af.PriorModel)
Beispiel #9
0
    def test_align_phis(self, galaxy_model):
        assert galaxy_model.light_profile.phi != galaxy_model.mass_profile.phi

        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile=aast.lp.EllipticalDevVaucouleurs,
            mass_profile=aast.mp.EllipticalCoredIsothermal,
            align_orientations=True,
        )
        assert galaxy_model.light_profile.phi == galaxy_model.mass_profile.phi
Beispiel #10
0
    def test_integration(self):
        # Create a mapper. This can be used to convert values output by a non linear optimiser into class instances.
        mapper = af.ModelMapper()

        # Create a model_galaxy prior for the source model_galaxy. Here we are describing only the light profile of
        # the source model_galaxy which comprises an elliptical exponential and elliptical sersic light profile.
        source_galaxy_prior = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile_one=aast.lp.EllipticalExponential,
            light_profile_2=aast.lp.EllipticalSersic,
        )

        # Create a model_galaxy prior for the source model_galaxy. Here we are describing both the light and mass
        # profiles. We've also stipulated that the centres of any galaxies generated using the model_galaxy prior
        # should match.
        lens_galaxy_prior = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile=aast.lp.EllipticalExponential,
            mass_profile=aast.mp.EllipticalExponential,
            align_centres=True,
        )

        mapper.source_galaxy = source_galaxy_prior
        mapper.lens_galaxy = lens_galaxy_prior

        # Create a model instance. All the instances of the profile classes are created here. Normally we would do this
        # using the output of a non linear search but in this case we are using the median values from the priors.
        instance = mapper.instance_from_prior_medians()

        # Recover model_galaxy instances. We can pass the model instance to model_galaxy priors to recover a fully
        # constructed model_galaxy
        source_galaxy = instance.source_galaxy
        lens_galaxy = instance.lens_galaxy

        # Let's just check that worked
        assert len(source_galaxy.light_profiles) == 2
        assert len(source_galaxy.mass_profiles) == 0

        assert len(lens_galaxy.light_profiles) == 1
        assert len(lens_galaxy.mass_profiles) == 1

        assert source_galaxy.redshift == 1.5
        assert lens_galaxy.redshift == 1.5
Beispiel #11
0
    def test_align_centres(self, galaxy_model):
        assert galaxy_model.light_profile.centre != galaxy_model.mass_profile.centre

        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile=aast.lp.EllipticalDevVaucouleurs,
            mass_profile=aast.mp.EllipticalCoredIsothermal,
            align_centres=True,
        )

        assert galaxy_model.light_profile.centre == galaxy_model.mass_profile.centre
Beispiel #12
0
    def test_fixed_regularization(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            pixelization=aa.pix.Voronoi(),
            regularization=aa.reg.Constant(),
        )

        arguments = {galaxy_model.redshift.redshift: 2.0}

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.regularization.coefficient == 1.0
Beispiel #13
0
    def test_align_axis_ratios(self, galaxy_model):
        assert (galaxy_model.light_profile.axis_ratio !=
                galaxy_model.mass_profile.axis_ratio)

        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile=aast.lp.EllipticalDevVaucouleurs,
            mass_profile=aast.mp.EllipticalCoredIsothermal,
            align_axis_ratios=True,
        )
        assert (galaxy_model.light_profile.axis_ratio ==
                galaxy_model.mass_profile.axis_ratio)
Beispiel #14
0
    def test_fixed_pixelization(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            pixelization=aa.pix.Rectangular(),
            regularization=aa.reg.Constant(),
        )

        arguments = {galaxy_model.redshift.redshift: 2.0}

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.pixelization.shape[0] == 3
        assert galaxy.pixelization.shape[1] == 3
Beispiel #15
0
    def test_fixed_hyper_galaxy(self, ):
        galaxy_model = aast.GalaxyModel(redshift=aast.Redshift,
                                        hyper_galaxy=aast.HyperGalaxy())

        arguments = {galaxy_model.redshift.redshift: 2.0}

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.hyper_galaxy.contribution_factor == 0.0
        assert galaxy.hyper_galaxy.noise_factor == 0.0
        assert galaxy.hyper_galaxy.noise_power == 1.0

        assert galaxy.hyper_galaxy_image is None
Beispiel #16
0
    def test_set_prior_model(self):
        mapper = af.ModelMapper()
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            light_profile=aast.lp.EllipticalSersic,
            mass_profile=aast.mp.EllipticalSersic,
        )

        mapper.galaxy = galaxy_model

        assert 16 == len(mapper.prior_tuples_ordered_by_id)

        galaxy_model.light_profile = af.PriorModel(aast.lp.LightProfile)

        assert 9 == len(mapper.prior_tuples_ordered_by_id)
Beispiel #17
0
    def test_regularization(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            pixelization=aa.pix.Rectangular,
            regularization=aa.reg.Constant,
        )

        arguments = {
            galaxy_model.redshift.redshift: 2.0,
            galaxy_model.pixelization.shape_0: 24.0,
            galaxy_model.pixelization.shape_1: 23.0,
            galaxy_model.regularization.coefficient: 0.5,
        }

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.regularization.coefficient == 0.5
Beispiel #18
0
    def test_hyper_galaxy(self, ):
        galaxy_model = aast.GalaxyModel(redshift=aast.Redshift,
                                        hyper_galaxy=aast.HyperGalaxy)

        arguments = {
            galaxy_model.redshift.redshift: 0.2,
            galaxy_model.hyper_galaxy.contribution_factor: 1,
            galaxy_model.hyper_galaxy.noise_factor: 2,
            galaxy_model.hyper_galaxy.noise_power: 1.5,
        }

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.hyper_galaxy.contribution_factor == 1
        assert galaxy.hyper_galaxy.noise_factor == 2
        assert galaxy.hyper_galaxy.noise_power == 1.5

        assert galaxy.hyper_galaxy_image is None
Beispiel #19
0
    def test_gaussian_prior_model_for_arguments(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            align_centres=True,
            light_profile=aast.lp.EllipticalSersic,
            mass_profile=aast.mp.SphericalIsothermal,
        )

        redshift_prior = af.GaussianPrior(1, 1)
        einstein_radius_prior = af.GaussianPrior(4, 1)
        intensity_prior = af.GaussianPrior(7, 1)

        arguments = {
            galaxy_model.redshift.redshift:
            redshift_prior,
            galaxy_model.mass_profile.centre.centre_0:
            af.GaussianPrior(2, 1),
            galaxy_model.mass_profile.centre.centre_1:
            af.GaussianPrior(3, 1),
            galaxy_model.mass_profile.einstein_radius.value:
            einstein_radius_prior,
            galaxy_model.light_profile.axis_ratio:
            af.GaussianPrior(5, 1),
            galaxy_model.light_profile.phi:
            af.GaussianPrior(6, 1),
            galaxy_model.light_profile.intensity.value:
            intensity_prior,
            galaxy_model.light_profile.effective_radius.value:
            af.GaussianPrior(8, 1),
            galaxy_model.light_profile.sersic_index:
            af.GaussianPrior(9, 1),
        }

        gaussian_galaxy_model_model = galaxy_model.gaussian_prior_model_for_arguments(
            arguments)

        assert gaussian_galaxy_model_model.redshift.redshift == redshift_prior
        assert (gaussian_galaxy_model_model.mass_profile.einstein_radius.value
                == einstein_radius_prior)
        assert (gaussian_galaxy_model_model.light_profile.intensity.value ==
                intensity_prior)
Beispiel #20
0
    def test_fixed_and_model(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            mass_profile=aast.mp.SphericalNFW(),
            light_profile=aast.lp.EllipticalSersic(),
            model_light=aast.lp.EllipticalSersic,
        )

        arguments = {
            galaxy_model.redshift.redshift: 0.2,
            galaxy_model.model_light.axis_ratio: 0.4,
            galaxy_model.model_light.phi: 0.5,
            galaxy_model.model_light.intensity.value: 0.6,
            galaxy_model.model_light.effective_radius.value: 0.7,
            galaxy_model.model_light.sersic_index: 0.8,
            galaxy_model.model_light.centre.centre_0: 0,
            galaxy_model.model_light.centre.centre_1: 0,
        }

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert len(galaxy.light_profiles) == 2
        assert len(galaxy.mass_profiles) == 1
Beispiel #21
0
    def test_complicated_instance_for_arguments(self):
        galaxy_model = aast.GalaxyModel(
            redshift=aast.Redshift,
            align_centres=True,
            light_profile=aast.lp.EllipticalSersic,
            mass_profile=aast.mp.SphericalIsothermal,
        )

        arguments = {
            galaxy_model.redshift.redshift: 0.5,
            galaxy_model.mass_profile.centre.centre_0: 1.0,
            galaxy_model.mass_profile.centre.centre_1: 0.2,
            galaxy_model.mass_profile.einstein_radius.value: 0.3,
            galaxy_model.light_profile.axis_ratio: 0.4,
            galaxy_model.light_profile.phi: 0.5,
            galaxy_model.light_profile.intensity.value: 0.6,
            galaxy_model.light_profile.effective_radius.value: 0.7,
            galaxy_model.light_profile.sersic_index: 0.1,
        }

        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.light_profiles[0].centre[0] == 1.0
        assert galaxy.light_profiles[0].centre[1] == 0.2
Beispiel #22
0
 def test_set_redshift_instance(self):
     galaxy_model = aast.GalaxyModel(redshift=aast.Redshift)
     galaxy_model.redshift = 3
     # noinspection PyUnresolvedReferences
     assert galaxy_model.redshift == 3
Beispiel #23
0
 def test_set_redshift_class(self):
     galaxy_model = aast.GalaxyModel(redshift=aast.Redshift)
     galaxy_model.redshift = aast.Redshift(3)
     assert galaxy_model.redshift == 3
Beispiel #24
0
    def test_simple_instance_for_arguments(self):
        galaxy_model = aast.GalaxyModel(redshift=aast.Redshift)
        arguments = {galaxy_model.redshift.redshift: 0.5}
        galaxy = galaxy_model.instance_for_arguments(arguments)

        assert galaxy.redshift == 0.5
Beispiel #25
0
 def test__if_no_pixelization_raises_error(self):
     with pytest.raises(AssertionError):
         aast.GalaxyModel(redshift=aast.Redshift,
                          regularization=aa.reg.Constant)
Beispiel #26
0
 def test__if_no_pixelization_raises_error(self):
     with pytest.raises(AssertionError):
         aast.GalaxyModel(redshift=aast.Redshift,
                          pixelization=aa.pix.Voronoi)