Skip to content

Commit 26c2b2e

Browse files
authored
Merge pull request #151 from HippocampusGirl/fix/deprecation-warning
FIX: Replace deprecated ``_read_mat`` with ``scipy.io.loadmat`` Resolves: #149
2 parents 415170e + dabc974 commit 26c2b2e

File tree

3 files changed

+3
-50
lines changed

3 files changed

+3
-50
lines changed

nitransforms/io/base.py

-16
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22
from pathlib import Path
33
import numpy as np
44
from nibabel import load as loadimg
5-
from scipy.io.matlab.miobase import get_matfile_version
6-
from scipy.io.matlab.mio4 import MatFile4Reader
7-
from scipy.io.matlab.mio5 import MatFile5Reader
85

96
from ..patched import LabeledWrapStruct
107

@@ -146,19 +143,6 @@ def from_image(cls, imgobj):
146143
raise NotImplementedError
147144

148145

149-
def _read_mat(byte_stream):
150-
mjv, _ = get_matfile_version(byte_stream)
151-
if mjv == 0:
152-
reader = MatFile4Reader(byte_stream)
153-
elif mjv == 1:
154-
reader = MatFile5Reader(byte_stream)
155-
elif mjv == 2:
156-
raise TransformFileError("Please use HDF reader for Matlab v7.3 files")
157-
else:
158-
raise TransformFileError("Not a Matlab file.")
159-
return reader.get_variables()
160-
161-
162146
def _ensure_image(img):
163147
if isinstance(img, (str, Path)):
164148
return loadimg(img)

nitransforms/io/itk.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
"""Read/write ITK transforms."""
22
import warnings
33
import numpy as np
4-
from scipy.io import savemat as _save_mat
4+
from scipy.io import loadmat as _read_mat, savemat as _save_mat
55
from nibabel import Nifti1Header, Nifti1Image
66
from nibabel.affines import from_matvec
77
from .base import (
88
BaseLinearTransformList,
99
DisplacementsField,
1010
LinearParameters,
1111
TransformFileError,
12-
_read_mat,
1312
)
1413

1514
LPS = np.diag([-1, -1, 1, 1])

nitransforms/tests/test_io.py

+2-32
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import nibabel as nb
1010
from nibabel.eulerangles import euler2mat
1111
from nibabel.affines import from_matvec
12-
from scipy.io import loadmat, savemat
12+
from scipy.io import loadmat
1313
from ..io import (
1414
afni,
1515
fsl,
@@ -21,7 +21,7 @@
2121
FSLinearTransform as LT,
2222
FSLinearTransformArray as LTA,
2323
)
24-
from ..io.base import _read_mat, LinearParameters, TransformFileError
24+
from ..io.base import LinearParameters, TransformFileError
2525

2626
LPS = np.diag([-1, -1, 1, 1])
2727
ITK_MAT = LPS.dot(np.ones((4, 4)).dot(LPS))
@@ -393,36 +393,6 @@ def test_LinearParameters(tmpdir):
393393
LinearParameters.from_fileobj(tmpdir.join("file.txt").open())
394394

395395

396-
@pytest.mark.parametrize("matlab_ver", ["4", "5"])
397-
def test_read_mat1(tmpdir, matlab_ver):
398-
"""Test read from matlab."""
399-
tmpdir.chdir()
400-
401-
savemat("val.mat", {"val": np.ones((3,))}, format=matlab_ver)
402-
with open("val.mat", "rb") as f:
403-
mdict = _read_mat(f)
404-
405-
assert np.all(mdict["val"] == np.ones((3,)))
406-
407-
408-
@pytest.mark.parametrize("matlab_ver", [-1] + list(range(2, 7)))
409-
def test_read_mat2(tmpdir, monkeypatch, matlab_ver):
410-
"""Check read matlab raises adequate errors."""
411-
from ..io import base
412-
413-
tmpdir.chdir()
414-
savemat("val.mat", {"val": np.ones((3,))})
415-
416-
def _mockreturn(arg):
417-
return (matlab_ver, 0)
418-
419-
with monkeypatch.context() as m:
420-
m.setattr(base, "get_matfile_version", _mockreturn)
421-
with pytest.raises(TransformFileError):
422-
with open("val.mat", "rb") as f:
423-
_read_mat(f)
424-
425-
426396
def test_afni_Displacements():
427397
"""Test displacements fields."""
428398
field = nb.Nifti1Image(np.zeros((10, 10, 10)), None, None)

0 commit comments

Comments
 (0)