Can 3dMVM analyze contrast betas already calculated at individual level?

Hello

I just had the latest AFNI installed, which has the r and modules built in.

When I review the -help on 3dMVM it appears that it is designed to calculate as part of the omnibus analysis the actual original task contrast (such as seeing faces vs seeing shapes). Can it also be used with the simple task contrast already calculated at the individual-subject level by 3dDeconvolve?

Let’s say the 3dANOVA3 example below was actually

-dset 1 1 1 …/controls-scan1/70001-101216/‘EFTaskStats-FacesVsShapes_MNI+tlrc[15]’ \

In other words, could 3dMVM do the analysis where each invoked sub-brik was a beta weight of an already-calculated contrast?

What I would really need is Group (patients/controls) X time (Scan 1 vs follow-up scan 2) main and interaction effects on the pre-generated contrasts (already calculated with 3dDeconvolve on the individual level. Can 3dMVM do this with uneven sample sizes?

Even if 3dMVM could work with contrast betas as the source info, could it be preferable to actually go right to the original partial correlations of event-classes singly and build the individual-level contrasts within this 3dMVM? That would make it awfully complex.

Jim,

3dMVM can take any effect estimate including a contrast or linear combination of multiple betas, just as all other group analysis programs such as 3dANOVA3.

Can 3dMVM do this with uneven sample sizes?

Do you mean different number of subjects across groups? If so, the answer is YES.

THanks Gang, so I made the following script, and -dataTable in excel, saved as tab-delimited text (uploaded).

I have a “BPD” patient group and a control group, and each subject had two scans “s1” and “s2” that were four weeks apart. The invoked subbrik for the InputFile is the beta weight of a contrast between two task events.

#! /bin/csh

use 3dMVM for main and interaction effects of subject group and time

generate contrasts of within-subject change over time (scan sessions)

generate main effects of group at each time point singly

generate interaction effect maps of Group X time

cd …/3dMVM

clean up old datasets (if present)

if ( -e ant_lorewVn_3dMVM+tlrc.BRIK ) then
rm -rf _3dMVM+tlrc.

endif

bucket dataset for anticipation of low reward vs neutral

3dMVM -prefix ant_lorewVn_3dMVM
-jobs 12
-mask …/datamaps/consensus-mask-XYGNG+tlrc
-bsVars group
-wsVars time
-SS_type 3
-num_glt 6
-gltLabel 1 control_s2vs1_ant_lorewVn -gltCode 1 ‘group : 1control time 1s2 -1s1’
-gltLabel 2 BPD_s2vs1_ant_lorewVn -gltCode 2 'group : 1
BPD time 1s2 -1s1’
-gltLabel 3 all_s2vs1_ant_lorewVn -gltCode 3 ‘time 1s2 -1s1’
-gltLabel 4 BPDvcontrol_s1_ant_lorewVn -gltCode 4 ‘time : s1 group 1BPD -1control’
-gltLabel 5 BPDvcontrol_s2_ant_lorewVn -gltCode 5 ‘time : s2 group 1BPD -1control’
-gltLabel 6 groupXtime -gltCode 6 ‘group 1BPD -1control time : 1s2 -1s1’
-dataTable @3dMVMdatatable_ant_lorewVn.txt

cd …/scripts


However, I’m getting “Error: Inappropriate coding in test No.1!” So what is wrong with my syntax, and did I configure this analysis correctly for what I want?

Thanks

Jim

Jim,

For the following 3 lines,

-gltLabel 1 control_s2vs1_ant_lorewVn -gltCode 1 ‘group : 1control time 1s2 -1s1’ \
-gltLabel 2 BPD_s2vs1_ant_lorewVn -gltCode 2 'group : 1
BPD time 1s2 -1s1’ \
-gltLabel 3 all_s2vs1_ant_lorewVn -gltCode 3 ‘time 1s2 -1s1’ \

you need to add a colon (:slight_smile: after ‘time’:

-gltLabel 1 control_s2vs1_ant_lorewVn -gltCode 1 ‘group : 1control time : 1s2 -1s1’ \
-gltLabel 2 BPD_s2vs1_ant_lorewVn -gltCode 2 'group : 1
BPD time : 1s2 -1s1’ \
-gltLabel 3 all_s2vs1_ant_lorewVn -gltCode 3 ‘time : 1s2 -1s1’ \

Same problem for ‘group’ in the next 3 lines:

-gltLabel 4 BPDvcontrol_s1_ant_lorewVn -gltCode 4 ‘time : s1 group 1BPD -1control’ \
-gltLabel 5 BPDvcontrol_s2_ant_lorewVn -gltCode 5 ‘time : s2 group 1BPD -1control’ \
-gltLabel 6 groupXtime -gltCode 6 ‘group 1BPD -1control time : 1s2 -1s1’ \

Thanks Gang,

Somehow I missed that. So I added the needed colon for each of the six glt lines, launched script, and I got a new error:

Error in seq.default(2, length(sepTerms), 2) : wrong sign in ‘by’ argument
Calls: process.MVM.opts → gl_Constr - glf_Constr → seq → seq.default
Execution halted

Could it be a problem with my tab-delimited .txt file of the -dataTable?

Jim

Jim,

The following two tests

-gltLabel 4 BPDvcontrol_s1_ant_lorewVn -gltCode 4 ‘time : s1 group 1BPD -1control’ \
-gltLabel 5 BPDvcontrol_s2_ant_lorewVn -gltCode 5 ‘time : s2 group 1BPD -1control’ \

have missing weights, and they should be

-gltLabel 4 BPDvcontrol_s1_ant_lorewVn -gltCode 4 ‘time : 1s1 group : 1BPD -1control’ \
-gltLabel 5 BPDvcontrol_s2_ant_lorewVn -gltCode 5 'time : 1
s2 group : 1BPD -1control’ \