@@ -82,18 +82,62 @@ def test_loadsave(tmp_path, data_path, testdata_path, fmt):
82
82
83
83
fname = tmp_path / "." .join (("transform-mapping" , fmt ))
84
84
xfm .to_filename (fname , fmt = fmt )
85
- xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
85
+
86
+ if fmt == "fsl" :
87
+ # 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 )
91
+
92
+ with pytest .warns (UserWarning ):
93
+ assert np .allclose (
94
+ xfm .matrix ,
95
+ nitl .load (fname , fmt = fmt , reference = ref_file ).matrix ,
96
+ rtol = 1e-2 , # FSL incurs into large errors due to rounding
97
+ )
98
+
99
+ assert np .allclose (
100
+ xfm .matrix ,
101
+ nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
102
+ rtol = 1e-2 , # FSL incurs into large errors due to rounding
103
+ )
104
+ else :
105
+ assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
106
+
86
107
xfm .to_filename (fname , fmt = fmt , moving = ref_file )
87
- xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
108
+
109
+ if fmt == "fsl" :
110
+ assert np .allclose (
111
+ xfm .matrix ,
112
+ nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
113
+ rtol = 1e-2 , # FSL incurs into large errors due to rounding
114
+ )
115
+ else :
116
+ assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
88
117
89
118
ref_file = testdata_path / "someones_anatomy.nii.gz"
90
119
xfm = nitl .load (data_path / "affine-LAS.itk.tfm" , fmt = "itk" )
91
120
xfm .reference = ref_file
92
121
fname = tmp_path / "." .join (("single-transform" , fmt ))
93
122
xfm .to_filename (fname , fmt = fmt )
94
- xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
123
+ if fmt == "fsl" :
124
+ assert np .allclose (
125
+ xfm .matrix ,
126
+ nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
127
+ rtol = 1e-2 , # FSL incurs into large errors due to rounding
128
+ )
129
+ else :
130
+ assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
131
+
95
132
xfm .to_filename (fname , fmt = fmt , moving = ref_file )
96
- xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
133
+ if fmt == "fsl" :
134
+ assert np .allclose (
135
+ xfm .matrix ,
136
+ nitl .load (fname , fmt = fmt , reference = ref_file , moving = ref_file ).matrix ,
137
+ rtol = 1e-2 , # FSL incurs into large errors due to rounding
138
+ )
139
+ else :
140
+ assert xfm == nitl .load (fname , fmt = fmt , reference = ref_file )
97
141
98
142
99
143
@pytest .mark .xfail (reason = "Not fully implemented" )
0 commit comments