Hi all,<div><br></div><div>I am trying to use searchlight on event-related fMRI data. I combined two scripts provided with </div><div>pymvpa (version 0.4.5): eventrelated.py and searchlight_2d.py. The script looks like that</div>
<div><br></div><div>=====================================================</div><div><div>from mvpa.suite import *</div><div><br></div><div>fmri_src = os.path.join(pymvpa_dataroot, 'bold.nii.gz')</div><div>mask = NiftiImage(os.path.join(pymvpa_dataroot, 'mask.nii.gz'))</div>
<div>attr = SampleAttributes(</div><div> os.path.join(pymvpa_dataroot,</div><div> 'attributes_literal.txt'),</div><div> literallabels=True)</div></div>
<div><div>verbose(1, "Load data for preprocessing")</div><div>pre_ds = NiftiImage(fmri_src)</div><div>pre_ds = NiftiDataset(samples=fmri_src, labels=attr.labels,</div><div> chunks=attr.chunks, mask=mask)</div>
<div>pre_ds.setSamplesDType('float')</div><div>detrend(pre_ds, perchunk=True, model='linear')</div></div><div><div>evs = [ev for ev in attr.toEvents()</div><div> if ev['label'] in ['face', 'house']]</div>
</div><div><div>for ev in evs:</div><div> ev['onset'] -= 1</div><div> ev['duration'] = 4</div></div><div><div>ds = ERNiftiDataset(samples=pre_ds.map2Nifti(),</div><div> events=evs,</div>
<div> mask=mask,</div><div> labels_map={'face': 1,</div><div> 'house': 2})</div></div><div>zscore(ds, perchunk=True)</div><div><br></div>
<div><div># Run Searchlight</div><div>clf = LinearNuSVMC()</div><div>cv = CrossValidatedTransferError(TransferError(clf),</div><div> NFoldSplitter())</div></div><div><div>for radius in [1,5,10]:</div>
<div> </div><div> print "Running searchlight with radius: %i ..." % (radius)</div><div> sl = Searchlight(cv, radius=radius)</div><div> sl_map = sl(ds)</div></div><div><br></div><div>=====================================================</div>
<div><br></div><div>The code fails with the following message:</div><div><br></div><div><div>Traceback (most recent call last):</div><div> File "eventrelated_original_SL.py", line 158, in <module></div><div>
sl_map = sl(ds)</div><div> File "/usr/lib/pymodules/python2.6/mvpa/measures/base.py", line 105, in __call__</div><div> result = self._call(dataset)</div><div> File "/usr/lib/pymodules/python2.6/mvpa/measures/searchlight.py", line 77, in _call</div>
<div> raise ValueError, "Searchlight only works with MappedDatasets " \</div><div>ValueError: Searchlight only works with MappedDatasets that has metric assigned.</div></div><div><br></div><div><br></div><div>
<br></div><div>Could you please advise on how to make the code work by assigning metric to MappedDatasets or in any other way.</div><div><br></div><div>Thank you,<br>Anna.</div><meta http-equiv="content-type" content="text/html; charset=utf-8">