Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package python-mdp This version fixes FTBFS #768675. The fixes are cherry-picked from upstream git repository. Every single commit has been incorporated as a quilt patch. Two other bugs are fixed which were reported on upstream user mailinglist: "Fix inclusion of CSS data in bimdp" and "run tests from within a corresponding tests directory to work around new py.test conftest.py autodiscovery features in python-pytest version 2.6.3". Documentation-only fixes are also included. The Debian changelog entry explains everything: * New upstream git snapshot - resolves FTBFS by a workaround of faulty unicode encoding in sklearn docstrings (Closes: #768675). The corresponding commits in upstream git are the quilt patches: changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff - Documentation fixes. The corresponding commits in upstream git are the quilt patches: changeset_f4a84b7186289027410abe116f5487f800869be2.diff changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff changeset_2b1048b980748366dd6439317fccc99f728056a7.diff changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff - Fix inclusion of CSS data in bimdp. The corresponding commit in upstream git is the quilt patch: changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff * debian/rules - run tests from within a corresponding tests directory to work around new py.test conftest.py autodiscovery features in python-pytest version 2.6.3 Src debdiff diff -Nru mdp-3.3/debian/changelog mdp-3.3/debian/changelog --- mdp-3.3/debian/changelog 2012-09-30 09:09:35.000000000 +0200 +++ mdp-3.3/debian/changelog 2014-11-28 16:45:30.000000000 +0100 @@ -1,3 +1,29 @@ +mdp (3.3-2) unstable; urgency=low + + * New upstream git snapshot + - resolves FTBFS by a workaround of faulty unicode encoding in + sklearn docstrings (Closes: #768675). The corresponding + commits in upstream git are the quilt patches: + changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff + changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff + changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff + - Documentation fixes. The corresponding commits in upstream + git are the quilt patches: + changeset_f4a84b7186289027410abe116f5487f800869be2.diff + changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff + changeset_2b1048b980748366dd6439317fccc99f728056a7.diff + changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff + - Fix inclusion of CSS data in bimdp. The corresponding commit + in upstream git is the quilt patch: + changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff + * debian/rules + - run tests from within a corresponding tests directory to work around + new py.test conftest.py autodiscovery features in python-pytest + version 2.6.3 + * Upload sponsored by Yaroslav Halchenko + + -- Tiziano Zito <opossumn...@gmail.com> Wed, 12 Nov 2014 15:53:57 +0100 + mdp (3.3-1) unstable; urgency=low * New upstream bug-fix release diff -Nru mdp-3.3/debian/patches/changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff mdp-3.3/debian/patches/changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff --- mdp-3.3/debian/patches/changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,54 @@ +From: Niko Wilbert <niko.wilb...@tngtech.com> +Subject: DOC: some small updates and fixes in docstrings and comments + +Index: mdp-toolkit/bimdp/__init__.py +=================================================================== +--- mdp-toolkit.orig/bimdp/__init__.py ++++ mdp-toolkit/bimdp/__init__.py +@@ -42,11 +42,6 @@ This is described in more detail in the + + ### T O D O ### + +-# ------------- optional ---------------- +- +-# TODO: maybe also allow target==EXIT_TARGET during training +-# would have to modify _train_node_single_phase +- + # TODO: add a target seperator that does not remove the key. Could use + # -> remove key + # --> remove one '-' on entry +@@ -70,7 +65,7 @@ This is described in more detail in the + # is in place. + + # TODO: Implement more internal checks for node output result? +-# Check that last element is not None? Use assume? ++# Check that last element is not None? + + # TODO: implement switchlayer, a layer where each column represents a different + # target, so the target value determines which nodes are used +Index: mdp-toolkit/bimdp/binode.py +=================================================================== +--- mdp-toolkit.orig/bimdp/binode.py ++++ mdp-toolkit/bimdp/binode.py +@@ -60,8 +60,7 @@ keywords are treated in a special way: + 'target' -- If any template method like execute finds a 'target' keyword in + the message then this is used as the target value in the return value. + However, if _execute then also returns a target value this overwrites the +- target value. In global_message calls 'target' has no special meaning and +- can be used like any other keyword. ++ target value. + + 'method' -- Specify the name of the method that should be used instead of + the standard one (e.g. in execute the standard method is _execute). +Index: mdp-toolkit/bimdp/nodes/autogen.py +=================================================================== +--- mdp-toolkit.orig/bimdp/nodes/autogen.py ++++ mdp-toolkit/bimdp/nodes/autogen.py +@@ -1,7 +1,5 @@ + """ + Module to automatically create a module with BiMDP versions of MDP nodes. +- +-Run this module to overwrite the autogen_binodes module with a new version. + """ + + import inspect diff -Nru mdp-3.3/debian/patches/changeset_2b1048b980748366dd6439317fccc99f728056a7.diff mdp-3.3/debian/patches/changeset_2b1048b980748366dd6439317fccc99f728056a7.diff --- mdp-3.3/debian/patches/changeset_2b1048b980748366dd6439317fccc99f728056a7.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_2b1048b980748366dd6439317fccc99f728056a7.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,23 @@ +From: Alberto Escalante <alberto.nicolas.escala...@gmail.com> +Subject: DOC: indicated what expansion failed in the tests of GeneralExpansionNode + +Index: mdp-toolkit/mdp/test/test_GeneralExpansionNode.py +=================================================================== +--- mdp-toolkit.orig/mdp/test/test_GeneralExpansionNode.py ++++ mdp-toolkit/mdp/test/test_GeneralExpansionNode.py +@@ -21,12 +21,12 @@ def testGeneralExpansionNode(): + input = numx.random.normal(size=(samples, input_dim)) + out = cen.execute(input) + assert_array_almost_equal(out[:, 0:input_dim], input, +- 6, "incorrect constant expansion") ++ 6, "incorrect identity expansion") + assert_array_almost_equal(out[:, input_dim:2*input_dim], +- input ** 2, 6, "incorrect constant expansion") ++ input ** 2, 6, "incorrect squares expansion") + assert_array_almost_equal(out[:, 2*input_dim:], + dumb_quadratic_expansion(input), 6, +- "incorrect constant expansion") ++ "incorrect quadratic expansion") + assert cen.expanded_dim(input_dim) == 2 * input_dim + input_dim**2, "expanded_dim failed" + assert_array_almost_equal(cen.output_sizes(input_dim), + numx.array([input_dim, input_dim, diff -Nru mdp-3.3/debian/patches/changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff mdp-3.3/debian/patches/changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff --- mdp-3.3/debian/patches/changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,18 @@ +From: Pietro Berkes <pber...@enthought.com> +Subject: FIX: cStringIO does not support Unicode + `autogen` was breaking in nodes with Unicode characters in their docstring. We +traced this down to cStringIO, which unlike StringIO does not support unicode. + +Index: mdp-toolkit/bimdp/nodes/autogen.py +=================================================================== +--- mdp-toolkit.orig/bimdp/nodes/autogen.py ++++ mdp-toolkit/bimdp/nodes/autogen.py +@@ -6,7 +6,7 @@ Run this module to overwrite the autogen + + import inspect + import mdp +-from cStringIO import StringIO ++from StringIO import StringIO + + # Blacklist of nodes that cause problems with autogeneration + NOAUTOGEN_MDP_NODES = [ diff -Nru mdp-3.3/debian/patches/changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff mdp-3.3/debian/patches/changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff --- mdp-3.3/debian/patches/changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,57 @@ +From: Alberto Escalante <alberto.nicolas.escala...@gmail.com> +Subject: FIX: made code and documentation consistent regarding the parameter k in invert_exp_funcs2 + +Index: mdp-toolkit/mdp/nodes/expansion_nodes.py +=================================================================== +--- mdp-toolkit.orig/mdp/nodes/expansion_nodes.py ++++ mdp-toolkit/mdp/nodes/expansion_nodes.py +@@ -343,7 +343,7 @@ class GeneralExpansionNode(_ExpansionNod + self.input_dim, + self.funcs, + use_hint=use_hint, +- k=0.001) ++ k=0.000001) + return app_x_2.astype(self.dtype) + except NotImplementedError, exc: + raise mdp.MDPException(exc) +Index: mdp-toolkit/mdp/utils/routines.py +=================================================================== +--- mdp-toolkit.orig/mdp/utils/routines.py ++++ mdp-toolkit/mdp/utils/routines.py +@@ -422,19 +422,19 @@ def gabor(size, alpha, phi, freq, sgm, x + + def residuals(app_x, y_noisy, exp_funcs, x_orig, k=0.0): + """Function used internally by invert_exp_funcs2 to approximate +- inverses in ConstantExpansionNode. """ +- app_x = app_x.reshape((1,len(app_x))) ++ inverses in GeneralExpansionNode. """ ++ app_x = app_x.reshape((1,-1)) + app_exp_x = numx.concatenate([func(app_x) for func in exp_funcs],axis=1) + + div_y = numx.sqrt(len(y_noisy)) +- div_x = numx.sqrt(len(x_orig)) +- return numx.append( (1-k)*(y_noisy-app_exp_x[0]) / div_y, k * (x_orig - app_x[0])/div_x ) ++ div_x = numx.sqrt(len(x_orig)) ++ return numx.append( (1-k)**0.5 *(y_noisy-app_exp_x[0]) / div_y, (k)**0.5 * (x_orig - app_x[0])/div_x ) + + def invert_exp_funcs2(exp_x_noisy, dim_x, exp_funcs, use_hint=False, k=0.0): + """Approximates a preimage app_x of exp_x_noisy. + +- Returns an array app_x, such that each row of exp_x_noisy is close +- to each row of exp_funcs(app_x). ++ Returns an array app_x, such that each row of exp_funcs(app_x) is close ++ to each row of exp_x_noisy. + + use_hint: determines the starting point for the approximation of the + preimage. There are three possibilities. +@@ -445,8 +445,8 @@ def invert_exp_funcs2(exp_x_noisy, dim_x + k: weighting factor in [0, 1] to balance between approximation error and + closeness to the starting point. For instance: + objective function is to minimize: +- (1-k) * |exp_funcs(app_x) - exp_x_noisy|/output_dim + +- k * |app_x - starting point|/input_dim ++ (1-k) * ||exp_funcs(app_x) - exp_x_noisy||**2/output_dim + ++ k * ||app_x - starting point||**2/input_dim + + Note: this function requires scipy. + """ diff -Nru mdp-3.3/debian/patches/changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff mdp-3.3/debian/patches/changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff --- mdp-3.3/debian/patches/changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,16 @@ +From: Niko Wilbert <m...@nikowilbert.de> +Subject: FIX: fixed broken inclusion of CSS data + +Index: mdp-toolkit/bimdp/hinet/bihtmlvisitor.py +=================================================================== +--- mdp-toolkit.orig/bimdp/hinet/bihtmlvisitor.py ++++ mdp-toolkit/bimdp/hinet/bihtmlvisitor.py +@@ -108,7 +108,7 @@ def show_biflow(flow, filename=None, tit + html_file = open(filename, 'w') + html_file.write('<html>\n<head>\n<title>%s</title>\n' % title) + html_file.write('<style type="text/css" media="screen">') +- html_file.write(mdp.utils.BASIC_STYLE) ++ html_file.write(mdp.utils.basic_css()) + html_file.write(BiHiNetHTMLVisitor.hinet_css()) + html_file.write('</style>\n</head>\n<body>\n') + html_file.write('<h3>%s</h3>\n' % title) diff -Nru mdp-3.3/debian/patches/changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff mdp-3.3/debian/patches/changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff --- mdp-3.3/debian/patches/changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,162 @@ +From: Niko Wilbert <niko.wilb...@tngtech.com> +Subject: FIX: hacky fix for the unicode issue in bimdp autogen (fix for Bug #11) + +Index: mdp-toolkit/bimdp/nodes/autogen.py +=================================================================== +--- mdp-toolkit.orig/bimdp/nodes/autogen.py ++++ mdp-toolkit/bimdp/nodes/autogen.py +@@ -14,6 +14,7 @@ NOAUTOGEN_MDP_NODES = [ + ] + NOAUTOGEN_MDP_CLASSIFIERS = [] + ++ + def _get_node_subclasses(node_class=mdp.Node, module=mdp.nodes): + """ + Return all node classes in module which are subclasses of node_class. +@@ -25,14 +26,15 @@ def _get_node_subclasses(node_class=mdp. + node_subclasses.append(node_subclass) + return node_subclasses + +-def _binode_code(fid, node_class, modulename, base_classname="BiNode", ++ ++def _binode_code(write, node_class, modulename, base_classname="BiNode", + old_classname="Node"): + """Write code for BiMDP versions of normal node classes into module file. + + It preserves the signature, which is useful for introspection (this is + used by the ParallelNode _default_fork implementation). + +- fid -- File handle of the module file. ++ write -- Function to write out code. + node_class -- Node class for which the new node class will be created. + modulename -- Name of the module where the node is from. + base_classname -- Base class to be used for the new nodes. +@@ -41,11 +43,11 @@ def _binode_code(fid, node_class, module + """ + node_name = node_class.__name__ + binode_name = node_name[:-len(old_classname)] + base_classname +- fid.write('class %s(%s, %s.%s):' % +- (binode_name, base_classname, modulename, node_name)) ++ write('class %s(%s, %s.%s):' % ++ (binode_name, base_classname, modulename, node_name)) + docstring = ("Automatically created %s version of %s." % + (base_classname, node_name)) +- fid.write('\n """%s"""' % docstring) ++ write('\n """%s"""' % docstring) + ## define the init method explicitly to preserve the signature + docstring = node_class.__init__.__doc__ + args, varargs, varkw, defaults = inspect.getargspec(node_class.__init__) +@@ -55,36 +57,37 @@ def _binode_code(fid, node_class, module + if defaults is None: + defaults = [] + first_default = len(args) - len(defaults) +- fid.write('\n def __init__(self') +- fid.write(''.join(', ' + arg for arg in args[:-len(defaults)])) +- fid.write(''.join(', ' + arg + '=' + repr(defaults[i_arg]) +- for i_arg, arg in enumerate(args[first_default:]))) ++ write('\n def __init__(self') ++ write(''.join(', ' + arg for arg in args[:-len(defaults)])) ++ write(''.join(', ' + arg + '=' + repr(defaults[i_arg]) ++ for i_arg, arg in enumerate(args[first_default:]))) + if varargs: +- fid.write(', *%s' % varargs) +- # always support kwargs, to prevent multiple-inheritance issues ++ write(', *%s' % varargs) ++ # always support kwargs, to prevent multiple-inheritance issues + if not varkw: + varkw = "kwargs" +- fid.write(', **%s' % varkw) +- fid.write('):') ++ write(', **%s' % varkw) ++ write('):') + if docstring: +- fid.write('\n """%s"""' % docstring) +- fid.write('\n super(%s, self).__init__(' % binode_name) +- fid.write(', '.join('%s=%s' % (arg, arg) for arg in args)) ++ write('\n """%s"""' % docstring) ++ write('\n super(%s, self).__init__(' % binode_name) ++ write(', '.join('%s=%s' % (arg, arg) for arg in args)) + if varargs: + if args: +- fid.write(', ') +- fid.write('*%s' % varargs) ++ write(', ') ++ write('*%s' % varargs) + if args or varargs: +- fid.write(', ') +- fid.write('**%s' % varkw) +- fid.write(')\n\n') ++ write(', ') ++ write('**%s' % varkw) ++ write(')\n\n') + +-def _binode_module(fid, node_classes, modulename="mdp.nodes", ++ ++def _binode_module(write, node_classes, modulename="mdp.nodes", + base_classname="BiNode", old_classname="Node", + base_import="from bimdp import BiNode"): + """Write code for BiMDP versions of normal node classes into module file. + +- fid -- File handle of the module file. ++ write -- Function to write out code. + node_classes -- List of node classes for which binodes are created. + modulename -- Name of the module where the node is from. + base_classname -- Base class to be used for the new nodes. +@@ -92,15 +95,25 @@ def _binode_module(fid, node_classes, mo + in the new class name. + base_import -- Inmport line for the base_class. + """ +- fid.write('"""\nAUTOMATICALLY GENERATED CODE, DO NOT MODIFY!\n\n') +- fid.write('Edit and run autogen.py instead to overwrite this module.\n"""') +- fid.write('\n\nimport %s\n' % modulename) +- fid.write(base_import + '\n\n') ++ write('"""\nAUTOMATICALLY GENERATED CODE, DO NOT MODIFY!\n\n') ++ write('Edit and run autogen.py instead to overwrite this module.\n"""') ++ write('\n\nimport %s\n' % modulename) ++ write(base_import + '\n\n') + for node_class in node_classes: +- _binode_code(fid, node_class, modulename, ++ _binode_code(write, node_class, modulename, + base_classname=base_classname, + old_classname=old_classname) +- ++ ++ ++def _get_unicode_write(fid): ++ def write(txt): ++ if type(txt) is unicode: ++ fid.write(txt) ++ else: ++ fid.write(unicode(txt, encoding='utf-8')) ++ return write ++ ++ + def binodes_code(): + """Generate and import the BiNode wrappers for MDP Nodes.""" + fid = StringIO() +@@ -108,17 +121,23 @@ def binodes_code(): + _get_node_subclasses(node_class=mdp.Node, module=mdp.nodes) + if not issubclass(node, mdp.ClassifierNode) and + node.__name__ not in NOAUTOGEN_MDP_NODES) +- _binode_module(fid, nodes) ++ _binode_module(_get_unicode_write(fid), nodes) + return fid.getvalue() + + def biclassifiers_code(): + """Generate and import the BiClassifier wrappers for ClassifierNodes.""" + fid = StringIO() ++ def write(txt): ++ if type(txt) is unicode: ++ fid.write(txt) ++ else: ++ fid.write(unicode(txt, encoding='utf-8')) + nodes = (node for node in + _get_node_subclasses(node_class=mdp.ClassifierNode, + module=mdp.nodes) + if node.__name__ not in NOAUTOGEN_MDP_CLASSIFIERS) +- _binode_module(fid, nodes, base_classname="BiClassifier", ++ _binode_module(_get_unicode_write(fid), nodes, ++ base_classname="BiClassifier", + old_classname="Classifier", + base_import="from bimdp import BiClassifier") + return fid.getvalue() diff -Nru mdp-3.3/debian/patches/changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff mdp-3.3/debian/patches/changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff --- mdp-3.3/debian/patches/changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,26 @@ +From: Tiziano Zito <opossumn...@gmail.com> +Subject: FIX: wrap sklearn algs in modules ending with "_" + For historical reasons we were not wrapping sklearn algs in modules with names +ending with "_". This restriction prevented us from wrapping algs that we could +have wrapped. We lift it now, since it does not seem to have any bad side +effects anymore. A proper validation would be to really test that we can run the +algs. + +Index: mdp-toolkit/mdp/nodes/scikits_nodes.py +=================================================================== +--- mdp-toolkit.orig/mdp/nodes/scikits_nodes.py ++++ mdp-toolkit/mdp/nodes/scikits_nodes.py +@@ -174,10 +174,9 @@ def apply_to_scikits_algorithms(current_ + if (inspect.isclass(member) and + member not in processed_classes): + processed_classes.append(member) +- if ((hasattr(member, 'fit') +- or hasattr(member, 'predict') +- or hasattr(member, 'transform')) +- and not member.__module__.endswith('_')): ++ if (hasattr(member, 'fit') ++ or hasattr(member, 'predict') ++ or hasattr(member, 'transform')): + action(member) + + # other modules diff -Nru mdp-3.3/debian/patches/changeset_f4a84b7186289027410abe116f5487f800869be2.diff mdp-3.3/debian/patches/changeset_f4a84b7186289027410abe116f5487f800869be2.diff --- mdp-3.3/debian/patches/changeset_f4a84b7186289027410abe116f5487f800869be2.diff 1970-01-01 01:00:00.000000000 +0100 +++ mdp-3.3/debian/patches/changeset_f4a84b7186289027410abe116f5487f800869be2.diff 2014-11-28 16:45:30.000000000 +0100 @@ -0,0 +1,85 @@ +From: Alberto Escalante <alberto.nicolas.escala...@gmail.com> +Subject: DOC: added an example to GeneralExpansionNode and made the documentation more explicit + +Index: mdp-toolkit/mdp/nodes/expansion_nodes.py +=================================================================== +--- mdp-toolkit.orig/mdp/nodes/expansion_nodes.py ++++ mdp-toolkit/mdp/nodes/expansion_nodes.py +@@ -283,14 +283,38 @@ class GrowingNeuralGasExpansionNode(Grow + + + class GeneralExpansionNode(_ExpansionNode): +- """Expands the input signal x according to a list [f_0, ... f_k] +- of functions. +- +- Each function f_i should take the whole two-dimensional array x as input and +- output another two-dimensional array. Moreover the output dimension should +- depend only on the input dimension. +- The output of the node is [f_0[x], ... f_k[x]], that is, the concatenation +- of each one of the outputs f_i[x]. ++ """Expands the input samples by applying to them one or more functions provided. ++ ++ The functions to be applied are specified by a list [f_0, ..., f_k], where ++ f_i, for 0 <= i <= k, denotes a particular function. ++ The input data given to these functions is a two-dimensional array and ++ the output is another two-dimensional array. The dimensionality of the output ++ should depend only on the dimensionality of the input. ++ Given a two-dimensional input array x, the output of the node ++ is then [f_0(x), ..., f_k(x)], that is, the concatenation of each one of ++ the computed arrays f_i(x). ++ ++ This node has been designed to facilitate nonlinear, fixed but arbitrary ++ transformations of the data samples within MDP flows. ++ ++ **Example**:: ++ ++ >>> import mdp ++ >>> from mdp import numx ++ ++ >>> def identity(x): return x ++ ++ >>> def u3(x): return numx.absolute(x)**3 #A simple nonlinear transformation ++ ++ >>> def norm2(x): #Computes the norm of each sample returning an Nx1 array ++ >>> return ((x**2).sum(axis=1)**0.5).reshape((-1,1)) ++ ++ >>> x = numx.array([[-2., 2.], [0.2, 0.3], [0.6, 1.2]]) ++ >>> gen = mdp.nodes.GeneralExpansionNode(funcs=[identity, u3, norm2]) ++ >>> print(gen.execute(x)) ++ >>> [[-2. 2. 8. 8. 2.82842712] ++ >>> [ 0.2 0.3 0.008 0.027 0.36055513] ++ >>> [ 0.6 1.2 0.216 1.728 1.34164079]] + + Original code contributed by Alberto Escalante. + """ +@@ -299,7 +323,7 @@ class GeneralExpansionNode(_ExpansionNod + Short argument description: + + ``funcs`` +- list of functions f_i that realize the expansion ++ list of functions f_i that realize the expansion. + """ + self.funcs = funcs + super(GeneralExpansionNode, self).__init__(input_dim, dtype) +@@ -312,7 +336,7 @@ class GeneralExpansionNode(_ExpansionNod + + def output_sizes(self, n): + """Return the individual output sizes of each expansion function +- when the input has lenght n""" ++ when the input has lenght n.""" + sizes = numx.zeros(len(self.funcs)) + x = numx.zeros((1,n)) + for i, func in enumerate(self.funcs): +@@ -333,8 +357,10 @@ class GeneralExpansionNode(_ExpansionNod + scipy.optimize. + + ``use_hint`` +- when calculating the pseudo inverse of the expansion, +- the hint determines the starting point for the approximation ++ when calculating a pseudo inverse of the expansion, ++ the hint determines the starting point for the approximation. ++ For details on this parameter see the function ++ ``invert_exp_funcs2`` in ``mdp.utils.routines.py``. + + This method requires scipy.""" + diff -Nru mdp-3.3/debian/patches/series mdp-3.3/debian/patches/series --- mdp-3.3/debian/patches/series 2012-09-28 17:26:53.000000000 +0200 +++ mdp-3.3/debian/patches/series 2014-11-28 16:45:30.000000000 +0100 @@ -1 +1,9 @@ +changeset_4ec2f2940fda4f4fec9db184dbb1b93053040159.diff +changeset_4fc2b74375701dcabde0e3368841ce31a52c4529.diff +changeset_17202a65f7608e550c52953ef4026cf8fe623c16.diff +changeset_324cb9b963a7e9d1bb22b5934eaa9f17974f5b11.diff +changeset_af5294f0b78ea5b20e4c1c23fc55a4bdaa0749c9.diff +changeset_4d05f0adafcc770277f36d30894a5c6aefe8a58b.diff +changeset_2b1048b980748366dd6439317fccc99f728056a7.diff +changeset_f4a84b7186289027410abe116f5487f800869be2.diff diff -Nru mdp-3.3/debian/rules mdp-3.3/debian/rules --- mdp-3.3/debian/rules 2012-09-28 17:26:53.000000000 +0200 +++ mdp-3.3/debian/rules 2014-11-28 16:45:30.000000000 +0100 @@ -34,7 +34,8 @@ ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) set -xe && for v in $(PYTHONALL); do \ LOC=$(INSTALLPATH)$(call py_libdir_sh, $$v); \ - python$$v $$LOC/mdp/test/run_tests.py --seed $(RSEED) $$LOC/mdp $$LOC/bimdp; \ + cd $$LOC/mdp/test && python$$v $$LOC/mdp/test/run_tests.py --seed $(RSEED) && \ + cd $$LOC/bimdp/test && python$$v $$LOC/mdp/test/run_tests.py --seed $(RSEED) ; \ done : # Prune compiled code which could have been generated during testing find \( -name __pycache__ -o -name \*.pyc -o -name \*.egg-info \) -delete unblock python-mdp/3.3-2 -- System Information: Debian Release: 8.0 APT prefers unstable APT policy: (500, 'unstable'), (101, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.17-1-amd64 (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org