I am trying to extract the alpha values after I run 3dClusterize for further data analysis, along with everything in the 3dClusterize text report.
After I run afni proc, I can use ‘*Clusterize’ option to set my Clusterize Parameters (NN level, Voxels and Bisided). The results from the Rpt will show a column of Alpha values. This column is what I want to extract as well.
Here is an example of my 3dClusterize code
3dClusterize -nosum -1Dformat -inset $dir/$SubID.results/stats_ROI_$SubID/“$SubID”_allROIs+tlrc.HEAD -idat 0 -ithr 1 -NN 2 -bisided -3.323 3.323 > $results_dir/$SubID.P001/Output.$SubID$Time.RM1.txt
Does 3dClusterize has an option to let me output the alpha values? Or can I use 3dClustSim to get that alpha output?
Thank you for your help
There isn’t a mask in your 3dClusterize command, was a mask already applied?
To do cluster correction, one usually runs:
3dFWHMx - to get blur estimates (3 ACF parameters) from the residuals
3dClustSim - to run Monte Carlo cluster simulations
(input is mask and ACF params)
Then choose an output cluster table for the preferred NN_level (NN1?) and test style (e.g. bisided).
From that table choose a row based on the uncorrected p-value that you are applying and the column based on corrected p (alpha) value that you are applying.
The way alpha values get reported from the afni GUI’s clusterize report is because 3dFWHMx and 3dClustSim can be run automatically by afni_proc.py, with the output tables being stored inside the stats dataset. If you similarly stored the 3dClustSim results in the group analysis result, the afni GUI will show similar alpha values at the cluster level. 3dClusterize does not search for and report those alpha values.
But typically one just chooses and overall alpha value and therefore a minimum cluster size for correction at that level. Then the entire map would be corrected at the given alpha value.
Does that seem reasonable?
Our overall objective is to perform a laterality index on homologous cortical regions on a subject-by-subject basis (e.g. Left M1 and Right M1). In order to do this, we have developed a GUI that lets us read in the 3dclusterize output tables for multiple ROI’s and subjects at a time. We use afni_proc.py, but since every participant has a different ACF value, it’s more efficient for us at the moment to set the cluster size to 2 at voxel P = .05 (regardless of alpha) and then use the alpha values within the table to determine the significance of the cluster. Otherwise, bash scripting 3dclusterize on all of our ROI’s and subjects will become difficult because we would have to put in unique cluster size values for each results file.
Is there another approach we might be able to use to account for each individual ACF without having to change the voxel_thresh for each participant and condition? Is it appropriate to average all of the ACF values and run 3dClustsim on the average?
We average the ACF parameters across subjects and use that to find a single cluster limit for the group.
Since you seem to be going after individual subject results, that might just imply using a common group mask (as applied with the ACF params in 3dClustSim).
To be sure, are the subject results in a standard space?
I’m working on the same dataset. All of the Afni_Proc.py (which is run on individual subjects) output is in participant space.
In parallel to afni_proc.py we use auto_warp.py to nonlinearly warp T1 images to MNI 2009c space. Subsequently, we use 3dNwarpApply (-iwarp) to bring the stats and anything else from patient space (which was epi2anat aligned) to MNI space. Ultimately, we’re using the HMAT atlas to look at subject specific voxels within the given HMAT regions in MNI space.
Thanks for your help!