Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# Registration().version may be None
if parseversion(Registration().version or "0.0.0") > Version("2.2.0"):
init_aff.inputs.search_grid = (40, (0, 40, 40))
# Set up spatial normalization
norm = pe.Node(
Registration(
from_file=pkgr_fn("niworkflows.data", "epi_atlasbased_brainmask.json")
),
name="norm",
n_procs=omp_nthreads,
)
norm.inputs.fixed_image = str(bold_template)
map_brainmask = pe.Node(
ApplyTransforms(
interpolation="MultiLabel", input_image=str(brain_mask)
),
name="map_brainmask",
)
# fmt: off
workflow.connect([
(inputnode, init_aff, [("in_file", "moving_image")]),
(inputnode, map_brainmask, [("in_file", "reference_image")]),
(inputnode, norm, [("in_file", "moving_image")]),
(init_aff, norm, [("output_transform", "initial_moving_transform")]),
(norm, map_brainmask, [
("reverse_invert_flags", "invert_transform_flags"),
("reverse_transforms", "transforms"),
]),
(map_brainmask, pre_dilate, [("output_image", "in_file")]),
])
trunc_mov = pe.Node(ImageMath(operation='TruncateImageIntensity', op2='0.01 0.999 256'),
name='trunc_mov')
registration = pe.Node(RobustMNINormalization(
float=True, flavor=['precise', 'testing'][debug],
), name='registration', n_procs=omp_nthreads, mem_gb=2)
# Resample T1w-space inputs
tpl_moving = pe.Node(ApplyTransforms(
dimension=3, default_value=0, float=True,
interpolation='LanczosWindowedSinc'), name='tpl_moving')
std_mask = pe.Node(ApplyTransforms(interpolation='MultiLabel'), name='std_mask')
std_dseg = pe.Node(ApplyTransforms(interpolation='MultiLabel'), name='std_dseg')
std_tpms = pe.MapNode(ApplyTransforms(dimension=3, default_value=0, float=True,
interpolation='Gaussian'),
iterfield=['input_image'], name='std_tpms')
workflow.connect([
(inputnode, split_desc, [('template', 'template')]),
(inputnode, poutputnode, [('template', 'template')]),
(inputnode, trunc_mov, [('moving_image', 'op1')]),
(inputnode, registration, [
('moving_mask', 'moving_mask'),
('lesion_mask', 'lesion_mask')]),
(inputnode, tpl_moving, [('moving_image', 'input_image')]),
(inputnode, std_mask, [('moving_mask', 'input_image')]),
(split_desc, tf_select, [('name', 'template'),
('spec', 'template_spec')]),
(split_desc, registration, [('name', 'template'),
('spec', 'template_spec')]),
"""
Applies ANTs' antsApplyTransforms to the input image.
All inputs are zipped in one tuple to make it digestible by
multiprocessing's map
"""
import nibabel as nb
from nipype.utils.filemanip import fname_presuffix
from niworkflows.interfaces.fixes import FixHeaderApplyTransforms as ApplyTransforms
in_file, in_xform, ifargs, index, newpath = args
out_file = fname_presuffix(
in_file, suffix="_xform-%05d" % index, newpath=newpath, use_ext=True
)
copy_dtype = ifargs.pop("copy_dtype", False)
xfm = ApplyTransforms(
input_image=in_file, transforms=in_xform, output_image=out_file, **ifargs
)
xfm.terminal_output = "allatonce"
xfm.resource_monitor = False
runtime = xfm.run().runtime
if copy_dtype:
nii = nb.load(out_file, mmap=False)
in_dtype = nb.load(in_file).get_data_dtype()
# Overwrite only iff dtypes don't match
if in_dtype != nii.get_data_dtype():
nii.set_data_dtype(in_dtype)
nii.to_filename(out_file)
return (out_file, runtime.cmdline)
def _run_interface(self, runtime, correct_return_codes=(0,)):
# Run normally
runtime = super(FixHeaderApplyTransforms, self)._run_interface(
runtime, correct_return_codes
)
_copyxform(
self.inputs.reference_image,
os.path.abspath(self._gen_filename("output_image")),
message="%s (niworkflows v%s)" % (self.__class__.__name__, __version__),
)
return runtime
name='tf_select', run_without_submitting=True)
# With the improvements from poldracklab/niworkflows#342 this truncation is now necessary
trunc_mov = pe.Node(ImageMath(operation='TruncateImageIntensity', op2='0.01 0.999 256'),
name='trunc_mov')
registration = pe.Node(RobustMNINormalization(
float=True, flavor=['precise', 'testing'][debug],
), name='registration', n_procs=omp_nthreads, mem_gb=2)
# Resample T1w-space inputs
tpl_moving = pe.Node(ApplyTransforms(
dimension=3, default_value=0, float=True,
interpolation='LanczosWindowedSinc'), name='tpl_moving')
std_mask = pe.Node(ApplyTransforms(interpolation='MultiLabel'), name='std_mask')
std_dseg = pe.Node(ApplyTransforms(interpolation='MultiLabel'), name='std_dseg')
std_tpms = pe.MapNode(ApplyTransforms(dimension=3, default_value=0, float=True,
interpolation='Gaussian'),
iterfield=['input_image'], name='std_tpms')
workflow.connect([
(inputnode, split_desc, [('template', 'template')]),
(inputnode, poutputnode, [('template', 'template')]),
(inputnode, trunc_mov, [('moving_image', 'op1')]),
(inputnode, registration, [
('moving_mask', 'moving_mask'),
('lesion_mask', 'lesion_mask')]),
(inputnode, tpl_moving, [('moving_image', 'input_image')]),
(inputnode, std_mask, [('moving_mask', 'input_image')]),
(split_desc, tf_select, [('name', 'template'),
split_desc = pe.Node(TemplateDesc(), run_without_submitting=True, name='split_desc')
tf_select = pe.Node(TemplateFlowSelect(resolution=1 + debug),
name='tf_select', run_without_submitting=True)
# With the improvements from poldracklab/niworkflows#342 this truncation is now necessary
trunc_mov = pe.Node(ImageMath(operation='TruncateImageIntensity', op2='0.01 0.999 256'),
name='trunc_mov')
registration = pe.Node(RobustMNINormalization(
float=True, flavor=['precise', 'testing'][debug],
), name='registration', n_procs=omp_nthreads, mem_gb=2)
# Resample T1w-space inputs
tpl_moving = pe.Node(ApplyTransforms(
dimension=3, default_value=0, float=True,
interpolation='LanczosWindowedSinc'), name='tpl_moving')
std_mask = pe.Node(ApplyTransforms(interpolation='MultiLabel'), name='std_mask')
std_dseg = pe.Node(ApplyTransforms(interpolation='MultiLabel'), name='std_dseg')
std_tpms = pe.MapNode(ApplyTransforms(dimension=3, default_value=0, float=True,
interpolation='Gaussian'),
iterfield=['input_image'], name='std_tpms')
workflow.connect([
(inputnode, split_desc, [('template', 'template')]),
(inputnode, poutputnode, [('template', 'template')]),
(inputnode, trunc_mov, [('moving_image', 'op1')]),
(inputnode, registration, [
('moving_mask', 'moving_mask'),
)
norm = pe.Node(
Registration(
from_file=pkgr_fn("niworkflows.data", settings_file % normalization_quality)
),
name="norm",
n_procs=omp_nthreads,
mem_gb=mem_gb,
)
norm.inputs.float = use_float
fixed_mask_trait = "fixed_image_mask"
if _ants_version and parseversion(_ants_version) >= Version("2.2.0"):
fixed_mask_trait += "s"
map_brainmask = pe.Node(
ApplyTransforms(interpolation="Gaussian", float=True),
name="map_brainmask",
mem_gb=1,
)
map_brainmask.inputs.input_image = str(tpl_mask_path)
thr_brainmask = pe.Node(
ThresholdImage(
dimension=3, th_low=0.5, th_high=1.0, inside_value=1, outside_value=0
),
name="thr_brainmask",
)
# Morphological dilation, radius=2
dil_brainmask = pe.Node(ImageMath(operation="MD", op2="2"), name="dil_brainmask")
# Get largest connected component
get_brainmask = pe.Node(