Skip to content

Commit f753dd5

Browse files
committed
Merge branch 'develop'
2 parents 8fc38fd + 302c70c commit f753dd5

99 files changed

Lines changed: 4866 additions & 4135 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cache/v/cache/lastfailed

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"test/util/test_array_util.py": true,
3+
"test/util/test_grid_util.py": true,
4+
"test/util/test_mask_util.py": true,
5+
"test/util/test_sparse_util.py": true,
6+
"test/test_convolution.py": true,
7+
"test/test_fourier_transform.py": true,
8+
"test/test_grids.py": true,
9+
"test/test_mask.py": true,
10+
"test/test_scaled_array.py": true,
11+
"test/util/test_array_util.py": true,
12+
"test/util/test_binning_util.py": true,
13+
"test/util/test_grid_util.py": true,
14+
"test/util/test_mask_util.py": true
15+
}

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ __pycache__
33
*.swp
44
.eggs/
55
autoarray.egg-info/
6-
6+
*cache
7+
*pytest_cache
78
build//
89
build/
910
dist/

autoarray/__init__.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,40 @@
11
from autoarray.mask.mask import Mask as mask
22
from autoarray.structures.arrays import Array as array, MaskedArray as masked_array
3-
from autoarray.structures.grids import Grid as grid, MaskedGrid as masked_grid
3+
from autoarray.structures.grids import (
4+
Grid as grid,
5+
MaskedGrid as masked_grid,
6+
IrregularGrid as irregular_grid,
7+
)
48
from autoarray.structures.kernel import Kernel as kernel
9+
from autoarray.structures.visibilities import Visibilities as visibilities
10+
from autoarray import conf
11+
from autoarray import plotters as plot
12+
from autoarray import util
513
from autoarray.data import data_converter
614
from autoarray.data.imaging import Imaging as imaging
15+
from autoarray.data.imaging import SimulatedImaging
716
from autoarray.data.interferometer import Interferometer as interferometer
17+
from autoarray.fit.fit import (
18+
DataFit as fit,
19+
ImagingFit as fit_imaging,
20+
InterferometerFit as fit_interferometer,
21+
)
22+
from autoarray.fit.masked_data import (
23+
MaskedImaging as masked_imaging,
24+
MaskedInterferometer as masked_interferometer,
25+
)
26+
from autoarray.mask.mask import Mask as mask
827
from autoarray.operators.convolution import Convolver as convolver
928
from autoarray.operators.fourier_transform import Transformer as transformer
10-
from autoarray.operators.inversion import pixelizations as pix, regularization as reg, mappers, inversions
11-
from autoarray.fit.fit import DataFit as fit, ImagingFit as fit_imaging
12-
from autoarray.fit.masked_data import MaskedImaging as masked_imaging, MaskedInterferometer as masked_interferometer
13-
from autoarray import util
14-
from autoarray import plotters as plot
15-
from autoarray import conf
29+
from autoarray.operators.inversion import (
30+
pixelization_grids as pix_grid,
31+
pixelizations as pix,
32+
regularization as reg,
33+
mappers,
34+
inversions,
35+
)
36+
from autoarray.structures.arrays import Array as array, MaskedArray as masked_array
37+
from autoarray.structures.grids import Grid as grid, MaskedGrid as masked_grid
38+
from autoarray.structures.kernel import Kernel as kernel
1639

17-
__version__ = '0.2.0'
40+
__version__ = '0.2.1'

autoarray/data/abstract_data.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ def signal_to_noise_max(self):
5858
@property
5959
def absolute_signal_to_noise_map(self):
6060
"""The estimated absolute_signal-to-noise_maps mappers of the image."""
61-
return self.mapping.array_from_array_1d(array_1d=np.divide(np.abs(self.data), self.noise_map))
61+
return self.mapping.array_from_array_1d(
62+
array_1d=np.divide(np.abs(self.data), self.noise_map)
63+
)
6264

6365
@property
6466
def absolute_signal_to_noise_max(self):
@@ -69,7 +71,9 @@ def absolute_signal_to_noise_max(self):
6971
def potential_chi_squared_map(self):
7072
"""The potential chi-squared map of the imaging data_type. This represents how much each pixel can contribute to \
7173
the chi-squared map, assuming the model fails to fit it at all (e.g. model value = 0.0)."""
72-
return self.mapping.array_from_array_1d(array_1d=np.square(self.absolute_signal_to_noise_map))
74+
return self.mapping.array_from_array_1d(
75+
array_1d=np.square(self.absolute_signal_to_noise_map)
76+
)
7377

7478
@property
7579
def potential_chi_squared_max(self):
@@ -123,12 +127,8 @@ def image_counts(self):
123127

124128
class ExposureTimeMap(arrays.Array):
125129
@classmethod
126-
def from_exposure_time_and_inverse_noise_map(
127-
cls, exposure_time, inverse_noise_map
128-
):
129-
relative_background_noise_map = inverse_noise_map / np.max(
130-
inverse_noise_map
131-
)
130+
def from_exposure_time_and_inverse_noise_map(cls, exposure_time, inverse_noise_map):
131+
relative_background_noise_map = inverse_noise_map / np.max(inverse_noise_map)
132132
return np.abs(exposure_time * (relative_background_noise_map))
133133

134134

