1+ from astropy .io import fits
12import logging
23import numpy as np
4+ from pathlib import Path
35from typing import Optional
46
57from autoconf import cached_property
1416
1517from autoarray .structures .arrays import array_2d_util
1618
19+ from autoarray .inversion .inversion .interferometer import inversion_interferometer_util
20+
1721logger = logging .getLogger (__name__ )
1822
1923
@@ -25,6 +29,7 @@ def __init__(
2529 uv_wavelengths : np .ndarray ,
2630 real_space_mask ,
2731 transformer_class = TransformerNUFFT ,
32+ preprocessing_directory = None ,
2833 ):
2934 """
3035 An interferometer dataset, containing the visibilities data, noise-map, real-space msk, Fourier transformer and
@@ -86,6 +91,8 @@ def __init__(
8691 uv_wavelengths = uv_wavelengths , real_space_mask = real_space_mask
8792 )
8893
94+ self .preprocessing_directory = Path (preprocessing_directory ) if preprocessing_directory is not None else None
95+
8996 @cached_property
9097 def grids (self ):
9198 return GridsDataset (
@@ -132,6 +139,27 @@ def from_fits(
132139 transformer_class = transformer_class ,
133140 )
134141
142+ def w_tilde_preprocessing (self ):
143+
144+ if self .preprocessing_directory .is_dir ():
145+
146+ filename = "{}/curvature_preload.fits" .format (self .preprocessing_directory )
147+
148+ if not self .preprocessing_directory .isfile (filename ):
149+ print (
150+ "The file {} does not exist" .format (filename )
151+ )
152+ logger .info ("INTERFEROMETER - Computing W-Tilde... May take a moment." )
153+
154+ curvature_preload = inversion_interferometer_util .w_tilde_curvature_preload_interferometer_from (
155+ noise_map_real = self .noise_map .real ,
156+ uv_wavelengths = self .uv_wavelengths ,
157+ shape_masked_pixels_2d = self .transformer .grid .mask .shape_native_masked_pixels ,
158+ grid_radians_2d = self .transformer .grid .mask .unmasked_grid_sub_1 .in_radians .native ,
159+ )
160+
161+ fits .writeto (filename , data = curvature_preload )
162+
135163 @cached_property
136164 def w_tilde (self ):
137165 """
@@ -152,10 +180,8 @@ def w_tilde(self):
152180
153181 logger .info ("INTERFEROMETER - Computing W-Tilde... May take a moment." )
154182
155- from autoarray .inversion .inversion import inversion_util_secret
156-
157183 curvature_preload = (
158- inversion_util_secret .w_tilde_curvature_preload_interferometer_from (
184+ inversion_interferometer_util .w_tilde_curvature_preload_interferometer_from (
159185 noise_map_real = np .array (self .noise_map .real ),
160186 uv_wavelengths = np .array (self .uv_wavelengths ),
161187 shape_masked_pixels_2d = np .array (
@@ -167,7 +193,7 @@ def w_tilde(self):
167193 )
168194 )
169195
170- w_matrix = inversion_util_secret .w_tilde_via_preload_from (
196+ w_matrix = inversion_interferometer_util .w_tilde_via_preload_from (
171197 w_tilde_preload = curvature_preload ,
172198 native_index_for_slim_index = self .real_space_mask .derive_indexes .native_for_slim ,
173199 )
0 commit comments