@@ -238,6 +238,59 @@ def test__from_manual_adapt_radial_bin__centre_list_input():
238238 )
239239
240240
241+ @pytest .mark .parametrize (
242+ "values, cut, lower, upper" ,
243+ [
244+ ([- 2.0 , 0.0 , 2.999 , 3.0 , 3.001 , 20.0 ], 3.0 , 2 , 4 ),
245+ ([0.0 , 0.5 , 1.0 , 2.0 , 2.5 , 2.9 ], 3.0 , 2 , 4 ),
246+ ([- 2.0 , 0.0 , 1.0 , 1.5 , 2.0 , 3.0 ], 1.5 , 1 , 8 ),
247+ ],
248+ )
249+ def test__from_snr (values , cut , lower , upper ):
250+ mask = aa .Mask2D (
251+ mask = [[True , False , False ], [False , False , True ], [False , True , False ]],
252+ pixel_scales = (0.2 , 0.3 ),
253+ origin = (1.0 , - 2.0 ),
254+ )
255+ signal_to_noise_map = aa .Array2D (values = values , mask = mask )
256+
257+ sub_size = aa .util .over_sample .over_sample_size_via_snr_from (
258+ signal_to_noise_map = signal_to_noise_map ,
259+ signal_to_noise_cut = cut ,
260+ sub_size_lower = lower ,
261+ sub_size_upper = upper ,
262+ )
263+
264+ np .testing .assert_array_equal (
265+ sub_size .array , np .where (np .array (values ) > cut , upper , lower )
266+ )
267+ assert np .issubdtype (sub_size .array .dtype , np .integer )
268+ assert sub_size .mask is mask
269+ assert sub_size .pixel_scales == (0.2 , 0.3 )
270+ assert sub_size .origin == (1.0 , - 2.0 )
271+ assert sub_size .shape_native == (3 , 3 )
272+ np .testing .assert_array_equal (signal_to_noise_map .array , values )
273+
274+
275+ def test__from_snr_defaults ():
276+ signal_to_noise_map = aa .Array2D .no_mask (
277+ values = [[0.0 , 3.0 , 4.0 ]], pixel_scales = 1.0
278+ )
279+
280+ sub_size = aa .util .over_sample .over_sample_size_via_snr_from (signal_to_noise_map )
281+
282+ np .testing .assert_array_equal (sub_size .array , [2 , 2 , 4 ])
283+
284+
285+ def test__from_adapt_lowers_cut_and_divides_by_noise ():
286+ data = aa .Array2D .no_mask (values = [[2.0 , 4.0 , 6.0 ]], pixel_scales = 1.0 )
287+ noise_map = aa .Array2D .no_mask (values = [[2.0 , 2.0 , 2.0 ]], pixel_scales = 1.0 )
288+
289+ sub_size = aa .util .over_sample .over_sample_size_via_adapt_from (data , noise_map )
290+
291+ np .testing .assert_array_equal (sub_size .array , [2 , 4 , 4 ])
292+
293+
241294def test__from_adapt ():
242295 mask = aa .Mask2D (
243296 mask = [[True , True , True ], [True , False , False ], [True , True , False ]],
0 commit comments