Skip to content

Commit 42eefd8

Browse files
committed
added subplot of plane images to TracerPlotter
1 parent 6bb3885 commit 42eefd8

17 files changed

Lines changed: 361 additions & 185 deletions

File tree

autolens/config/visualize/plots.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
all_at_end_png=False
33
all_at_end_fits=False
44
subplot_ray_tracing=True
5+
subplot_plane_images=True
56
image=False
67
source_plane_image=False
78
convergence=False

autolens/imaging/model/analysis.py

Lines changed: 4 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
from autolens.lens.model.analysis import AnalysisDataset
1717
from autolens.lens.model.preloads import Preloads
18-
from autolens.imaging.model.maker import FitImagingMaker
1918
from autolens.imaging.model.result import ResultImaging
2019
from autolens.imaging.model.visualizer import VisualizerImaging
2120
from autolens.imaging.fit_imaging import FitImaging
@@ -55,61 +54,6 @@ def modify_before_fit(self, paths: af.DirectoryPaths, model: af.AbstractPriorMod
5554

5655
return self
5756

58-
def check_and_replace_hyper_images(self, paths: af.DirectoryPaths):
59-
60-
try:
61-
hyper_model_image = paths.load_object("hyper_model_image")
62-
63-
if np.max(abs(hyper_model_image - self.hyper_model_image)) > 1e-8:
64-
65-
logger.info(
66-
"ANALYSIS - Hyper image loaded from pickle different to that set in Analysis class."
67-
"Overwriting hyper images with values loaded from pickles."
68-
)
69-
70-
self.hyper_model_image = hyper_model_image
71-
72-
hyper_galaxy_image_path_dict = paths.load_object(
73-
"hyper_galaxy_image_path_dict"
74-
)
75-
self.hyper_galaxy_image_path_dict = hyper_galaxy_image_path_dict
76-
77-
except (FileNotFoundError, AttributeError):
78-
pass
79-
80-
def set_preloads(self, paths: af.DirectoryPaths, model: af.AbstractPriorModel):
81-
82-
try:
83-
os.makedirs(paths.profile_path)
84-
except FileExistsError:
85-
pass
86-
87-
fit_maker = FitImagingMaker(model=model, fit_func=self.fit_imaging_for_instance)
88-
89-
fit_0 = fit_maker.fit_via_model(unit_value=0.45)
90-
fit_1 = fit_maker.fit_via_model(unit_value=0.55)
91-
92-
if fit_0 is None or fit_1 is None:
93-
self.preloads = Preloads(failed=True)
94-
else:
95-
self.preloads = Preloads.setup_all_via_fits(fit_0=fit_0, fit_1=fit_1)
96-
self.check_preloads(fit=fit_0)
97-
98-
self.preloads.output_info_to_summary(file_path=paths.profile_path)
99-
100-
def check_preloads(self, fit):
101-
102-
self.preloads.check_via_fit(fit=fit)
103-
104-
def modify_after_fit(
105-
self, paths: af.DirectoryPaths, model: af.AbstractPriorModel, result: af.Result
106-
):
107-
108-
self.output_or_check_figure_of_merit_sanity(paths=paths, result=result)
109-
self.preloads.reset_all()
110-
111-
return self
112-
11357
def log_likelihood_function(self, instance):
11458
"""
11559
Determine the fit of a lens galaxy and source galaxy to the imaging in this lens.
@@ -194,6 +138,10 @@ def fit_imaging_for_tracer(
194138
profiling_dict=profiling_dict,
195139
)
196140

141+
@property
142+
def fit_func(self):
143+
return self.fit_imaging_for_instance
144+
197145
def profile_log_likelihood_function(
198146
self, instance, paths: Optional[af.DirectoryPaths] = None
199147
):

autolens/imaging/model/maker.py

Lines changed: 0 additions & 74 deletions
This file was deleted.

autolens/interferometer/fit_interferometer.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,16 @@ def __init__(
2828
The tracer, which describes the ray-tracing and strong lens configuration.
2929
"""
3030

31+
self.tracer = tracer
32+
33+
self.hyper_background_noise = hyper_background_noise
34+
self.use_hyper_scaling = use_hyper_scaling
35+
36+
self.settings_pixelization = settings_pixelization
37+
self.settings_inversion = settings_inversion
38+
39+
self.preloads = preloads
40+
3141
self.profiling_dict = profiling_dict
3242

3343
if use_hyper_scaling:
@@ -155,3 +165,24 @@ def model_visibilities_of_planes(self):
155165
@property
156166
def total_mappers(self):
157167
return len(list(filter(None, self.tracer.regularization_list_of_planes)))
168+
169+
def refit_with_new_preloads(self, preloads, settings_inversion=None):
170+
171+
if self.profiling_dict is not None:
172+
profiling_dict = {}
173+
else:
174+
profiling_dict = None
175+
176+
if settings_inversion is None:
177+
settings_inversion = self.settings_inversion
178+
179+
return FitInterferometer(
180+
interferometer=self.interferometer,
181+
tracer=self.tracer,
182+
hyper_background_noise=self.hyper_background_noise,
183+
use_hyper_scaling=self.use_hyper_scaling,
184+
settings_pixelization=self.settings_pixelization,
185+
settings_inversion=settings_inversion,
186+
preloads=preloads,
187+
profiling_dict=profiling_dict,
188+
)

autolens/interferometer/model/analysis.py

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from astropy import cosmology as cosmo
2+
import logging
23

34
from autoconf import conf
45
import autofit as af
@@ -8,12 +9,16 @@
89
from autolens.lens.model.analysis import AnalysisDataset
910
from autolens.lens.model.preloads import Preloads
1011
from autolens.interferometer.model.result import ResultInterferometer
11-
from autolens.lens.model.visualizer import Visualizer
12+
from autolens.interferometer.model.visualizer import VisualizerInterferometer
1213
from autolens.interferometer.fit_interferometer import FitInterferometer
1314
from autolens.lens.model.settings import SettingsLens
1415

1516
from autolens import exc
1617

18+
logger = logging.getLogger(__name__)
19+
20+
logger.setLevel(level="INFO")
21+
1722

1823
class AnalysisInterferometer(AnalysisDataset):
1924
def __init__(
@@ -50,6 +55,29 @@ def __init__(
5055
def interferometer(self):
5156
return self.dataset
5257

58+
def modify_before_fit(self, paths: af.DirectoryPaths, model: af.AbstractPriorModel):
59+
60+
self.check_and_replace_hyper_images(paths=paths)
61+
62+
if not paths.is_complete:
63+
64+
visualizer = VisualizerInterferometer(visualize_path=paths.image_path)
65+
66+
visualizer.visualize_interferometer(interferometer=self.interferometer)
67+
68+
visualizer.visualize_hyper_images(
69+
hyper_galaxy_image_path_dict=self.hyper_galaxy_image_path_dict,
70+
hyper_model_image=self.hyper_model_image,
71+
)
72+
73+
logger.info(
74+
"PRELOADS - Setting up preloads, may take a few minutes for fits using an inversion."
75+
)
76+
77+
self.set_preloads(paths=paths, model=model)
78+
79+
return self
80+
5381
def set_hyper_dataset(self, result):
5482

5583
super().set_hyper_dataset(result=result)
@@ -170,6 +198,10 @@ def fit_interferometer_for_tracer(
170198
preloads=preloads,
171199
)
172200

201+
@property
202+
def fit_func(self):
203+
return self.fit_interferometer_for_instance
204+
173205
def stochastic_log_evidences_for_instance(self, instance):
174206

175207
instance = self.associate_hyper_images(instance=instance)
@@ -222,19 +254,12 @@ def stochastic_log_evidences_for_instance(self, instance):
222254

223255
def visualize(self, paths: af.DirectoryPaths, instance, during_analysis):
224256

225-
self.associate_hyper_images(instance=instance)
226-
tracer = self.tracer_for_instance(instance=instance)
257+
instance = self.associate_hyper_images(instance=instance)
227258

228-
hyper_background_noise = self.hyper_background_noise_for_instance(
229-
instance=instance
230-
)
259+
fit = self.fit_interferometer_for_instance(instance=instance)
231260

232-
fit = self.fit_interferometer_for_tracer(
233-
tracer=tracer, hyper_background_noise=hyper_background_noise
234-
)
261+
visualizer = VisualizerInterferometer(visualize_path=paths.image_path)
235262

236-
visualizer = Visualizer(visualize_path=paths.image_path)
237-
visualizer.visualize_interferometer(interferometer=self.interferometer)
238263
visualizer.visualize_fit_interferometer(
239264
fit=fit, during_analysis=during_analysis
240265
)
@@ -246,16 +271,14 @@ def visualize(self, paths: af.DirectoryPaths, instance, during_analysis):
246271
inversion=fit.inversion, during_analysis=during_analysis
247272
)
248273

249-
visualizer.visualize_hyper_images(
250-
hyper_galaxy_image_path_dict=self.hyper_galaxy_image_path_dict,
251-
hyper_model_image=self.hyper_model_image,
252-
tracer=tracer,
253-
)
274+
visualizer.visualize_contribution_maps(tracer=fit.tracer)
254275

255276
if visualizer.plot_fit_no_hyper:
256-
257277
fit = self.fit_interferometer_for_tracer(
258-
tracer=tracer, hyper_background_noise=None, use_hyper_scalings=False
278+
tracer=fit.tracer,
279+
hyper_background_noise=None,
280+
use_hyper_scalings=False,
281+
preload_overwrite=Preloads(use_w_tilde=False),
259282
)
260283

261284
visualizer.visualize_fit_interferometer(

0 commit comments

Comments
 (0)