Source code for catalyst.contrib.data.nifti.reader
from typing import Optional
from catalyst.settings import SETTINGS
if SETTINGS.nifti_required:
import nibabel as nib
from catalyst.contrib.data.reader import IReader
[docs]class NiftiReader(IReader):
"""
Nifti reader abstraction for NeuroImaging. Reads nifti images from
a `csv` dataset.
"""
[docs] def __init__(
self, input_key: str, output_key: Optional[str] = None, rootpath: Optional[str] = None
):
"""
Args:
input_key (str): key to use from annotation dict
output_key (str): key to use to store the result
rootpath (str): path to images dataset root directory
(so your can use relative paths in annotations)
"""
super().__init__(input_key, output_key or input_key)
self.rootpath = rootpath
def __call__(self, element):
"""Reads a row from your annotations dict with filename and
transfer it to an image
Args:
element: elem in your dataset.
Returns:
np.ndarray: Image
"""
image_name = str(element[self.input_key])
img = nib.load(image_name)
img = img.get_fdata()
output = {self.output_key: img}
return output