Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def apply_all_corrections(datasink_directory, name='UnwarpArtifacts'):
"""
Combines two lists of linear transforms with the deformation field
map obtained epi_correction by Ants.
Additionally, computes the corresponding bspline coefficients and
the map of determinants of the jacobian.
"""
inputnode = pe.Node(niu.IdentityInterface(
fields=['in_epi', 'in_hmc','in_ecc', 'in_dwi', 'T1']), name='inputnode')
outputnode = pe.Node(niu.IdentityInterface(
fields=['out_file', 'out_warp', 'out_coeff', 'out_jacobian']),
name='outputnode')
split = pe.Node(fsl.Split(dimension='t'), name='SplitDWIs')
concat_hmc_ecc = pe.MapNode(fsl.ConvertXFM(), name="concat_hmc_ecc", iterfield=['in_file', 'in_file2'])
concat_hmc_ecc.inputs.concat_xfm = True
warps = pe.MapNode(fsl.ConvertWarp(), iterfield=['premat'], name='ConvertWarp')
unwarp = pe.MapNode(interface=fsl.ApplyWarp(), iterfield=['in_file', 'field_file'],name='unwarp_warp')
unwarp.inputs.interp = 'spline'
coeffs = pe.MapNode(fsl.WarpUtils(out_format='spline'),
def _parse_inputs(self, skip=None):
if skip is None:
skip = []
input_phase = isdefined(self.inputs.phasemap_in_file)
input_vsm = isdefined(self.inputs.shift_in_file)
input_fmap = isdefined(self.inputs.fmap_in_file)
if not input_phase and not input_vsm and not input_fmap:
raise RuntimeError(
(
"Either phasemap_in_file, shift_in_file or fmap_in_file must "
"be set."
)
)
if not isdefined(self.inputs.in_file):
skip += ["unwarped_file", "warped_file"]
else:
if self.inputs.forward_warping:
skip += ["unwarped_file"]
trait_spec = self.inputs.trait("warped_file")
trait_spec.name_template = "%s_warped"
iterfield=['premat', 'postmat'],
name='ConvertWarp')
selref = pe.Node(niu.Select(index=[0]), name='Reference')
split = pe.Node(fsl.Split(dimension='t'), name='SplitDWIs')
unwarp = pe.MapNode(
fsl.ApplyWarp(),
iterfield=['in_file', 'field_file'],
name='UnwarpDWIs')
coeffs = pe.MapNode(
fsl.WarpUtils(out_format='spline'),
iterfield=['in_file'],
name='CoeffComp')
jacobian = pe.MapNode(
fsl.WarpUtils(write_jacobian=True),
iterfield=['in_file'],
name='JacobianComp')
jacmult = pe.MapNode(
fsl.MultiImageMaths(op_string='-mul %s'),
iterfield=['in_file', 'operand_files'],
name='ModulateDWIs')
thres = pe.MapNode(
fsl.Threshold(thresh=0.0),
iterfield=['in_file'],
name='RemoveNegative')
merge = pe.Node(fsl.Merge(dimension='t'), name='MergeDWIs')
wf = pe.Workflow(name=name)
wf.connect([(inputnode, warps, [
"""
Remove the plotting connection so that plot iterables don't propagate
to the model stage
"""
preproc.disconnect(preproc.get_node('plot_motion'), 'out_file',
preproc.get_node('outputspec'), 'motion_plots')
"""
Set up openfmri data specific components
"""
subjects = sorted([path.split(os.path.sep)[-1] for path in
glob(os.path.join(data_dir, subj_prefix))])
infosource = pe.Node(niu.IdentityInterface(fields=['subject_id',
'model_id',
'task_id']),
name='infosource')
if len(subject) == 0:
infosource.iterables = [('subject_id', subjects),
('model_id', [model_id]),
('task_id', task_id)]
else:
infosource.iterables = [('subject_id',
[subjects[subjects.index(subj)] for subj in subject]),
('model_id', [model_id]),
('task_id', task_id)]
subjinfo = pe.Node(niu.Function(input_names=['subject_id', 'base_dir',
'task_id', 'model_id'],
output_names=['run_id', 'conds', 'TR'],
def create_bedpostx_pipeline(name="bedpostx"):
inputnode = pe.Node(interface = util.IdentityInterface(fields=["dwi", "mask"]),
name="inputnode")
mask_dwi = pe.Node(interface = fsl.ImageMaths(op_string = "-mas"),
name="mask_dwi")
slice_dwi = pe.Node(interface = fsl.Split(dimension="z"), name="slice_dwi")
slice_mask = pe.Node(interface = fsl.Split(dimension="z"),
name="slice_mask")
preproc = pe.Workflow(name="preproc")
preproc.connect([(inputnode, mask_dwi, [('dwi', 'in_file')]),
(inputnode, mask_dwi, [('mask', 'in_file2')]),
(mask_dwi, slice_dwi, [('out_file', 'in_file')]),
(inputnode, slice_mask, [('mask', 'in_file')])
])
desc="a list of nifti files to be categorized, matched up, etc.",
copyfile=False)
series_map = traits.Dict(
key_trait=traits.Str(),
value_trait=traits.List(),
value = {},
mandatory=False,
usedefault=True,
desc="keys are any member of SCAN_TYPES, values are lists of series\
descriptions as recorded in DICOM headers.")
dicom_info = traits.List(
mandatory=True,
desc="one dict for each series in the session, in the order they were\
run. each dict should contain at least the series_num (int) and\
the series_desc (str).")
ep_echo_spacing = traits.Either(traits.Enum("NONE"), traits.Float(),
desc="""
The effective echo spacing of your BOLD images. Already accounts
for whether or not iPAT (acceleration in the phase direction) was
used. If you're using acceleration, then the EES is not going to
match the 'Echo Spacing' that Siemen's reports in the console.
Setting this value will prevent any attempt to derive it.""")
ep_unwarp_dir = traits.Enum("x", "x-", "-x", "y", "y-", "-y", "z", "z-", "-z",
desc="Setting this value will prevent any attempt to derive it.")
block_struct_averaging = traits.Bool(False,
mandatory=False, usedefault=True,
desc="""
Causes us to only use the first t1 and t2 images. A kludge for
some data that fails during structural averaging.""")
ep_fieldmap_selection = traits.Enum("first","most_recent",
mandatory=False, usedefault=True,
.. admonition:: References
.. [Jeurissen2014] Jeurissen B. et al., `Multi-tissue constrained
spherical deconvolution for improved analysis of multi-shell diffusion
MRI data `_.squeue
NeuroImage (2014). doi: 10.1016/j.neuroimage.2014.07.061
Example
-------
>>> from nipype.workflows.dmri.fsl.artifacts import remove_bias
>>> bias = remove_bias()
>>> bias.inputs.inputnode.in_file = 'epi.nii'
>>> bias.inputs.inputnode.in_bval = 'diffusion.bval'
>>> bias.inputs.inputnode.in_mask = 'mask.nii'
>>> bias.run() # doctest: +SKIP
"""
inputnode = pe.Node(niu.IdentityInterface(
fields=['in_file']), name='inputnode')
outputnode = pe.Node(niu.IdentityInterface(fields=['out_file','b0_mask']),
name='outputnode')
getb0 = pe.Node(fsl.ExtractROI(t_min=0, t_size=1), name='get_b0')
mask_b0 = pe.Node(fsl.BET(frac=0.3, mask=True, robust=True), name='mask_b0')
n4 = pe.Node(ants.N4BiasFieldCorrection(
dimension=3, save_bias=True, bspline_fitting_distance=600),
name='Bias_b0')
split = pe.Node(fsl.Split(dimension='t'), name='SplitDWIs')
mult = pe.MapNode(fsl.MultiImageMaths(op_string='-div %s'),
iterfield=['in_file'], name='RemoveBiasOfDWIs')
thres = pe.MapNode(fsl.Threshold(thresh=0.0), iterfield=['in_file'],
inputnode.in_file
inputnode.ref_num
Outputs::
outputnode.eddy_corrected
"""
warnings.warn(
('This workflow is deprecated from v.1.0.0, use '
'nipype.workflows.dmri.preprocess.epi.ecc_pipeline instead'),
DeprecationWarning)
inputnode = pe.Node(
niu.IdentityInterface(fields=['in_file', 'ref_num']), name='inputnode')
pipeline = pe.Workflow(name=name)
split = pe.Node(fsl.Split(dimension='t'), name='split')
pick_ref = pe.Node(niu.Select(), name='pick_ref')
coregistration = pe.MapNode(
fsl.FLIRT(no_search=True, padding_size=1, interp='trilinear'),
name='coregistration',
iterfield=['in_file'])
merge = pe.Node(fsl.Merge(dimension='t'), name='merge')
outputnode = pe.Node(
niu.IdentityInterface(fields=['eddy_corrected']), name='outputnode')
pipeline.connect([(inputnode, split, [('in_file', 'in_file')]),
(split, pick_ref,
[('out_files', 'inlist')]), (inputnode, pick_ref,
from nipype.workflows.dmri.fsl.utils import _checkinitxfm
from nipype.workflows.dmri.fsl.utils import enhance
inputnode = pe.Node(niu.IdentityInterface(fields=['reference',
'in_file', 'ref_mask', 'in_xfms', 'in_bval']),
name='inputnode')
initmat = pe.Node(niu.Function(input_names=['in_bval', 'in_xfms',
'excl_nodiff'], output_names=['init_xfms'],
function=_checkinitxfm), name='InitXforms')
initmat.inputs.excl_nodiff = excl_nodiff
dilate = pe.Node(fsl.maths.MathsCommand(nan2zeros=True,
args='-kernel sphere 5 -dilM'), name='MskDilate')
split = pe.Node(fsl.Split(dimension='t'), name='SplitDWIs')
n4 = pe.Node(ants.N4BiasFieldCorrection(dimension=3), name='Bias')
flirt = pe.MapNode(fsl.FLIRT(**flirt_param), name='CoRegistration',
iterfield=['in_file', 'in_matrix_file'])
thres = pe.MapNode(fsl.Threshold(thresh=0.0), iterfield=['in_file'],
name='RemoveNegative')
merge = pe.Node(fsl.Merge(dimension='t'), name='MergeDWIs')
outputnode = pe.Node(niu.IdentityInterface(fields=['out_file',
'out_xfms', 'out_ref']), name='outputnode')
enhb0 = pe.Node(niu.Function(
input_names=['in_file', 'in_mask', 'clip_limit'],
output_names=['out_file'], function=enhance), name='B0Equalize')
enhb0.inputs.clip_limit = 0.015
enhdw = pe.MapNode(niu.Function(
input_names=['in_file', 'in_mask'], output_names=['out_file'],
function=enhance), name='DWEqualize', iterfield=['in_file'])
# enhb0.inputs.clip_limit = clip_limit
getb0 = pe.Node(fsl.ExtractROI(t_min=0, t_size=1), name='get_b0')
pick_dws = pe.Node(niu.Function(
input_names=['in_dwi', 'in_bval', 'b'], output_names=['out_file'],
function=extract_bval), name='extract_dwi')
pick_dws.inputs.b = 'diff'
flirt = dwi_flirt(flirt_param=params, excl_nodiff=True)
mult = pe.MapNode(fsl.BinaryMaths(operation='mul'), name='ModulateDWIs',
iterfield=['in_file', 'operand_value'])
thres = pe.MapNode(fsl.Threshold(thresh=0.0), iterfield=['in_file'],
name='RemoveNegative')
split = pe.Node(fsl.Split(dimension='t'), name='SplitDWIs')
get_mat = pe.Node(niu.Function(
input_names=['in_bval', 'in_xfms'], output_names=['out_files'],
function=recompose_xfm), name='GatherMatrices')
merge = pe.Node(niu.Function(
input_names=['in_dwi', 'in_bval', 'in_corrected'],
output_names=['out_file'], function=recompose_dwi), name='MergeDWIs')
merged_volumes = pe.Node(niu.Function(input_names=['in_file1', 'in_file2'], output_names=['out_file'], function=merge_volumes_tdim), name='merge_enhanced_ref_dwis')
outputnode = pe.Node(niu.IdentityInterface(
fields=['out_file', 'out_xfms']), name='outputnode')
wf = pe.Workflow(name=name)
wf.connect([
(inputnode, getb0, [('in_file', 'in_file')]),
(inputnode, pick_dws, [('in_file', 'in_dwi'),
('in_bval', 'in_bval')]),