Skip to content
Snippets Groups Projects
Commit ae3d65d9 authored by Paul McCarthy's avatar Paul McCarthy :mountain_bicyclist:
Browse files

Ummm. Why did I ever restrict to 4D?

parent 95f51d5e
No related branches found
No related tags found
No related merge requests found
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# Author: Paul McCarthy <pauldmccarthy@gmail.com> # Author: Paul McCarthy <pauldmccarthy@gmail.com>
# #
"""This module provides the :class:`Nifti` and :class:`Image` classes, for """This module provides the :class:`Nifti` and :class:`Image` classes, for
representing 3D/4D NIFTI1 and NIFTI2 images. The ``nibabel`` package is used representing NIFTI1 and NIFTI2 images. The ``nibabel`` package is used
for file I/O. for file I/O.
...@@ -187,9 +187,6 @@ class Nifti(notifier.Notifier): ...@@ -187,9 +187,6 @@ class Nifti(notifier.Notifier):
header = header header = header
origShape, shape, pixdim = self.__determineShape(header) origShape, shape, pixdim = self.__determineShape(header)
if len(shape) < 3 or len(shape) > 4:
raise RuntimeError('Only 3D or 4D images are supported')
voxToWorldMat = self.__determineTransform(header) voxToWorldMat = self.__determineTransform(header)
worldToVoxMat = transform.invert(voxToWorldMat) worldToVoxMat = transform.invert(voxToWorldMat)
...@@ -451,10 +448,14 @@ class Nifti(notifier.Notifier): ...@@ -451,10 +448,14 @@ class Nifti(notifier.Notifier):
return fileslice.canonical_slicers(sliceobj, self.__origShape) return fileslice.canonical_slicers(sliceobj, self.__origShape)
# TODO: Remove this method, and use the shape attribute directly @property
def is4DImage(self): def ndims(self):
"""Returns ``True`` if this image is 4D, ``False`` otherwise. """ """Returns the number of dimensions in this image. This number may not
return len(self.__shape) > 3 and self.__shape[3] > 1 match the number of dimensions specified in the NIFTI header, as
trailing dimensions of length 1 are ignored. But it is guaranteed to be
at least 3.
"""
return len(self.__shape)
def getXFormCode(self, code=None): def getXFormCode(self, code=None):
...@@ -626,7 +627,7 @@ class Nifti(notifier.Notifier): ...@@ -626,7 +627,7 @@ class Nifti(notifier.Notifier):
class Image(Nifti): class Image(Nifti):
"""Class which represents a 3D/4D NIFTI image. Internally, the image is """Class which represents a NIFTI image. Internally, the image is
loaded/stored using a :mod:`nibabel.nifti1.Nifti1Image` or loaded/stored using a :mod:`nibabel.nifti1.Nifti1Image` or
:mod:`nibabel.nifti2.Nifti2Image`, and data access managed by a :mod:`nibabel.nifti2.Nifti2Image`, and data access managed by a
:class:`.ImageWrapper`. :class:`.ImageWrapper`.
...@@ -1001,8 +1002,7 @@ class Image(Nifti): ...@@ -1001,8 +1002,7 @@ class Image(Nifti):
# Otherwise if the number of values in the # Otherwise if the number of values in the
# image is bigger than the size threshold, # image is bigger than the size threshold,
# we'll calculate the range from a sample: # we'll calculate the range from a sample:
if len(self.shape) == 3: self.__imageWrapper[:, :, 0] self.__imageWrapper[..., 0]
else: self.__imageWrapper[:, :, :, 0]
def loadData(self): def loadData(self):
......
...@@ -77,7 +77,7 @@ class MelodicImage(fslimage.Image): ...@@ -77,7 +77,7 @@ class MelodicImage(fslimage.Image):
dataImage = fslimage.Image(dataFile, dataImage = fslimage.Image(dataFile,
loadData=False, loadData=False,
calcRange=False) calcRange=False)
if dataImage.is4DImage(): if dataImage.ndims >= 4:
self.__tr = dataImage.pixdim[3] self.__tr = dataImage.pixdim[3]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment