@@ -27,6 +27,7 @@ def __init__(
2727 store_native : bool = False ,
2828 over_sample_size : Union [int , Array2D ] = 4 ,
2929 over_sampled : Optional [Grid2D ] = None ,
30+ over_sampler = None ,
3031 xp = np ,
3132 * args ,
3233 ** kwargs ,
@@ -169,15 +170,36 @@ def __init__(
169170
170171 grid_2d_util .check_grid_2d (grid_2d = values )
171172
172- over_sample_size = over_sample_util .over_sample_size_convert_to_array_2d_from (
173- over_sample_size = over_sample_size , mask = mask
173+ self ._over_sample_size = over_sample_size
174+
175+ self ._over_sampler = over_sampler
176+ self ._over_sampled = over_sampled
177+
178+ @property
179+ def over_sample_size (self ):
180+
181+ if isinstance (self ._over_sample_size , Array2D ):
182+ return self ._over_sample_size
183+
184+ self ._over_sample_size = (
185+ over_sample_util .over_sample_size_convert_to_array_2d_from (
186+ over_sample_size = self ._over_sample_size , mask = self .mask
187+ )
174188 )
175189
190+ return self ._over_sample_size
191+
192+ @property
193+ def over_sampler (self ):
194+
195+ if self ._over_sampler is not None :
196+ return self ._over_sampler
197+
176198 from autoarray .operators .over_sampling .over_sampler import OverSampler
177199
178- self .over_sampler = OverSampler (sub_size = over_sample_size , mask = mask )
200+ self ._over_sampler = OverSampler (sub_size = self . over_sample_size , mask = self . mask )
179201
180- self ._over_sampled = over_sampled
202+ return self ._over_sampler
181203
182204 @property
183205 def over_sampled (self ):
@@ -188,7 +210,7 @@ def over_sampled(self):
188210 over_sampled = over_sample_util .grid_2d_slim_over_sampled_via_mask_from (
189211 mask_2d = np .array (self .mask ),
190212 pixel_scales = self .mask .pixel_scales ,
191- sub_size = self .over_sampler . sub_size .array .astype ("int" ),
213+ sub_size = self .over_sample_size .array .astype ("int" ),
192214 origin = self .mask .origin ,
193215 )
194216
@@ -700,12 +722,9 @@ def subtracted_from(
700722 mask = mask ,
701723 over_sample_size = self .over_sample_size ,
702724 over_sampled = self .over_sampled - xp .array (offset ),
725+ over_sampler = self .over_sampler ,
703726 )
704727
705- @property
706- def over_sample_size (self ):
707- return self .over_sampler .sub_size
708-
709728 @property
710729 def slim (self ) -> "Grid2D" :
711730 """
0 commit comments