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 19, 2019 12:23PM
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
[drive.google.com]

from volume data
[drive.google.com]

They were rendering with the same threshold and cluster size.

Thank you so much!!!

Meng



Edited 2 time(s). Last edit at 02/20/2019 04:00AM by Liu Mengxing.
Subject Author Posted

t-value higher in surface computation than volume computation

Liu Mengxing February 19, 2019 12:23PM

Re: t-value higher in surface computation than volume computation

gang February 20, 2019 12:30PM

Re: t-value higher in surface computation than volume computation

Daniel Glen February 20, 2019 08:27PM

Re: t-value higher in surface computation than volume computation

Liu Mengxing February 21, 2019 06:09AM

Re: t-value higher in surface computation than volume computation

Daniel Glen February 21, 2019 04:46PM