Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
run_without_submitting=True)
summary = pe.Node(SubjectSummary(output_spaces=spaces.get_spaces(nonstandard=False)),
name='summary', run_without_submitting=True)
about = pe.Node(AboutSummary(version=__version__,
command=' '.join(sys.argv)),
name='about', run_without_submitting=True)
ds_report_summary = pe.Node(
DerivativesDataSink(base_directory=output_dir, dismiss_entities=("session",),
desc='summary', datatype="figures"),
name='ds_report_summary', run_without_submitting=True)
ds_report_about = pe.Node(
DerivativesDataSink(base_directory=output_dir, dismiss_entities=("session",),
desc='about', datatype="figures"),
name='ds_report_about', run_without_submitting=True)
# Preprocessing of T1w (includes registration to MNI)
anat_preproc_wf = init_anat_preproc_wf(
bids_root=layout.root,
debug=debug,
existing_derivatives=deriv_cache,
freesurfer=freesurfer,
hires=hires,
longitudinal=longitudinal,
name="anat_preproc_wf",
t1w=subject_data['t1w'],
omp_nthreads=omp_nthreads,
output_dir=output_dir,
skull_strip_fixed_seed=skull_strip_fixed_seed,
(inputnode, ds_std_tpms, [
('std_tpms', 'in_file'),
(('template', _fmt_cohort), 'space')]),
(t1w_name, ds_t1w_tpl_warp, [('out', 'source_file')]),
(t1w_name, ds_t1w_tpl_inv_warp, [('out', 'source_file')]),
(t1w_name, ds_t1w_tpl, [('out', 'source_file')]),
(t1w_name, ds_std_mask, [('out', 'source_file')]),
(t1w_name, ds_std_dseg, [('out', 'source_file')]),
(t1w_name, ds_std_tpms, [('out', 'source_file')]),
])
if num_t1w > 1:
# Please note the dictionary unpacking to provide the from argument.
# It is necessary because from is a protected keyword (not allowed as argument name).
ds_t1w_ref_xfms = pe.MapNode(
DerivativesDataSink(base_directory=output_dir, to='T1w', mode='image', suffix='xfm',
extension='txt', **{'from': 'orig'}),
iterfield=['source_file', 'in_file'],
name='ds_t1w_ref_xfms', run_without_submitting=True)
workflow.connect([
(inputnode, ds_t1w_ref_xfms, [('source_files', 'source_file'),
('t1w_ref_xfms', 'in_file')]),
])
if not freesurfer:
return workflow
from niworkflows.interfaces.nitransforms import ConcatenateXFMs
from niworkflows.interfaces.surf import Path2BIDS
# FS native space transforms
lta2itk_fwd = pe.Node(ConcatenateXFMs(), name='lta2itk_fwd', run_without_submitting=True)
name='ds_t1w_mask', run_without_submitting=True)
ds_t1w_mask.inputs.Type = 'Brain'
ds_t1w_dseg = pe.Node(
DerivativesDataSink(base_directory=output_dir, suffix='dseg', compress=True,
dismiss_entities=("session",)),
name='ds_t1w_dseg', run_without_submitting=True)
ds_t1w_tpms = pe.Node(
DerivativesDataSink(base_directory=output_dir, suffix='probseg', compress=True,
dismiss_entities=("session",)),
name='ds_t1w_tpms', run_without_submitting=True)
ds_t1w_tpms.inputs.label = tpm_labels
ds_t1w_tpl = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='preproc', keep_dtype=True,
compress=True, dismiss_entities=("session",)),
name='ds_t1w_tpl', run_without_submitting=True)
ds_t1w_tpl.inputs.SkullStripped = True
ds_std_mask = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='brain', suffix='mask',
compress=True, dismiss_entities=("session",)),
name='ds_std_mask', run_without_submitting=True)
ds_std_mask.inputs.Type = 'Brain'
ds_std_dseg = pe.Node(
DerivativesDataSink(base_directory=output_dir, suffix='dseg',
compress=True, dismiss_entities=("session",)),
name='ds_std_dseg', run_without_submitting=True)
ds_std_tpms = pe.Node(
name='ds_t1w_preproc', run_without_submitting=True)
ds_t1w_preproc.inputs.SkullStripped = False
ds_t1w_mask = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='brain', suffix='mask',
compress=True, dismiss_entities=("session",)),
name='ds_t1w_mask', run_without_submitting=True)
ds_t1w_mask.inputs.Type = 'Brain'
ds_t1w_dseg = pe.Node(
DerivativesDataSink(base_directory=output_dir, suffix='dseg', compress=True,
dismiss_entities=("session",)),
name='ds_t1w_dseg', run_without_submitting=True)
ds_t1w_tpms = pe.Node(
DerivativesDataSink(base_directory=output_dir, suffix='probseg', compress=True,
dismiss_entities=("session",)),
name='ds_t1w_tpms', run_without_submitting=True)
ds_t1w_tpms.inputs.label = tpm_labels
ds_t1w_tpl = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='preproc', keep_dtype=True,
compress=True, dismiss_entities=("session",)),
name='ds_t1w_tpl', run_without_submitting=True)
ds_t1w_tpl.inputs.SkullStripped = True
ds_std_mask = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='brain', suffix='mask',
compress=True, dismiss_entities=("session",)),
name='ds_std_mask', run_without_submitting=True)
ds_std_mask.inputs.Type = 'Brain'
compress=True, dismiss_entities=("session",)),
name='ds_std_tpms', run_without_submitting=True)
# CRITICAL: the sequence of labels here (CSF-GM-WM) is that of the output of FSL-FAST
# (intensity mean, per tissue). This order HAS to be matched also by the ``tpms``
# output in the data/io_spec.json file.
ds_std_tpms.inputs.label = tpm_labels
# Transforms
ds_t1w_tpl_inv_warp = pe.Node(
DerivativesDataSink(base_directory=output_dir, to='T1w', mode='image', suffix='xfm',
dismiss_entities=("session",)),
name='ds_t1w_tpl_inv_warp', run_without_submitting=True)
ds_t1w_tpl_warp = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', suffix='xfm',
dismiss_entities=("session",), **{'from': 'T1w'}),
name='ds_t1w_tpl_warp', run_without_submitting=True)
workflow.connect([
(inputnode, t1w_name, [('source_files', 'in_files')]),
(inputnode, raw_sources, [('source_files', 'in_files')]),
(inputnode, ds_t1w_preproc, [('t1w_preproc', 'in_file')]),
(inputnode, ds_t1w_mask, [('t1w_mask', 'in_file')]),
(inputnode, ds_t1w_tpms, [('t1w_tpms', 'in_file')]),
(inputnode, ds_t1w_dseg, [('t1w_dseg', 'in_file')]),
(t1w_name, ds_t1w_preproc, [('out', 'source_file')]),
(t1w_name, ds_t1w_mask, [('out', 'source_file')]),
(t1w_name, ds_t1w_dseg, [('out', 'source_file')]),
(t1w_name, ds_t1w_tpms, [('out', 'source_file')]),
(raw_sources, ds_t1w_mask, [('out', 'RawSources')]),
# Template
compress=True, dismiss_entities=("session",)),
name='ds_std_dseg', run_without_submitting=True)
ds_std_tpms = pe.Node(
DerivativesDataSink(base_directory=output_dir, suffix='probseg',
compress=True, dismiss_entities=("session",)),
name='ds_std_tpms', run_without_submitting=True)
# CRITICAL: the sequence of labels here (CSF-GM-WM) is that of the output of FSL-FAST
# (intensity mean, per tissue). This order HAS to be matched also by the ``tpms``
# output in the data/io_spec.json file.
ds_std_tpms.inputs.label = tpm_labels
# Transforms
ds_t1w_tpl_inv_warp = pe.Node(
DerivativesDataSink(base_directory=output_dir, to='T1w', mode='image', suffix='xfm',
dismiss_entities=("session",)),
name='ds_t1w_tpl_inv_warp', run_without_submitting=True)
ds_t1w_tpl_warp = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', suffix='xfm',
dismiss_entities=("session",), **{'from': 'T1w'}),
name='ds_t1w_tpl_warp', run_without_submitting=True)
workflow.connect([
(inputnode, t1w_name, [('source_files', 'in_files')]),
(inputnode, raw_sources, [('source_files', 'in_files')]),
(inputnode, ds_t1w_preproc, [('t1w_preproc', 'in_file')]),
(inputnode, ds_t1w_mask, [('t1w_mask', 'in_file')]),
(inputnode, ds_t1w_tpms, [('t1w_tpms', 'in_file')]),
(inputnode, ds_t1w_dseg, [('t1w_dseg', 'in_file')]),
(t1w_name, ds_t1w_preproc, [('out', 'source_file')]),
('brain_mask', 'mask_file')]),
(norm_msk, norm_rpt, [('before', 'before'),
('after', 'after')]),
(inputnode, ds_std_t1w_report, [
(('template', _fmt_cohort), 'space'),
('source_file', 'source_file')]),
(norm_rpt, ds_std_t1w_report, [('out_report', 'in_file')]),
])
if freesurfer:
from ..interfaces.reports import FSSurfaceReport
recon_report = pe.Node(FSSurfaceReport(), name='recon_report')
recon_report.interface._always_run = True
ds_recon_report = pe.Node(
DerivativesDataSink(
base_directory=output_dir, desc='reconall', datatype="figures",
dismiss_entities=("session",)),
name='ds_recon_report', run_without_submitting=True)
workflow.connect([
(inputnode, recon_report, [('subjects_dir', 'subjects_dir'),
('subject_id', 'subject_id')]),
(recon_report, ds_recon_report, [('out_report', 'in_file')]),
(inputnode, ds_recon_report, [('source_file', 'source_file')])
])
return workflow
workflow.connect([
(inputnode, ds_t1w_ref_xfms, [('source_files', 'source_file'),
('t1w_ref_xfms', 'in_file')]),
])
if not freesurfer:
return workflow
from niworkflows.interfaces.nitransforms import ConcatenateXFMs
from niworkflows.interfaces.surf import Path2BIDS
# FS native space transforms
lta2itk_fwd = pe.Node(ConcatenateXFMs(), name='lta2itk_fwd', run_without_submitting=True)
lta2itk_inv = pe.Node(ConcatenateXFMs(), name='lta2itk_inv', run_without_submitting=True)
ds_t1w_fsnative = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', to='fsnative', suffix='xfm',
extension="txt", dismiss_entities=("session",), **{'from': 'T1w'}),
name='ds_t1w_fsnative', run_without_submitting=True)
ds_fsnative_t1w = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', to='T1w', suffix='xfm',
extension="txt",
dismiss_entities=("session",), **{'from': 'fsnative'}),
name='ds_fsnative_t1w', run_without_submitting=True)
# Surfaces
name_surfs = pe.MapNode(Path2BIDS(), iterfield='in_file', name='name_surfs',
run_without_submitting=True)
ds_surfs = pe.MapNode(
DerivativesDataSink(base_directory=output_dir, extension=".surf.gii",
dismiss_entities=("session",)),
iterfield=['in_file', 'hemi', 'suffix'], name='ds_surfs', run_without_submitting=True)
# Parcellations
ds_t1w_fsaseg = pe.Node(
lta2itk_fwd = pe.Node(ConcatenateXFMs(), name='lta2itk_fwd', run_without_submitting=True)
lta2itk_inv = pe.Node(ConcatenateXFMs(), name='lta2itk_inv', run_without_submitting=True)
ds_t1w_fsnative = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', to='fsnative', suffix='xfm',
extension="txt", dismiss_entities=("session",), **{'from': 'T1w'}),
name='ds_t1w_fsnative', run_without_submitting=True)
ds_fsnative_t1w = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', to='T1w', suffix='xfm',
extension="txt",
dismiss_entities=("session",), **{'from': 'fsnative'}),
name='ds_fsnative_t1w', run_without_submitting=True)
# Surfaces
name_surfs = pe.MapNode(Path2BIDS(), iterfield='in_file', name='name_surfs',
run_without_submitting=True)
ds_surfs = pe.MapNode(
DerivativesDataSink(base_directory=output_dir, extension=".surf.gii",
dismiss_entities=("session",)),
iterfield=['in_file', 'hemi', 'suffix'], name='ds_surfs', run_without_submitting=True)
# Parcellations
ds_t1w_fsaseg = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='aseg', suffix='dseg',
compress=True, dismiss_entities=("session",)),
name='ds_t1w_fsaseg', run_without_submitting=True)
ds_t1w_fsparc = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='aparcaseg', suffix='dseg',
compress=True, dismiss_entities=("session",)),
name='ds_t1w_fsparc', run_without_submitting=True)
workflow.connect([
(inputnode, lta2itk_fwd, [('t1w2fsnative_xfm', 'in_xfms')]),
(inputnode, lta2itk_inv, [('fsnative2t1w_xfm', 'in_xfms')]),
(t1w_name, ds_t1w_fsnative, [('out', 'source_file')]),
name='ds_t1w_fsnative', run_without_submitting=True)
ds_fsnative_t1w = pe.Node(
DerivativesDataSink(base_directory=output_dir, mode='image', to='T1w', suffix='xfm',
extension="txt",
dismiss_entities=("session",), **{'from': 'fsnative'}),
name='ds_fsnative_t1w', run_without_submitting=True)
# Surfaces
name_surfs = pe.MapNode(Path2BIDS(), iterfield='in_file', name='name_surfs',
run_without_submitting=True)
ds_surfs = pe.MapNode(
DerivativesDataSink(base_directory=output_dir, extension=".surf.gii",
dismiss_entities=("session",)),
iterfield=['in_file', 'hemi', 'suffix'], name='ds_surfs', run_without_submitting=True)
# Parcellations
ds_t1w_fsaseg = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='aseg', suffix='dseg',
compress=True, dismiss_entities=("session",)),
name='ds_t1w_fsaseg', run_without_submitting=True)
ds_t1w_fsparc = pe.Node(
DerivativesDataSink(base_directory=output_dir, desc='aparcaseg', suffix='dseg',
compress=True, dismiss_entities=("session",)),
name='ds_t1w_fsparc', run_without_submitting=True)
workflow.connect([
(inputnode, lta2itk_fwd, [('t1w2fsnative_xfm', 'in_xfms')]),
(inputnode, lta2itk_inv, [('fsnative2t1w_xfm', 'in_xfms')]),
(t1w_name, ds_t1w_fsnative, [('out', 'source_file')]),
(lta2itk_fwd, ds_t1w_fsnative, [('out_xfm', 'in_file')]),
(t1w_name, ds_fsnative_t1w, [('out', 'source_file')]),
(lta2itk_inv, ds_fsnative_t1w, [('out_xfm', 'in_file')]),
(inputnode, name_surfs, [('surfaces', 'in_file')]),
(inputnode, ds_surfs, [('surfaces', 'in_file')]),