Source code for fileformats.medimage.misc
from fileformats.application import Gzip
from fileformats.generic import BinaryFile
from fileformats.core import validated_property
from fileformats.core.mixin import WithSeparateHeader, WithMagicVersion
from .base import MedicalImage
from fileformats.core.exceptions import FormatMismatchError
# ==================
# Other Data Formats
# ==================
class AnalyzeHeader(BinaryFile):
ext = ".hdr"
contains_phi = False
[docs]
class Analyze(WithSeparateHeader, MedicalImage, BinaryFile):
ext = ".img"
header_type = AnalyzeHeader
[docs]
class Mgh(WithMagicVersion, BinaryFile):
"""
FreeSurfer 4-dimensional brain images
See https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat
"""
ext = ".mgh"
magic_pattern = rb"(....)" # First integer is the version string
@validated_property
def _is_supported_version(self) -> None:
assert isinstance(self.version, str)
if int(self.version) != 1:
raise FormatMismatchError(
f"Unsupported version {self.version} found in MGH format {self}"
)
[docs]
class MghGz(Gzip[Mgh]): # type: ignore[type-arg]
"""
FreeSurfer 4-dimensional brain images, gzipped
See https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat
"""
iana_mime = "application/x-mgh+zip"
ext = ".mgz"