Source code for omni.pipelines.func.segmentation

import logging
from memori.pathman import append_suffix, repath
from memori.helpers import create_output_path
from omni.interfaces.afni import NwarpApply
from omni.interfaces.fsl import bet


[docs]@create_output_path def brain_extraction( output_path: str, ref_func_debias: str, fractional_intensity_threshold: float = 0.5, initial_warp_field: str = None ): """Brain extraction Parameters ---------- output_path : str Output path to write out files to. ref_func_debias : str Reference functional. fractional_intensity_threshold : float Fractional intensity threshold for bet. initial_warp_field : str An initial distortion correction that should be applied before brain extraction Returns ------- str Functional mask. str Brain extracted functional. """ # if distortion correction is provided, apply it if initial_warp_field: ref_func_debias_warped = repath(output_path, append_suffix(ref_func_debias, "warped")) NwarpApply(ref_func_debias_warped, ref_func_debias, ref_func_debias, initial_warp_field) ref_func_debias = ref_func_debias_warped # run bet based on method selected logging.info("Running brain extraction...") ref_func_debias_bet = append_suffix(repath(output_path, ref_func_debias), "_bet") _, ref_func_debias_mask = bet( ref_func_debias_bet, # pylint: disable=unbalanced-tuple-unpacking ref_func_debias, fractional_intensity_threshold, mask=True, ) # return files return (ref_func_debias_mask, ref_func_debias_bet)