From f0eff5115d654cc6fb89f1ab402993bcb1ab0cdd Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Sun, 19 Nov 2023 11:15:58 -0500 Subject: [PATCH 1/4] ENH: Add volumetric and CIFTI anatomical outputs --- fmriprep/workflows/base.py | 101 ++++++++++++++++++++++++++++++++++--- 1 file changed, 94 insertions(+), 7 deletions(-) diff --git a/fmriprep/workflows/base.py b/fmriprep/workflows/base.py index ff6f54a59..7a253e6fd 100644 --- a/fmriprep/workflows/base.py +++ b/fmriprep/workflows/base.py @@ -152,7 +152,17 @@ def init_single_subject_wf(subject_id: str): from niworkflows.utils.misc import fix_multi_T1w_source_name from niworkflows.utils.spaces import Reference from smriprep.workflows.anatomical import init_anat_fit_wf - from smriprep.workflows.outputs import init_template_iterator_wf + from smriprep.workflows.outputs import ( + init_ds_anat_volumes_wf, + init_ds_grayord_metrics_wf, + init_ds_surface_metrics_wf, + init_template_iterator_wf, + ) + from smriprep.workflows.surfaces import ( + init_gifti_morphometrics_wf, + init_hcp_morphometrics_wf, + init_morph_grayords_wf, + ) from fmriprep.workflows.bold.base import init_bold_wf @@ -302,10 +312,14 @@ def init_single_subject_wf(subject_id: str): run_without_submitting=True, ) + bids_root = str(config.execution.bids_dir) + fmriprep_dir = str(config.execution.fmriprep_dir) + omp_nthreads = config.nipype.omp_nthreads + # Build the workflow anat_fit_wf = init_anat_fit_wf( - bids_root=str(config.execution.bids_dir), - output_dir=str(config.execution.fmriprep_dir), + bids_root=bids_root, + output_dir=fmriprep_dir, freesurfer=config.workflow.run_reconall, hires=config.workflow.hires, longitudinal=config.workflow.longitudinal, @@ -316,7 +330,7 @@ def init_single_subject_wf(subject_id: str): skull_strip_template=Reference.from_string(config.workflow.skull_strip_template)[0], spaces=spaces, precomputed=anatomical_cache, - omp_nthreads=config.nipype.omp_nthreads, + omp_nthreads=omp_nthreads, sloppy=config.execution.sloppy, skull_strip_fixed_seed=config.workflow.skull_strip_fixed_seed, ) @@ -347,11 +361,30 @@ def init_single_subject_wf(subject_id: str): if config.workflow.level == "full": if spaces.cached.get_spaces(nonstandard=False, dim=(3,)): template_iterator_wf = init_template_iterator_wf(spaces=spaces) + ds_std_volumes_wf = init_ds_anat_volumes_wf( + bids_root=bids_root, + output_dir=fmriprep_dir, + name="ds_std_volumes_wf", + ) workflow.connect([ (anat_fit_wf, template_iterator_wf, [ ('outputnode.template', 'inputnode.template'), ('outputnode.anat2std_xfm', 'inputnode.anat2std_xfm'), ]), + (anat_fit_wf, ds_std_volumes_wf, [ + ('outputnode.t1w_valid_list', 'inputnode.source_files'), + ("outputnode.t1w_preproc", "inputnode.t1w_preproc"), + ("outputnode.t1w_mask", "inputnode.t1w_mask"), + ("outputnode.t1w_dseg", "inputnode.t1w_dseg"), + ("outputnode.t1w_tpms", "inputnode.t1w_tpms"), + ]), + (template_iterator_wf, ds_std_volumes_wf, [ + ("outputnode.std_t1w", "inputnode.ref_file"), + ("outputnode.anat2std_xfm", "inputnode.anat2std_xfm"), + ("outputnode.space", "inputnode.space"), + ("outputnode.cohort", "inputnode.cohort"), + ("outputnode.resolution", "inputnode.resolution"), + ]), ]) # fmt:skip if 'MNI152NLin2009cAsym' in spaces.get_spaces(): @@ -395,6 +428,60 @@ def init_single_subject_wf(subject_id: str): ]), ]) # fmt:skip + # Create CIFTI morphometrics + curv_wf = init_gifti_morphometrics_wf(morphometrics=['curv'], name='curv_wf') + hcp_morphometrics_wf = init_hcp_morphometrics_wf(omp_nthreads=omp_nthreads) + morph_grayords_wf = init_morph_grayords_wf( + grayord_density=config.workflow.cifti_output, + omp_nthreads=omp_nthreads, + ) + ds_grayord_metrics_wf = init_ds_grayord_metrics_wf( + bids_root=bids_root, + output_dir=fmriprep_dir, + metrics=["curv", "thickness", "sulc"], + cifti_output=config.workflow.cifti_output, + ) + + workflow.connect([ + (anat_fit_wf, curv_wf, [ + ("outputnode.subject_id", "inputnode.subject_id"), + ("outputnode.subjects_dir", "inputnode.subjects_dir"), + ]), + (anat_fit_wf, hcp_morphometrics_wf, [ + ("outputnode.subject_id", "inputnode.subject_id"), + ("outputnode.thickness", "inputnode.thickness"), + ("outputnode.sulc", "inputnode.sulc"), + ("outputnode.midthickness", "inputnode.midthickness"), + ]), + (curv_wf, hcp_morphometrics_wf, [ + ("outputnode.curv", "inputnode.curv"), + ]), + (anat_fit_wf, morph_grayords_wf, [ + ("outputnode.midthickness", "inputnode.midthickness"), + ( + f'outputnode.sphere_reg_{"msm" if msm_sulc else "fsLR"}', + 'inputnode.sphere_reg_fsLR', + ), + ]), + (hcp_morphometrics_wf, morph_grayords_wf, [ + ("outputnode.curv", "inputnode.curv"), + ("outputnode.thickness", "inputnode.thickness"), + ("outputnode.sulc", "inputnode.sulc"), + ("outputnode.roi", "inputnode.roi"), + ]), + (anat_fit_wf, ds_grayord_metrics_wf, [ + ('outputnode.t1w_valid_list', 'inputnode.source_files'), + ]), + (morph_grayords_wf, ds_grayord_metrics_wf, [ + ("outputnode.curv_fsLR", "inputnode.curv"), + ("outputnode.curv_metadata", "inputnode.curv_metadata"), + ("outputnode.thickness_fsLR", "inputnode.thickness"), + ("outputnode.thickness_metadata", "inputnode.thickness_metadata"), + ("outputnode.sulc_fsLR", "inputnode.sulc"), + ("outputnode.sulc_metadata", "inputnode.sulc_metadata"), + ]), + ]) # fmt:skip + if config.workflow.anat_only: return clean_datasinks(workflow) @@ -421,8 +508,8 @@ def init_single_subject_wf(subject_id: str): fmap_wf = init_fmap_preproc_wf( debug="fieldmaps" in config.execution.debug, estimators=fmap_estimators, - omp_nthreads=config.nipype.omp_nthreads, - output_dir=str(config.execution.fmriprep_dir), + omp_nthreads=omp_nthreads, + output_dir=fmriprep_dir, subject=subject_id, ) fmap_wf.__desc__ = f""" @@ -481,7 +568,7 @@ def init_single_subject_wf(subject_id: str): s.metadata for s in estimator.sources if s.suffix in ("bold", "sbref") ] syn_preprocessing_wf = init_syn_preprocessing_wf( - omp_nthreads=config.nipype.omp_nthreads, + omp_nthreads=omp_nthreads, debug=config.execution.sloppy, auto_bold_nss=True, t1w_inversion=False, From 691dd54498d3c92e3ff4faacfc62b001bba53ffb Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Sun, 19 Nov 2023 12:34:30 -0500 Subject: [PATCH 2/4] RF: Reuse cortical mask ROI and downsampled midthickness --- fmriprep/workflows/base.py | 21 +++++++++- fmriprep/workflows/bold/base.py | 8 ++-- fmriprep/workflows/bold/resampling.py | 58 ++++++++------------------- 3 files changed, 41 insertions(+), 46 deletions(-) diff --git a/fmriprep/workflows/base.py b/fmriprep/workflows/base.py index 7a253e6fd..afd6f613b 100644 --- a/fmriprep/workflows/base.py +++ b/fmriprep/workflows/base.py @@ -162,6 +162,7 @@ def init_single_subject_wf(subject_id: str): init_gifti_morphometrics_wf, init_hcp_morphometrics_wf, init_morph_grayords_wf, + init_resample_midthickness_wf, ) from fmriprep.workflows.bold.base import init_bold_wf @@ -435,6 +436,9 @@ def init_single_subject_wf(subject_id: str): grayord_density=config.workflow.cifti_output, omp_nthreads=omp_nthreads, ) + resample_midthickness_wf = init_resample_midthickness_wf( + grayord_density=config.workflow.cifti_output, + ) ds_grayord_metrics_wf = init_ds_grayord_metrics_wf( bids_root=bids_root, output_dir=fmriprep_dir, @@ -456,6 +460,13 @@ def init_single_subject_wf(subject_id: str): (curv_wf, hcp_morphometrics_wf, [ ("outputnode.curv", "inputnode.curv"), ]), + (anat_fit_wf, resample_midthickness_wf, [ + ('outputnode.midthickness', 'inputnode.midthickness'), + ( + f"outputnode.sphere_reg_{'msm' if msm_sulc else 'fsLR'}", + "inputnode.sphere_reg_fsLR", + ), + ]), (anat_fit_wf, morph_grayords_wf, [ ("outputnode.midthickness", "inputnode.midthickness"), ( @@ -469,6 +480,9 @@ def init_single_subject_wf(subject_id: str): ("outputnode.sulc", "inputnode.sulc"), ("outputnode.roi", "inputnode.roi"), ]), + (resample_midthickness_wf, morph_grayords_wf, [ + ('outputnode.midthickness_fsLR', 'inputnode.midthickness_fsLR'), + ]), (anat_fit_wf, ds_grayord_metrics_wf, [ ('outputnode.t1w_valid_list', 'inputnode.source_files'), ]), @@ -648,7 +662,6 @@ def init_single_subject_wf(subject_id: str): ('outputnode.white', 'inputnode.white'), ('outputnode.pial', 'inputnode.pial'), ('outputnode.midthickness', 'inputnode.midthickness'), - ('outputnode.thickness', 'inputnode.thickness'), ('outputnode.anat_ribbon', 'inputnode.anat_ribbon'), ( f'outputnode.sphere_reg_{"msm" if msm_sulc else "fsLR"}', @@ -696,6 +709,12 @@ def init_single_subject_wf(subject_id: str): workflow.connect([ (select_MNI6_xfm, bold_wf, [("anat2std_xfm", "inputnode.anat2mni6_xfm")]), (select_MNI6_tpl, bold_wf, [("brain_mask", "inputnode.mni6_mask")]), + (hcp_morphometrics_wf, bold_wf, [ + ("outputnode.roi", "inputnode.cortex_mask"), + ]), + (resample_midthickness_wf, bold_wf, [ + ('outputnode.midthickness_fsLR', 'inputnode.midthickness_fsLR'), + ]), ]) # fmt:skip return clean_datasinks(workflow) diff --git a/fmriprep/workflows/bold/base.py b/fmriprep/workflows/bold/base.py index c0bcb9f00..34fba1754 100644 --- a/fmriprep/workflows/bold/base.py +++ b/fmriprep/workflows/bold/base.py @@ -113,8 +113,6 @@ def init_bold_wf( FreeSurfer pial surfaces, in T1w space, collated left, then right sphere_reg_fsLR Registration spheres from fsnative to fsLR space, collated left, then right - thickness - FreeSurfer thickness metrics, collated left, then right anat_ribbon Binary cortical ribbon mask in T1w space fmap_id @@ -235,7 +233,8 @@ def init_bold_wf( "midthickness", "pial", "sphere_reg_fsLR", - "thickness", + "midthickness_fsLR", + "cortex_mask", "anat_ribbon", # Fieldmap registration "fmap", @@ -580,8 +579,9 @@ def init_bold_wf( ("white", "inputnode.white"), ("pial", "inputnode.pial"), ("midthickness", "inputnode.midthickness"), - ("thickness", "inputnode.thickness"), + ("midthickness_fsLR", "inputnode.midthickness_fsLR"), ("sphere_reg_fsLR", "inputnode.sphere_reg_fsLR"), + ("cortex_mask", "inputnode.cortex_mask"), ("anat_ribbon", "inputnode.anat_ribbon"), ]), (bold_anat_wf, bold_fsLR_resampling_wf, [ diff --git a/fmriprep/workflows/bold/resampling.py b/fmriprep/workflows/bold/resampling.py index cabf895a2..9a3b612e0 100644 --- a/fmriprep/workflows/bold/resampling.py +++ b/fmriprep/workflows/bold/resampling.py @@ -587,27 +587,28 @@ def init_bold_fsLR_resampling_wf( niu.IdentityInterface( fields=[ 'bold_file', + 'anat_ribbon', 'white', 'pial', 'midthickness', - 'thickness', + 'midthickness_fsLR', 'sphere_reg_fsLR', - 'anat_ribbon', + 'cortex_mask', ] ), name='inputnode', ) - itersource = pe.Node( + hemisource = pe.Node( niu.IdentityInterface(fields=['hemi']), - name='itersource', + name='hemisource', iterables=[('hemi', ['L', 'R'])], ) joinnode = pe.JoinNode( niu.IdentityInterface(fields=['bold_fsLR']), name='joinnode', - joinsource='itersource', + joinsource='hemisource', ) outputnode = pe.Node( @@ -622,9 +623,10 @@ def init_bold_fsLR_resampling_wf( "white", "pial", "midthickness", - "thickness", - "sphere_reg", + 'midthickness_fsLR', + "sphere_reg_fsLR", "template_sphere", + 'cortex_mask', "template_roi", ], keys=["L", "R"], @@ -648,20 +650,6 @@ def init_bold_fsLR_resampling_wf( str(atlases / 'R.atlasroi.32k_fs_LR.shape.gii'), ] - # Reimplements lines 282-290 of FreeSurfer2CaretConvertAndRegisterNonlinear.sh - initial_roi = pe.Node(CreateROI(), name="initial_roi", mem_gb=DEFAULT_MEMORY_MIN_GB) - - # Lines 291-292 - fill_holes = pe.Node(MetricFillHoles(), name="fill_holes", mem_gb=DEFAULT_MEMORY_MIN_GB) - native_roi = pe.Node(MetricRemoveIslands(), name="native_roi", mem_gb=DEFAULT_MEMORY_MIN_GB) - - # Line 393 of FreeSurfer2CaretConvertAndRegisterNonlinear.sh - downsampled_midthickness = pe.Node( - SurfaceResample(method='BARYCENTRIC'), - name="downsampled_midthickness", - mem_gb=DEFAULT_MEMORY_MIN_GB, - ) - # RibbonVolumeToSurfaceMapping.sh # Line 85 thru ... volume_to_surface = pe.Node( @@ -689,23 +677,11 @@ def init_bold_fsLR_resampling_wf( ('white', 'white'), ('pial', 'pial'), ('midthickness', 'midthickness'), - ('thickness', 'thickness'), - ('sphere_reg_fsLR', 'sphere_reg'), - ]), - (itersource, select_surfaces, [('hemi', 'key')]), - # Native ROI file from thickness - (itersource, initial_roi, [('hemi', 'hemisphere')]), - (select_surfaces, initial_roi, [('thickness', 'thickness_file')]), - (select_surfaces, fill_holes, [('midthickness', 'surface_file')]), - (select_surfaces, native_roi, [('midthickness', 'surface_file')]), - (initial_roi, fill_holes, [('roi_file', 'metric_file')]), - (fill_holes, native_roi, [('out_file', 'metric_file')]), - # Downsample midthickness to fsLR density - (select_surfaces, downsampled_midthickness, [ - ('midthickness', 'surface_in'), - ('sphere_reg', 'current_sphere'), - ('template_sphere', 'new_sphere'), + ('midthickness_fsLR', 'midthickness_fsLR'), + ('sphere_reg_fsLR', 'sphere_reg_fsLR'), + ('cortex_mask', 'cortex_mask'), ]), + (hemisource, select_surfaces, [('hemi', 'key')]), # Resample BOLD to native surface, dilate and mask (inputnode, volume_to_surface, [ ('bold_file', 'volume_file'), @@ -716,17 +692,17 @@ def init_bold_fsLR_resampling_wf( ('pial', 'outer_surface'), ]), (select_surfaces, metric_dilate, [('midthickness', 'surf_file')]), + (select_surfaces, mask_native, [('cortex_mask', 'mask')]), (volume_to_surface, metric_dilate, [('out_file', 'in_file')]), - (native_roi, mask_native, [('out_file', 'mask')]), (metric_dilate, mask_native, [('out_file', 'in_file')]), # Resample BOLD to fsLR and mask (select_surfaces, resample_to_fsLR, [ - ('sphere_reg', 'current_sphere'), + ('sphere_reg_fsLR', 'current_sphere'), ('template_sphere', 'new_sphere'), ('midthickness', 'current_area'), + ('midthickness_fsLR', 'new_area'), + ('cortex_mask', 'roi_metric'), ]), - (downsampled_midthickness, resample_to_fsLR, [('surface_out', 'new_area')]), - (native_roi, resample_to_fsLR, [('out_file', 'roi_metric')]), (mask_native, resample_to_fsLR, [('out_file', 'in_file')]), (select_surfaces, mask_fsLR, [('template_roi', 'mask')]), (resample_to_fsLR, mask_fsLR, [('out_file', 'in_file')]), From 92ded31d2d79438c5fc912cf70edd66d91006922 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Sun, 19 Nov 2023 13:08:09 -0500 Subject: [PATCH 3/4] FIX: Ensure BOLD is not oversampled for anat --- fmriprep/workflows/bold/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/fmriprep/workflows/bold/base.py b/fmriprep/workflows/bold/base.py index 34fba1754..14acfb8ab 100644 --- a/fmriprep/workflows/bold/base.py +++ b/fmriprep/workflows/bold/base.py @@ -315,6 +315,7 @@ def init_bold_wf( omp_nthreads=omp_nthreads, name='bold_anat_wf', ) + bold_anat_wf.inputs.inputnode.resolution = "native" workflow.connect([ (inputnode, bold_native_wf, [ From 2319fefa1f39694d27efaa2661c24c2f80e5ffc8 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Sun, 19 Nov 2023 16:14:29 -0500 Subject: [PATCH 4/4] CI: Update expected outputs [no fasttrack] --- .circleci/ds005_partial_fasttrack_outputs.txt | 22 +++++++++++++++++++ .circleci/ds005_partial_outputs.txt | 22 +++++++++++++++++++ .circleci/ds054_fasttrack_outputs.txt | 10 +++++++++ .circleci/ds054_outputs.txt | 9 ++++++++ .circleci/ds210_fasttrack_outputs.txt | 9 ++++++++ .circleci/ds210_outputs.txt | 8 +++++++ 6 files changed, 80 insertions(+) diff --git a/.circleci/ds005_partial_fasttrack_outputs.txt b/.circleci/ds005_partial_fasttrack_outputs.txt index b25137261..9a712a4a2 100644 --- a/.circleci/ds005_partial_fasttrack_outputs.txt +++ b/.circleci/ds005_partial_fasttrack_outputs.txt @@ -22,6 +22,28 @@ sub-01/anat/sub-01_hemi-R_desc-preproc_white.surf.gii sub-01/anat/sub-01_hemi-R_desc-reg_sphere.surf.gii sub-01/anat/sub-01_hemi-R_space-fsLR_desc-msmsulc_sphere.surf.gii sub-01/anat/sub-01_hemi-R_space-fsLR_desc-reg_sphere.surf.gii +sub-01/anat/sub-01_space-fsLR_den-91k_desc-preproc_curv.dscalar.nii +sub-01/anat/sub-01_space-fsLR_den-91k_desc-preproc_curv.json +sub-01/anat/sub-01_space-fsLR_den-91k_desc-preproc_sulc.dscalar.nii +sub-01/anat/sub-01_space-fsLR_den-91k_desc-preproc_sulc.json +sub-01/anat/sub-01_space-fsLR_den-91k_desc-preproc_thickness.dscalar.nii +sub-01/anat/sub-01_space-fsLR_den-91k_desc-preproc_thickness.json +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-brain_mask.json +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-preproc_dseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-preproc_T1w.json +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-preproc_T1w.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_label-CSF_desc-preproc_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_label-GM_desc-preproc_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_label-WM_desc-preproc_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-brain_mask.json +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-brain_mask.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-preproc_dseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-preproc_T1w.json +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-preproc_T1w.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_label-CSF_desc-preproc_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_label-GM_desc-preproc_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_label-WM_desc-preproc_probseg.nii.gz sub-01/fmap sub-01/fmap/sub-01_run-02_fmapid-auto00000_desc-coeff0_fieldmap.nii.gz sub-01/fmap/sub-01_run-02_fmapid-auto00000_desc-coeff1_fieldmap.nii.gz diff --git a/.circleci/ds005_partial_outputs.txt b/.circleci/ds005_partial_outputs.txt index f2f572921..40b563d52 100644 --- a/.circleci/ds005_partial_outputs.txt +++ b/.circleci/ds005_partial_outputs.txt @@ -44,6 +44,28 @@ sub-01/anat/sub-01_hemi-R_white.surf.gii sub-01/anat/sub-01_label-CSF_probseg.nii.gz sub-01/anat/sub-01_label-GM_probseg.nii.gz sub-01/anat/sub-01_label-WM_probseg.nii.gz +sub-01/anat/sub-01_space-fsLR_den-91k_curv.dscalar.nii +sub-01/anat/sub-01_space-fsLR_den-91k_curv.json +sub-01/anat/sub-01_space-fsLR_den-91k_sulc.dscalar.nii +sub-01/anat/sub-01_space-fsLR_den-91k_sulc.json +sub-01/anat/sub-01_space-fsLR_den-91k_thickness.dscalar.nii +sub-01/anat/sub-01_space-fsLR_den-91k_thickness.json +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-brain_mask.json +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-preproc_T1w.json +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_desc-preproc_T1w.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_dseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_label-CSF_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_label-GM_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin2009cAsym_label-WM_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-brain_mask.json +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-brain_mask.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-preproc_T1w.json +sub-01/anat/sub-01_space-MNI152NLin6Asym_desc-preproc_T1w.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_dseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_label-CSF_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_label-GM_probseg.nii.gz +sub-01/anat/sub-01_space-MNI152NLin6Asym_label-WM_probseg.nii.gz sub-01/fmap sub-01/fmap/sub-01_run-02_fmapid-auto00000_desc-coeff0_fieldmap.nii.gz sub-01/fmap/sub-01_run-02_fmapid-auto00000_desc-coeff1_fieldmap.nii.gz diff --git a/.circleci/ds054_fasttrack_outputs.txt b/.circleci/ds054_fasttrack_outputs.txt index 600a4c1b3..694d1e932 100644 --- a/.circleci/ds054_fasttrack_outputs.txt +++ b/.circleci/ds054_fasttrack_outputs.txt @@ -7,6 +7,16 @@ logs/CITATION.html logs/CITATION.md logs/CITATION.tex sub-100185 +sub-100185/anat +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-brain_mask.json +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-brain_mask.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-preproc_dseg.json +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-preproc_dseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-preproc_T1w.json +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-preproc_T1w.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_label-CSF_desc-preproc_probseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_label-GM_desc-preproc_probseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_label-WM_desc-preproc_probseg.nii.gz sub-100185/fmap sub-100185/fmap/sub-100185_fmapid-auto00000_desc-coeff0_fieldmap.nii.gz sub-100185/fmap/sub-100185_fmapid-auto00000_desc-coeff1_fieldmap.nii.gz diff --git a/.circleci/ds054_outputs.txt b/.circleci/ds054_outputs.txt index b0b775794..b8748a02f 100644 --- a/.circleci/ds054_outputs.txt +++ b/.circleci/ds054_outputs.txt @@ -18,6 +18,15 @@ sub-100185/anat/sub-100185_from-T1w_to-MNI152NLin2009cAsym_mode-image_xfm.h5 sub-100185/anat/sub-100185_label-CSF_probseg.nii.gz sub-100185/anat/sub-100185_label-GM_probseg.nii.gz sub-100185/anat/sub-100185_label-WM_probseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-brain_mask.json +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-brain_mask.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-preproc_T1w.json +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_desc-preproc_T1w.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_dseg.json +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_dseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_label-CSF_probseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_label-GM_probseg.nii.gz +sub-100185/anat/sub-100185_space-MNI152NLin2009cAsym_res-2_label-WM_probseg.nii.gz sub-100185/fmap sub-100185/fmap/sub-100185_fmapid-auto00000_desc-coeff0_fieldmap.nii.gz sub-100185/fmap/sub-100185_fmapid-auto00000_desc-coeff1_fieldmap.nii.gz diff --git a/.circleci/ds210_fasttrack_outputs.txt b/.circleci/ds210_fasttrack_outputs.txt index a33deeb10..700c31970 100644 --- a/.circleci/ds210_fasttrack_outputs.txt +++ b/.circleci/ds210_fasttrack_outputs.txt @@ -7,6 +7,15 @@ logs/CITATION.html logs/CITATION.md logs/CITATION.tex sub-02 +sub-02/anat +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-brain_mask.json +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-preproc_dseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-preproc_T1w.json +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-preproc_T1w.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_label-CSF_desc-preproc_probseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_label-GM_desc-preproc_probseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_label-WM_desc-preproc_probseg.nii.gz sub-02/fmap sub-02/fmap/sub-02_run-01_fmapid-auto00000_desc-coeff0_fieldmap.nii.gz sub-02/fmap/sub-02_run-01_fmapid-auto00000_desc-coeff1_fieldmap.nii.gz diff --git a/.circleci/ds210_outputs.txt b/.circleci/ds210_outputs.txt index f4e08806e..3a880afc4 100644 --- a/.circleci/ds210_outputs.txt +++ b/.circleci/ds210_outputs.txt @@ -18,6 +18,14 @@ sub-02/anat/sub-02_from-T1w_to-MNI152NLin2009cAsym_mode-image_xfm.h5 sub-02/anat/sub-02_label-CSF_probseg.nii.gz sub-02/anat/sub-02_label-GM_probseg.nii.gz sub-02/anat/sub-02_label-WM_probseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-brain_mask.json +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-preproc_T1w.json +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_desc-preproc_T1w.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_dseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_label-CSF_probseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_label-GM_probseg.nii.gz +sub-02/anat/sub-02_space-MNI152NLin2009cAsym_label-WM_probseg.nii.gz sub-02/fmap sub-02/fmap/sub-02_run-01_fmapid-auto00000_desc-coeff0_fieldmap.nii.gz sub-02/fmap/sub-02_run-01_fmapid-auto00000_desc-coeff1_fieldmap.nii.gz