On Thu, Jan 12, 2012 at 11:22:18PM +0100, Jakub Wilk wrote:
> pymvpa FTBFS:
> | ======================================================================
> | ERROR: testRegressionsClassifiers (mvpa.tests.test_regr.RegressionsTests)
> | ----------------------------------------------------------------------
> | Traceback (most recent call last):
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/tests/tests_warehouse.py",
>  line 72, in do_sweep
> |     method(*args_, **kwargs_)
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/tests/test_regr.py",
>  line 111, in testRegressionsClassifiers
> |     cverror = cv(ds)
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/measures/base.py",
>  line 105, in __call__
> |     result = self._call(dataset)
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/algorithms/cvtranserror.py",
>  line 190, in _call
> |     result = transerror(split[1], split[0])
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/clfs/transerror.py",
>  line 1309, in __call__
> |     self._precall(testdataset, trainingdataset)
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/clfs/transerror.py",
>  line 1265, in _precall
> |     self.__clf.train(trainingdataset)
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/clfs/base.py",
>  line 394, in train
> |     result = self._train(dataset)
> |   File 
> "/build/pymvpa-ZxRJAY/pymvpa-0.4.7/build/lib.linux-i686-2.7/mvpa/clfs/sg/svm.py",
>  line 468, in _train
> |     trained_labels = self.__svm.classify().get_labels()
> |   File "/usr/lib/python2.7/dist-packages/modshogun.py", line 48833, in 
> <lambda>
> |     __getattr__ = lambda self, name: _swig_getattr(self, LibSVR, name)
> |   File "/usr/lib/python2.7/dist-packages/modshogun.py", line 59, in 
> _swig_getattr
> |     raise AttributeError(name)
> | AttributeError: classify

This was due to an API change in shogun 1.0.0.  From src/ChangeLog:

  rename classify / classify_example to more generic apply() - to be used
  in all machines. adjust examples accordingly.

Here's a patch to handle both the old and the new API.

  * Adjust for API change in Shogun 1.0.0 (closes: #655643).

diff -Nru pymvpa-0.4.7/debian/patches/series pymvpa-0.4.7/debian/patches/series
--- pymvpa-0.4.7/debian/patches/series  2011-04-13 16:02:10.000000000 +0100
+++ pymvpa-0.4.7/debian/patches/series  2012-04-20 17:00:26.000000000 +0100
@@ -1 +1,2 @@
 debian-changes-0.4.7-2
+shogun-1.0.0.patch
diff -Nru pymvpa-0.4.7/debian/patches/shogun-1.0.0.patch 
pymvpa-0.4.7/debian/patches/shogun-1.0.0.patch
--- pymvpa-0.4.7/debian/patches/shogun-1.0.0.patch      1970-01-01 
01:00:00.000000000 +0100
+++ pymvpa-0.4.7/debian/patches/shogun-1.0.0.patch      2012-04-20 
17:13:31.000000000 +0100
@@ -0,0 +1,39 @@
+Description: Adjust for API change in Shogun 1.0.0
+Author: Colin Watson <cjwat...@ubuntu.com>
+Bug-Debian: http://bugs.debian.org/655643
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/935383
+Forwarded: no
+Last-Update: 2012-04-20
+
+Index: b/mvpa/clfs/sg/svm.py
+===================================================================
+--- a/mvpa/clfs/sg/svm.py
++++ b/mvpa/clfs/sg/svm.py
+@@ -465,7 +465,12 @@
+         # Report on training
+         if (__debug__ and 'SG__' in debug.active) or \
+            self.states.isEnabled('training_confusion'):
+-            trained_labels = self.__svm.classify().get_labels()
++            try:
++                # Shogun >= 1.0.0
++                trained_labels = self.__svm.apply().get_labels()
++            except AttributeError:
++                # Shogun < 1.0.0
++                trained_labels = self.__svm.classify().get_labels()
+         else:
+             trained_labels = None
+ 
+@@ -541,7 +546,12 @@
+ 
+         # doesn't do any good imho although on unittests helps tiny bit... hm
+         #self.__svm.init_kernel_optimization()
+-        values_ = self.__svm.classify()
++        try:
++            # Shogun >= 1.0.0
++            values_ = self.__svm.apply()
++        except AttributeError:
++            # Shogun < 1.0.0
++            values_ = self.__svm.classify()
+         if values_ is None:
+             raise RuntimeError, "We got empty list of values from %s" % self
+ 

Thanks,

-- 
Colin Watson                                       [cjwat...@ubuntu.com]



-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to