AFNI Message Board

Dear AFNI users-

We are very pleased to announce that the new AFNI Message Board framework is up! Please join us at:

https://discuss.afni.nimh.nih.gov

Existing user accounts have been migrated, so returning users can login by requesting a password reset. New users can create accounts, as well, through a standard account creation process. Please note that these setup emails might initially go to spam folders (esp. for NIH users!), so please check those locations in the beginning.

The current Message Board discussion threads have been migrated to the new framework. The current Message Board will remain visible, but read-only, for a little while.

Sincerely, AFNI HQ

History of AFNI updates  

|
February 26, 2021 01:09PM
Dear all,

I run 3dDeconvolve with SPMG2 basis function and my GLT outputs are a bit unclear. If I specify the basis function with GLT (e.g. -gltsym 'SYM: S[0]' and -gltsym 'SYM: S[1]' ), then I get the results the same as the ones output automatically by 3dDeconvolve (S[0] for the gamma function and S[1] for the derivative). However if I do not specify the basis function in GLT, then the results are not the same as the default from 3dDeconvove.

What is the GLT output when I'm not specifying the basis function? Does it combine the two basis functions (and how does it do it?)? Which one should I use for the group analyses if I want to compare the first basis function and the combination between the first basis function and the derivative (t test with permutations)?

Thank you in advance for your answer! It will really help me!

My code which does not specify the basis function with GLT is:
3dDeconvolve -input ${global_path}/derivatives/sub-${i}/func/sub-${i}_task-scenarios_run-*preproc_bold.nii.gz \
-censor ${global_path}/censoring_files/CENSORING_files_INSTR_no_rating/sub-${i}_censor_no_rating_concatenated.1D \
-mask ${global_path}/derivatives/sub-${i}/func/brain_mask_output_mean/sub-${i}_across_runs_mask.nii.gz \
-ortvec ${global_path}/denoisings/6_motion/sub-${i}_6_motion_concatenated.txt sub-${i}_6_motion_concatenated \
-polort A \
-num_stimts 2 \
-stim_times 1 ${global_path}/onset_timing_files/sub-${i}_scenarios.txt 'SPMG2(90)' \
-stim_label 1 S \
-stim_times 2 ${global_path}/onset_timing_files/sub-${i}_instructions.txt 'SPMG2(40)' \
-stim_label 2 I \
-jobs 10 \
-gltsym 'SYM: S' \
-glt_label 1 S \
-gltsym 'SYM: I' \
-glt_label 2 I \
-gltsym 'SYM: S-I' \
-glt_label 3 S-I \
-fout -tout -x1D X.xmat.1D -xjpeg X.jpg \
-x1D_uncensored X.nocensor.xmat.1D \
-x1D_regcensored X.regcensored.xmat.1D \
-fitts fitts_sub-${i}_task-scenarios.nii.gz \
-errts errts_sub-${i}_task-scenarios.nii.gz \
-bucket stats_sub-${i}_task-scenarios.nii.gz


Output of this is:

