Skip to content

Commit cb61f73

Browse files
committed
Return func_reorient to its rightful place - complete changes to sbref - move sbref generation to before distortion correction.
1 parent 55bd75c commit cb61f73

File tree

5 files changed

+72
-79
lines changed

5 files changed

+72
-79
lines changed

CPAC/distortion_correction/distortion_correction.py

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -340,16 +340,16 @@ def distcor_blip_afni_qwarp(wf, cfg, strat_pool, pipe_num, opt=None):
340340
"switch": ["run"],
341341
"option_key": "using",
342342
"option_val": "Blip",
343-
"inputs": [("desc-mean_bold",
343+
"inputs": [("sbref",
344344
"space-bold_desc-brain_mask"),
345345
"epi-1",
346346
"epi-1-scan-params",
347347
"epi-2",
348348
"epi-2-scan-params",
349349
"pe-direction"],
350-
"outputs": ["blip-warp",
351-
"desc-mean_bold",
352-
"space-bold_desc-brain_mask"]}
350+
"outputs": ["sbref",
351+
"space-bold_desc-brain_mask",
352+
"blip-warp"]}
353353
'''
354354

355355
match_epi_imports = ['import json']
@@ -407,7 +407,7 @@ def distcor_blip_afni_qwarp(wf, cfg, strat_pool, pipe_num, opt=None):
407407

408408
wf.connect(func_edge_detect, 'out_file', opp_pe_to_func, 'in_file')
409409

410-
node, out = strat_pool.get_data('desc-mean_bold')
410+
node, out = strat_pool.get_data('sbref')
411411
wf.connect(node, out, opp_pe_to_func, 'reference')
412412

413413
prep_qwarp_input_imports = ['import os', 'import subprocess']
@@ -422,7 +422,7 @@ def distcor_blip_afni_qwarp(wf, cfg, strat_pool, pipe_num, opt=None):
422422
wf.connect(match_epi_fmaps_node, 'same_pe_epi',
423423
prep_qwarp_input, 'same_pe_epi')
424424

425-
node, out = strat_pool.get_data('desc-mean_bold')
425+
node, out = strat_pool.get_data('sbref')
426426
wf.connect(node, out, prep_qwarp_input, 'func_mean')
427427

428428
calculate_blip_warp_imports = ['import os', 'import subprocess']
@@ -459,7 +459,7 @@ def distcor_blip_afni_qwarp(wf, cfg, strat_pool, pipe_num, opt=None):
459459
undistort_func_mean.inputs.dimension = 3
460460
undistort_func_mean.inputs.input_image_type = 0
461461

462-
node, out = strat_pool.get_data('desc-mean_bold')
462+
node, out = strat_pool.get_data('sbref')
463463
wf.connect(node, out, undistort_func_mean, 'input_image')
464464
wf.connect(node, out, undistort_func_mean, 'reference_image')
465465
wf.connect(convert_afni_warp, 'ants_warp',
@@ -478,7 +478,7 @@ def distcor_blip_afni_qwarp(wf, cfg, strat_pool, pipe_num, opt=None):
478478
outputs = {
479479
'blip-warp': (convert_afni_warp, 'ants_warp'),
480480
#'inv-blip-warp': None, # TODO
481-
'desc-mean_bold': (undistort_func_mean, 'output_image'),
481+
'sbref': (undistort_func_mean, 'output_image'),
482482
'space-bold_desc-brain_mask': (remask, 'out_file')
483483
}
484484

@@ -495,7 +495,8 @@ def distcor_blip_fsl_topup(wf, cfg, strat_pool, pipe_num, opt=None):
495495
"switch": ["run"],
496496
"option_key": "using",
497497
"option_val": "Blip-FSL-TOPUP",
498-
"inputs": [("desc-mean_bold", "space-bold_desc-brain_mask"),
498+
"inputs": [("sbref",
499+
"space-bold_desc-brain_mask"),
499500
"pe-direction",
500501
"epi-1",
501502
"epi-1-pedir",
@@ -507,7 +508,7 @@ def distcor_blip_fsl_topup(wf, cfg, strat_pool, pipe_num, opt=None):
507508
"epi-2-TE",
508509
"epi-2-dwell",
509510
"epi-2-total-readout"],
510-
"outputs": ["desc-mean_bold",
511+
"outputs": ["sbref",
511512
"space-bold_desc-brain_mask",
512513
"blip-warp"]}
513514
'''
@@ -696,17 +697,7 @@ def distcor_blip_fsl_topup(wf, cfg, strat_pool, pipe_num, opt=None):
696697
wf.connect(run_topup, 'out_jacs', vnum_base, 'jac_matrix_list')
697698
wf.connect(run_topup, 'out_warps', vnum_base, 'warp_field_list')
698699

