diff --git a/fsl/data/mghimage.py b/fsl/data/mghimage.py new file mode 100644 index 0000000000000000000000000000000000000000..c65411dd5f57db2f4abfc42eb3f4a9e0f03ade48 --- /dev/null +++ b/fsl/data/mghimage.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +# +# mghimage.py - The MGHImage class +# +# Author: Paul McCarthy <pauldmccarthy@gmail.com> +# +"""This module provides the :class:`MGHImage` class, which can be used to load +Freesurfer ``mgh``/``mgz`` image files. + +.. autosummary:: + :nosignatures: + + looksLikeMGHImage +""" + + +import six + +import nibabel as nib + +import fsl.data.image as fslimage + + +class MGHImage(fslimage.Image): + """The ``MGHImage`` class is a NIFTI :class:`Image` which has been converted + from a Freesurfer ``.mgh`` file. + + .. see:: https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat + + .. see:: http://nipy.org/nibabel/reference/nibabel.freesurfer.html + """ + + def __init__(self, image, *args, **kwargs): + """Create a ``MGHImage``. + + :arg image: Name of MGH file, or a + ``nibabel.freesurfer.mghformat.MGHImage`` instance. + + All other arguments are passed through to :meth:`Image.__init__` + """ + + if isinstance(image, six.string_types): + image = nib.load(image) + + data = image.get_data() + affine = image.affine + + fslimage.Image.__init__(self, data, xform=affine) + + +ALLOWED_EXTENSIONS = ['.mgz', '.mgh'] +"""List of file extensions interpreted as MGH image files. +""" + + +EXTENSION_DESCRIPTIONS = ['Compressed MGH image', 'MGH image'] +"""A description for each of the :attr:`ALLOWED_EXTENSIONS`.""" + + +def looksLikeMGHImage(filename): + """Returns ``True`` if the given file looks like a MGH image, ``False`` + otherwise. + """ + return fslimage.looksLikeImage(filename, ALLOWED_EXTENSIONS)