3dMVM thresholding

Hi all,
I’ve successfully run 3dMVM on a dataset to do second level analyses. Do you have any suggestions as to what I should use to do cluster correction? I’ve used -clustsim in for t-tests, but that is not part of 3dMVM. I’m also not certain how to come up with a smoothing factor if that is required. I used a smoothing kernel of 4mm on my data, but I know it’s the smoothness of the residuals that matters. I did output an errts datasets for each case. My guess is I use 3dClustSim, but I’m not sure how to use it or how to apply it to the dataset I’ve obtained.

I also was curious how to apply ETAC or ACF options to this analysis.
Thanks!
Matt

Two approaches:

  1. Conventional method: use 3dHWHMx -acf to estimate the spatial smoothness and then obtain the cluster size based on 3dClustSim

  2. Highlight-but-not-hide: see following discussions

https://www.biorxiv.org/content/10.1101/2022.10.26.513929v2
https://afni.nimh.nih.gov/afni/community/board/read.php?1,166126,166126#msg-166126

Thanks! For the conventional approach can I just average FWHMx values across subjects?

Hi all,
I just wanted to check in on whether you could offer any advice on how best to do a group-level threshold on data analyzed using 3dMVM, as I do not see a ClustSim option for that program. In the past, I had seen that we could average the <3dFWHM errts*> output values across subjects to use as the smoothing parameter in 3dClustSim. Is that what one would do in the case of ACF (i.e., average each of the values in the output of 3dFWHMx)?
Thanks,
Matt

I had seen that we could average the <3dFWHM errts*> output values across subjects to use as the smoothing parameter
in 3dClustSim. Is that what one would do in the case of ACF (i.e., average each of the values in the output of 3dFWHMx)?

Some extent of arbitrariness is involved here. In addition to the averaging approach, another conventional method is to obtain the population-level residuals from, for example, 3dMVM using the option -resid, and then estimate the spatial smoothness on the population-level residuals.

Hi Gang,

I have similar questions. I ran 3dMVM with -resid flag on n=74. Here is my script.


3dMVM -prefix GvsHC.nii.gz \
    -jobs 4 \
    -bsVars "Group*CIRSGcenter+Education+Age+Gender" \
    -wsVars "Valence*Magnitude" \
    -qVars  "Age,Education,CIRSGcenter" \
    -qcenter 63.5, 16.6, 0 \
    -resid   GvsHC_resid.nii.gz \
    -num_glt 18 \
    -gltLabel 1 3Way_Group_by_ValenceandMagnitude   -gltCode 1  "Group : 1*GRIEF -1*HC    Valence : 1*Reward -1*Punishment     Magnitude : 1*Lg -1*Small" \
    -gltLabel 2 2Way_Group_Valence                  -gltCode 2  "Group : 1*GRIEF -1*HC    Valence : 1*Reward -1*Punishment     Magnitude : 1*All" \
    -gltLabel 3 posthoc_Group_Reward                -gltCode 3  "Group : 1*GRIEF -1*HC    Valence : 1*Reward                   Magnitude : 1*All" \
    -gltLabel 4 posthoc_Group_Punishment            -gltCode 4  "Group : 1*GRIEF -1*HC    Valence : 1*Punishment               Magnitude : 1*All" \
    -gltLabel 5 posthoc_Group_RewardMagnitude       -gltCode 5  "Group : 1*GRIEF -1*HC    Valence : 1*Reward                   Magnitude : 1*Lg -1*Small" \
    -gltLabel 6 posthoc_Group_PunishmentMagnitude   -gltCode 6  "Group : 1*GRIEF -1*HC    Valence : 1*Punishment               Magnitude : 1*Lg -1*Small" \
    -gltLabel 7 posthoc_Grief_Reward		    -gltCode 7  "Group : 1*GRIEF          Valence : 1*Reward                   Magnitude : 1*All" \
    -gltLabel 8 posthoc_Grief_Punishment	    -gltCode 8  "Group : 1*GRIEF          Valence : 1*Punishment               Magnitude : 1*All" \
    -gltLabel 9 posthoc_HC_Reward		    -gltCode 9  "Group : 1*HC             Valence : 1*Reward                   Magnitude : 1*All" \
    -gltLabel 10 posthoc_HC_Punishment	            -gltCode 10  "Group : 1*HC            Valence : 1*Punishment               Magnitude : 1*All" \
    -gltLabel 11 posthoc_Grief_LgReward		    -gltCode 11  "Group : 1*GRIEF         Valence : 1*Reward                   Magnitude : 1*Lg" \
    -gltLabel 12 posthoc_Grief_LgPunishment	    -gltCode 12  "Group : 1*GRIEF         Valence : 1*Punishment               Magnitude : 1*Lg" \
    -gltLabel 13 posthoc_HC_LgReward		    -gltCode 13  "Group : 1*HC            Valence : 1*Reward                   Magnitude : 1*Lg" \
    -gltLabel 14 posthoc_HC_LgPunishment	    -gltCode 14  "Group : 1*HC            Valence : 1*Punishment               Magnitude : 1*Lg" \
    -gltLabel 15 posthoc_Grief_SmallReward          -gltCode 15  "Group : 1*GRIEF         Valence : 1*Reward                   Magnitude : 1*Small" \
    -gltLabel 16 posthoc_Grief_SmallPunishment	    -gltCode 16  "Group : 1*GRIEF         Valence : 1*Punishment               Magnitude : 1*Small" \
    -gltLabel 17 posthoc_HC_SmallReward		    -gltCode 17  "Group : 1*HC            Valence : 1*Reward                   Magnitude : 1*Small" \
    -gltLabel 18 posthoc_HC_SmallPunishment	    -gltCode 18  "Group : 1*HC            Valence : 1*Punishment               Magnitude : 1*Small" \
    -dataTable \

Then I ran 3dFWHMx with -acf, and the residual from 3dMVM as an input.

      3dFWHMx -acf -mask $mask -input GvsHC_resid.nii.gz  -out acf_3dMVM2

Here is the output (444 lines)
10.6753 9.84336 9.79558
10.1204 9.35333 9.63601
10.6 10.5259 10.0315
.
.
.
11.3669 9.93517 10.3598

[b]When I plugged these number in 3dClustsim. I got an error message “[-acf: ‘a’ value should be between 0 and 1 :-(” b]

3dClustSim -mask $mask -acf mean_col1 mean_col2 mean_col3 -pthr 0.05 0.01 00.005 0.001 -iter 10000 >>ClustSim_3dMVMresid_${mask}_n74.txt

Could you please advise?

Thank you,
Nuttaon

Nuttaon,

The output from 3dFWHMx -acf should have 4 columns. What is your AFNI version?

afni -ver

Try updating your AFNI if your version is too old:

@update.afni.binaries -d

Hi Gang,

Thanks for your response. I’m using 21.0.04.

Nuttaon

Hi Gang,

It actually ran just fine. I didn’t realize that the acf is one the terminal screen, not the -out file.

The next question is my -acf are
0 0 0 0
0.71478 5.91395 9.13712 13.7085

Do I use 0.71478 5.91395 9.13712 in the 3dClustsim?

Thank you,
Nuttaon

Do I use 0.71478 5.91395 9.13712 in the 3dClustsim?

Yes, I believe that’s correct. The first three numbers are the (a,b,c)-parameters from the ACF expression, and the last number (13.7085) is the effective FWHM.