Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
from ..interfaces.reports import AboutSummary, SubjectSummary
if name in ('single_subject_wf', 'single_subject_smripreptest_wf'):
# for documentation purposes
subject_data = {
't1w': ['/completely/made/up/path/sub-01_T1w.nii.gz'],
}
else:
subject_data = collect_data(layout, subject_id, bids_filters=bids_filters)[0]
if not subject_data['t1w']:
raise Exception("No T1w images found for participant {}. "
"All workflows require T1w images.".format(subject_id))
workflow = Workflow(name=name)
workflow.__desc__ = """
Results included in this manuscript come from preprocessing
performed using *sMRIPprep* {smriprep_ver}
(@fmriprep1; @fmriprep2; RRID:SCR_016216),
which is based on *Nipype* {nipype_ver}
(@nipype1; @nipype2; RRID:SCR_002502).
""".format(smriprep_ver=__version__, nipype_ver=nipype_ver)
workflow.__postdesc__ = """
For more details of the pipeline, see [the section corresponding
to workflows in *sMRIPrep*'s documentation]\
(https://smriprep.readthedocs.io/en/latest/workflows.html \
"sMRIPrep's documentation").
in_file
Anatomical, merged T1w image after INU correction
subjects_dir
FreeSurfer SUBJECTS_DIR
subject_id
FreeSurfer subject ID
fsnative2t1w_xfm
LTA-style affine matrix translating from FreeSurfer-conformed subject space to T1w
Outputs
-------
out_file
The selected segmentation, after resampling in native space
"""
workflow = Workflow(name='%s_%s' % (name, segmentation))
inputnode = pe.Node(
niu.IdentityInterface(['in_file', 'subjects_dir', 'subject_id', 'fsnative2t1w_xfm']),
name='inputnode')
outputnode = pe.Node(niu.IdentityInterface(['out_file']), name='outputnode')
# Extract the aseg and aparc+aseg outputs
fssource = pe.Node(nio.FreeSurferSource(), name='fs_datasource')
# Resample from T1.mgz to T1w.nii.gz, applying any offset in fsnative2t1w_xfm,
# and convert to NIfTI while we're at it
resample = pe.Node(fs.ApplyVolTransform(transformed_file='seg.nii.gz'), name='resample')
if segmentation.startswith('aparc'):
if segmentation == 'aparc_aseg':
def _sel(x): return [parc for parc in x if 'aparc+' in parc][0] # noqa
elif segmentation == 'aparc_a2009s':
def _sel(x): return [parc for parc in x if 'a2009s+' in parc][0] # noqa
elif segmentation == 'aparc_dkt':
------
subjects_dir
FreeSurfer SUBJECTS_DIR
subject_id
FreeSurfer subject ID
fsnative2t1w_xfm
LTA formatted affine transform file (inverse)
Outputs
-------
surfaces
GIFTI surfaces for gray/white matter boundary, pial surface,
midthickness (or graymid) surface, and inflated surfaces
"""
workflow = Workflow(name=name)
inputnode = pe.Node(niu.IdentityInterface(['subjects_dir', 'subject_id',
'fsnative2t1w_xfm']),
name='inputnode')
outputnode = pe.Node(niu.IdentityInterface(['surfaces']), name='outputnode')
get_surfaces = pe.Node(nio.FreeSurferSource(), name='get_surfaces')
midthickness = pe.MapNode(
MakeMidthickness(thickness=True, distance=0.5, out_name='midthickness'),
iterfield='in_file',
name='midthickness')
save_midthickness = pe.Node(nio.DataSink(parameterization=False),
name='save_midthickness')
def init_pepolar_estimate_wf(debug=False, generate_report=True, name="pepolar_estimate_wf"):
"""Initialize a barebones TOPUP implementation."""
from nipype.interfaces.afni import Automask
from nipype.interfaces.fsl.epi import TOPUP
from niworkflows.interfaces.nibabel import MergeSeries
from sdcflows.interfaces.fmap import get_trt
from ...interfaces.images import RescaleB0
wf = Workflow(name=name)
inputnode = pe.Node(niu.IdentityInterface(fields=["metadata", "in_data"]),
name="inputnode")
outputnode = pe.Node(niu.IdentityInterface(fields=["fieldmap", "corrected", "corrected_mask"]),
name="outputnode")
concat_blips = pe.Node(MergeSeries(), name="concat_blips")
readout_time = pe.MapNode(niu.Function(
input_names=["in_meta", "in_file"], function=get_trt), name="readout_time",
iterfield=["in_meta", "in_file"], run_without_submitting=True
)
topup = pe.Node(TOPUP(config=_pkg_fname(
"dmriprep", f"data/flirtsch/b02b0{'_quick' * debug}.cnf")), name="topup")
pre_mask = pe.Node(Automask(dilate=1, outputtype="NIFTI_GZ"),
def init_reportlets_wf(output_dir, name='reportlets_wf'):
"""Set up a battery of datasinks to store reports in the right location."""
from niworkflows.interfaces.masks import SimpleShowMaskRPT
workflow = Workflow(name=name)
inputnode = pe.Node(niu.IdentityInterface(
fields=['source_file', 'dwi_ref', 'dwi_mask',
'validation_report']),
name='inputnode')
mask_reportlet = pe.Node(SimpleShowMaskRPT(), name='mask_reportlet')
ds_report_mask = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='brain', suffix='mask',
datatype="figures"),
name='ds_report_mask', run_without_submitting=True)
ds_report_validation = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='validation', datatype="figures"),
name='ds_report_validation', run_without_submitting=True)
workflow.connect([
The ``moving_mask`` in template space (matches ``standardized`` output).
std_dseg
The ``moving_segmentation`` in template space (matches ``standardized``
output).
std_tpms
The ``moving_tpms`` in template space (matches ``standardized`` output).
template
Template name extracted from the input parameter ``template``, for further
use in downstream nodes.
template_spec
Template specifications extracted from the input parameter ``template``, for
further use in downstream nodes.
"""
ntpls = len(templates)
workflow = Workflow('anat_norm_wf')
if templates:
workflow.__desc__ = """\
Volume-based spatial normalization to {targets} ({targets_id}) was performed through
nonlinear registration with `antsRegistration` (ANTs {ants_ver}),
using brain-extracted versions of both T1w reference and the T1w template.
The following template{tpls} selected for spatial normalization:
""".format(
ants_ver=ANTsInfo.version() or '(version unknown)',
targets='%s standard space%s' % (defaultdict(
'several'.format, {1: 'one', 2: 'two', 3: 'three', 4: 'four'})[ntpls],
's' * (ntpls != 1)),
targets_id=', '.join(templates),
tpls=(' was', 's were')[ntpls != 1]
)
Inputs
------
t1w
List of T1-weighted structural images
Outputs
-------
t1w_ref
Structural reference averaging input T1w images, defining the T1w space.
t1w_realign_xfm
List of affine transforms to realign input T1w images
out_report
Conformation report
"""
workflow = Workflow(name=name)
if num_t1w > 1:
workflow.__desc__ = """\
A T1w-reference map was computed after registration of
{num_t1w} T1w images (after INU-correction) using
`mri_robust_template` [FreeSurfer {fs_ver}, @fs_template].
""".format(num_t1w=num_t1w, fs_ver=fs.Info().looseversion() or '')
inputnode = pe.Node(niu.IdentityInterface(fields=['t1w']), name='inputnode')
outputnode = pe.Node(niu.IdentityInterface(
fields=['t1w_ref', 't1w_valid_list', 't1w_realign_xfm', 'out_report']),
name='outputnode')
# 0. Reorient T1w image(s) to RAS and resample to common voxel space
t1w_ref_dimensions = pe.Node(TemplateDimensions(), name='t1w_ref_dimensions')
t1w_conform = pe.MapNode(Conform(), iterfield='in_file', name='t1w_conform')
Reference image
ref_image
Contrast-enhanced reference image
ref_image_brain
Skull-stripped reference image
dwi_mask
Skull-stripping mask of reference image
validation_report
HTML reportlet indicating whether ``dwi_file`` had a valid affine
See Also
--------
* :py:func:`~dmriprep.workflows.dwi.util.init_enhance_and_skullstrip_wf`
"""
workflow = Workflow(name=name)
inputnode = pe.Node(niu.IdentityInterface(fields=['dwi_file', 'b0_ixs']),
name='inputnode')
outputnode = pe.Node(
niu.IdentityInterface(fields=['dwi_file', 'raw_ref_image', 'ref_image',
'ref_image_brain',
'dwi_mask', 'validation_report']),
name='outputnode')
validate = pe.Node(ValidateImage(), name='validate', mem_gb=mem_gb)
extract_b0 = pe.Node(ExtractB0(), name='extract_b0')
reg_b0 = pe.Node(fsl.MCFLIRT(ref_vol=0, interpolation='sinc'), name='reg_b0')
pre_mask = pe.Node(afni.Automask(dilate=1, outputtype='NIFTI_GZ'),
't1w': ['/completely/made/up/path/sub-01_T1w.nii.gz'],
'dwi': ['/completely/made/up/path/sub-01_dwi.nii.gz']
}
else:
subject_data = collect_data(layout, subject_id)[0]
# Make sure we always go through these two checks
if not anat_only and subject_data['dwi'] == []:
raise Exception("No DWI data found for participant {}. "
"All workflows require DWI images.".format(subject_id))
if not subject_data['t1w']:
raise Exception("No T1w images found for participant {}. "
"All workflows require T1w images.".format(subject_id))
workflow = Workflow(name=name)
workflow.__desc__ = """
Results included in this manuscript come from preprocessing
performed using *dMRIPrep* {dmriprep_ver}
(@dmriprep; RRID:SCR_017412),
which is based on *Nipype* {nipype_ver}
(@nipype1; @nipype2; RRID:SCR_002502).
""".format(dmriprep_ver=__version__, nipype_ver=nipype_ver)
workflow.__postdesc__ = """
For more details of the pipeline, see [the section corresponding
to workflows in *dMRIPrep*'s documentation]\
(https://nipreps.github.io/dmriprep/{dmriprep_ver}/workflows.html \
"dMRIPrep's documentation").