@@ -109,3 +109,106 @@ def test__quantities():
109109
110110 assert zoom .centre == (6 , 2 )
111111 assert zoom .offset_pixels == (3 , 1 )
112+
113+
114+ def test__array_2d_from ():
115+ array_2d = [
116+ [1.0 , 2.0 , 3.0 , 4.0 ],
117+ [5.0 , 6.0 , 7.0 , 8.0 ],
118+ [9.0 , 10.0 , 11.0 , 12.0 ],
119+ [13.0 , 14.0 , 15.0 , 16.0 ],
120+ ]
121+
122+ mask = aa .Mask2D (
123+ mask = [
124+ [True , True , True , True ],
125+ [True , False , False , True ],
126+ [True , False , False , True ],
127+ [True , True , True , True ],
128+ ],
129+ pixel_scales = (1.0 , 1.0 ),
130+ )
131+
132+ arr = aa .Array2D (values = array_2d , mask = mask )
133+ zoom = aa .Zoom2D (mask = mask )
134+ arr_zoomed = zoom .array_2d_from (array = arr , buffer = 0 )
135+
136+ assert (arr_zoomed .native == np .array ([[6.0 , 7.0 ], [10.0 , 11.0 ]])).all ()
137+
138+ mask = aa .Mask2D (
139+ mask = np .array (
140+ [
141+ [True , True , True , True ],
142+ [True , False , False , True ],
143+ [False , False , False , True ],
144+ [True , True , True , True ],
145+ ]
146+ ),
147+ pixel_scales = (1.0 , 1.0 ),
148+ )
149+
150+ arr = aa .Array2D (values = array_2d , mask = mask )
151+ zoom = aa .Zoom2D (mask = mask )
152+ arr_zoomed = zoom .array_2d_from (array = arr , buffer = 0 )
153+
154+ assert (arr_zoomed .native == np .array ([[0.0 , 6.0 , 7.0 ], [9.0 , 10.0 , 11.0 ]])).all ()
155+
156+ mask = aa .Mask2D (
157+ mask = np .array (
158+ [
159+ [True , False , True , True ],
160+ [True , False , False , True ],
161+ [True , False , False , True ],
162+ [True , True , True , True ],
163+ ]
164+ ),
165+ pixel_scales = (1.0 , 1.0 ),
166+ )
167+
168+ arr = aa .Array2D (values = array_2d , mask = mask )
169+ zoom = aa .Zoom2D (mask = mask )
170+ arr_zoomed = zoom .array_2d_from (array = arr , buffer = 0 )
171+
172+ assert (arr_zoomed .native == np .array ([[2.0 , 0.0 ], [6.0 , 7.0 ], [10.0 , 11.0 ]])).all ()
173+
174+ array_2d = np .ones (shape = (4 , 4 ))
175+
176+ mask = aa .Mask2D (
177+ mask = np .array (
178+ [
179+ [True , True , True , True ],
180+ [True , False , False , True ],
181+ [True , False , False , True ],
182+ [True , True , True , True ],
183+ ]
184+ ),
185+ pixel_scales = (1.0 , 1.0 ),
186+ )
187+
188+ arr = aa .Array2D (values = array_2d , mask = mask )
189+ zoom = aa .Zoom2D (mask = mask )
190+ arr_zoomed = zoom .array_2d_from (array = arr , buffer = 0 )
191+
192+ assert arr_zoomed .mask .origin == (0.0 , 0.0 )
193+
194+ array_2d = np .ones (shape = (6 , 6 ))
195+
196+ mask = aa .Mask2D (
197+ mask = np .array (
198+ [
199+ [True , True , True , True , True , True ],
200+ [True , True , True , True , True , True ],
201+ [True , True , True , False , False , True ],
202+ [True , True , True , False , False , True ],
203+ [True , True , True , True , True , True ],
204+ [True , True , True , True , True , True ],
205+ ]
206+ ),
207+ pixel_scales = (1.0 , 1.0 ),
208+ )
209+
210+ arr = aa .Array2D (values = array_2d , mask = mask )
211+ zoom = aa .Zoom2D (mask = mask )
212+ arr_zoomed = zoom .array_2d_from (array = arr , buffer = 0 )
213+
214+ assert arr_zoomed .mask .origin == (0.0 , 1.0 )
0 commit comments