Skip to content

Commit 18206af

Browse files
authored
Merge pull request #1893 from FCP-INDI/bugfix/fs_ingress
Fix bugs in FreeSurfer tissue seg option
2 parents 5f5619b + 217f9e6 commit 18206af

File tree

2 files changed

+12
-134
lines changed

2 files changed

+12
-134
lines changed

CPAC/pipeline/cpac_pipeline.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1039,7 +1039,8 @@ def build_segmentation_stack(rpool, cfg, pipeline_blocks=None):
10391039
not rpool.check_rpool('label-WM_mask'):
10401040
seg_blocks = [
10411041
[tissue_seg_fsl_fast,
1042-
tissue_seg_ants_prior]
1042+
tissue_seg_ants_prior,
1043+
tissue_seg_freesurfer]
10431044
]
10441045
if 'T1_Template' in cfg.segmentation['tissue_segmentation'][
10451046
'Template_Based']['template_for_segmentation']:

CPAC/seg_preproc/seg_preproc.py

Lines changed: 10 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -414,116 +414,6 @@ def create_seg_preproc_antsJointLabel_method(
414414
return preproc
415415

416416

417-
# def create_seg_preproc_freesurfer(config=None,
418-
# wf_name='seg_preproc_freesurfer',
419-
# pipe_num=0):
420-
# """
421-
# Generate the subject's segmentations based on freesurfer.
422-
423-
# Parameters
424-
# ----------
425-
# config : CPAC.utils.configuration.Configuration
426-
427-
# wf_name : string
428-
# name of the workflow
429-
430-
# pipe_num : int
431-
432-
# Returns
433-
# -------
434-
# seg_preproc_freesurfer : workflow
435-
# workflow object for segmentation workflow
436-
437-
# hemisphere_outputs : dict
438-
# hemisphere-specific FreeSurfer outputs
439-
440-
# Notes
441-
# -----
442-
443-
# Workflow Inputs: ::
444-
445-
# inputspec.subject_dir : string (existing nifti file)
446-
# FreeSurfer autorecon1 dir
447-
448-
# Workflow Outputs: ::
449-
450-
# outputspec.wm_mask : string (nifti file)
451-
# outputs White Matter mask
452-
# """
453-
# preproc = pe.Workflow(name=wf_name)
454-
455-
# inputnode = pe.Node(util.IdentityInterface(fields=['subject_dir']),
456-
# name='inputspec')
457-
458-
# outputnode = pe.Node(util.IdentityInterface(fields=['wm_mask',
459-
# 'gm_mask',
460-
# 'csf_mask',
461-
# 'subject_id']),
462-
# name='outputspec')
463-
464-
# reconall2 = pe.Node(interface=freesurfer.ReconAll(),
465-
# name='anat_autorecon2')
466-
467-
# reconall2.inputs.directive = 'autorecon2'
468-
# reconall2.inputs.openmp = config.pipeline_setup['system_config'][
469-
# 'num_omp_threads']
470-
471-
# preproc.connect(inputnode, 'subject_dir',
472-
# reconall2, 'subjects_dir')
473-
474-
# preproc.connect(reconall2, 'subject_id',
475-
# outputnode, 'subject_id')
476-
477-
# # register FS segmentations (aseg.mgz) to native space
478-
# fs_aseg_to_native = pe.Node(interface=freesurfer.ApplyVolTransform(),
479-
# name='fs_aseg_to_native')
480-
481-
# fs_aseg_to_native.inputs.reg_header = True
482-
# fs_aseg_to_native.inputs.interp = 'nearest'
483-
484-
# preproc.connect(reconall2, 'aseg',
485-
# fs_aseg_to_native, 'source_file')
486-
487-
# preproc.connect(reconall2, 'rawavg',
488-
# fs_aseg_to_native, 'target_file')
489-
490-
# preproc.connect(inputnode, 'subject_dir',
491-
# fs_aseg_to_native, 'subjects_dir')
492-
493-
# # convert registered FS segmentations from .mgz to .nii.gz
494-
# fs_aseg_to_nifti = pe.Node(util.Function(input_names=['in_file'],
495-
# output_names=['out_file'],
496-
# function=mri_convert),
497-
# name='fs_aseg_to_nifti')
498-
499-
# fs_aseg_to_nifti.inputs.args = '-rt nearest'
500-
501-
# preproc.connect(fs_aseg_to_native, 'transformed_file',
502-
# fs_aseg_to_nifti, 'in_file')
503-
504-
# pick_tissue = pe.Node(
505-
# pick_tissue_from_labels_file_interface(
506-
# input_names=['multiatlas_Labels']),
507-
# name=f'{wf_name}_tissue_mask')
508-
509-
# preproc.connect(fs_aseg_to_nifti, 'out_file',
510-
# pick_tissue, 'multiatlas_Labels')
511-
512-
# preproc.connect(pick_tissue, 'wm_mask',
513-
# outputnode, 'wm_mask')
514-
515-
# preproc.connect(pick_tissue, 'gm_mask',
516-
# outputnode, 'gm_mask')
517-
518-
# preproc.connect(pick_tissue, 'csf_mask',
519-
# outputnode, 'csf_mask')
520-
521-
# preproc, hemisphere_outputs = freesurfer_hemispheres(preproc, reconall2,
522-
# pipe_num)
523-
524-
# return preproc, hemisphere_outputs
525-
526-
527417
def tissue_seg_fsl_fast(wf, cfg, strat_pool, pipe_num, opt=None):
528418
'''
529419
{"name": "tissue_seg_fsl_fast",
@@ -934,9 +824,6 @@ def tissue_seg_freesurfer(wf, cfg, strat_pool, pipe_num, opt=None):
934824
name=f'fs_aseg_to_nifti_{pipe_num}')
935825
fs_aseg_to_nifti.inputs.args = '-rt nearest'
936826

937-
wf.connect(fs_aseg_to_native, 'transformed_file',
938-
fs_aseg_to_nifti, 'in_file')
939-
940827
pick_tissue = pe.Node(pick_tissue_from_labels_file_interface(),
941828
name=f'select_fs_tissue_{pipe_num}')
942829

@@ -962,27 +849,17 @@ def tissue_seg_freesurfer(wf, cfg, strat_pool, pipe_num, opt=None):
962849
'in_file')
963850

964851
if erode_tissues:
965-
outputs['label-CSF_mask'] = (erode_tissues['csf'], 'binary_file')
966-
outputs['label-WM_mask'] = (erode_tissues['wm'], 'binary_file')
967-
outputs['label-GM_mask'] = (erode_tissues['gm'], 'binary_file')
852+
outputs = {
853+
'label-CSF_mask': (erode_tissues['csf'], 'binary_file'),
854+
'label-WM_mask': (erode_tissues['wm'], 'binary_file'),
855+
'label-GM_mask': (erode_tissues['gm'], 'binary_file')
856+
}
968857

969858
else:
970-
outputs['label-CSF_mask'] = (pick_tissue, 'csf_mask')
971-
outputs['label-WM_mask'] = (pick_tissue, 'wm_mask')
972-
outputs['label-GM_mask'] = (pick_tissue, 'gm_mask')
973-
974-
fs_seg, hemisphere_outputs = create_seg_preproc_freesurfer(
975-
config=cfg, wf_name=f'seg_preproc_freesurfer_{pipe_num}',
976-
pipe_num=pipe_num)
977-
978-
node, out = strat_pool.get_data('freesurfer-subject-dir')
979-
wf.connect(node, out, fs_seg, 'inputspec.subject_dir')
980-
981-
outputs = {
982-
'label-CSF_mask': (fs_seg, 'outputspec.csf_mask'),
983-
'label-GM_mask': (fs_seg, 'outputspec.gm_mask'),
984-
'label-WM_mask': (fs_seg, 'outputspec.wm_mask'),
985-
**hemisphere_outputs
986-
}
859+
outputs = {
860+
'label-CSF_mask': (pick_tissue, 'csf_mask'),
861+
'label-WM_mask': (pick_tissue, 'wm_mask'),
862+
'label-GM_mask': (pick_tissue, 'gm_mask')
863+
}
987864

988865
return (wf, outputs)

0 commit comments

Comments
 (0)