<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <b></b>Dear Yaroslav,<br>
    thank you very much for your reply. I have made several attempts,
    trying to guess a solution, but it seems I always get a<br>
    'TypeError: 'NoneType' object is not callable'.<br>
    <br>
    Any further advice is greatly appreciated!<br>
    Best,<br>
    Marco<br>
    <br>
    <br>
    Case 1:<br>
    slght = sphere_gnbsearchlight(clf, partitioner, radius=slradius,
    space='voxel_indices', errorfx=None, postproc=mean_sample())<br>
    slght_map = slght(fds)<br>
    <br>
    <blockquote>In [70]: slght = sphere_gnbsearchlight(clf, partitioner,
      radius=slradius, space='voxel_indices', errorfx=None,
      postproc=mean_sample())<br>
      <br>
      In [71]: slght_map = slght(fds)<br>
      [SLC] DBG:             Phase 1. Initializing partitions using
      <NFoldPartitioner> on <Dataset: 108x111@float32, <sa:
      chunks,targets,time_coords,time_indices>, <fa:
      voxel_indices>, <a:
      imgaffine,imghdr,imgtype,mapper,voxel_dim,voxel_eldim>><br>
      [SLC] DBG:             Phase 2. Blocking data for 18 splits and 3
      labels<br>
      [SLC] DBG:             Phase 3. Computing statistics for 54 blocks<br>
      [SLC] DBG:             Phase 4. Deducing neighbors information for
      111 ROIs<br>
      [SLC] DBG:             Phase 4b. Converting neighbors to sparse
      matrix representation<br>
      [SLC] DBG:             Phase 5. Major loop<br>
      [SLC] DBG:              Split 0 out of 18<br>
      [SLC] DBG:                'Training' is done<br>
      [SLC] DBG:                Doing 'Searchlight'<br>
      [SLC] DBG:               Assessing accuracies<br>
---------------------------------------------------------------------------<br>
      TypeError                                 Traceback (most recent
      call last)<br>
      <ipython-input-71-1146d298ca06> in <module>()<br>
      ----> 1 slght_map = slght(fds)<br>
      <br>
      /usr/lib/python2.7/dist-packages/mvpa2/base/learner.pyc in
      __call__(self, ds)<br>
          257                                    "used and auto training
      is disabled."<br>
          258                                    % str(self))<br>
      --> 259         return super(Learner, self).__call__(ds)<br>
          260 <br>
          261 <br>
      <br>
      /usr/lib/python2.7/dist-packages/mvpa2/base/node.pyc in
      __call__(self, ds)<br>
          119 <br>
          120         self._precall(ds)<br>
      --> 121         result = self._call(ds)<br>
          122         result = self._postcall(ds, result)<br>
          123 <br>
      <br>
      /usr/lib/python2.7/dist-packages/mvpa2/measures/searchlight.pyc in
      _call(self, dataset)<br>
          141 <br>
          142         # pass to subclass<br>
      --> 143         results = self._sl_call(dataset, roi_ids,
      nproc)<br>
          144 <br>
          145         if 'mapper' in dataset.a:<br>
      <br>
      /usr/lib/python2.7/dist-packages/mvpa2/measures/adhocsearchlightbase.pyc
      in _sl_call(self, dataset, roi_ids, nproc)<br>
          513                 # error functions without a chance to
      screw up<br>
          514                 for i, fpredictions in
      enumerate(predictions.T):<br>
      --> 515                     results[isplit, i] =
      errorfx(fpredictions, targets)<br>
          516 <br>
          517 <br>
      <br>
      TypeError: 'NoneType' object is not callable<br>
    </blockquote>
    <br>
    <br>
    <br>
    Similarly for other cases and combinations of them:<br>
    <br>
    Case 2:<br>
    slght = sphere_gnbsearchlight(clf, partitioner, radius=slradius,
    space='voxel_indices', errorfx=ConfusionMatrixError(),
    postproc=mean_sample())<br>
    slght_map = slght(fds)<br>
    <br>
    <br>
    Case3:<br>
    class KeepConfusionMatrix(Node):<br>
          def _call(self, fds):<br>
              out = np.zeros(1, dtype=object)<br>
              out[0] = (fds.samples)<br>
              return out<br>
    <br>
    slght = sphere_gnbsearchlight(clf, partitioner, errorfx=None,
    radius=slradius, space='voxel_indices',
    postproc=ChainNode([Confusion(labels=fds.UT)]))<br>
    slght.postproc.append(KeepConfusionMatrix())<br>
    slght_map = slght(fds)<br>
    <br>
    <br>
    Case4:<br>
    class KeepConfusionMatrix(Node):<br>
          def _call(self, fds):<br>
              out = np.zeros(1, dtype=object)<br>
              out[0] = (fds.samples)<br>
              return out<br>
    <br>
    slght = sphere_gnbsearchlight(clf, partitioner, errorfx=None,
    radius=slradius, space='voxel_indices',
    postproc=ChainNode([mean_sample(),Confusion(labels=fds.UT)]))<br>
    slght.postproc.append(KeepConfusionMatrix())<br>
    slght_map = slght(fds)<br>
    <br>
    <br>
    <br>
    Case5:<br>
    class KeepConfusionMatrix(Node):<br>
          def _call(self, fds):<br>
              out = np.zeros(1, dtype=object)<br>
              out[0] = (fds.samples)<br>
              return out<br>
    <br>
    slght = sphere_gnbsearchlight(clf, partitioner,
    errorfx=ConfusionMatrixError(), radius=slradius,
    space='voxel_indices',
    postproc=ChainNode([mean_sample(),Confusion(labels=fds.UT)]))<br>
    slght.postproc.append(KeepConfusionMatrix())<br>
    slght_map = slght(fds)<br>
    <br>
    <br>
    <br>
    <blockquote type="cite">Yaroslav Halchenko debian at onerussian.com<br>
      Fri Aug 28 13:16:38 UTC 2015<br>
      <pre>quick an possible partial reply

