Skip to content

Commit

Permalink
Merge pull request #171 from Jammy2211/feature/data_offset
Browse files Browse the repository at this point in the history
Feature/data offset
  • Loading branch information
Jammy2211 authored May 14, 2024
2 parents c05e386 + b9287d4 commit 33c03b5
Show file tree
Hide file tree
Showing 14 changed files with 110 additions and 57 deletions.
9 changes: 7 additions & 2 deletions autogalaxy/aggregator/dataset_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
logger = logging.getLogger(__name__)


def _dataset_model_from(fit: af.Fit, instance: af.ModelInstance) -> List[aa.DatasetModel]:
def _dataset_model_from(
fit: af.Fit, instance: af.ModelInstance
) -> List[aa.DatasetModel]:
"""
Returns a `DatasetModel` object from a `PyAutoFit` sqlite database `Fit` object.
Expand Down Expand Up @@ -40,7 +42,10 @@ def _dataset_model_from(fit: af.Fit, instance: af.ModelInstance) -> List[aa.Data
except AttributeError:
dataset_model = None
else:
dataset_model = fit.instance.dataset_model
try:
dataset_model = fit.instance.dataset_model
except AttributeError:
dataset_model = None

if len(fit.children) > 0:
logger.info(
Expand Down
6 changes: 5 additions & 1 deletion autogalaxy/aggregator/fit_imaging.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,11 @@ def _fit_imaging_from(
fit_dataset_list = []

for dataset, galaxies, dataset_model, adapt_images, mesh_grids_of_planes in zip(
dataset_list, galaxies_list, dataset_model_list, adapt_images_list, mesh_grids_of_planes_list
dataset_list,
galaxies_list,
dataset_model_list,
adapt_images_list,
mesh_grids_of_planes_list,
):
preloads = agg_util.preloads_from(
preloads_cls=Preloads,
Expand Down
6 changes: 5 additions & 1 deletion autogalaxy/aggregator/fit_interferometer.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ def _fit_interferometer_from(
fit_dataset_list = []

for dataset, galaxies, dataset_model, adapt_images, mesh_grids_of_planes in zip(
dataset_list, galaxies_list, dataset_model_list, adapt_images_list, mesh_grids_of_planes_list
dataset_list,
galaxies_list,
dataset_model_list,
adapt_images_list,
mesh_grids_of_planes_list,
):
preloads = agg_util.preloads_from(
preloads_cls=Preloads,
Expand Down
23 changes: 12 additions & 11 deletions autogalaxy/aggregator/galaxies.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,18 @@ def _galaxies_from(fit: af.Fit, instance: af.ModelInstance) -> List[Galaxy]:
if hasattr(fit.instance, "clumps"):
galaxies = galaxies + fit.instance.clumps

if len(fit.children) > 0:
logger.info(
"""
Using database for a fit with multiple summed Analysis objects.
Galaxy objects do not fully support this yet (e.g. variables across Analysis objects may not be correct)
so proceed with caution!
"""
)

return [galaxies] * len(fit.children)
if fit.children is not None:
if len(fit.children) > 0:
logger.info(
"""
Using database for a fit with multiple summed Analysis objects.
Galaxy objects do not fully support this yet (e.g. variables across Analysis objects may not be correct)
so proceed with caution!
"""
)

return [galaxies] * len(fit.children)

return [galaxies]

Expand Down
6 changes: 6 additions & 0 deletions autogalaxy/config/priors/dataset_model.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
DatasetModel:
background_sky_level:
type: Constant
value: 0.0
grid_offset_0:
type: Constant
value: 0.0
grid_offset_1:
type: Constant
value: 0.0
28 changes: 10 additions & 18 deletions autogalaxy/imaging/fit_imaging.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def __init__(
self,
dataset: aa.Imaging,
galaxies: List[Galaxy],
dataset_model : Optional[aa.DatasetModel] = None,
dataset_model: Optional[aa.DatasetModel] = None,
adapt_images: Optional[AdaptImages] = None,
settings_inversion: aa.SettingsInversion = aa.SettingsInversion(),
preloads: aa.Preloads = Preloads(),
Expand Down Expand Up @@ -91,10 +91,6 @@ def __init__(
self.adapt_images = adapt_images
self.settings_inversion = settings_inversion

@property
def grid(self) -> aa.type.Grid2DLike:
return self.dataset.grid

@property
def blurred_image(self) -> aa.Array2D:
"""
Expand All @@ -107,18 +103,14 @@ def blurred_image(self) -> aa.Array2D:
if len(self.galaxies.cls_list_from(cls=LightProfile)) == len(
self.galaxies.cls_list_from(cls=LightProfileOperated)
):
return (
self.galaxies.image_2d_from(
grid=self.dataset.grid,
)
return self.galaxies.image_2d_from(
grid=self.grid,
)

return (
self.galaxies.blurred_image_2d_from(
grid=self.dataset.grid,
convolver=self.dataset.convolver,
blurring_grid=self.dataset.blurring_grid,
)
return self.galaxies.blurred_image_2d_from(
grid=self.grid,
convolver=self.dataset.convolver,
blurring_grid=self.blurring_grid,
)

@property
Expand All @@ -136,8 +128,8 @@ def galaxies_to_inversion(self) -> GalaxiesToInversion:
convolver=self.dataset.convolver,
w_tilde=self.w_tilde,
grid=self.grid,
grid_pixelization=self.dataset.grid_pixelization,
blurring_grid=self.dataset.blurring_grid,
grid_pixelization=self.grid_pixelization,
blurring_grid=self.blurring_grid,
border_relocator=self.dataset.border_relocator,
)

Expand Down Expand Up @@ -198,7 +190,7 @@ def galaxy_model_image_dict(self) -> Dict[Galaxy, np.ndarray]:
galaxy_blurred_image_2d_dict = self.galaxies.galaxy_blurred_image_2d_dict_from(
grid=self.grid,
convolver=self.dataset.convolver,
blurring_grid=self.dataset.blurring_grid,
blurring_grid=self.blurring_grid,
)

galaxy_linear_obj_image_dict = self.galaxy_linear_obj_data_dict_from(
Expand Down
15 changes: 7 additions & 8 deletions autogalaxy/interferometer/fit_interferometer.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,10 @@ def __init__(
self.galaxies = Galaxies(galaxies=galaxies, run_time_dict=run_time_dict)

super().__init__(
dataset=dataset, dataset_model=dataset_model, use_mask_in_fit=False, run_time_dict=run_time_dict
dataset=dataset,
dataset_model=dataset_model,
use_mask_in_fit=False,
run_time_dict=run_time_dict,
)
AbstractFitInversion.__init__(
self=self,
Expand All @@ -98,7 +101,7 @@ def profile_visibilities(self) -> aa.Visibilities:
a Fourier transform to the sum of light profile images.
"""
return self.galaxies.visibilities_from(
grid=self.dataset.grid, transformer=self.dataset.transformer
grid=self.grid, transformer=self.dataset.transformer
)

@property
Expand All @@ -116,7 +119,7 @@ def galaxies_to_inversion(self) -> GalaxiesToInversion:
transformer=self.dataset.transformer,
w_tilde=self.w_tilde,
grid=self.grid,
grid_pixelization=self.dataset.grid_pixelization,
grid_pixelization=self.grid_pixelization,
border_relocator=self.dataset.border_relocator,
)

Expand Down Expand Up @@ -157,10 +160,6 @@ def model_data(self) -> aa.Visibilities:

return self.profile_visibilities

@property
def grid(self) -> aa.Grid2D:
return self.dataset.grid

@property
def galaxy_model_image_dict(self) -> Dict[Galaxy, np.ndarray]:
"""
Expand Down Expand Up @@ -200,7 +199,7 @@ def galaxy_model_visibilities_dict(self) -> Dict[Galaxy, np.ndarray]:
data being fitted.
"""
galaxy_model_visibilities_dict = self.galaxies.galaxy_visibilities_dict_from(
grid=self.dataset.grid, transformer=self.dataset.transformer
grid=self.grid, transformer=self.dataset.transformer
)

galaxy_linear_obj_data_dict = self.galaxy_linear_obj_data_dict_from(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def galaxies_plotter_from(self, galaxies: List[Galaxy]) -> GalaxiesPlotter:
"""
return GalaxiesPlotter(
galaxies=galaxies,
grid=self.fit.dataset.grid,
grid=self.fit.grid,
mat_plot_2d=self.mat_plot_2d,
visuals_2d=self.get_visuals_2d_real_space(),
include_2d=self.include_2d,
Expand Down
2 changes: 1 addition & 1 deletion autogalaxy/profiles/light/standard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@
)
from .shapelets.polar import ShapeletPolarSph, ShapeletPolar
from .shapelets.cartesian import ShapeletCartesianSph, ShapeletCartesian
from .shapelets.exponential import ShapeletExponentialSph, ShapeletExponential
from .shapelets.exponential import ShapeletExponentialSph, ShapeletExponential
6 changes: 1 addition & 5 deletions autogalaxy/quantity/fit_quantity.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def __init__(
def model_data(self):
if self.model_data_manual is None:
func = getattr(self.light_mass_obj, self.func_str)
return func(grid=self.dataset.grid)
return func(grid=self.grid)

return self.model_data_manual

Expand Down Expand Up @@ -104,10 +104,6 @@ def mask(self):
def inversion(self):
return None

@property
def grid(self):
return self.dataset.grid

@property
def galaxies(self):
return self.light_mass_obj
7 changes: 4 additions & 3 deletions test_autogalaxy/aggregator/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,17 @@ def aggregator_from(database_file, analysis, model, samples):

@pytest.fixture(name="model")
def make_model():

dataset_model = af.Model(ag.DatasetModel)
dataset_model.background_sky_level = af.UniformPrior(lower_limit=0.5, upper_limit=1.5)
dataset_model.background_sky_level = af.UniformPrior(
lower_limit=0.5, upper_limit=1.5
)

return af.Collection(
dataset_model=dataset_model,
galaxies=af.Collection(
g0=af.Model(ag.Galaxy, redshift=0.5, light=ag.lp.Sersic),
g1=af.Model(ag.Galaxy, redshift=1.0, light=ag.lp.Sersic),
)
),
)


Expand Down
5 changes: 5 additions & 0 deletions test_autogalaxy/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,11 @@ def make_masked_imaging_7x7():
return fixtures.make_masked_imaging_7x7()


@pytest.fixture(name="masked_imaging_7x7_sub_2")
def make_masked_imaging_7x7_sub_2():
return fixtures.make_masked_imaging_7x7_sub_2()


@pytest.fixture(name="masked_imaging_covariance_7x7")
def make_masked_imaging_covariance_7x7():
return fixtures.make_masked_imaging_covariance_7x7()
Expand Down
48 changes: 45 additions & 3 deletions test_autogalaxy/imaging/test_fit_imaging.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,21 +191,63 @@ def test__fit_figure_of_merit(


def test__fit__model_dataset__sky___handles_special_behaviour(masked_imaging_7x7):

g0 = ag.Galaxy(
redshift=0.5,
bulge=ag.lp_linear.Sersic(sersic_index=1.0),
)

fit = ag.FitImaging(
dataset=masked_imaging_7x7, galaxies=[g0],
dataset_model=ag.DatasetModel(background_sky_level=5.0)
dataset=masked_imaging_7x7,
galaxies=[g0],
dataset_model=ag.DatasetModel(background_sky_level=5.0),
)

assert fit.perform_inversion is True
assert fit.figure_of_merit == pytest.approx(-21.6970706693, 1.0e-4)


def test__fit__model_dataset__grid_offset__handles_special_behaviour(
masked_imaging_7x7,
masked_imaging_7x7_sub_2,
):
g0 = ag.Galaxy(redshift=0.5, bulge=ag.lp.Sersic(centre=(-1.0, -2.0), intensity=1.0))
g1 = ag.Galaxy(redshift=0.5, bulge=ag.lp.Sersic(centre=(-1.0, -2.0), intensity=1.0))

fit = ag.FitImaging(
dataset=masked_imaging_7x7,
galaxies=[g0, g1],
dataset_model=ag.DatasetModel(grid_offset=(1.0, 2.0)),
)

assert fit.figure_of_merit == pytest.approx(-75938.05, 1.0e-4)

g0 = ag.Galaxy(redshift=0.5, bulge=ag.lp.Sersic(centre=(-1.0, -2.0), intensity=1.0))
g1 = ag.Galaxy(redshift=0.5, bulge=ag.lp.Sersic(centre=(-1.0, -2.0), intensity=1.0))

fit = ag.FitImaging(
dataset=masked_imaging_7x7_sub_2,
galaxies=[g0, g1],
dataset_model=ag.DatasetModel(grid_offset=(1.0, 2.0)),
)

assert fit.figure_of_merit == pytest.approx(-14.91028771456, 1.0e-4)

pixelization = ag.Pixelization(
mesh=ag.mesh.Rectangular(shape=(3, 3)),
regularization=ag.reg.Constant(coefficient=1.0),
)

galaxy_pix = ag.Galaxy(redshift=0.5, pixelization=pixelization)

fit = ag.FitImaging(
dataset=masked_imaging_7x7,
galaxies=[ag.Galaxy(redshift=0.5), galaxy_pix],
dataset_model=ag.DatasetModel(grid_offset=(1.0, 2.0)),
)

assert fit.figure_of_merit == pytest.approx(-22.9005, 1.0e-4)


def test__galaxy_model_image_dict(masked_imaging_7x7):
# Normal Light Profiles Only

Expand Down
4 changes: 1 addition & 3 deletions test_autogalaxy/test_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ class FitInversion(AbstractFitInversion):
def __init__(
self, model_obj, settings_inversion: aa.SettingsInversion, light_profiles
):
super().__init__(
model_obj=model_obj, settings_inversion=settings_inversion
)
super().__init__(model_obj=model_obj, settings_inversion=settings_inversion)
self.light_profiles = light_profiles

@property
Expand Down

0 comments on commit 33c03b5

Please sign in to comment.