@@ -139,7 +139,7 @@ def test_Patch2D(par):
139139 """Dot-test and inverse for Patch2D operator"""
140140 Op = MatrixMult (np .ones ((par ["nwiny" ] * par ["nwint" ], par ["ny" ] * par ["nt" ])))
141141
142- nwins , dims , mwin_inends , dwin_inends = patch2d_design (
142+ nwins , dims , _ , _ = patch2d_design (
143143 (par ["npy" ], par ["npt" ]),
144144 (par ["nwiny" ], par ["nwint" ]),
145145 (par ["novery" ], par ["novert" ]),
@@ -161,7 +161,7 @@ def test_Patch2D(par):
161161 par ["ny" ] * par ["nt" ] * nwins [0 ] * nwins [1 ],
162162 backend = backend ,
163163 )
164- x = np .ones ((par ["ny" ] * nwins [0 ], par ["nt" ] * nwins [1 ]))
164+ x = np .ones ((par ["ny" ] * nwins [0 ] * par ["nt" ] * nwins [1 ]))
165165 y = Pop * x .ravel ()
166166
167167 xinv = Pop / y
@@ -174,7 +174,7 @@ def test_Patch2D_scalings(par):
174174 Op = MatrixMult (np .ones ((par ["nwiny" ] * par ["nwint" ], par ["ny" ] * par ["nt" ])))
175175 scalings = np .arange (par ["nwiny" ] * par ["nwint" ]) + 1.0
176176
177- nwins , dims , mwin_inends , dwin_inends = patch2d_design (
177+ nwins , dims , _ , _ = patch2d_design (
178178 (par ["npy" ], par ["npt" ]),
179179 (par ["nwiny" ], par ["nwint" ]),
180180 (par ["novery" ], par ["novert" ]),
@@ -197,7 +197,78 @@ def test_Patch2D_scalings(par):
197197 par ["ny" ] * par ["nt" ] * nwins [0 ] * nwins [1 ],
198198 backend = backend ,
199199 )
200- x = np .ones ((par ["ny" ] * nwins [0 ], par ["nt" ] * nwins [1 ]))
200+ x = np .ones ((par ["ny" ] * nwins [0 ] * par ["nt" ] * nwins [1 ]))
201+ y = Pop * x .ravel ()
202+
203+ xinv = Pop / y
204+ assert_array_almost_equal (x .ravel (), xinv )
205+
206+
207+ @pytest .mark .parametrize ("par" , [(par1 ), (par4 )])
208+ def test_Patch2D_singlepatch1 (par ):
209+ """Dot-test and inverse for Patch2D operator with single patch in fist dimension"""
210+ Op = MatrixMult (np .ones ((par ["npy" ] * par ["nwint" ], par ["npy" ] * par ["nt" ])))
211+
212+ nwins , dims , _ , _ = patch2d_design (
213+ (par ["npy" ], par ["npt" ]),
214+ (par ["npy" ], par ["nwint" ]),
215+ (0 , par ["novert" ]),
216+ (par ["npy" ], par ["nt" ]),
217+ )
218+
219+ Pop = Patch2D (
220+ Op ,
221+ dims = dims ,
222+ dimsd = (par ["npy" ], par ["npt" ]),
223+ nwin = (par ["npy" ], par ["nwint" ]),
224+ nover = (0 , par ["novert" ]),
225+ nop = (par ["npy" ], par ["nt" ]),
226+ tapertype = par ["tapertype" ],
227+ savetaper = par ["savetaper" ],
228+ )
229+ assert nwins [0 ] == 1
230+ assert dottest (
231+ Pop ,
232+ par ["npy" ] * par ["npt" ],
233+ par ["npy" ] * par ["nt" ] * nwins [0 ] * nwins [1 ],
234+ backend = backend ,
235+ )
236+ x = np .ones ((par ["npy" ] * nwins [0 ] * par ["nt" ] * nwins [1 ]))
237+ y = Pop * x .ravel ()
238+
239+ xinv = Pop / y
240+ assert_array_almost_equal (x .ravel (), xinv )
241+
242+
243+ @pytest .mark .parametrize ("par" , [(par1 ), (par2 ), (par3 ), (par4 ), (par5 ), (par6 )])
244+ def test_Patch2D_singlepatch2 (par ):
245+ """Dot-test and inverse for Patch2D operator with single patch in second dimension"""
246+ Op = MatrixMult (np .ones ((par ["nwiny" ] * par ["npt" ], par ["ny" ] * par ["npt" ])))
247+
248+ nwins , dims , _ , _ = patch2d_design (
249+ (par ["npy" ], par ["npt" ]),
250+ (par ["nwiny" ], par ["npt" ]),
251+ (par ["novery" ], 0 ),
252+ (par ["ny" ], par ["npt" ]),
253+ )
254+ Pop = Patch2D (
255+ Op ,
256+ dims = dims ,
257+ dimsd = (par ["npy" ], par ["npt" ]),
258+ nwin = (par ["nwiny" ], par ["npt" ]),
259+ nover = (par ["novery" ], 0 ),
260+ nop = (par ["ny" ], par ["npt" ]),
261+ tapertype = par ["tapertype" ],
262+ savetaper = par ["savetaper" ],
263+ )
264+ assert nwins [1 ] == 1
265+ assert dottest (
266+ Pop ,
267+ par ["npy" ] * par ["npt" ],
268+ par ["ny" ] * par ["npt" ] * nwins [0 ] * nwins [1 ],
269+ backend = backend ,
270+ )
271+ x = np .ones ((par ["ny" ] * nwins [0 ] * par ["npt" ] * nwins [1 ]))
201272 y = Pop * x .ravel ()
202273
203274 xinv = Pop / y
@@ -216,7 +287,7 @@ def test_Patch3D(par):
216287 )
217288 )
218289
219- nwins , dims , mwin_inends , dwin_inends = patch3d_design (
290+ nwins , dims , _ , _ = patch3d_design (
220291 (par ["npy" ], par ["npx" ], par ["npt" ]),
221292 (par ["nwiny" ], par ["nwinx" ], par ["nwint" ]),
222293 (par ["novery" ], par ["noverx" ], par ["novert" ]),
@@ -248,3 +319,176 @@ def test_Patch3D(par):
248319
249320 xinv = Pop / y
250321 assert_array_almost_equal (x .ravel (), xinv )
322+
323+
324+ @pytest .mark .parametrize ("par" , [(par1 ), (par2 ), (par3 ), (par4 ), (par5 ), (par6 )])
325+ def test_Patch3D_singlepatch1 (par ):
326+ """Dot-test and inverse for Patch3D operator with single patch in fist dimension"""
327+ Op = MatrixMult (
328+ np .ones (
329+ (
330+ par ["npy" ] * par ["nwinx" ] * par ["nwint" ],
331+ par ["npy" ] * par ["nx" ] * par ["nt" ],
332+ )
333+ )
334+ )
335+
336+ nwins , dims , _ , _ = patch3d_design (
337+ (par ["npy" ], par ["npx" ], par ["npt" ]),
338+ (par ["npy" ], par ["nwinx" ], par ["nwint" ]),
339+ (0 , par ["noverx" ], par ["novert" ]),
340+ (par ["npy" ], par ["nx" ], par ["nt" ]),
341+ )
342+
343+ Pop = Patch3D (
344+ Op ,
345+ dims = dims ,
346+ dimsd = (par ["npy" ], par ["npx" ], par ["npt" ]),
347+ nwin = (par ["npy" ], par ["nwinx" ], par ["nwint" ]),
348+ nover = (0 , par ["noverx" ], par ["novert" ]),
349+ nop = (par ["npy" ], par ["nx" ], par ["nt" ]),
350+ tapertype = par ["tapertype" ],
351+ savetaper = par ["savetaper" ],
352+ )
353+ assert nwins [0 ] == 1
354+ assert dottest (
355+ Pop ,
356+ par ["npy" ] * par ["npx" ] * par ["npt" ],
357+ par ["npy" ] * par ["nx" ] * par ["nt" ] * nwins [0 ] * nwins [1 ] * nwins [2 ],
358+ backend = backend ,
359+ )
360+ x = np .ones ((par ["npy" ] * nwins [0 ], par ["nx" ] * nwins [1 ], par ["nt" ] * nwins [2 ]))
361+ y = Pop * x .ravel ()
362+
363+ xinv = Pop / y
364+ assert_array_almost_equal (x .ravel (), xinv )
365+
366+
367+ @pytest .mark .parametrize ("par" , [(par1 ), (par2 ), (par3 ), (par4 ), (par5 ), (par6 )])
368+ def test_Patch3D_singlepatch2 (par ):
369+ """Dot-test and inverse for Patch3D operator with single patch in second dimension"""
370+ Op = MatrixMult (
371+ np .ones (
372+ (
373+ par ["nwiny" ] * par ["npx" ] * par ["nwint" ],
374+ par ["ny" ] * par ["npx" ] * par ["nt" ],
375+ )
376+ )
377+ )
378+
379+ nwins , dims , _ , _ = patch3d_design (
380+ (par ["npy" ], par ["npx" ], par ["npt" ]),
381+ (par ["nwiny" ], par ["npx" ], par ["nwint" ]),
382+ (par ["novery" ], 0 , par ["novert" ]),
383+ (par ["ny" ], par ["npx" ], par ["nt" ]),
384+ )
385+
386+ Pop = Patch3D (
387+ Op ,
388+ dims = dims ,
389+ dimsd = (par ["npy" ], par ["npx" ], par ["npt" ]),
390+ nwin = (par ["nwiny" ], par ["npx" ], par ["nwint" ]),
391+ nover = (par ["novery" ], 0 , par ["novert" ]),
392+ nop = (par ["ny" ], par ["npx" ], par ["nt" ]),
393+ tapertype = par ["tapertype" ],
394+ savetaper = par ["savetaper" ],
395+ )
396+ assert nwins [1 ] == 1
397+ assert dottest (
398+ Pop ,
399+ par ["npy" ] * par ["npx" ] * par ["npt" ],
400+ par ["ny" ] * par ["npx" ] * par ["nt" ] * nwins [0 ] * nwins [1 ] * nwins [2 ],
401+ backend = backend ,
402+ )
403+ x = np .ones ((par ["ny" ] * nwins [0 ], par ["npx" ] * nwins [1 ], par ["nt" ] * nwins [2 ]))
404+ y = Pop * x .ravel ()
405+
406+ xinv = Pop / y
407+ assert_array_almost_equal (x .ravel (), xinv )
408+
409+
410+ @pytest .mark .parametrize ("par" , [(par1 ), (par2 ), (par3 ), (par4 ), (par5 ), (par6 )])
411+ def test_Patch3D_singlepatch12 (par ):
412+ """Dot-test and inverse for Patch3D operator with single patch in
413+ fist and second dimensions"""
414+ Op = MatrixMult (
415+ np .ones (
416+ (
417+ par ["npy" ] * par ["npx" ] * par ["nwint" ],
418+ par ["npy" ] * par ["npx" ] * par ["nt" ],
419+ )
420+ )
421+ )
422+
423+ nwins , dims , _ , _ = patch3d_design (
424+ (par ["npy" ], par ["npx" ], par ["npt" ]),
425+ (par ["npy" ], par ["npx" ], par ["nwint" ]),
426+ (0 , 0 , par ["novert" ]),
427+ (par ["npy" ], par ["npx" ], par ["nt" ]),
428+ )
429+
430+ Pop = Patch3D (
431+ Op ,
432+ dims = dims ,
433+ dimsd = (par ["npy" ], par ["npx" ], par ["npt" ]),
434+ nwin = (par ["npy" ], par ["npx" ], par ["nwint" ]),
435+ nover = (0 , 0 , par ["novert" ]),
436+ nop = (par ["npy" ], par ["npx" ], par ["nt" ]),
437+ tapertype = par ["tapertype" ],
438+ savetaper = par ["savetaper" ],
439+ )
440+ assert nwins [0 ] == 1
441+ assert nwins [1 ] == 1
442+ assert dottest (
443+ Pop ,
444+ par ["npy" ] * par ["npx" ] * par ["npt" ],
445+ par ["npy" ] * par ["npx" ] * par ["nt" ] * nwins [0 ] * nwins [1 ] * nwins [2 ],
446+ backend = backend ,
447+ )
448+ x = np .ones ((par ["npy" ] * nwins [0 ], par ["npx" ] * nwins [1 ], par ["nt" ] * nwins [2 ]))
449+ y = Pop * x .ravel ()
450+
451+ xinv = Pop / y
452+ assert_array_almost_equal (x .ravel (), xinv )
453+
454+
455+ @pytest .mark .parametrize ("par" , [(par1 ), (par2 ), (par3 ), (par4 ), (par5 ), (par6 )])
456+ def test_Patch3D_singlepatch3 (par ):
457+ """Dot-test and inverse for Patch3D operator with single patch in third dimension"""
458+ Op = MatrixMult (
459+ np .ones (
460+ (
461+ par ["nwiny" ] * par ["nwinx" ] * par ["npt" ],
462+ par ["ny" ] * par ["nx" ] * par ["npt" ],
463+ )
464+ )
465+ )
466+
467+ nwins , dims , _ , _ = patch3d_design (
468+ (par ["npy" ], par ["npx" ], par ["npt" ]),
469+ (par ["nwiny" ], par ["nwinx" ], par ["npt" ]),
470+ (par ["novery" ], par ["noverx" ], 0 ),
471+ (par ["ny" ], par ["nx" ], par ["npt" ]),
472+ )
473+
474+ Pop = Patch3D (
475+ Op ,
476+ dims = dims ,
477+ dimsd = (par ["npy" ], par ["npx" ], par ["npt" ]),
478+ nwin = (par ["nwiny" ], par ["nwinx" ], par ["npt" ]),
479+ nover = (par ["novery" ], par ["noverx" ], 0 ),
480+ nop = (par ["ny" ], par ["nx" ], par ["npt" ]),
481+ tapertype = par ["tapertype" ],
482+ savetaper = par ["savetaper" ],
483+ )
484+ assert dottest (
485+ Pop ,
486+ par ["npy" ] * par ["npx" ] * par ["npt" ],
487+ par ["ny" ] * par ["nx" ] * par ["npt" ] * nwins [0 ] * nwins [1 ] * nwins [2 ],
488+ backend = backend ,
489+ )
490+ x = np .ones ((par ["ny" ] * nwins [0 ], par ["nx" ] * nwins [1 ], par ["npt" ] * nwins [2 ]))
491+ y = Pop * x .ravel ()
492+
493+ xinv = Pop / y
494+ assert_array_almost_equal (x .ravel (), xinv )
0 commit comments