Hi afni group:
I had two ways to do group analysis in my mind.
The first is based on the volume data, just simply @auto_tlrc the first level glts file for each participant and do anova (in my case, 3dMVM).
The second is based on the surface data. 1) do 3dVol2Surf on the first level glts file of each participant, 2) with the surface data (1d file) do the same anova, 3), do 3dSurf2Vol to transform the surface data back to volume data.
I assumed those two ways might have slightly different values but the same pattern. While when I checked the results from two methods, they did show a very similar contrast pattern, but the statistical value range differ a lot. The activation from surface data were more robust ( a lot).
Here is the codes that I used just in case you want to check the detail.
method 1:
@auto_tlrc -apar Anatomical_reg_norm+tlrc -input GLM_glts+orig -dxyz 3 -rmode NN -suffix _at
3dMVM
3dMVM -prefix $spath/group/group_MVM -jobs 4 \
-bsVars 'Modality' \
-wsVars 'Scale' \
-SS_type 2 \
-num_glt 25 \
-mask "$spath"/group/mask_group+tlrc \
-gltLabel 1 Listen_NS -gltCode 1 'Modality : 1*Listen Scale : 1*NS' \
...
-gltLabel 24 US_ Read-Listen -gltCode 24 'Scale : 1*US Modality : 1*Read -1*Listen' \
-gltLabel 25 SW_ Read-Listen -gltCode 25 'Scale : 1*SW Modality : 1*Read -1*Listen' \
-dataTable \
Subj Modality Scale InputFile \
s2 Listen NS "$spath"/sub02/orig_files/GLM_glts_at+tlrc'[6]' \
s2 Listen CS "$spath"/sub02/orig_files/GLM_glts_at+tlrc'[0]' \
...
...
s9 Listen CS "$spath"/sub09/orig_files/GLM_glts_at+tlrc'[0]' \
s9 Listen US "$spath"/sub09/orig_files/GLM_glts_at+tlrc'[2]' \
s9 Listen SW "$spath"/sub09/orig_files/GLM_glts_at+tlrc'[4]' \
method 2:
3dVol2Surf
cd "$spath"/"$sub"/orig_files/
set infile = GLM_glts
foreach hemi(lh rh)
echo "Working on: $infile --> $hemi ... "
rm ../surface_files/"$hemi"_"$infile".1D
3dVol2Surf \
-spec ../freesurfer/SUMA/std."$sub"_"$hemi".spec \
-surf_A smoothwm \
-surf_B pial \
-sv Anatomical_reg_AlndExp+orig \
-grid_parent "$infile"+orig \
-map_func max_abs \
-f_steps 15 \
-f_index voxels \
-oob_value 0 \
-no_headers \
-out_1D ../surface_files/"$hemi"_"$infile".1D
end
foreach hemi(lh rh)
3dMVM -prefix "$hemi"_group_MVM -jobs 12 \
-bsVars 'Modality' \
-wsVars 'Scale' \
-SS_type 2 \
-num_glt 25 \
-gltLabel 1 Listen_NS -gltCode 1 'Modality : 1*Listen Scale : 1*NS' \
-gltLabel 2 Listen_CS -gltCode 2 'Modality : 1*Listen Scale : 1*CS' \
...
...
-gltLabel 24 US_ Read-Listen -gltCode 24 'Scale : 1*US Modality : 1*Read -1*Listen' \
-gltLabel 25 SW_ Read-Listen -gltCode 25 'Scale : 1*SW Modality : 1*Read -1*Listen' \
-dataTable \
Subj Modality Scale InputFile \
s2 Listen NS "$spath"/sub02/surface_files/"$hemi"_GLM_glts.1D'[12]' \
s2 Listen CS "$spath"/sub02/surface_files/"$hemi"_GLM_glts.1D'[6]' \
...
s7 Listen CS "$spath"/sub07/surface_files/"$hemi"_GLM_glts.1D'[6]' \
after 3dMVM, transform the surface results to volume data
#provide an index column for the results for 3dSurf2Vol
foreach hemi(lh rh)
1dcat "$spath"/sub02/surface_files/"$hemi"_GLM_glts.1D'[0]' \
"$hemi"_group_MVM.1D \
>> "$hemi"_group_MVM.dset
end
#put group results back into volume world
foreach hemi(lh rh)
# rm "$hemi"_group_MVM.dset
3dSurf2Vol \
-spec "$spath"/group/freesurfer/SUMA/subAvg_"$hemi"+tlrc.spec \
-surf_A smoothwm \
-surf_B pial \
-sv ../subAvg_SurfVol_at+tlrc.nii.gz \
-grid_parent "$spath"/sub02/orig_files/GLM_glts_at+tlrc. \
-sdata_1D "$hemi"_group_MVM.dset \
-datum float \
-map_func max_abs \
-f_steps 15 \
-f_index voxels \
-f_p1_fr -0.2 -f_pn_fr 0.4 \
-prefix ./"$hemi"_group_MVM
end
rm group_MVM.nii.gz
3dcalc \
-float \
-a lh_group_MVM+tlrc. \
-b rh_group_MVM+tlrc. \
-expr '(a+b)' \
-prefix group_MVM.nii.gz
The below links show the two renderings
from surface data
https://drive.google.com/open?id=10bTizxI1ge_COQIQ6XC8D430erRaY9NX
from volume data
https://drive.google.com/open?id=1G81PMwHHD8d8k8HuhV7NYstqUzP66jva
They were rendering with the same threshold and cluster size.
Thank you so much!!!
Meng