Source code for fileformats.medimage.nifti

from fileformats.generic import BinaryFile
from fileformats.core import validated_property
from fileformats.core.mixin import WithSideCars, WithMagicNumber, WithAdjacentFiles
from fileformats.application import Json
from fileformats.application.archive import BaseGzip
from .base import MedicalImage


[docs] class Nifti(MedicalImage, BinaryFile): ext: str = ".nii" contains_phi = False
class WithBids(WithSideCars): primary_type = Nifti side_car_types = (Json,) @validated_property def json_file(self) -> Json: return Json(self.select_by_ext(Json)) # type: ignore[attr-defined]
[docs] class Nifti1(WithMagicNumber, Nifti): iana_mime = "application/x-nifti1" magic_number = "6E2B3100" magic_number_offset = 344
[docs] class Nifti2(WithMagicNumber, Nifti): iana_mime = "application/x-nifti2" magic_number = "6e2b3200" magic_number_offset = 344
[docs] class NiftiGz(Nifti, BaseGzip): ext = ".nii.gz" iana_mime = "application/x-nifti1+gzip" archived_type = Nifti
[docs] class NiftiX(WithBids, Nifti): iana_mime = "application/x-nifti1+json"
[docs] class NiftiGzX(WithBids, NiftiGz): iana_mime = "application/x-nifti1+gzip.bids"
class NiftiDataFile(MedicalImage): ext = ".img" class NiftiWithDataFile(WithAdjacentFiles, Nifti1): """Nifti file with separate data file""" magic_number = "6E693100" alternate_exts = (".hdr",) @validated_property def data_file(self) -> NiftiDataFile: return NiftiDataFile(self.select_by_ext(NiftiDataFile))