Number of values stored at each pixel = 20
-- At sub-brick #0 'Full_Fstat' datum type is float: 0 to 38.9864
statcode = fift; statpar = 4 1045
-- At sub-brick #1 'S#0_Coef' datum type is float: -33.4229 to 59.606
-- At sub-brick #2 'S#0_Tstat' datum type is float: -8.46058 to 11.6233
statcode = fitt; statpar = 1045
-- At sub-brick #3 'S#1_Coef' datum type is float: -131.374 to 137.449
-- At sub-brick #4 'S#1_Tstat' datum type is float: -5.66001 to 9.27721
statcode = fitt; statpar = 1045
-- At sub-brick #5 'S_Fstat' datum type is float: 0 to 67.5971
statcode = fift; statpar = 2 1045
-- At sub-brick #6 'I#0_Coef' datum type is float: -47.0806 to 55.9128
-- At sub-brick #7 'I#0_Tstat' datum type is float: -8.41375 to 11.5452
statcode = fitt; statpar = 1045
-- At sub-brick #8 'I#1_Coef' datum type is float: -49.3042 to 64.5397
-- At sub-brick #9 'I#1_Tstat' datum type is float: -4.92199 to 7.65762
statcode = fitt; statpar = 1045
-- At sub-brick #10 'I_Fstat' datum type is float: 0 to 67.2554
statcode = fift; statpar = 2 1045
-- At sub-brick #11 'S_GLT#0_Coef' datum type is float: -130.415 to 168.317
-- At sub-brick #12 'S_GLT#0_Tstat' datum type is float: -5.88854 to 10.8199
statcode = fitt; statpar = 1045
-- At sub-brick #13 'S_GLT_Fstat' datum type is float: 0 to 117.071
statcode = fift; statpar = 1 1045
-- At sub-brick #14 'I_GLT#0_Coef' datum type is float: -58.3633 to 98.6615
-- At sub-brick #15 'I_GLT#0_Tstat' datum type is float: -6.1646 to 10.4015
statcode = fitt; statpar = 1045
-- At sub-brick #16 'I_GLT_Fstat' datum type is float: 0 to 108.19
statcode = fift; statpar = 1 1045
-- At sub-brick #17 'S-I_GLT#0_Coef' datum type is float: -95.1888 to 97.0475
-- At sub-brick #18 'S-I_GLT#0_Tstat' datum type is float: -8.49489 to 9.37162
statcode = fitt; statpar = 1045
-- At sub-brick #19 'S-I_GLT_Fstat' datum type is float: 0 to 87.8273
statcode = fift; statpar = 1 1045

Here for example sub-brick #1 is different than sub-brick #11.

But when I speficy the basis function it is the same:
(here I also tried to combine them using "+" as I saw on another topic, but it did not work as the vals are the same):

3dDeconvolve -input ${global_path}/derivatives/sub-${i}/func/sub-${i}_task-scenarios_run-*preproc_bold.nii.gz \
-censor ${global_path}/censoring_files/CENSORING_files_INSTR_no_rating/sub-${i}_censor_no_rating_concatenated.1D \
-mask ${global_path}/derivatives/sub-${i}/func/brain_mask_output_mean/sub-${i}_across_runs_mask.nii.gz \
-ortvec ${global_path}/denoisings/6_motion/sub-${i}_6_motion_concatenated.txt sub-${i}_6_motion_concatenated \
-polort A \
-num_stimts 2 \
-stim_times 1 ${global_path}/onset_timing_files/sub-${i}_scenarios.txt 'SPMG2(90)' \
-stim_label 1 S \
-stim_times 2 ${global_path}/onset_timing_files/sub-${i}_instructions.txt 'SPMG2(40)' \
-stim_label 2 I \
-jobs 10 \
-gltsym 'SYM: S[0]\S[1]' \
-glt_label 1 S_F-test \
-gltsym 'SYM: I[0]\I[1]' \
-glt_label 2 I_F-test \
-gltsym 'SYM: S[0]+S[1]' \
-glt_label 3 S0_S1 \
-gltsym 'SYM: I[0]+I[1]' \
-glt_label 4 I0_I1 \
-gltsym 'SYM: S[0] -I[0]\S[1] -I[1]' \
-glt_label 5 S-I_F-test \
-fout -tout -x1D X.xmat.1D -xjpeg X.jpg \
-x1D_uncensored X.nocensor.xmat.1D \
-x1D_regcensored X.regcensored.xmat.1D \
-fitts fitts_sub-${i}_task-scenarios.nii.gz \
-errts errts_sub-${i}_task-scenarios.nii.gz \
-bucket stats_sub-${i}_task-scenarios.nii.gz

Output of this is:

