Skip to content

Commit 9c70497

Browse files
committed
FIX: Accept double precision when reading ANTs' .mat affines
1 parent e728b57 commit 9c70497

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

nitransforms/io/itk.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ITKLinearTransform(LinearParameters):
2222
[
2323
("type", "i4"),
2424
("index", "i4"),
25-
("parameters", "f4", (4, 4)),
25+
("parameters", "f8", (4, 4)),
2626
("offset", "f4", 3), # Center of rotation
2727
]
2828
)
@@ -67,11 +67,11 @@ def to_filename(self, filename):
6767
np.hstack(
6868
(sa["parameters"][:3, :3].reshape(-1), sa["parameters"][:3, 3])
6969
)[..., np.newaxis],
70-
dtype="f4",
70+
dtype="f8",
7171
)
7272
fixed = np.array(sa["offset"][..., np.newaxis], dtype="f4")
7373
mdict = {
74-
"AffineTransform_float_3_3": affine,
74+
"AffineTransform_double_3_3": affine,
7575
"fixed": fixed,
7676
}
7777
_save_mat(str(filename), mdict, format="4")
@@ -129,10 +129,15 @@ def from_matlab_dict(cls, mdict, index=0):
129129
tf = cls()
130130
sa = tf.structarr
131131

132+
affine = mdict.get(
133+
"AffineTransform_double_3_3",
134+
mdict.get("AffineTransform_float_3_3")
135+
)
136+
132137
sa["index"] = index
133-
parameters = np.eye(4, dtype="f4")
134-
parameters[:3, :3] = mdict["AffineTransform_float_3_3"][:-3].reshape((3, 3))
135-
parameters[:3, 3] = mdict["AffineTransform_float_3_3"][-3:].flatten()
138+
parameters = np.eye(4, dtype=affine.dtype)
139+
parameters[:3, :3] = affine[:-3].reshape((3, 3))
140+
parameters[:3, 3] = affine[-3:].flatten()
136141
sa["parameters"] = parameters
137142
sa["offset"] = mdict["fixed"].flatten()
138143
return tf

0 commit comments

Comments
 (0)