Skip to content

Commit 46edd50

Browse files
authored
feat: Output fsLR meshes on subject surfaces (#3411)
Integration of nipreps/smriprep#460.
2 parents cf360a3 + ebf0f3d commit 46edd50

File tree

5 files changed

+42
-7
lines changed

5 files changed

+42
-7
lines changed

.circleci/ds005_partial_fasttrack_outputs.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,17 @@ sub-01/anat/sub-01_desc-ribbon_mask.json
1414
sub-01/anat/sub-01_desc-ribbon_mask.nii.gz
1515
sub-01/anat/sub-01_hemi-L_desc-preproc_sphere.surf.gii
1616
sub-01/anat/sub-01_hemi-L_desc-preproc_white.surf.gii
17+
sub-01/anat/sub-01_hemi-L_space-fsLR_den-32k_desc-preproc_midthickness.surf.gii
18+
sub-01/anat/sub-01_hemi-L_space-fsLR_den-32k_desc-preproc_pial.surf.gii
19+
sub-01/anat/sub-01_hemi-L_space-fsLR_den-32k_desc-preproc_white.surf.gii
1720
sub-01/anat/sub-01_hemi-L_space-fsLR_desc-msmsulc_sphere.surf.gii
1821
sub-01/anat/sub-01_hemi-L_space-fsLR_desc-reg_sphere.surf.gii
1922
sub-01/anat/sub-01_hemi-L_space-fsaverage_desc-reg_sphere.surf.gii
2023
sub-01/anat/sub-01_hemi-R_desc-preproc_sphere.surf.gii
2124
sub-01/anat/sub-01_hemi-R_desc-preproc_white.surf.gii
25+
sub-01/anat/sub-01_hemi-R_space-fsLR_den-32k_desc-preproc_midthickness.surf.gii
26+
sub-01/anat/sub-01_hemi-R_space-fsLR_den-32k_desc-preproc_pial.surf.gii
27+
sub-01/anat/sub-01_hemi-R_space-fsLR_den-32k_desc-preproc_white.surf.gii
2228
sub-01/anat/sub-01_hemi-R_space-fsLR_desc-msmsulc_sphere.surf.gii
2329
sub-01/anat/sub-01_hemi-R_space-fsLR_desc-reg_sphere.surf.gii
2430
sub-01/anat/sub-01_hemi-R_space-fsaverage_desc-reg_sphere.surf.gii

.circleci/ds005_partial_outputs.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ sub-01/anat/sub-01_from-T1w_to-MNI152NLin2009cAsym_mode-image_xfm.h5
2525
sub-01/anat/sub-01_from-T1w_to-MNI152NLin6Asym_mode-image_xfm.h5
2626
sub-01/anat/sub-01_hemi-L_midthickness.surf.gii
2727
sub-01/anat/sub-01_hemi-L_pial.surf.gii
28+
sub-01/anat/sub-01_hemi-L_space-fsLR_den-32k_midthickness.surf.gii
29+
sub-01/anat/sub-01_hemi-L_space-fsLR_den-32k_pial.surf.gii
30+
sub-01/anat/sub-01_hemi-L_space-fsLR_den-32k_white.surf.gii
2831
sub-01/anat/sub-01_hemi-L_space-fsLR_desc-msmsulc_sphere.surf.gii
2932
sub-01/anat/sub-01_hemi-L_space-fsLR_desc-reg_sphere.surf.gii
3033
sub-01/anat/sub-01_hemi-L_space-fsaverage_desc-reg_sphere.surf.gii
@@ -34,6 +37,9 @@ sub-01/anat/sub-01_hemi-L_thickness.shape.gii
3437
sub-01/anat/sub-01_hemi-L_white.surf.gii
3538
sub-01/anat/sub-01_hemi-R_midthickness.surf.gii
3639
sub-01/anat/sub-01_hemi-R_pial.surf.gii
40+
sub-01/anat/sub-01_hemi-R_space-fsLR_den-32k_midthickness.surf.gii
41+
sub-01/anat/sub-01_hemi-R_space-fsLR_den-32k_pial.surf.gii
42+
sub-01/anat/sub-01_hemi-R_space-fsLR_den-32k_white.surf.gii
3743
sub-01/anat/sub-01_hemi-R_space-fsLR_desc-msmsulc_sphere.surf.gii
3844
sub-01/anat/sub-01_hemi-R_space-fsLR_desc-reg_sphere.surf.gii
3945
sub-01/anat/sub-01_hemi-R_space-fsaverage_desc-reg_sphere.surf.gii

fmriprep/workflows/base.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,14 @@ def init_single_subject_wf(subject_id: str):
156156
from smriprep.workflows.outputs import (
157157
init_ds_anat_volumes_wf,
158158
init_ds_grayord_metrics_wf,
159+
init_ds_surfaces_wf,
159160
init_template_iterator_wf,
160161
)
161162
from smriprep.workflows.surfaces import (
162163
init_gifti_morphometrics_wf,
163164
init_hcp_morphometrics_wf,
164165
init_morph_grayords_wf,
165-
init_resample_midthickness_wf,
166+
init_resample_surfaces_wf,
166167
)
167168

168169
from fmriprep.workflows.bold.base import init_bold_wf
@@ -449,7 +450,8 @@ def init_single_subject_wf(subject_id: str):
449450
grayord_density=config.workflow.cifti_output,
450451
omp_nthreads=omp_nthreads,
451452
)
452-
resample_midthickness_wf = init_resample_midthickness_wf(
453+
resample_surfaces_wf = init_resample_surfaces_wf(
454+
surfaces=['white', 'pial', 'midthickness'],
453455
grayord_density=config.workflow.cifti_output,
454456
)
455457
ds_grayord_metrics_wf = init_ds_grayord_metrics_wf(
@@ -458,6 +460,15 @@ def init_single_subject_wf(subject_id: str):
458460
metrics=['curv', 'thickness', 'sulc'],
459461
cifti_output=config.workflow.cifti_output,
460462
)
463+
ds_fsLR_surfaces_wf = init_ds_surfaces_wf(
464+
output_dir=fmriprep_dir,
465+
surfaces=['white', 'pial', 'midthickness'],
466+
entities={
467+
'space': 'fsLR',
468+
'density': '32k' if config.workflow.cifti_output == '91k' else '59k',
469+
},
470+
name='ds_fsLR_surfaces_wf',
471+
)
461472

462473
workflow.connect([
463474
(anat_fit_wf, curv_wf, [
@@ -473,7 +484,9 @@ def init_single_subject_wf(subject_id: str):
473484
(curv_wf, hcp_morphometrics_wf, [
474485
('outputnode.curv', 'inputnode.curv'),
475486
]),
476-
(anat_fit_wf, resample_midthickness_wf, [
487+
(anat_fit_wf, resample_surfaces_wf, [
488+
('outputnode.white', 'inputnode.white'),
489+
('outputnode.pial', 'inputnode.pial'),
477490
('outputnode.midthickness', 'inputnode.midthickness'),
478491
(
479492
f"outputnode.sphere_reg_{'msm' if msm_sulc else 'fsLR'}",
@@ -493,12 +506,15 @@ def init_single_subject_wf(subject_id: str):
493506
('outputnode.sulc', 'inputnode.sulc'),
494507
('outputnode.roi', 'inputnode.roi'),
495508
]),
496-
(resample_midthickness_wf, morph_grayords_wf, [
509+
(resample_surfaces_wf, morph_grayords_wf, [
497510
('outputnode.midthickness_fsLR', 'inputnode.midthickness_fsLR'),
498511
]),
499512
(anat_fit_wf, ds_grayord_metrics_wf, [
500513
('outputnode.t1w_valid_list', 'inputnode.source_files'),
501514
]),
515+
(anat_fit_wf, ds_fsLR_surfaces_wf, [
516+
('outputnode.t1w_valid_list', 'inputnode.source_files'),
517+
]),
502518
(morph_grayords_wf, ds_grayord_metrics_wf, [
503519
('outputnode.curv_fsLR', 'inputnode.curv'),
504520
('outputnode.curv_metadata', 'inputnode.curv_metadata'),
@@ -507,6 +523,11 @@ def init_single_subject_wf(subject_id: str):
507523
('outputnode.sulc_fsLR', 'inputnode.sulc'),
508524
('outputnode.sulc_metadata', 'inputnode.sulc_metadata'),
509525
]),
526+
(resample_surfaces_wf, ds_fsLR_surfaces_wf, [
527+
('outputnode.white_fsLR', 'inputnode.white'),
528+
('outputnode.pial_fsLR', 'inputnode.pial'),
529+
('outputnode.midthickness_fsLR', 'inputnode.midthickness'),
530+
]),
510531
]) # fmt:skip
511532

512533
if config.workflow.anat_only:
@@ -740,7 +761,7 @@ def init_single_subject_wf(subject_id: str):
740761
(hcp_morphometrics_wf, bold_wf, [
741762
('outputnode.roi', 'inputnode.cortex_mask'),
742763
]),
743-
(resample_midthickness_wf, bold_wf, [
764+
(resample_surfaces_wf, bold_wf, [
744765
('outputnode.midthickness_fsLR', 'inputnode.midthickness_fsLR'),
745766
]),
746767
]) # fmt:skip

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ dependencies = [
3434
"pybids >= 0.16",
3535
"requests >= 2.27",
3636
"sdcflows >= 2.10.0",
37-
"smriprep >= 0.16.0",
37+
"smriprep @ git+https://github.com/nipreps/smriprep.git",
3838
"tedana >= 23.0.2",
3939
"templateflow >= 24.2.2",
4040
"transforms3d >= 0.4",

scripts/fetch_templates.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ def fetch_MNI2009():
1616
Expected templates:
1717
1818
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-01_T1w.nii.gz
19+
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-01_T2w.nii.gz
1920
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-02_T1w.nii.gz
21+
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-02_T2w.nii.gz
2022
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-01_desc-brain_mask.nii.gz
2123
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-02_desc-brain_mask.nii.gz
2224
tpl-MNI152NLin2009cAsym/tpl-MNI152NLin2009cAsym_res-01_desc-carpet_dseg.nii.gz
@@ -25,7 +27,7 @@ def fetch_MNI2009():
2527
"""
2628
template = 'MNI152NLin2009cAsym'
2729

28-
tf.get(template, resolution=(1, 2), desc=None, suffix='T1w')
30+
tf.get(template, resolution=(1, 2), desc=None, suffix=['T1w', 'T2w'])
2931
tf.get(template, resolution=(1, 2), desc='brain', suffix='mask')
3032
tf.get(template, resolution=1, atlas=None, desc='carpet', suffix='dseg')
3133
tf.get(template, resolution=2, desc='fMRIPrep', suffix='boldref')

0 commit comments

Comments
 (0)