699-
# create_scout = pe.Node(interface=afni_utils.Calc(),
700-
# name="topupwf_create_scout")
701-
# create_scout.inputs.set(
702-
# expr='a',
703-
# single_idx=0,
704-
# outputtype='NIFTI_GZ'
705-
# )
706-
707-
mean_bold = strat_pool.node_data("desc-mean_bold")
708-
# node, out = strat_pool.get_data(["desc-preproc_bold", "bold"])
709-
# wf.connect(node, out, create_scout, 'in_file_a')
700+
mean_bold = strat_pool.node_data("sbref")
710701

711702
flirt = pe.Node(interface=fsl.FLIRT(), name="flirt")
712703
flirt.inputs.dof = 6
@@ -857,7 +848,7 @@ def distcor_blip_fsl_topup(wf, cfg, strat_pool, pipe_num, opt=None):
857848
wf.connect(mag_field_map, 'out_file', bet, 'in_file')
858849

859850
outputs = {
860-
'desc-mean_bold': (mul_jac, 'out_file'),
851+
'sbref': (mul_jac, 'out_file'),
861852
'space-bold_desc-brain_mask': (bet, 'out_file'),
862853
'blip-warp': (convert_warp, 'out_file')
863854
}

CPAC/func_preproc/func_preproc.py

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ def motion_correct_connections(wf, cfg, strat_pool, pipe_num, opt):
619619
imports=split_imports),
620620
name=f'split_{pipe_num}')
621621

622-
node, out = strat_pool.get_data('desc-preproc_bold')
622+
node, out = strat_pool.get_data("desc-preproc_bold")
623623
wf.connect(node, out, split, 'func_file')
624624
wf.connect(chunk, 'TR_ranges', split, 'tr_ranges')
625625

@@ -891,6 +891,47 @@ def motion_correct_connections(wf, cfg, strat_pool, pipe_num, opt):
891891
return (wf, outputs)
892892

893893

