@@ -54,6 +54,18 @@ def test_linear_valueerror():
5454 nitl .Affine (np .ones ((4 , 4 )))
5555
5656
57+ def test_linear_load_unsupported (data_path ):
58+ """Exercise loading transform without I/O implementation."""
59+ with pytest .raises (TypeError ):
60+ nitl .load (data_path / "itktflist2.tfm" , fmt = "X5" )
61+
62+
63+ def test_linear_load_mistaken (data_path ):
64+ """Exercise loading transform without I/O implementation."""
65+ with pytest .raises (io .TransformFileError ):
66+ nitl .load (data_path / "itktflist2.tfm" , fmt = "afni" )
67+
68+
5769def test_loadsave_itk (tmp_path , data_path , testdata_path ):
5870 """Test idempotency."""
5971 ref_file = testdata_path / "someones_anatomy.nii.gz"
@@ -73,9 +85,13 @@ def test_loadsave_itk(tmp_path, data_path, testdata_path):
7385 )
7486
7587
88+ @pytest .mark .parametrize ("autofmt" , (False , True ))
7689@pytest .mark .parametrize ("fmt" , ["itk" , "fsl" , "afni" , "lta" ])
77- def test_loadsave (tmp_path , data_path , testdata_path , fmt ):
90+ def test_loadsave (tmp_path , data_path , testdata_path , autofmt , fmt ):
7891 """Test idempotency."""
92+ supplied_fmt = None if autofmt else fmt
93+
94+ # Load reference transform
7995 ref_file = testdata_path / "someones_anatomy.nii.gz"
8096 xfm = nitl .load (data_path / "itktflist2.tfm" , fmt = "itk" )
8197 xfm .reference = ref_file
@@ -85,33 +101,33 @@ def test_loadsave(tmp_path, data_path, testdata_path, fmt):
85101
86102 if fmt == "fsl" :
87103 # FSL should not read a transform without reference
88- with pytest .raises (ValueError ):
89- nitl .load (fname , fmt = fmt )
90- nitl .load (fname , fmt = fmt , moving = ref_file )
104+ with pytest .raises (io . TransformIOError ):
105+ nitl .load (fname , fmt = supplied_fmt )
106+ nitl .load (fname , fmt = supplied_fmt , moving = ref_file )
91107
92108 with pytest .warns (UserWarning ):
93109 assert np .allclose (
94110 xfm .matrix ,
95- nitl .load (fname , fmt = fmt , reference = ref_file ).matrix ,
111+ nitl .load (fname , fmt = supplied_fmt , reference = ref_file ).matrix ,
96112 )
97113
98114 assert np .allclose (
99115 xfm .matrix ,
100- nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
116+ nitl .load (fname , fmt = supplied_fmt , reference = ref_file , moving = ref_file ).matrix ,
101117 )
102118 else :
103- assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
119+ assert xfm == nitl .load (fname , fmt = supplied_fmt , reference = ref_file )
104120
105121 xfm .to_filename (fname , fmt = fmt , moving = ref_file )
106122
107123 if fmt == "fsl" :
108124 assert np .allclose (
109125 xfm .matrix ,
110- nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
126+ nitl .load (fname , fmt = supplied_fmt , reference = ref_file , moving = ref_file ).matrix ,
111127 rtol = 1e-2 , # FSL incurs into large errors due to rounding
112128 )
113129 else :
114- assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
130+ assert xfm == nitl .load (fname , fmt = supplied_fmt , reference = ref_file )
115131
116132 ref_file = testdata_path / "someones_anatomy.nii.gz"
117133 xfm = nitl .load (data_path / "affine-LAS.itk.tfm" , fmt = "itk" )
@@ -121,21 +137,21 @@ def test_loadsave(tmp_path, data_path, testdata_path, fmt):
121137 if fmt == "fsl" :
122138 assert np .allclose (
123139 xfm .matrix ,
124- nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
140+ nitl .load (fname , fmt = supplied_fmt , reference = ref_file , moving = ref_file ).matrix ,
125141 rtol = 1e-2 , # FSL incurs into large errors due to rounding
126142 )
127143 else :
128- assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
144+ assert xfm == nitl .load (fname , fmt = supplied_fmt , reference = ref_file )
129145
130146 xfm .to_filename (fname , fmt = fmt , moving = ref_file )
131147 if fmt == "fsl" :
132148 assert np .allclose (
133149 xfm .matrix ,
134- nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
150+ nitl .load (fname , fmt = supplied_fmt , reference = ref_file , moving = ref_file ).matrix ,
135151 rtol = 1e-2 , # FSL incurs into large errors due to rounding
136152 )
137153 else :
138- assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
154+ assert xfm == nitl .load (fname , fmt = supplied_fmt , reference = ref_file )
139155
140156
141157@pytest .mark .parametrize ("image_orientation" , ["RAS" , "LAS" , "LPS" , "oblique" ])
0 commit comments