@@ -207,8 +207,7 @@ def load_exposure_time_map(
207207

208208
if exposure_time_map_from_inverse_noise_map:
209209
return ExposureTimeMap.from_exposure_time_and_inverse_noise_map(
210-
exposure_time=exposure_time,
211-
inverse_noise_map=inverse_noise_map,
210+
exposure_time=exposure_time, inverse_noise_map=inverse_noise_map
212211
)
213212

214213

autoarray/data/data_converter.py

Lines changed: 56 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,31 @@
55
# TODO : The way these work dpeending on if the input array (e.g. the weight map) are an auto array or not is a bit
66
# TODO : clunky. For example, we can currently overwrite pixel_scales. We need to decade how we approach this.
77

8-
def array_using_correct_dimensions(array, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)):
8+
9+
def array_using_correct_dimensions(
10+
array, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)
11+
):
912

1013
if isinstance(array, arrays.AbstractArray):
1114
return array
1215

1316
if len(array.shape) == 1:
14-
return arrays.Array.manual_1d(array=array, shape_2d=array.shape_2d, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin)
17+
return arrays.Array.manual_1d(
18+
array=array,
19+
shape_2d=array.shape_2d,
20+
pixel_scales=pixel_scales,
21+
sub_size=sub_size,
22+
origin=origin,
23+
)
1524
elif len(array.shape) == 2:
16-
return arrays.Array.manual_2d(array=array, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin)
25+
return arrays.Array.manual_2d(
26+
array=array, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin
27+
)
1728

1829

19-
def noise_map_from_weight_map(weight_map, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)):
30+
def noise_map_from_weight_map(
31+
weight_map, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)
32+
):
2033
"""Setup the noise-map from a weight map, which is a form of noise-map that comes via HST image-reduction and \
2134
the software package MultiDrizzle.
2235
@@ -37,9 +50,14 @@ def noise_map_from_weight_map(weight_map, pixel_scales=None, sub_size=1, origin=
3750
np.seterr(divide="ignore")
3851
noise_map = 1.0 / np.sqrt(weight_map)
3952
noise_map[noise_map > 1.0e8] = 1.0e8
40-
return array_using_correct_dimensions(array=noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin)
53+
return array_using_correct_dimensions(
54+
array=noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin
55+
)
4156

42-
def noise_map_from_inverse_noise_map(inverse_noise_map, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)):
57+
58+
def noise_map_from_inverse_noise_map(
59+
inverse_noise_map, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)
60+
):
4361
"""Setup the noise-map from an root-mean square standard deviation map, which is a form of noise-map that \
4462
comes via HST image-reduction and the software package MultiDrizzle.
4563
@@ -57,43 +75,58 @@ def noise_map_from_inverse_noise_map(inverse_noise_map, pixel_scales=None, sub_s
5775
inverse_noise_map : ndarray
5876
The inverse noise_map value of each pixel which is converted to a variance.
5977
"""
60-
return array_using_correct_dimensions(array=1.0 / inverse_noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin)
78+
return array_using_correct_dimensions(
79+
array=1.0 / inverse_noise_map,
80+
pixel_scales=pixel_scales,
81+
sub_size=sub_size,
82+
origin=origin,
83+
)
84+
6185

6286
def noise_map_from_image_and_background_noise_map(
6387
image,
6488
background_noise_map,
6589
exposure_time_map,
6690
gain=None,
6791
convert_from_electrons=False,
68-
convert_from_adus=False, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)
92+
convert_from_adus=False,
93+
pixel_scales=None,
94+
sub_size=1,
95+
origin=(0.0, 0.0),
6996
):
7097

7198
if not convert_from_electrons and not convert_from_adus:
72-
noise_map = np.sqrt(
99+
noise_map = (
100+
np.sqrt(
73101
np.abs(
74102
((background_noise_map) * exposure_time_map) ** 2.0
75103
+ (image) * exposure_time_map
76-
)) / exposure_time_map
104+
)
105+
)
106+
/ exposure_time_map
107+
)
77108

78109
elif convert_from_electrons:
79-
noise_map = np.sqrt(
80-
np.abs(background_noise_map ** 2.0 + image)
81-
)
110+
noise_map = np.sqrt(np.abs(background_noise_map ** 2.0 + image))
82111
elif convert_from_adus:
83-
noise_map = np.sqrt(
84-
np.abs(
85-
(gain * background_noise_map) ** 2.0 + gain * image
86-
)
87-
) / gain
112+
noise_map = (
113+
np.sqrt(np.abs((gain * background_noise_map) ** 2.0 + gain * image)) / gain
114+
)
115+
116+
return array_using_correct_dimensions(
117+
array=noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin
118+
)
88119

89-
return array_using_correct_dimensions(array=noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin)
90120

91121
def poisson_noise_map_from_image_and_exposure_time_map(
92122
image,
93123
exposure_time_map,
94124
gain=None,
95125
convert_from_electrons=False,
96-
convert_from_adus=False, pixel_scales=None, sub_size=1, origin=(0.0, 0.0)
126+
convert_from_adus=False,
127+
pixel_scales=None,
128+
sub_size=1,
129+
origin=(0.0, 0.0),
97130
):
98131
if not convert_from_electrons and not convert_from_adus:
99132
noise_map = np.sqrt(np.abs(image) * exposure_time_map) / exposure_time_map
@@ -103,4 +136,6 @@ def poisson_noise_map_from_image_and_exposure_time_map(
103136
elif convert_from_adus:
104137
noise_map = np.sqrt(gain * np.abs(image)) / gain
105138

106-
return array_using_correct_dimensions(array=noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin)
139+
return array_using_correct_dimensions(
140+
array=noise_map, pixel_scales=pixel_scales, sub_size=sub_size, origin=origin
141+
)

0 commit comments

Comments
 (0)