I’m hoping someone can help me troubleshoot this code. As might be obvious from my previous pyMVPA post, I’m a pyMVPA novice, and my basic sanity check is failing.
What I’m trying to do – Given 4 runs with 4 conditions, I’d like to create a cross-validated Euclidean DSM.
The sanity check – I’d expect the distance between the identical conditions (the “diagonal” to be the smallest)
Implementation:
cds = fmri_dataset(samples=
[’/om/group/saxelab/RSAtest/data/EMO/sub-SAXEEMOfd28_run1_cgd_cope.nii.gz’,
…snip…
‘/om/group/saxelab/RSAtest/data/EMO/sub-SAXEEMOfd28_run3_tgn_cope.nii.gz’,
‘/om/group/saxelab/RSAtest/data/EMO/sub-SAXEEMOfd28_run4_tgn_cope.nii.gz’],
targets=[‘cgd’,‘cgd’,‘cgd’,‘cgd’,‘cgf’,‘cgf’,‘cgf’,‘cgf’,‘cgn’,‘cgn’,‘cgn’,‘cgn’,
‘tgn’,‘tgn’,‘tgn’,‘tgn’],
mask=’/om3/group/saxelab/EMOfd/ROI_MASKS/disgust_meta_190611_C05_1k_ALE.nii’)
cds.sa[‘oddeven’] = [‘odd’,‘even’,‘odd’,‘even’,‘odd’,‘even’,‘odd’,‘even’,
‘odd’,‘even’,‘odd’,‘even’,‘odd’,‘even’,‘odd’,‘even’]
cds_split1 = cds[cds.sa.oddeven == ‘odd’]
cds_split2 = cds[cds.sa.oddeven == ‘even’]
dsm = rsa.CDist(pairwise_metric = ‘Euclidean’)
dsm.train(cds_split1)
cres = dsm(cds_split2)
The problem: The smallest distances are not, in fact, along the diagonal.
Thoughts? It’s possible the first-level model was wrong, but since this is the piece I’m least familiar with, I thought I’d start here.
Thanks!
Todd