1. "not sure" -- if it pukes then probably not, although judging from
the code I foresaw arbitrary shape of the errorfx output

2. but you could make sphere_gnbsearchlight to return labels (not
errors) and then post-process to get those confusion matrices.  Just
specify  errorfx=None  to it (not to CV).  But you could also try
passing errorfx=ConfusionMatrixError and see how that goes

Please share what you discover/end up with.
mvpa2/tests/test_usecases.py  has more of usecase demos for gnb
searchlights which might come handy

-- 
Yaroslav O. Halchenko, Ph.D.
<a href="http://neuro.debian.net">http://neuro.debian.net</a> <a href="http://www.pymvpa.org">http://www.pymvpa.org</a> <a href="http://www.fail2ban.org">http://www.fail2ban.org</a>
Research Scientist,            Psychological and Brain Sciences Dept.
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   <a href="http://www.linkedin.com/in/yarik">http://www.linkedin.com/in/yarik</a>        

</pre>
    </blockquote>
    <br>
    <div class="moz-cite-prefix">On 08/28/2015 01:48 PM, marco
      tettamanti wrote:<br>
    </div>
    <blockquote cite="mid:55E04A89.1050500@gmail.com" type="cite">
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <font size="-1"><font face="Arial">Dear all,<br>
          is it possible to obtain confusion matrices for all nodes with
          "sphere_gnbsearchlight", as was suggested before with
          "sphere_searchlight":<br>
          <br>
          slcvte = CrossValidation(clf, partitioner, errorfx=None,
          postproc=ChainNode([Confusion(labels=fds.UT)]))<br>
          class KeepConfusionMatrix(Node):<br>
               def _call(self, fds):<br>
                   out = np.zeros(1, dtype=object)<br>
                   out[0] = (fds.samples)<br>
                   return out<br>
          <br>
          slcvte.postproc.append(KeepConfusionMatrix())<br>
          slght = sphere_searchlight(slcvte, radius=slradius,
          space='voxel_indices', nproc=4, postproc=mean_sample())<br>
          slght_map = slght(fds)<br>
          <br>
          <br>
          Thank you and best wishes,<br>
          Marco<br>
        </font></font>
      <pre class="moz-signature" cols="80">-- 
Marco Tettamanti, Ph.D.
Nuclear Medicine Department & Division of Neuroscience
San Raffaele Scientific Institute
Via Olgettina 58
I-20132 Milano, Italy
Phone ++39-02-26434888
Fax ++39-02-26434892
Email: <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:tettamanti.marco@hsr.it">tettamanti.marco@hsr.it</a>
Skype: mtettamanti</pre>
    </blockquote>
    <br>
  </body>
</html>