894+
def func_reorient(wf, cfg, strat_pool, pipe_num, opt=None):
895+
'''
896+
{"name": "func_reorient",
897+
"config": ["functional_preproc"],
898+
"switch": ["run"],
899+
"option_key": "None",
900+
"option_val": "None",
901+
"inputs": ["bold"],
902+
"outputs": ["desc-preproc_bold",
903+
"desc-reorient_bold"]}
904+
'''
905+
906+
func_deoblique = pe.Node(interface=afni_utils.Refit(),
907+
name=f'func_deoblique_{pipe_num}',
908+
mem_gb=0.68,
909+
mem_x=(4664065662093477 /
910+
1208925819614629174706176,
911+
'in_file'))
912+
func_deoblique.inputs.deoblique = True
913+
914+
node, out = strat_pool.get_data('bold')
915+
wf.connect(node, out, func_deoblique, 'in_file')
916+
917+
func_reorient = pe.Node(interface=afni_utils.Resample(),
918+
name=f'func_reorient_{pipe_num}',
919+
mem_gb=0,
920+
mem_x=(0.0115, 'in_file', 't'))
921+
922+
func_reorient.inputs.orientation = 'RPI'
923+
func_reorient.inputs.outputtype = 'NIFTI_GZ'
924+
925+
wf.connect(func_deoblique, 'out_file', func_reorient, 'in_file')
926+
927+
outputs = {
928+
'desc-preproc_bold': (func_reorient, 'out_file'),
929+
'desc-reorient_bold': (func_reorient, 'out_file')
930+
}
931+
932+
return (wf, outputs)
933+
934+
894935
def func_scaling(wf, cfg, strat_pool, pipe_num, opt=None):
895936
'''
896937
{"name": "func_scaling",
@@ -1034,47 +1075,6 @@ def func_slice_time(wf, cfg, strat_pool, pipe_num, opt=None):
10341075
return (wf, outputs)
10351076

10361077

1037-
def func_reorient(wf, cfg, strat_pool, pipe_num, opt=None):
1038-
'''
1039-
{"name": "func_reorient",
1040-
"config": ["functional_preproc"],
1041-
"switch": ["run"],
1042-
"option_key": "None",
1043-
"option_val": "None",
1044-
"inputs": ["desc-preproc_bold"],
1045-
"outputs": ["desc-preproc_bold",
1046-
"desc-reorient_bold"]}
1047-
'''
1048-
1049-
func_deoblique = pe.Node(interface=afni_utils.Refit(),
1050-
name=f'func_deoblique_{pipe_num}',
1051-
mem_gb=0.68,
1052-
mem_x=(4664065662093477 /
1053-
1208925819614629174706176,
1054-
'in_file'))
1055-
func_deoblique.inputs.deoblique = True
1056-
1057-
node, out = strat_pool.get_data('desc-preproc_bold')
1058-
wf.connect(node, out, func_deoblique, 'in_file')
1059-
1060-
func_reorient = pe.Node(interface=afni_utils.Resample(),
1061-
name=f'func_reorient_{pipe_num}',
1062-
mem_gb=0,
1063-
mem_x=(0.0115, 'in_file', 't'))
1064-
1065-
func_reorient.inputs.orientation = 'RPI'
1066-
func_reorient.inputs.outputtype = 'NIFTI_GZ'
1067-
1068-
wf.connect(func_deoblique, 'out_file', func_reorient, 'in_file')
1069-
1070-
outputs = {
1071-
'desc-preproc_bold': (func_reorient, 'out_file'),
1072-
'desc-reorient_bold': (func_reorient, 'out_file')
1073-
}
1074-
1075-
return (wf, outputs)
1076-
1077-
10781078
def get_motion_ref(wf, cfg, strat_pool, pipe_num, opt=None):
10791079
'''
10801080
{"name": "get_motion_ref",
@@ -1085,7 +1085,7 @@ def get_motion_ref(wf, cfg, strat_pool, pipe_num, opt=None):
10851085
"motion_correction", "motion_correction_reference"],
10861086
"option_val": ["mean", "median", "selected_volume", "fmriprep_reference"],
10871087
"inputs": ["desc-preproc_bold",
1088-
"bold"],
1088+
"desc-reorient_bold"],
10891089
"outputs": ["motion-basefile"]}
10901090
'''
10911091
option_vals = grab_docstring_dct(get_motion_ref).get('option_val')
@@ -1141,7 +1141,7 @@ def get_motion_ref(wf, cfg, strat_pool, pipe_num, opt=None):
11411141
function=estimate_reference_image),
11421142
name=f'func_get_fmriprep_ref_{pipe_num}')
11431143

1144-
node, out = strat_pool.get_data('bold')
1144+
node, out = strat_pool.get_data('desc-reorient_bold')
11451145
wf.connect(node, out, func_get_RPI, 'in_file')
11461146

11471147
outputs = {

CPAC/nuisance/nuisance.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1822,7 +1822,7 @@ def ICA_AROMA_ANTsreg(wf, cfg, strat_pool, pipe_num, opt=None):
18221822
"option_key": "None",
18231823
"option_val": "None",
18241824
"inputs": [("desc-preproc_bold",
1825-
"desc-mean_bold",
1825+
"sbref",
18261826
"from-bold_to-template_mode-image_xfm",
18271827
"from-template_to-bold_mode-image_xfm"),
18281828
"T1w-brain-template-funcreg"],
@@ -1867,7 +1867,7 @@ def ICA_AROMA_ANTsreg(wf, cfg, strat_pool, pipe_num, opt=None):
18671867

18681868
wf.connect(node, out, apply_xfm, 'inputspec.input_image')
18691869

1870-
node, out = strat_pool.get_data("desc-mean_bold")
1870+
node, out = strat_pool.get_data("sbref")
18711871
wf.connect(node, out, apply_xfm, 'inputspec.reference')
18721872

18731873
node, out = strat_pool.get_data('from-template_to-bold_mode-image_xfm')
@@ -1940,7 +1940,7 @@ def ICA_AROMA_ANTsEPIreg(wf, cfg, strat_pool, pipe_num, opt=None):
19401940
"option_key": "None",
19411941
"option_val": "None",
19421942
"inputs": [("desc-preproc_bold",
1943-
"desc-mean_bold",
1943+
"sbref",
19441944
"from-bold_to-EPItemplate_mode-image_xfm",
19451945
"from-EPItemplate_to-bold_mode-image_xfm"),
19461946
"EPI-template"],
@@ -1986,7 +1986,7 @@ def ICA_AROMA_ANTsEPIreg(wf, cfg, strat_pool, pipe_num, opt=None):
19861986

19871987
wf.connect(node, out, apply_xfm, 'inputspec.input_image')
19881988

1989-
node, out = strat_pool.get_data("desc-mean_bold")
1989+
node, out = strat_pool.get_data("sbref")
19901990
wf.connect(node, out, apply_xfm, 'inputspec.reference')
19911991

19921992
node, out = strat_pool.get_data('from-EPItemplate_to-bold_mode-image_xfm')

CPAC/pipeline/cpac_pipeline.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,13 +1122,13 @@ def build_workflow(subject_id, sub_dict, cfg, pipeline_name=None,
11221122
# Functional Preprocessing, including motion correction and BOLD masking
11231123
if cfg.functional_preproc['run']:
11241124
func_init_blocks = [
1125+
func_reorient,
11251126
func_scaling,
11261127
func_truncate
11271128
]
11281129
func_preproc_blocks = [
11291130
func_despike,
1130-
func_slice_time,
1131-
func_reorient
1131+
func_slice_time
11321132
]
11331133

11341134
if not rpool.check_rpool('desc-mean_bold'):
@@ -1144,7 +1144,10 @@ def build_workflow(subject_id, sub_dict, cfg, pipeline_name=None,
11441144

11451145
func_prep_blocks = [
11461146
calc_motion_stats,
1147-
func_normalize
1147+
func_normalize,
1148+
[coregistration_prep_vol,
1149+
coregistration_prep_mean,
1150+
coregistration_prep_fmriprep]
11481151
]
11491152

11501153
# Distortion/Susceptibility Correction
@@ -1192,10 +1195,9 @@ def build_workflow(subject_id, sub_dict, cfg, pipeline_name=None,
11921195
# BOLD to T1 coregistration
11931196
if cfg.registration_workflows['functional_registration'][
11941197
'coregistration']['run'] and \
1195-
(not rpool.check_rpool('space-T1w_desc-mean_bold') or
1198+
(not rpool.check_rpool('space-T1w_sbref') or
11961199
not rpool.check_rpool('from-bold_to-T1w_mode-image_desc-linear_xfm')):
11971200
coreg_blocks = [
1198-
[coregistration_prep_vol, coregistration_prep_mean, coregistration_prep_fmriprep],
11991201
coregistration
12001202
]
12011203
pipeline_blocks += coreg_blocks

CPAC/registration/registration.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2756,7 +2756,7 @@ def coregistration(wf, cfg, strat_pool, pipe_num, opt=None):
27562756
["label-WM_probseg", "label-WM_mask"],
27572757
["label-WM_pveseg", "label-WM_mask"],
27582758
"T1w")],
2759-
"outputs": ["space-T1w_desc-mean_bold",
2759+
"outputs": ["space-T1w_sbref",
27602760
"from-bold_to-T1w_mode-image_desc-linear_xfm",
27612761
"from-bold_to-T1w_mode-image_desc-linear_warp"]}
27622762
'''
@@ -2833,7 +2833,7 @@ def coregistration(wf, cfg, strat_pool, pipe_num, opt=None):
28332833

