Source code for dipy.workflows.mask

#!/usr/bin/env python3

import logging

import numpy as np

from dipy.io.image import load_nifti, save_nifti
from dipy.workflows.workflow import Workflow


[docs] class MaskFlow(Workflow):
[docs] @classmethod def get_short_name(cls): return "mask"
[docs] def run(self, input_files, lb, ub=np.inf, out_dir="", out_mask="mask.nii.gz"): """Workflow for creating a binary mask Parameters ---------- input_files : string Path to image to be masked. lb : float Lower bound value. ub : float, optional Upper bound value. out_dir : string, optional Output directory. (default current directory) out_mask : string, optional Name of the masked file. """ if lb >= ub: logging.error( "The upper bound(less than) should be greater" " than the lower bound (greater_than)." ) return io_it = self.get_io_iterator() for input_path, out_mask_path in io_it: logging.info(f"Creating mask of {input_path}") data, affine = load_nifti(input_path) mask = np.bitwise_and(data > lb, data < ub) save_nifti(out_mask_path, mask.astype(np.ubyte), affine) logging.info(f"Mask saved at {out_mask_path}")