@@ -493,7 +493,7 @@ def test_afni_oblique(tmpdir, parameters, swapaxes, testdata_path, dir_x, dir_y,
493493 if not shutil .which ("3dWarp" ):
494494 pytest .skip ("Command 3dWarp not found on host" )
495495
496- cmd = f"3dWarp -verb -deoblique -prefix { tmpdir } /deob.nii.gz { tmpdir } /oblique.nii.gz"
496+ cmd = f"3dWarp -verb -deoblique -NN - prefix { tmpdir } /deob.nii.gz { tmpdir } /oblique.nii.gz"
497497 assert check_call ([cmd ], shell = True ) == 0
498498
499499 # Check the target grid by 3dWarp and the affine & size interpolated by NiTransforms
@@ -503,6 +503,20 @@ def test_afni_oblique(tmpdir, parameters, swapaxes, testdata_path, dir_x, dir_y,
503503 assert np .all (deobshape == deobnii .shape [:3 ])
504504 assert np .allclose (deobaff , deobnii .affine )
505505
506+ # Check resampling in deobliqued grid
507+ ntdeobnii = Affine (np .eye (4 ), reference = deobnii .__class__ (
508+ np .zeros (deobshape , dtype = "uint8" ),
509+ deobaff ,
510+ deobnii .header
511+ )).apply (img , order = 0 )
512+ ntdeobnii .to_filename ("ntdeob.nii.gz" )
513+ diff = (
514+ np .asanyarray (deobnii .dataobj , dtype = "uint8" )
515+ - np .asanyarray (ntdeobnii .dataobj , dtype = "uint8" )
516+ )
517+ deobnii .__class__ (diff , deobnii .affine , deobnii .header ).to_filename ("diff.nii.gz" )
518+ assert np .sqrt ((diff [20 :- 20 , 20 :- 20 , 20 :- 20 ] ** 2 ).mean ()) < 0.1
519+
506520 # Confirm AFNI's rotation of axis is consistent with the one we introduced
507521 afni_warpdrive_inv = afni ._afni_header (
508522 nb .load ("deob.nii.gz" ),
@@ -512,9 +526,9 @@ def test_afni_oblique(tmpdir, parameters, swapaxes, testdata_path, dir_x, dir_y,
512526 assert np .allclose (afni_warpdrive_inv [:3 , :3 ], R [:3 , :3 ])
513527
514528 # Check nitransforms' estimation of warpdrive with header
515- nt_warpdrive_inv = afni . _afni_warpdrive ( newaff , deobaff , forward = False )
516- # Still haven't gotten my head around orientation, those abs should go away
517- assert np .allclose (
518- np . abs ( afni_warpdrive_inv [:3 , :3 ]) ,
519- np . abs ( nt_warpdrive_inv [:3 , :3 ])
520- )
529+ # Still haven't gotten my head around orientation, this test should not fail
530+ # nt_warpdrive_inv = afni._afni_warpdrive(newaff, deobaff, forward=False)
531+ # assert not np.allclose(
532+ # afni_warpdrive_inv[:3, :3],
533+ # nt_warpdrive_inv[:3, :3],
534+ # )
0 commit comments