def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class MMPhase(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens_0.light.axis_ratio = 0.2 self.galaxies.lens_0.light.phi = 90.0 self.galaxies.lens_0.light.centre_0 = 1.0 self.galaxies.lens_0.light.centre_1 = 2.0 self.galaxies.lens_1.light.axis_ratio = 0.2 self.galaxies.lens_1.light.phi = 90.0 self.galaxies.lens_1.light.centre_0 = 1.0 self.galaxies.lens_1.light.centre_1 = 2.0 phase1 = MMPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens_0=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), lens_1=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), ), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 20 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1)
def test__make_pixelization_model(self): instance = af.ModelInstance() mapper = af.ModelMapper() mapper.lens_galaxy = al.GalaxyModel( redshift=al.Redshift, pixelization=al.pix.Rectangular, regularization=al.reg.Constant, ) mapper.source_galaxy = al.GalaxyModel( redshift=al.Redshift, light=al.lp.EllipticalLightProfile) assert mapper.prior_count == 10 instance.lens_galaxy = al.Galaxy( pixelization=al.pix.Rectangular(), regularization=al.reg.Constant(), redshift=1.0, ) instance.source_galaxy = al.Galaxy( redshift=1.0, light=al.lp.EllipticalLightProfile()) # noinspection PyTypeChecker phase = al.ModelFixingHyperPhase( MockPhase(), "mock_phase", model_classes=(al.pix.Pixelization, al.reg.Regularization), ) mapper = mapper.copy_with_fixed_priors(instance, phase.model_classes) assert mapper.prior_count == 3 assert mapper.lens_galaxy.redshift == 1.0 assert mapper.source_galaxy.light.axis_ratio == 1.0
def test__fit_interferometer_generator_from_aggregator( interferometer_7, visibilities_mask_7, mask_7x7, samples ): phase_interferometer_7x7 = al.PhaseInterferometer( galaxies=dict( lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), search=mock.MockSearch("test_phase_aggregator", samples=samples), real_space_mask=mask_7x7, ) phase_interferometer_7x7.run( dataset=interferometer_7, mask=visibilities_mask_7, results=mock.MockResults(samples=samples), ) agg = af.Aggregator(directory=phase_interferometer_7x7.paths.output_path) fit_interferometer_gen = al.agg.FitInterferometer(aggregator=agg) for fit_interferometer in fit_interferometer_gen: assert ( fit_interferometer.masked_interferometer.interferometer.visibilities == interferometer_7.visibilities ).all() assert ( fit_interferometer.masked_interferometer.real_space_mask == mask_7x7 ).all()
def make_pipeline( name, phase_folders, real_space_shape_2d=(100, 100), real_space_pixel_scales=(0.1, 0.1), optimizer_class=af.MultiNest, ): class LensPlanex2GalPhase(al.PhaseInterferometer): def customize_priors(self, results): self.galaxies.lens_0.light.centre_0 = -1.0 self.galaxies.lens_0.light.centre_1 = -1.0 self.galaxies.lens_1.light.centre_0 = 1.0 self.galaxies.lens_1.light.centre_1 = 1.0 phase1 = LensPlanex2GalPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens_0=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), lens_1=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), ), real_space_shape_2d=real_space_shape_2d, real_space_pixel_scales=real_space_pixel_scales, optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 40 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1)
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): phase1 = al.PhaseImaging( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mp.EllipticalIsothermal), source=al.GalaxyModel(redshift=1.0, sersic=al.lp.EllipticalSersic), ), sub_size=1, non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 20 phase1.optimizer.sampling_efficiency = 0.8 # We want to set up the source from the result, where: # If it is parametric, it is a model (thus N = 12). # If it is an inversion, it is an instance (Thus N = 5) # When we use af.last, this fails, because the promise pixelizzation attribute is another promise. source = source_with_previous_model_or_instance() phase2 = al.PhaseImaging( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict(lens=phase1.result.model.galaxies.lens, source=source), sub_size=1, non_linear_class=non_linear_class, ) return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, folders, search=af.DynestyStatic()): phase1 = al.PhaseImaging( phase_name="phase_1", folders=folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mp.EllipticalIsothermal), source_0=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), search=search, ) phase2 = al.PhaseImaging( phase_name="phase_2", folders=folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=phase1.result.model.galaxies.lens.mass), source_0=al.GalaxyModel( redshift=1.0, light=phase1.result.model.galaxies.source_0.light), source_1=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), search=search, ) return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): phase1 = al.PhaseImaging( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic)), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 40 phase1.optimizer.sampling_efficiency = 0.8 phase1 = phase1.extend_with_multiple_hyper_phases(hyper_galaxy=True) phase2 = al.PhaseImaging( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict(lens=al.GalaxyModel( redshift=0.5, light=phase1.result.model.galaxies.lens.light, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies.lens. hyper_galaxy, )), optimizer_class=optimizer_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 40 phase2.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class MMPhase(al.PhaseImaging): pass phase1 = MMPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict(lens=al.GalaxyModel( redshift=0.5, light=al.light_profiles.EllipticalSersic)), optimizer_class=optimizer_class, ) phase1.optimizer.n_live_points = 20 phase1.optimizer.sampling_efficiency = 0.8 phase1.optimizer.importance_nested_sampling = False class MMPhase2(al.PhaseImaging): def customize_priors(self, results): self.galaxies = results.from_phase("phase_1").variable.galaxies phase2 = MMPhase2( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict(lens=al.GalaxyModel( redshift=0.5, light=al.light_profiles.EllipticalSersic)), optimizer_class=optimizer_class, ) phase2.optimizer.n_live_points = 20 phase2.optimizer.sampling_efficiency = 0.8 phase2.optimizer.importance_nested_sampling = False return al.PipelineImaging(name, phase1, phase2)
def make_pipeline( name, phase_folders, real_space_shape_2d=(100, 100), real_space_pixel_scales=(0.1, 0.1), optimizer_class=af.MultiNest, ): phase1 = al.PhaseInterferometer( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=al.lp.SphericalDevVaucouleurs, mass=al.mp.EllipticalIsothermal, ), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), real_space_shape_2d=real_space_shape_2d, real_space_pixel_scales=real_space_pixel_scales, optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1)
def make_pipeline( name, phase_folders, real_space_shape_2d=(100, 100), real_space_pixel_scales=(0.1, 0.1), optimizer_class=af.MultiNest, ): phase1 = al.PhaseInterferometer( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=al.lp.SphericalDevVaucouleurs, mass=al.mp.EllipticalIsothermal, ), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), real_space_shape_2d=real_space_shape_2d, real_space_pixel_scales=real_space_pixel_scales, optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 phase1 = phase1.extend_with_multiple_hyper_phases(hyper_galaxy=True) phase2 = al.PhaseInterferometer( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=phase1.result.model.galaxies.lens.light, mass=phase1.result.model.galaxies.lens.mass, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies. lens.hyper_galaxy, ), source=al.GalaxyModel( redshift=1.0, light=phase1.result.model.galaxies.source.light, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies. source.hyper_galaxy, ), ), real_space_shape_2d=real_space_shape_2d, real_space_pixel_scales=real_space_pixel_scales, optimizer_class=optimizer_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 40 phase2.optimizer.sampling_efficiency = 0.8 phase2 = phase2.extend_with_multiple_hyper_phases(hyper_galaxy=True) return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, folders, real_space_mask, search=af.DynestyStatic()): mass = af.PriorModel(al.mp.EllipticalIsothermal) mass.centre.centre_0 = 0.0 mass.centre.centre_1 = 0.0 mass.einstein_radius = 1.6 pixelization = af.PriorModel(al.pix.Rectangular) pixelization.shape_0 = 20.0 pixelization.shape_1 = 20.0 phase1 = al.PhaseInterferometer( phase_name="phase_1", folders=folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, bulge=al.lp.SphericalDevVaucouleurs, mass=mass), source=al.GalaxyModel(redshift=1.0, pixelization=pixelization, regularization=al.reg.Constant), ), real_space_mask=real_space_mask, search=search, ) phase1.search.const_efficiency_mode = True phase1.search.n_live_points = 60 phase1.search.facc = 0.8 return al.PipelineDataset(name, phase1)
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): class MMPhase(al.PhaseImaging): pass phase1 = MMPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict(lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic)), non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 20 phase1.optimizer.sampling_efficiency = 0.8 class MMPhase2(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens = results.from_phase("phase_1").model.lens phase2 = MMPhase2( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict(lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic)), non_linear_class=non_linear_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 20 phase2.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): class LensPhase(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.mass.centre_0 = af.GaussianPrior(mean=4.0, sigma=0.1) self.galaxies.lens.mass.centre_1 = af.GaussianPrior(mean=4.0, sigma=0.1) self.galaxies.source.light.centre_0 = af.GaussianPrior(mean=4.0, sigma=0.1) self.galaxies.source.light.centre_1 = af.GaussianPrior(mean=4.0, sigma=0.1) phase1 = LensPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mp.SphericalIsothermal), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), positions_threshold=0.5, non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 30 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1)
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): phase1 = al.PhaseImaging( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mp.EllipticalIsothermal), source_0=al.GalaxyModel(redshift=1.0, sersic=al.lp.EllipticalSersic), ), non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.7 phase2 = al.PhaseImaging( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens=phase1.result.model.galaxies.lens, source_0=phase1.result.model.galaxies.source_0, source_1=al.GalaxyModel(redshift=1.0, sersic=al.lp.EllipticalSersic), source_2=al.GalaxyModel(redshift=1.0, sersic=al.lp.EllipticalSersic), ), non_linear_class=non_linear_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 60 phase2.optimizer.sampling_efficiency = 0.7 return al.PipelineDataset(name, phase1, phase2)
def test__masked_imaging_generator_from_aggregator(imaging_7x7, mask_7x7, samples): phase_imaging_7x7 = al.PhaseImaging( galaxies=dict( lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), settings=al.SettingsPhaseImaging( settings_masked_imaging=al.SettingsMaskedImaging( grid_class=al.GridIterate, grid_inversion_class=al.GridInterpolate, fractional_accuracy=0.5, sub_steps=[2], pixel_scales_interp=0.1, ) ), search=mock.MockSearch("test_phase_aggregator", samples=samples), ) phase_imaging_7x7.run( dataset=imaging_7x7, mask=mask_7x7, results=mock.MockResults(samples=samples) ) agg = af.Aggregator(directory=phase_imaging_7x7.paths.output_path) masked_imaging_gen = al.agg.MaskedImaging(aggregator=agg) for masked_imaging in masked_imaging_gen: assert (masked_imaging.imaging.image == imaging_7x7.image).all() assert isinstance(masked_imaging.grid, al.GridIterate) assert isinstance(masked_imaging.grid_inversion, al.GridInterpolate) assert masked_imaging.grid.sub_steps == [2] assert masked_imaging.grid.fractional_accuracy == 0.5 assert masked_imaging.grid_inversion.pixel_scales_interp == (0.1, 0.1)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class SourcePix(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.mass.centre.centre_0 = 0.0 self.galaxies.lens.mass.centre.centre_1 = 0.0 self.galaxies.lens.mass.einstein_radius = 1.6 self.galaxies.source.pixelization.shape_0 = 20.0 self.galaxies.source.pixelization.shape_1 = 20.0 phase1 = SourcePix( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=al.lp.SphericalDevVaucouleurs, mass=al.mp.EllipticalIsothermal, ), source=al.GalaxyModel( redshift=1.0, pixelization=al.pix.VoronoiMagnification, regularization=al.reg.Constant, ), ), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class SourcePix(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.mass.centre.centre_0 = 0.0 self.galaxies.lens.mass.centre.centre_1 = 0.0 self.galaxies.lens.mass.einstein_radius_in_units = 1.6 self.galaxies.source.pixelization.shape_0 = 20.0 self.galaxies.source.pixelization.shape_1 = 20.0 phase1 = SourcePix( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mass_profiles.EllipticalIsothermal), source=al.GalaxyModel( redshift=1.0, pixelization=al.pixelizations.Rectangular, regularization=al.regularization.Constant, ), ), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineImaging(name, phase1)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class LensPlanex2GalPhase(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens_0.light.centre_0 = -1.0 self.galaxies.lens_0.light.centre_1 = -1.0 self.galaxies.lens_1.light.centre_0 = 1.0 self.galaxies.lens_1.light.centre_1 = 1.0 def mask_function(image): return al.Mask.circular( shape=image.shape, pixel_scale=image.pixel_scale, radius_arcsec=5.0 ) phase1 = LensPlanex2GalPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens_0=al.GalaxyModel( redshift=0.5, light=al.light_profiles.EllipticalSersic ), lens_1=al.GalaxyModel( redshift=0.5, light=al.light_profiles.EllipticalSersic ), ), mask_function=mask_function, optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 40 phase1.optimizer.sampling_efficiency = 0.8 return al.PipelineImaging(name, phase1)
def source_with_previous_model_or_instance(): """Setup the source source model using the previous pipeline or phase results. This function is required because the source light model is not specified by the pipeline itself (e.g. the previous pipelines determines if the source was modeled using parametric light profiles or an inversion. If the source was parametric this function returns the source as a model, given that a parametric source should be fitted for simultaneously with the mass model. If the source was an inversion then it is returned as an instance, given that the inversion parameters do not need to be fitted for alongside the mass model. The bool include_hyper_source determines if the hyper-galaxy used to scale the sources noises is included in the model fitting. """ if af.last.model.galaxies.source.pixelization is None: return al.GalaxyModel( redshift=af.last.instance.galaxies.source.redshift, sersic=af.last.model.galaxies.source.sersic, ) else: return al.GalaxyModel( redshift=af.last.instance.galaxies.source.redshift, pixelization=af.last.hyper_combined.instance.galaxies.source.pixelization, regularization=af.last.hyper_combined.instance.galaxies.source.regularization, )
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): phase1 = al.PhaseImaging( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, light=al.light_profiles.EllipticalSersic, light_1=None)), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 20 phase1.optimizer.sampling_efficiency = 0.8 phase2 = al.PhaseImaging( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict(lens=al.GalaxyModel( redshift=0.5, light=al.light_profiles.EllipticalSersic, light_1=phase1.result.constant.galaxies.lens.light_1, )), optimizer_class=optimizer_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 20 phase2.optimizer.sampling_efficiency = 0.8 return al.PipelineImaging(name, phase1, phase2)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class QuickPhase(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.light.centre_0 = af.UniformPrior( lower_limit=-0.01, upper_limit=0.01) self.galaxies.lens.light.centre_1 = af.UniformPrior( lower_limit=-0.01, upper_limit=0.01) self.galaxies.lens.light.axis_ratio = af.UniformPrior( lower_limit=0.79, upper_limit=0.81) self.galaxies.lens.light.phi = af.UniformPrior(lower_limit=-1.0, upper_limit=1.0) self.galaxies.lens.light.intensity = af.UniformPrior( lower_limit=0.99, upper_limit=1.01) self.galaxies.lens.light.effective_radius = af.UniformPrior( lower_limit=1.25, upper_limit=1.35) self.galaxies.lens.light.sersic_index = af.UniformPrior( lower_limit=3.95, upper_limit=4.05) phase1 = QuickPhase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic)), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 40 phase1.optimizer.sampling_efficiency = 0.8 class GridPhase(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.light.centre_0 = 0.0 self.galaxies.lens.light.centre_1 = 0.0 self.galaxies.lens.light.axis_ratio = results.from_phase( "phase_1").instance.lens.light.axis_ratio self.galaxies.lens.light.phi = results.from_phase( "phase_1").instance.lens.light.phi self.galaxies.lens.light.intensity = results.from_phase( "phase_1").instance.lens.light.intensity self.galaxies.lens.light.effective_radius = af.UniformPrior( lower_limit=0.0, upper_limit=4.0) self.galaxies.lens.light.sersic_index = af.UniformPrior( lower_limit=1.0, upper_limit=8.0) phase2 = GridPhase( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic)), optimizer_class=af.GridSearch, ) phase2.optimizer.const_efficiency_mode = True return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): phase1 = al.PhaseImaging( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=al.lp.SphericalDevVaucouleurs, mass=al.mp.EllipticalIsothermal, ), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 phase1 = phase1.extend_with_multiple_hyper_phases( hyper_galaxy=True, include_background_sky=True, include_background_noise=True) phase2 = al.PhaseImaging( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=phase1.result.model.galaxies.lens.light, mass=phase1.result.model.galaxies.lens.mass, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies. lens.hyper_galaxy, ), source=al.GalaxyModel( redshift=1.0, light=phase1.result.model.galaxies.source.light, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies. source.hyper_galaxy, ), ), hyper_image_sky=phase1.result.hyper_combined.instance.hyper_image_sky, hyper_background_noise=phase1.result.hyper_combined.instance. hyper_background_noise, non_linear_class=non_linear_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 40 phase2.optimizer.sampling_efficiency = 0.8 phase2 = phase2.extend_with_multiple_hyper_phases( hyper_galaxy=True, include_background_sky=True, include_background_noise=True) return al.PipelineDataset(name, phase1, phase2)
def make_pipeline( name, phase_folders, real_space_shape_2d=(100, 100), real_space_pixel_scales=(0.1, 0.1), non_linear_class=af.MultiNest, ): class LensPlaneGalaxyX2Phase(al.PhaseInterferometer): def customize_priors(self, results): self.galaxies.lens_0.light.centre_0 = -1.0 self.galaxies.lens_0.light.centre_1 = -1.0 self.galaxies.lens_1.light.centre_0 = 1.0 self.galaxies.lens_1.light.centre_1 = 1.0 phase1 = LensPlaneGalaxyX2Phase( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens_0=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), lens_1=al.GalaxyModel(redshift=0.5, light=al.lp.EllipticalSersic), ), real_space_shape_2d=real_space_shape_2d, real_space_pixel_scales=real_space_pixel_scales, non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 40 phase1.optimizer.sampling_efficiency = 0.8 phase1 = phase1.extend_with_multiple_hyper_phases(hyper_galaxy=True) phase2 = al.PhaseInterferometer( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens_0=al.GalaxyModel( redshift=0.5, light=phase1.result.model.galaxies.lens_0.light, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies.lens_0.hyper_galaxy, ), lens_1=al.GalaxyModel( redshift=0.5, light=phase1.result.model.galaxies.lens_1.light, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies.lens_1.hyper_galaxy, ), ), real_space_shape_2d=real_space_shape_2d, real_space_pixel_scales=real_space_pixel_scales, non_linear_class=non_linear_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 40 phase2.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, folders, real_space_mask, search=af.DynestyStatic()): mass = af.PriorModel(al.mp.EllipticalIsothermal) mass.centre.centre_0 = 2.0 mass.centre.centre_1 = 2.0 mass.einstein_radius = 1.6 pixelization = af.PriorModel(al.pix.VoronoiMagnification) pixelization.shape_0 = 20.0 pixelization.shape_1 = 20.0 phase1 = al.PhaseInterferometer( phase_name="phase_1", folders=folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=mass), source=al.GalaxyModel(redshift=1.0, pixelization=pixelization, regularization=al.reg.Constant), ), real_space_mask=real_space_mask, search=search, ) phase1.search.const_efficiency_mode = True phase1.search.n_live_points = 60 phase1.search.facc = 0.8 phase1 = phase1.extend_with_inversion_phase() phase2 = al.PhaseInterferometer( phase_name="phase_2", folders=folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=phase1.result.model.galaxies.lens.mass), source=al.GalaxyModel( redshift=1.0, pixelization=phase1.results.settings_inversion.instance. galaxies.source.pixelization, regularization=phase1.results.settings_inversion.instance. galaxies.source.regularization, ), ), real_space_mask=real_space_mask, search=search, ) phase2.search.const_efficiency_mode = True phase2.search.n_live_points = 60 phase2.search.facc = 0.8 phase2 = phase2.extend_with_inversion_phase() return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, phase_folders, optimizer_class=af.MultiNest): class SourcePix(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.mass.centre.centre_0 = 0.0 self.galaxies.lens.mass.centre.centre_1 = 0.0 self.galaxies.lens.mass.einstein_radius = 1.6 phase1 = SourcePix( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mass_profiles.EllipticalIsothermal), source=al.GalaxyModel( redshift=1.0, pixelization=al.pixelizations.VoronoiMagnification, regularization=al.regularization.Constant, ), ), optimizer_class=optimizer_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 phase1 = phase1.extend_with_inversion_phase() class SourcePix(al.PhaseImaging): def customize_priors(self, results): self.galaxies.source = results.last.inversion.constant.galaxies.source phase2 = SourcePix( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, mass=phase1.result.variable.galaxies.lens.mass), source=al.GalaxyModel( redshift=1.0, pixelization=al.pixelizations.VoronoiMagnification, regularization=al.regularization.Constant, ), ), optimizer_class=optimizer_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 60 phase2.optimizer.sampling_efficiency = 0.8 phase2 = phase2.extend_with_inversion_phase() return al.PipelineImaging(name, phase1, phase2)
def test__duplication(self): phase_dataset_7x7 = al.PhaseImaging( phase_name="test_phase", galaxies=dict(lens=al.GalaxyModel(redshift=0.5), source=al.GalaxyModel(redshift=1.0)), ) al.PhaseImaging(phase_name="test_phase") assert phase_dataset_7x7.galaxies is not None
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): class SourcePix(al.PhaseImaging): def customize_priors(self, results): self.galaxies.lens.mass.centre.centre_0 = 0.0 self.galaxies.lens.mass.centre.centre_1 = 0.0 self.galaxies.lens.mass.einstein_radius = 1.6 phase1 = SourcePix( phase_name="phase_1", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=al.mp.EllipticalIsothermal), source=al.GalaxyModel( redshift=1.0, pixelization=al.pix.Rectangular, regularization=al.reg.Constant, ), ), non_linear_class=non_linear_class, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 60 phase1.optimizer.sampling_efficiency = 0.8 phase1.extend_with_multiple_hyper_phases(hyper_galaxy=True) phase2 = al.PhaseImaging( phase_name="phase_2", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, mass=phase1.result.model.galaxies.lens.mass, hyper_galaxy=al.HyperGalaxy, ), source=al.GalaxyModel( redshift=1.0, pixelization=phase1.result.model.galaxies.source.pixelization, regularization=phase1.result.model.galaxies.source. regularization, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies. source.hyper_galaxy, ), ), non_linear_class=non_linear_class, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 40 phase2.optimizer.sampling_efficiency = 0.8 return al.PipelineDataset(name, phase1, phase2)
def make_pipeline(name, phase_folders, non_linear_class=af.MultiNest): phase1 = al.PhaseImaging( phase_name="phase_1__lens_bulge_disk", phase_folders=phase_folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, light=al.lp.SphericalDevVaucouleurs, mass=al.mp.EllipticalIsothermal, ), source=al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic), ), non_linear_class=af.MultiNest, ) phase1.optimizer.const_efficiency_mode = True phase1.optimizer.n_live_points = 40 phase1.optimizer.sampling_efficiency = 0.3 lens = al.setup.lens_with_light_only_from_result(result=af.last, fix_lens_light=True) # Setup the power-law mass profile and initialize its priors from the SIE. mass = af.PriorModel(al.mp.EllipticalPowerLaw) mass.centre = af.last.model.galaxies.lens.mass.centre mass.axis_ratio = af.last.model.galaxies.lens.mass.axis_ratio mass.phi = af.last.model.galaxies.lens.mass.phi mass.einstein_radius = af.last.model_absolute( a=0.3).galaxies.lens.mass.einstein_radius lens.mass = mass lens.hyper_galaxy = ( af.last.hyper_combined.instance.optional.galaxies.lens.hyper_galaxy) phase2 = al.PhaseImaging( phase_name="phase_2__lens_power_law__source", phase_folders=phase_folders, galaxies=dict(lens=lens, source=phase1.result.instance.galaxies.source), hyper_image_sky=af.last.hyper_combined.instance.optional. hyper_image_sky, hyper_background_noise=af.last.hyper_combined.instance.optional. hyper_background_noise, non_linear_class=af.MultiNest, ) phase2.optimizer.const_efficiency_mode = True phase2.optimizer.n_live_points = 75 phase2.optimizer.sampling_efficiency = 0.2 return al.PipelineDataset(name, phase1, phase2)
def test_multiple_galaxies(self, mapper): mapper.galaxy_1 = al.GalaxyModel( redshift=al.Redshift, light_profile=al.light_profiles.EllipticalDevVaucouleurs, mass_profile=al.mass_profiles.EllipticalCoredIsothermal, ) mapper.galaxy_2 = al.GalaxyModel( redshift=al.Redshift, light_profile=al.light_profiles.EllipticalDevVaucouleurs, mass_profile=al.mass_profiles.EllipticalCoredIsothermal, ) assert len(mapper.prior_model_tuples) == 2
def make_pipeline(name, folders, search=af.DynestyStatic()): mass = af.PriorModel(al.mp.EllipticalIsothermal) mass.centre.centre_0 = 0.0 mass.centre.centre_1 = 0.0 mass.einstein_radius = 1.6 phase1 = al.PhaseImaging( phase_name="phase_1", folders=folders, galaxies=dict( lens=al.GalaxyModel(redshift=0.5, mass=mass), source=al.GalaxyModel( redshift=1.0, pixelization=al.pix.Rectangular, regularization=al.reg.Constant, ), ), search=search, ) phase1.search.const_efficiency_mode = True phase1.search.n_live_points = 60 phase1.search.facc = 0.8 phase1.extend_with_multiple_hyper_phases(hyper_galaxies_search=True) phase2 = al.PhaseImaging( phase_name="phase_2", folders=folders, galaxies=dict( lens=al.GalaxyModel( redshift=0.5, mass=phase1.result.model.galaxies.lens.mass, hyper_galaxy=al.HyperGalaxy, ), source=al.GalaxyModel( redshift=1.0, pixelization=phase1.result.model.galaxies.source.pixelization, regularization=phase1.result.model.galaxies.source.regularization, hyper_galaxy=phase1.result.hyper_combined.instance.galaxies.source.hyper_galaxy, ), ), search=search, ) phase2.search.const_efficiency_mode = True phase2.search.n_live_points = 40 phase2.search.facc = 0.8 return al.PipelineDataset(name, phase1, phase2)