28342834
if strat_pool.check_rpool('T2w') and cfg.anatomical_preproc['run_t2']:
28352835
outputs = {
2836-
'space-T1w_desc-mean_bold':
2836+
'space-T1w_sbref':
28372837
(func_to_anat, 'outputspec.anat_func_nobbreg'),
28382838
'from-bold_to-T1w_mode-image_desc-linear_xfm':
28392839
(func_to_anat, 'outputspec.func_to_anat_linear_xfm_nobbreg'),
@@ -2842,7 +2842,7 @@ def coregistration(wf, cfg, strat_pool, pipe_num, opt=None):
28422842
}
28432843
else:
28442844
outputs = {
2845-
'space-T1w_desc-mean_bold':
2845+
'space-T1w_sbref':
28462846
(func_to_anat, 'outputspec.anat_func_nobbreg'),
28472847
'from-bold_to-T1w_mode-image_desc-linear_xfm':
28482848
(func_to_anat, 'outputspec.func_to_anat_linear_xfm_nobbreg')
@@ -2915,7 +2915,7 @@ def coregistration(wf, cfg, strat_pool, pipe_num, opt=None):
29152915
func_to_anat_bbreg, 'inputspec.fieldmapmask')
29162916

29172917
outputs = {
2918-
'space-T1w_desc-mean_bold':
2918+
'space-T1w_sbref':
29192919
(func_to_anat_bbreg, 'outputspec.anat_func'),
29202920
'from-bold_to-T1w_mode-image_desc-linear_xfm':
29212921
(func_to_anat_bbreg, 'outputspec.func_to_anat_linear_xfm')

0 commit comments

Comments
 (0)