Number of values stored at each pixel = 32
-- At sub-brick #0 'Full_Fstat' datum type is float: 0 to 38.9864
statcode = fift; statpar = 4 1045
-- At sub-brick #1 'S#0_Coef' datum type is float: -33.4229 to 59.606
-- At sub-brick #2 'S#0_Tstat' datum type is float: -8.46058 to 11.6233
statcode = fitt; statpar = 1045
-- At sub-brick #3 'S#1_Coef' datum type is float: -131.374 to 137.449
-- At sub-brick #4 'S#1_Tstat' datum type is float: -5.66001 to 9.27721
statcode = fitt; statpar = 1045
-- At sub-brick #5 'S_Fstat' datum type is float: 0 to 67.5971
statcode = fift; statpar = 2 1045
-- At sub-brick #6 'I#0_Coef' datum type is float: -47.0806 to 55.9128
-- At sub-brick #7 'I#0_Tstat' datum type is float: -8.41375 to 11.5452
statcode = fitt; statpar = 1045
-- At sub-brick #8 'I#1_Coef' datum type is float: -49.3042 to 64.5397
-- At sub-brick #9 'I#1_Tstat' datum type is float: -4.92199 to 7.65762
statcode = fitt; statpar = 1045
-- At sub-brick #10 'I_Fstat' datum type is float: 0 to 67.2554
statcode = fift; statpar = 2 1045
-- At sub-brick #11 'S_F-test_GLT#0_Coef' datum type is float: -33.4229 to 59.606
-- At sub-brick #12 'S_F-test_GLT#0_Tstat' datum type is float: -8.46058 to 11.6233
statcode = fitt; statpar = 1045
-- At sub-brick #13 'S_F-test_GLT#1_Coef' datum type is float: -131.374 to 137.449
-- At sub-brick #14 'S_F-test_GLT#1_Tstat' datum type is float: -5.66001 to 9.27721
statcode = fitt; statpar = 1045
-- At sub-brick #15 'S_F-test_GLT_Fstat' datum type is float: 0 to 67.5971
statcode = fift; statpar = 2 1045
-- At sub-brick #16 'I_F-test_GLT#0_Coef' datum type is float: -47.0806 to 55.9128
-- At sub-brick #17 'I_F-test_GLT#0_Tstat' datum type is float: -8.41375 to 11.5452
statcode = fitt; statpar = 1045
-- At sub-brick #18 'I_F-test_GLT#1_Coef' datum type is float: -49.3042 to 64.5397
-- At sub-brick #19 'I_F-test_GLT#1_Tstat' datum type is float: -4.92199 to 7.65762
statcode = fitt; statpar = 1045
-- At sub-brick #20 'I_F-test_GLT_Fstat' datum type is float: 0 to 67.2554
statcode = fift; statpar = 2 1045
-- At sub-brick #21 'S0_S1_GLT#0_Coef' datum type is float: -33.4229 to 59.606
-- At sub-brick #22 'S0_S1_GLT#0_Tstat' datum type is float: -8.46058 to 11.6233
statcode = fitt; statpar = 1045
-- At sub-brick #23 'S0_S1_GLT_Fstat' datum type is float: 0 to 135.1
statcode = fift; statpar = 1 1045
-- At sub-brick #24 'I0_I1_GLT#0_Coef' datum type is float: -47.0806 to 55.9128
-- At sub-brick #25 'I0_I1_GLT#0_Tstat' datum type is float: -8.41375 to 11.5452
statcode = fitt; statpar = 1045
-- At sub-brick #26 'I0_I1_GLT_Fstat' datum type is float: 0 to 133.292
statcode = fift; statpar = 1 1045
-- At sub-brick #27 'S-I_F-test_GLT#0_Coef' datum type is float: -29.8346 to 36.0893
-- At sub-brick #28 'S-I_F-test_GLT#0_Tstat' datum type is float: -11.1242 to 7.49791
statcode = fitt; statpar = 1045
-- At sub-brick #29 'S-I_F-test_GLT#1_Coef' datum type is float: -109.751 to 77.914
-- At sub-brick #30 'S-I_F-test_GLT#1_Tstat' datum type is float: -5.96098 to 9.24133
statcode = fitt; statpar = 1045
-- At sub-brick #31 'S-I_F-test_GLT_Fstat' datum type is float: 0 to 68.242
statcode = fift; statpar = 2 1045

Here sub-brick #1, sub-brick #11 and sub-brick #21 are the same.
Subject Author Posted

SPMG2 GLT outputs

ruben.nechifor February 26, 2021 01:09PM

Re: SPMG2 GLT outputs

gang February 28, 2021 07:57PM

Re: SPMG2 GLT outputs

ruben.nechifor March 01, 2021 05:49AM

Re: SPMG2 GLT outputs

gang March 01, 2021 10:17PM