<div dir="ltr"><div style><span style="font-family:arial,sans-serif;font-size:13px">Hi, </span></div><div style><font face="arial, sans-serif">Thanks a lot for your response. Here are the details for my data and the analysis, my code is exactly what I have sent in my first email. I tested Haxby data with my code and it works perfectly fine. I am also happy to send you codes with perhaps a part of data (all data is too huge).</font></div>
<div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">All the best,</font></div><div style><font face="arial, sans-serif">Arman</font></div><div><span style="font-family:arial,sans-serif;font-size:13px"><b><br>
</b></span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><b>My version of PyMVPA</b></span><br></div><div><span style="font-family:arial,sans-serif;font-size:13px"><b><br></b></span></div><div><div>
In [59]: mvpa2.suite.versions</div><div>Out[59]: </div><div>{'ctypes': SmartVersion ('1.1.0'),</div><div> 'ipython': SmartVersion ('1.1.0'),</div><div> 'lxml': SmartVersion ('2.2.3'),</div>
<div> 'matplotlib': SmartVersion ('0.99.1.1'),</div><div> 'nibabel': SmartVersion ('1.3.0'),</div><div> 'numpy': SmartVersion ('1.4.1'),</div><div> 'reportlab': SmartVersion ('2.3'),</div>
<div> 'scipy': SmartVersion ('0.7.2'),</div><div> 'skl': SmartVersion ('0.14.1')}</div></div><div><br></div><div><br></div><div style><b>Debug RFE</b></div><div><div>[RFEC] DBG: Initiating RFE with training on <Dataset: 55x857366@float32, <sa: chunks,partitions,targets,time_coords,time_indices>, <fa: voxel_indices>, <a: imghdr,imgtype,lastpartitionset,lastsplit,mapper,partitions_set,repetitons,voxel_dim...> and testing using <Dataset: 55x857366@float32, <sa: chunks,partitions,targets,time_coords,time_indices>, <fa: voxel_indices>, <a: imghdr,imgtype,lastpartitionset,lastsplit,mapper,partitions_set,repetitons,voxel_dim...></div>
<div>[RFEC] DBG: Step 0: nfeatures=857366</div><div>---------------------------------------------------------------------------</div><div>IndexError Traceback (most recent call last)</div>
<div><ipython-input-63-a9da6f9cc192> in <module>()</div><div>----> 1 results=cvte(gm_lt)</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in __call__(self, ds)</div><div> 257 "used and auto training is disabled."</div>
<div> 258 % str(self))</div><div>--> 259 return super(Learner, self).__call__(ds)</div><div> 260 </div><div> 261 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/node.pyc in __call__(self, ds)</div>
<div> 109 </div><div> 110 self._precall(ds)</div><div>--> 111 result = self._call(ds)</div><div> 112 result = self._postcall(ds, result)</div><div> 113 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self, ds)</div>
<div> 495 # always untrain to wipe out previous stats</div><div> 496 self.untrain()</div><div>--> 497 return super(CrossValidation, self)._call(ds)</div><div> 498 </div><div> 499 </div>
<div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self, ds)</div><div> 324 ca.datasets.append(sds)</div><div> 325 # run the beast</div><div>--> 326 result = node(sds)</div>
<div> 327 # callback</div><div> 328 if not self._callback is None:</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in __call__(self, ds)</div><div> 257 "used and auto training is disabled."</div>
<div> 258 % str(self))</div><div>--> 259 return super(Learner, self).__call__(ds)</div><div> 260 </div><div> 261 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/node.pyc in __call__(self, ds)</div>
<div> 109 </div><div> 110 self._precall(ds)</div><div>--> 111 result = self._call(ds)</div><div> 112 result = self._postcall(ds, result)</div><div> 113 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self, ds)</div>
<div> 589 for i in dstrain.get_attr(splitter.get_space())[0].unique])</div><div> 590 # ask splitter for first part</div><div>--> 591 measure.train(dstrain)</div><div> 592 # cleanup to free memory</div>
<div> 593 del dstrain</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div><div> 130 # things might have happened during pretraining</div><div>
131 if ds.nfeatures > 0:</div><div>--> 132 result = self._train(ds)</div><div> 133 else:</div><div> 134 warning("Trying to train on dataset with no features present")</div>
<div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/clfs/meta.pyc in _train(self, dataset)</div><div> 1346 # XXX: should training be done using whole dataset or just samples</div><div> 1347 # YYY: in some cases labels might be needed, thus better full dataset</div>
<div>-> 1348 self.__mapper.train(dataset)</div><div> 1349 </div><div> 1350 # for train() we have to provide dataset -- not just samples to train!</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div>
<div> 130 # things might have happened during pretraining</div><div> 131 if ds.nfeatures > 0:</div><div>--> 132 result = self._train(ds)</div><div> 133 else:</div>
<div> 134 warning("Trying to train on dataset with no features present")</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/featsel/rfe.pyc in _train(self, ds)</div><div> 246 # Compute sensitivity map</div>
<div> 247 if self.__update_sensitivity or sensitivity == None:</div><div>--> 248 sensitivity = self._fmeasure(wdataset)</div><div> 249 if len(sensitivity) > 1:</div>
<div> 250 raise ValueError(</div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in __call__(self, ds)</div><div> 251 debug('LRN', "Auto-training %s on %s",</div>
<div> 252 (self, ds))</div><div>--> 253 self.train(ds)</div><div> 254 else:</div><div> 255 # we always have to have trained before using a learner</div>
<div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div><div> 130 # things might have happened during pretraining</div><div> 131 if ds.nfeatures > 0:</div>
<div>--> 132 result = self._train(ds)</div><div> 133 else:</div><div> 134 warning("Trying to train on dataset with no features present")</div><div><br></div><div>
/usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _train(self, dataset)</div><div> 805 True: "although it was trained previously"}</div><div> 806 [clf.trained]))</div>
<div>--> 807 return clf.train(dataset)</div><div> 808 </div><div> 809 </div><div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self, ds)</div><div> 130 # things might have happened during pretraining</div>
<div> 131 if ds.nfeatures > 0:</div><div>--> 132 result = self._train(ds)</div><div> 133 else:</div><div> 134 warning("Trying to train on dataset with no features present")</div>
<div><br></div><div>/usr/lib64/python2.6/site-packages/mvpa2/clfs/meta.pyc in _train(self, dataset)</div><div> 1268 </div><div> 1269 if ca.is_enabled("stats"):</div><div>-> 1270 predictions = clf.predict(split[1])</div>
<div> 1271 self.ca.stats.add(split[1].sa[targets_sa_name].value,</div><div> 1272 predictions,</div><div><br></div><div>IndexError: list index out of range</div>
</div><div><br></div><div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px"><b>print MyData.summary()</b></span><br></div><div><span style="font-family:arial,sans-serif;font-size:13px"><b><br></b></span></div>
<div>In [52]: print gm_lt.summary()</div><div>Dataset: 97x857366@float32, <sa: chunks,targets,time_coords,time_indices>, <fa: voxel_indices>, <a: imghdr,imgtype,mapper,voxel_dim,voxel_eldim></div><div>stats: mean=0.201735 std=0.44915 var=0.201735 min=0 max=1</div>
<div><br></div><div>Counts of targets in each chunk:</div><div> chunks\targets m n</div><div> --- ---</div><div> 0.0 24 18</div><div> 1.0 25 30</div><div><br></div><div>Summary for targets across chunks</div>
<div> targets mean std min max #chunks</div><div> m 24.5 0.5 24 25 2</div><div> n 24 6 18 30 2</div><div><br></div><div>Summary for chunks across targets</div><div> chunks mean std min max #targets</div>
<div> 0 21 3 18 24 2</div><div> 1 27.5 2.5 25 30 2</div><div>Sequence statistics for 97 entries from set ['m', 'n']</div><div>Counter-balance table for orders up to 2:</div><div>
Targets/Order O1 | O2 |</div><div> m: 47 2 | 45 4 |</div><div> n: 1 46 | 2 44 |</div><div>Correlations: min=-0.73 max=0.92 mean=-0.01 sum(abs)=42</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Mon, Jan 27, 2014 at 9:14 PM, Yaroslav Halchenko <span dir="ltr"><<a href="mailto:debian@onerussian.com" target="_blank">debian@onerussian.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Arman,<br>
<br>
sorry about that -- we should figure it out since it seems to indeed<br>
match our docs and provided unit-test.<br>
<br>
FWIW -- we will beef up our development to kick out a new release some<br>
time soon, that one should include a helper class SplitRFE which would<br>
make it easier to specify a typical RFE procedure.<br>
<br>
Meanwhile -- would you be kind to let us know:<br>
- current version of used PyMVPA you use?<br>
<br>
- log output if you enable debugging for RFE:<br>
export MVPA_DEBUG=RFE.*<br>
<br>
or in python script<br>
<br>
debug.active += ["RFE.*"]<br>
- details on your dataset:<br>
<br>
print MyData.summary()<br>
<br>
OR instead of last two:<br>
<br>
just take few non-degenerate features of it (ds = MyData[:, :20]),<br>
h5save and share with us with your code snippet (verify it runs and<br>
produces the same error on smaller ds) so we could reproduce/analyze ?<br>
<br>
Cheers!<br>
<div><div class="h5"><br>
On Mon, 27 Jan 2014, Arman Eshaghi wrote:<br>
<br>
> Dear all,�<br>
> I'm struggling with recursive feature selection, a meta classifier (clf),<br>
> and the final cross validation. Below is what I have done and what I get<br>
> as error. I would very much appreciate if you could help me here.�<br>
> #from rfe manual<br>
> rfe = RFE(rfesvm_split.get_sensitivity_analyzer(postproc = ChainMapper([<br>
> FxMapper('features', l2_normed), FxMapper('samples', np.mean),<br>
> FxMapper('samples', np.abs)])), ConfusionBasedError(rfesvm_split,<br>
> confusion_state='stats'),<br>
> Repeater(2), fselector=FractionTailSelector(0.50, mode = 'select', tail=<br>
> 'upper'), stopping_criterion=NBackHistoryStopCrit(BestDetector(), 10),<br>
> train_pmeasure=False, update_sensitivity=True)<br>
> #Meta-classifier with SVM as the final classifier and rfe as feature<br>
> selector<br>
> clf=FeatureSelectionClassifier(LinearCSVMC(), rfe, descr='SVM+RFE')<br>
> #cross-validation<br>
> cvte=CrossValidation(clf, HalfPartitioner(), enable_ca=['stats'])<br>
> #running the analysis<br>
> results=cvte(MyData)<br>
> ERRORS:<br>
> In [37]: results=cvte(gm_lt)<br>
> ---------------------------------------------------------------------------<br>
> IndexError � � � � � � � � � � � � � � � �Traceback (most recent call<br>
> last)<br>
> <ipython-input-37-a9da6f9cc192> in <module>()<br>
> ----> 1 results=cvte(gm_lt)<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in<br>
> __call__(self, ds)<br>
> � � 257 � � � � � � � � � � � � � � � � � �"used and auto training is<br>
> disabled."<br>
> � � 258 � � � � � � � � � � � � � � � � � �% str(self))<br>
> --> 259 � � � � return super(Learner, self).__call__(ds)<br>
> � � 260�<br>
> � � 261�<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/node.pyc in __call__(self,<br>
> ds)<br>
> � � 109�<br>
> � � 110 � � � � self._precall(ds)<br>
> --> 111 � � � � result = self._call(ds)<br>
> � � 112 � � � � result = self._postcall(ds, result)<br>
> � � 113�<br>
> /usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self,<br>
> ds)<br>
> � � 495 � � � � # always untrain to wipe out previous stats<br>
> � � 496 � � � � self.untrain()<br>
> --> 497 � � � � return super(CrossValidation, self)._call(ds)<br>
> � � 498�<br>
> � � 499�<br>
> /usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self,<br>
> ds)<br>
> � � 324 � � � � � � � � ca.datasets.append(sds)<br>
> � � 325 � � � � � � # run the beast<br>
> --> 326 � � � � � � result = node(sds)<br>
> � � 327 � � � � � � # callback<br>
> � � 328 � � � � � � if not self._callback is None:<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in<br>
> __call__(self, ds)<br>
> � � 257 � � � � � � � � � � � � � � � � � �"used and auto training is<br>
> disabled."<br>
> � � 258 � � � � � � � � � � � � � � � � � �% str(self))<br>
> --> 259 � � � � return super(Learner, self).__call__(ds)<br>
> � � 260�<br>
> � � 261�<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/node.pyc in __call__(self,<br>
> ds)<br>
> � � 109�<br>
> � � 110 � � � � self._precall(ds)<br>
> --> 111 � � � � result = self._call(ds)<br>
> � � 112 � � � � result = self._postcall(ds, result)<br>
> � � 113�<br>
> /usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _call(self,<br>
> ds)<br>
> � � 589 � � � � � � � � � � for i in<br>
> dstrain.get_attr(splitter.get_space())[0].unique])<br>
> � � 590 � � � � # ask splitter for first part<br>
> --> 591 � � � � measure.train(dstrain)<br>
> � � 592 � � � � # cleanup to free memory<br>
> � � 593 � � � � del dstrain<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self,<br>
> ds)<br>
> � � 130 � � � � � � # things might have happened during pretraining<br>
> � � 131 � � � � � � if ds.nfeatures > 0:<br>
> --> 132 � � � � � � � � result = self._train(ds)<br>
> � � 133 � � � � � � else:<br>
> � � 134 � � � � � � � � warning("Trying to train on dataset with no<br>
> features present")<br>
> /usr/lib64/python2.6/site-packages/mvpa2/clfs/meta.pyc in _train(self,<br>
> dataset)<br>
> � �1346 � � � � # XXX: should training be done using whole dataset or just<br>
> samples<br>
> � �1347 � � � � # YYY: in some cases labels might be needed, thus better<br>
> full dataset<br>
> -> 1348 � � � � self.__mapper.train(dataset)<br>
> � �1349�<br>
> � �1350 � � � � # for train() we have to provide dataset -- not just<br>
> samples to train!<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self,<br>
> ds)<br>
> � � 130 � � � � � � # things might have happened during pretraining<br>
> � � 131 � � � � � � if ds.nfeatures > 0:<br>
> --> 132 � � � � � � � � result = self._train(ds)<br>
> � � 133 � � � � � � else:<br>
> � � 134 � � � � � � � � warning("Trying to train on dataset with no<br>
> features present")<br>
> /usr/lib64/python2.6/site-packages/mvpa2/featsel/rfe.pyc in _train(self,<br>
> ds)<br>
> � � 246 � � � � � � # Compute sensitivity map<br>
> � � 247 � � � � � � if self.__update_sensitivity or sensitivity == None:<br>
> --> 248 � � � � � � � � sensitivity = self._fmeasure(wdataset)<br>
> � � 249 � � � � � � � � if len(sensitivity) > 1:<br>
> � � 250 � � � � � � � � � � raise ValueError(<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in<br>
> __call__(self, ds)<br>
> � � 251 � � � � � � � � � � debug('LRN', "Auto-training %s on %s",<br>
> � � 252 � � � � � � � � � � � � � (self, ds))<br>
> --> 253 � � � � � � � � self.train(ds)<br>
> � � 254 � � � � � � else:<br>
> � � 255 � � � � � � � � # we always have to have trained before using a<br>
> learner<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self,<br>
> ds)<br>
> � � 130 � � � � � � # things might have happened during pretraining<br>
> � � 131 � � � � � � if ds.nfeatures > 0:<br>
> --> 132 � � � � � � � � result = self._train(ds)<br>
> � � 133 � � � � � � else:<br>
> � � 134 � � � � � � � � warning("Trying to train on dataset with no<br>
> features present")<br>
> /usr/lib64/python2.6/site-packages/mvpa2/measures/base.pyc in _train(self,<br>
> dataset)<br>
> � � 805 � � � � � � � � � � True: �"although it was trained previously"}<br>
> � � 806 � � � � � � � � � �[clf.trained]))<br>
> --> 807 � � � � return clf.train(dataset)<br>
> � � 808�<br>
> � � 809�<br>
> /usr/lib64/python2.6/site-packages/mvpa2/base/learner.pyc in train(self,<br>
> ds)<br>
> � � 130 � � � � � � # things might have happened during pretraining<br>
> � � 131 � � � � � � if ds.nfeatures > 0:<br>
> --> 132 � � � � � � � � result = self._train(ds)<br>
> � � 133 � � � � � � else:<br>
> � � 134 � � � � � � � � warning("Trying to train on dataset with no<br>
> features present")<br>
> /usr/lib64/python2.6/site-packages/mvpa2/clfs/meta.pyc in _train(self,<br>
> dataset)<br>
> � �1268�<br>
> � �1269 � � � � � � if ca.is_enabled("stats"):<br>
> -> 1270 � � � � � � � � predictions = clf.predict(split[1])<br>
> � �1271 � � � � � � � �<br>
> self.ca.stats.add(split[1].sa[targets_sa_name].value,<br>
> � �1272 � � � � � � � � � � � � � � � � � � � � � predictions,<br>
> IndexError: list index out of range<br>
<br>
</div></div>> _______________________________________________<br>
> Pkg-ExpPsy-PyMVPA mailing list<br>
> <a href="mailto:Pkg-ExpPsy-PyMVPA@lists.alioth.debian.org">Pkg-ExpPsy-PyMVPA@lists.alioth.debian.org</a><br>
> <a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa" target="_blank">http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa</a><br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
Yaroslav O. Halchenko, Ph.D.<br>
<a href="http://neuro.debian.net" target="_blank">http://neuro.debian.net</a> <a href="http://www.pymvpa.org" target="_blank">http://www.pymvpa.org</a> <a href="http://www.fail2ban.org" target="_blank">http://www.fail2ban.org</a><br>
Senior Research Associate, Psychological and Brain Sciences Dept.<br>
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755<br>
Phone: <a href="tel:%2B1%20%28603%29%20646-9834" value="+16036469834">+1 (603) 646-9834</a> Fax: <a href="tel:%2B1%20%28603%29%20646-1419" value="+16036461419">+1 (603) 646-1419</a><br>
WWW: <a href="http://www.linkedin.com/in/yarik" target="_blank">http://www.linkedin.com/in/yarik</a><br>
<br>
_______________________________________________<br>
Pkg-ExpPsy-PyMVPA mailing list<br>
<a href="mailto:Pkg-ExpPsy-PyMVPA@lists.alioth.debian.org">Pkg-ExpPsy-PyMVPA@lists.alioth.debian.org</a><br>
<a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa" target="_blank">http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa</a></font></span></blockquote></div><br></div>