Source code for dmriprep.workflows.dwi.artifacts

# -*- coding: utf-8 -*-

"""
Artefact removal and resizing
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. autofunction:: init_dwi_artifacts_wf

"""

from nipype.pipeline import engine as pe
from nipype.interfaces import utility as niu

from ...interfaces import mrtrix3


[docs]def init_dwi_artifacts_wf(ignore, output_resolution): """ This workflow performs denoising and unringing on the input dwi image. .. workflow:: :graph2use: orig :simple_form: yes from dmriprep.workflows.dwi import init_dwi_artifacts_wf wf = init_dwi_artifacts_wf(ignore=[], output_resolution=(1, 1, 1)) **Parameters** ignore : :obj:`list` List of artefact removal steps to skip (default: []) **Inputs** dwi_file : :obj:`str` dwi NIfTI file **Outputs** out_file : :obj:`str` dwi NIfTI file after artefact removal """ wf = pe.Workflow(name='dwi_artifacts_wf') inputnode = pe.Node(niu.IdentityInterface(fields=['dwi_file']), name='inputnode') outputnode = pe.Node(niu.IdentityInterface(fields=['out_file']), name='outputnode') dwibuffer = pe.Node(niu.IdentityInterface(fields=['dwi_file']), name='dwibuffer') denoise = pe.Node(mrtrix3.DWIDenoise(), name='denoise') unring = pe.Node(mrtrix3.MRDeGibbs(), name='unring') resize = pe.Node(mrtrix3.MRResize(), name='resize') if ignore == ['denoising']: wf.connect([ (inputnode, unring, [('dwi_file', 'in_file')]), (unring, dwibuffer, [('out_file', 'dwi_file')]) ]) elif ignore == ['unringing']: wf.connect([ (inputnode, denoise, [('dwi_file', 'in_file')]), (denoise, dwibuffer, [('out_file', 'dwi_file')]) ]) elif ['denoising', 'unringing'] in ignore: wf.connect([ (inputnode, dwibuffer, 'dwi_file', 'dwi_file') ]) else: wf.connect([ (inputnode, denoise, [('dwi_file', 'in_file')]), (denoise, unring, [('out_file', 'in_file')]), (unring, dwibuffer, [('out_file', 'dwi_file')]) ]) if output_resolution: resize.inputs.voxel_size = output_resolution wf.connect([ (dwibuffer, resize, [('dwi_file', 'in_file')]), (resize, outputnode, [('out_file', 'out_file')]) ]) else: wf.connect([ (dwibuffer, outputnode, [('dwi_file', 'out_file')]) ]) return wf