------------------------------------------------------------------------------- MDP-3.6.1: 2018-05-29: DOC: Point to the new website at https://mdp-toolkit.github.io. ------------------------------------------------------------------------------- MDP-3.6: 2020-04-18: NEW: support libsvm for Python 3 libsvm has been updated to be compatible with Python >= 3.4. Python 2 support has been dropped, so we don't test it anymore. 2020-04-18: ERF: restore Python 2 compatibility and add a matrix entry for it in travis 2019-18-12: FIX: SciPy 1.4 support. 2019-13-12: NEW: VartimeSFANode supports SFA on data with non-constant time increments. This yields an SFA implementation that is robust against missing data. 2019-01-20: NEW: Added a new family of expansion nodes, including Legendre, Hermite and Chebyshev polynomials. A facility for easily including recursively defined 1-dimensional expansion functions powers these nodes, applying them to N-dimensional data by tensor basis construction. The new expansion nodes are numerically more stable than ordinary monomials and permit higher expansion degrees. Examples where numerically stable expansion is beneficial: https://github.com/NiMlr/pyfunctionbases https://arxiv.org/abs/1805.08565, section 4.2.1, Figure 11 and A.2. 2019-01-19: FIX: pytest Python 3.7 compatibility 2018-07-18: FIX: PEP 479 compatibility 2018-06-15: NEW: Added SFA-based supervised learning, specifically graph based SFA nodes GSFANode and iGSFANode and hierarchical GSFA (HGSFA). For further information, see: Escalante-B A.-N., Wiskott L, "How to solve classification and regression problems on high-dimensional data with a supervised extension of Slow Feature Analysis". Journal of Machine Learning Research 14:3683-3719, 2013. http://www.jmlr.org/papers/volume14/escalante13a/escalante13a.pdf https://github.com/AlbertoEsc/cuicuilco 2018-05-29: DOC: Revamped the documentation for Sphinx-autodoc compatibility. MDP documentation is now available on readthedocs: https://mdpdocs.readthedocs.io/en/latest 2018-01-18: NEW: Added solvers to SFA-node that are robust against rank deficit in the covariance matrix. When data contained linear redundancies, like easily introduced by e.g. insufficient cropping of black bars of a video, this usually resulted in SymeigException ('Covariance matrices may be singular'). Now it provides simple instructions for robust processing of such data by setting a new flag in SFANode: rank_deficit_method can be 'none' (default), 'reg', 'pca', 'svd', leveraging robust solving via regularization, PCA, SVD or LDL decomposition respectively. (LDL requires SciPy >= 1.0) 2017-03-11: DOC: changed reference to new mailing list old: mdp-toolkit-users@lists.sourceforge.net new: mdp-toolkit@python.org 2017-03-06: NEW: Added online mode to enable use of MDP in reinforcement learning. This notably includes incremental SFA as described in "Varun Raj Kompella, Matthew Luciw, and Juergen Schmidhuber (2012). Incremental Slow Feature Analysis: Adaptive Low-Complexity Slow Feature Updating from High-Dimensional Input Streams. Neural Computation." https://www.mitpressjournals.org/doi/abs/10.1162/NECO_a_00344 New nodes and flows: OnlineNode, OnlineFlow, CircularFlow, OnlineCenteringNode, OnlineTimeDiffNode, OnlineFlowNode, CircularOnlineFlowNode, OnlineLayer, CloneOnlineLayer, SameInputOnlineLayer, MCANode, CCIPCANode, IncSFANode ------------------------------------------------------------------------------- MDP-3.5: 2016-03-08: fix use of str in biflow indexing 2016-03-08: remove obsolete scripts 2016-03-07: Add wrapper function for exec Old Python versions don't allow exec statement in nested functions: Traceback (most recent call last): File "", line 1, in File "mdp/__init__.py", line 131, in from . import utils File "mdp/utils/__init__.py", line 29, in from .slideshow import (basic_css, slideshow_css, HTMLSlideShow, File "mdp/utils/slideshow.py", line 23, in from . import templet File "mdp/utils/templet.py", line 196 exec(code, globals, kw) SyntaxError: unqualified exec is not allowed in function 'expand' it is a nested function ------------------------------------------------------------------------------- MDP-3.4: 2016-03-02: Make use of setuptools instead of distutils While we resisted as long as possible, it is now time to move to use setuptools officially. This makes MDP installable properly with pip. This means that our dependencies are now explicitly declared (numpy and future). Optional dependencies are also declared and can be installed using the "pip -e MDP[optionaldep]" command, where optionaldep can be scipy, or scikit-learn or ... Moreover, automatic testing using "python setup.py test" now works, which makes MDP finally conform this non-written standard and makes it easy to run tests for clueless people. 2016-03-02: add new modules in sklearn wrappers 2016-03-02: Remove self-contained py.test script... The use of the self-contained script for py.test has been deprecated for a while and has stop working. We now require py.test to be installed to run the tests. 2016-03-01: remove obsolete stuff related to py3 conversion with lib2to3 2016-03-01: Disable support for shogun > 1 it would be too much work to enable support for newer shogun versions... 2016-03-01: disable failing monkeypatching test for pp... .. the pp monkeypatching trick is not needed anymore anyways... 2016-03-01: futurize stage 2: code is now py2&3 compatible 2016-03-01: futurize stage1: code should still be python2.6 compatible 2016-03-01: compatibility fixes for numpy 1.11.., ...numpy now refuses to index arrays using floats and default dtype for zeros and ones has been changed from integers to floats. 2016-03-01: several new sklearn autogenerated nodes need additional arguments to be tested 2014-04-27: FIX: fixed broken inclusion of CSS data 2014-03-14: FIX: hacky fix for the unicode issue in bimdp autogen (fix for Bug #11) 2013-09-03: NEW: added extension setup and teardown function decorator 2013-09-03: DOC: some small updates and fixes in docstrings and comments 2013-08-31: 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. 2013-08-31: 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. 2013-05-08: NEW: update local copy of py.test to version 2.3.4 2013-04-16: FIX: made code and documentation consistent regarding the parameter k in invert_exp_funcs2 2013-04-16: DOC: indicated what expansion failed in the tests of GeneralExpansionNode 2013-04-16: DOC: added an example to GeneralExpansionNode and made the documentation more explicit 2012-12-07: FIX: make pip work without explicit URL. now we point directly to the tar archive in the download_url field of the setup.py file. 2012-11-20: DOC: moved coarse_limit description under FastICA and removed signature (present elsewhere) 2012-11-20: ENH: FastICA - test having some coarse_limit 2012-11-20: ENH: FastICA -- primary_limit -> coarse_limit + default to None Introduced to make things a bit clearer since there is already "fine tuning" stage where optimization switches to used_g upon reaching the limit. Calling the limit "coarse" instead of "primary/secondary" would help to preserve original messages/logic thus not confusing existing users, while still allowing to kick in gFine before reaching the limit 2012-11-20: ENH: 2 stage optimization for FastICA found in current AFNI 2012-10-04: DOC: bumped version number after release ;) 2012-09-21: OTH: updated CHANGES and COPYRIGHT 2012-09-21: NEW: add support for newest sklearn algorithms ------------------------------------------------------------------------------- MDP-3.3: 2012-09-19: FIX: fix error in automatic testing for MultinomialNB. 2012-09-19: ERF: make sklearn nodes automatic testing more robust The previous solution was actually ignoring the special definitions in NODES. 2012-09-19: FIX: disable pp support if server can not start Being able to import pp is not enough to be sure that pp works. For example in a low memory situation, the following can happen: >>> import pp >>> server = pp.Server() [...] OSError: [Errno 12] Cannot allocate memory This fix just disables pp support if the server can not be started. 2012-06-18: FIX: Fix wrapping of sklearn 0.11 classifiers 2012-04-17: FIX: make test_SFA2Node even more robust 2012-04-16: FIX: make FastICANode test more robust 2012-04-16: FIX: make test_SFA2Node more robust 2012-04-05: FIX: fix pp_tests when run multiple times. pp tests were failing when run twice in a row. hugly work-around, but it seems to work... 2012-04-05: FIX: fixed broken test_reload. test_reload was failing when called twice in a row. 2012-04-05: FIX: fix random seed tests. The tests were failing when called twice in a row: >>> import mdp >>> mdp.test() >>> mdp.test() the first call was working, the second one was giving failures. 2012-04-01: ERF: added tests for learning of bias parameters 2012-03-26: FIX: replace third remaing test for pp_monkeypatch_dirname Hopefully this will fix test suite failures. 2012-03-22: FIX: Decrease the noise level in the DiscreteHopfieldClassifier. 2012-03-22: FIX: honor MDP_DISABLE_SHOGUN env variable 2012-03-19: FIX: fix left-over directories from testing pp. I do not know why, but this simple change fixes the leftover directories problem when testig with python-pp and pp monkey-patching. It should have worked even as it was before, but apparently some race condition happens. 2012-03-06: FIX: fix determinant of random rotation matrix determinant sign was wrong if dimensions of rotation matrix were odd. Thanks to Philip DeBoer. Actual Fix. 2012-03-06: FIX: fix determinant of random rotation matrix determinant sign was wrong if dimensions of rotation matrix were odd. Thanks to Philip DeBoer. Failing Test. 2012-02-13: ENH: remove duplicated and overly verbose code 2012-02-13: FIX: remove FastICA stabilization from tests 2012-02-13: FIX: remove unused parameter stabilization in FastICA. 2012-01-19: NEW: added new sklearn algorithms wrapping We now wrap 93 sklearn algorithms! 2012-01-19: FIX: fix another imcompatibility with sklearn 0.10 Although EllipticEnvelop is derived from sklearn.base.ClassifierMixin, it is not a classifier. It is actually a "predictor". Added a check in the sklearn wrappers. 2012-01-19: FIX: fix sklearn wrappers for version 0.10 New sklearn version introduces classifiers and predictors mixin classes that do not have a 'fit' method. Typical error: AttributeError: type object 'OutlierDetectionMixin' has no attribute 'fit' Just added a check that the method is really present before wrapping. 2012-01-12: FIX: fix failing test for no eigenvalues left problem Check that PCANode now raises the right exception. 2012-01-12: FIX: add useful exception in case of no eigenvalues left. Check for the condition explained in b0810d72ce11925e1db6204c3a20bdfc77741a82 and raise a nicely formatted exception: Traceback: [...] File ".../mdp/nodes/pca_nodes.py", line 223, in _stop_training ' var_abs=%e!'%self.var_abs) NodeException: No eigenvalues larger than var_abs=1.000000e-15! 2012-01-12: OTH: added failing test for no eigenvalues left problem. When PCANode is set to use SVD and automatic dimensionality reduction it may happen that after removing directions corresponding to eigenvalues smaller than var_abs (1e-12 default), nothing is left. This happens for example if the data is a matrix of (almost) zeros. The error looks like this: Traceback (most recent call last): [...] File ".../mdp/nodes/pca_nodes.py", line 220, in _stop_training d = d[ d / d.max() > self.var_rel ] ValueError: zero-size array to ufunc.reduce without identity 2012-01-03: FIX: old joblib breaks imports from sklearn.decomposition >>> import sklearn.decomposition Traceback (most recent call last): File "", line 1, in File "/usr/lib/pymodules/python2.6/sklearn/decomposition/__init__.py", line 8, in from .sparse_pca import SparsePCA, MiniBatchSparsePCA File "/usr/lib/pymodules/python2.6/sklearn/decomposition/sparse_pca.py", line 10, in from .dict_learning import dict_learning, dict_learning_online File "/usr/lib/pymodules/python2.6/sklearn/decomposition/dict_learning.py", line 17, in from ..externals.joblib import Parallel, delayed, cpu_count ImportError: cannot import name cpu_count >>> joblib.__version__ '0.4.3' 2012-01-02: FIX: py3k compatibility for reload reload() is moved to imp.reload(). It also seems that Python 3 behaves slightly differently wrt. reloads. For some reason, mdp.configuration is not imported properly on reload. Let's just not remove the name from the namespace, as this is the easiest fix. 2011-12-23: ERF: added a failing test for reload MDP does not work with reload. See https://github.com/mdp-toolkit/mdp-toolkit/issues/1 for details. Thanks to Yaroslav Halchenko for reporting it. 2011-12-18: FIX: Removed the leftover _global_message_emitter attribute (as reported by Tiziano and Hannah). 2011-12-09: FIX: fix wrong sorting of eigenvectors in degenerate case for SVD. Thanks to Yaroslav Halchenko for reporting and fixing! 2011-12-09: NEW: added failing test for wrong sorting of SVDs 2011-10-24: FIX: updated sklearn wrappers to silence warnings for version >= 0.9 ------------------------------------------------------------------------------- MDP-3.2: 2011-10-24: FIX: do not complain when failing to remove temporary directory. The error warning breaks doctests. On top of that, I do not think the error message is really useful. 2011-10-22: FIX: fix previous commit (options can not be None) 2011-10-22: FIX: fix bug with pytest when MDP is installed on user non-writable directory. 2011-10-22: ENH: make NeuralGasNode automatic tests faster 2011-10-22: ENH: call scklearn with its name whenever possible without too much disruption 2011-10-22: FIX: workaround for debian patch to pp that disables pp's default password. 2011-10-22: FIX: could not find submodules and classes in old versions of sklearn the problem was that we build names of sub-modules from strings, and we need to take into account two possible prefixes "sklearn" or "scikits.learn" 2011-10-22: FIX: accomodate new name for scikits.learn 0.9 aka sklearn 2011-10-22: RF: extract two methods and simplify logic of metaclass wrapping 2011-10-22: OTH: one more metaclass test also cleand up whitespaces 2011-10-21: FIX/python2.5: forgotten __future__ imports 2011-10-21: ERF: rewrite one format string to make is clearer 2011-10-21: FIX: extend infodict with **kwargs name, to avoid guessing later 2011-10-19: ENH: metaclass: use dict to replace two lists and avoid infodict No functional changes. 2011-10-21: FIX: finally fig bug in metaclass signature overwriting 2011-10-21: OTH: make test_metaclass more stringent 2011-10-21: OTH: added self contained test for metaclass and extensions issues. 2011-10-19: OTH: added more detailed failing test for metaclass 2011-10-19: OTH: another bug in signature overwriting. commited a failing test. Thanks to Alberto Escalante! 2011-10-16: ENH: make tests for NeuralGasNode shorter 2011-10-15: FIX: chmod -x mdp/test/test_NeuralGasNode.py 2011-10-15: DOC: tiny changes in comments 2011-10-15: FIX: tests for neural gas node 2011-10-15: FIX: when start positions for the nodes was set, the number of nodes default is discarded 2011-10-14: DOC+RF: slight improvements to documentation, comments, and spacing 2011-10-14: FIX: NeuralGas fixes by Michael Schmucker 2011-08-03: ENH: remove tuple unpacking init: it took twice as much lines 2011-08-03: FIX: NeuralGas fixed by Michael Schmuker 2011-08-03: FIX: remove \ line breaks 2011-07-25: FIX: remove \ line breaks 2011-07-25: NEW, FIX: tests for NeuralGasNode and two fixes 2011-07-25: FIX: _remove_old_edges makes use of its argument 2011-07-25: DOC, FIX: Typos in docstrings and whitespaces 2011-07-25: NEW: NeuralGasNode by Michael Schmuker 2011-10-14: FIX: remove unused variable 2011-10-14: FIX: py3k bytes/str issue in subprocess input 2011-10-14: FIX: remove unused variable 2011-10-14: ENH: use a context manager for sys.stdout stealing 2011-10-14: FIX: add pytest ini file to manifest 2011-10-14: NEW: really check if pp needs monkey-patching 2011-10-14: NEW: be compatible with shogun 1.0. Drop support for older releases. 2011-10-14: FIX: fix handling of MDP_DISABLE_SHOGUN variable 2011-10-14: Fix KeyError with NSDEBUG=1 Commit 7345d4a changed old-style formatting to new-style formatting, or at least the format string, but .format was not replaced with %! 2011-10-13: DOC: make it a bit easier to see that you can use pp on debian too 2011-10-13: FIX: remove (now) useless duplicated test in bimdp 2011-10-13: FIX: windows does not allow me to remove a file 2011-10-13: FIX: no with statement in tests {flow,node}.save Apparently windows does not allow one process to open a file multiple times. As {flow,node}.save use internally the with statement to open the dump file, we can not use the with statement in the test of these methods: nesting with statement means opening the same file multiple times. 2011-10-12: NEW: allow for pretty printing of mdp.config. now config.info() is printed on stdout when you type >>> print mdp.config or >>> mdp.config don't think about the fact that this is only achievable by a metaclass ;-) 2011-10-12: ERF: also add mdp.__version__ in config.info __revision__ is not enough, when mdp is installed and does not load from a git repository that string is empty (by the way: we should fix it!) 2011-10-11: FIX: remove forgotten print statement 2011-10-11: NEW: add tempfile test to help diagnose win7 problems 2011-10-11: FIX: make py.test.__version__ check more robust 2011-10-11: Add mdp.__revision__ to mdp.config.info() output This changes the order of initialization a bit: first mdp.configuration is fully imported, then mdp.utils. Because of this change, mdp.utils.repo_revision was renamed to mdp.repo_revision. It is imported only in mdp.configuration and then deleted from the visible namespace. get_git_revision was available as utils.get_git_revision, and now it's gone, but mdp.__revision__ contains the same value, so there little need to export the function. I hope nobody used it. >>> print mdp.config.info() python: 2.7.2.final.0 mdp: MDP-3.1-74-gbaca2a8+ parallel python: 1.6.0 shogun: NOT AVAILABLE: No module named shogun libsvm: libsvm.so.3 joblib: 0.4.6 scikits: 0.8.1 numx: scipy 0.9.0 symeig: scipy.linalg.eigh 2011-10-11: NEW: append + to mdp.__revision__ in modified repo 2011-10-11: FIX: half of an assert message was lost 2011-10-11: ERF: use py.test 2 ini-file configuration. we can now check for py.test version, and get finally rid of the redundant conftest.py files. we now have only one conftest.py file for bimdp and mdp. 2011-10-11: FIX: check if we have ENOENT in TemporaryDir.__del__ 2011-10-11: FIX: stop complaining if dir is gone already in TemporaryDirectory 2011-10-11: ERF: get rid of the pp monkey patch dirs the hard way. TemporaryDirectory does not manage to delete itself when created in a subprocess 2011-10-11: ERF: make the pp monkeypatch dir prefix more explicit 2011-10-11: ERF: change the interpretation of MDP_MONKEYPATCH_PP now you can specify a container directory for the patching. it defaults to tempfile.gettempdir(), i.e. /tmp on unix and something else on windows 2011-10-11: FIX: only allow py.test version >= 2.1.2 py.test version > 2 are subtly incompatible with versions < 2. just settle on the new ones. problem: debian still does not package a reasonably recent version of py.test. in this case, just use the standalone script. thanks to 8a5b2e272de4230f15d09f85b7d35b0aeee3078e it's as flexible as py.test itself. 2011-10-11: ERF: pass options to py.test in mdp.test. this way using the standalone script run_tests.py is as flexible as using py.test directly 2011-10-11: ERF: updated standalone py.test script to version 2.1.2 2011-10-11: DOC: added pointer to win64 binaries distributor 2011-10-10: ENH: use with statement for better readability in a couple of tests No functional changes. 2011-10-10: ENH: make pyflakes happy by not defining unused names No functional changes. 2011-10-10: FIX: make monkeypatch_pp compatible with both pp 1.6 and 1.6.1 >>> import pp >>> pp.version '1.6.0' >>> pp._Worker.command '"/usr/bin/python" -u "/usr/lib/pymodules/python2.6/ppworker.py" > 2>/dev/null' >>> import pp >>> pp.version '1.6.1' >>> pp._Worker.command ['/usr/bin/python2.6', '-u', '/usr/lib/pymodules/python2.6/ppworker.py', '2>/dev/null'] 2011-10-10: FIX: temporary directory for tests was not managed properly sed 's/mdp_toolkit_reporting_configured/mdp_configured/g' because the existence of this variable guards not only reporting configuration, but also the temporary directory stuff (and also the name was kind of long). sed 's/tempdirname/mdp_tempdirname/' because it goes in the py.test namespace and should have a prefix like the other variable. sed -r 's+bimdp/+TMP\/+g; s+mdp/+bimdp/+g; s+TMP\/+mdp/+g' bimdp/test/conftest.py because bimdp should be kept in sync. In my installation bimdp is actually configured first, so tests in the temporary directory were failing with AttributeError on py.test.tempdirname. 2011-10-10: FIX: tempdirs in cacheing tests were shortlived A temporary directory created with TemporaryDirectory can go at any time, so a construct like dirname = TemporaryDirectory().name is broken. Since the directories are created in the master temporary directory anyway, they don't have to be deleted separately. 2011-10-10: FIX: do not set the cachedir by default on import mdp.caching setting it by default was creating a lot of bogus temporary directories when parallel processes where started using process_scheduler. I see no side effects for not setting it 2011-10-10: FIX: better name for global temp dir 2011-10-10: FIX: fix pp monkey patching. pp._Worker.command.replace(ppworker, ppworker3) did not work, as pp._Worker.command is a list and not a string! 2011-10-10: FIX: put joblib caching stuff in the new global test tempdir 2011-10-10: ERF: added a container directory for temporary test files. the directory gets deleted (no matter its contents) at the end of the test run. This should fix stale temp files. 2011-10-05: FIX: partially revert 569cbe7 Changing 'except Exception:' clauses to bare 'except:' would catch and swallow ^C and the like. 2011-10-02: ENH: revert the condition for pp monkeypatching It's better to only enable it when explicitely requested. The warning is also removed, because it doesn't make sense to warn about something that was explicitely requested. If the option to monkey patch is not given, check if pp is likely to be broken, and if so, disable it at configuration time. 2011-10-02: FIX: remove some unused imports and one allocation 2011-10-02: ENH: make temporary directory names more readable tmpxayPZEpp4mdp/ => pp4mdp.tmpxayPZE/ 2011-09-08: FIX: new module structure in scikits.learn 0.8 2011-09-07: BF: Exclude float16 dtypes in numpy.linalg.eigh. 2011-08-24: Fixes to FastICA node Fine tuning and stabilisation are now used correctly, and the result closely resembles the original matlab version for the deflation/gaussian case with prewhitened data. The results are not numerically identical because there are still some differences in stopping criteria, but it's close. To verify, see original Matlab implementation. 2011-08-10: DOC: added documentation item to TODO list 2011-06-30: ERF: PEP8 fix (da pignolo) 2011-06-30: ERF: simplify metaclass wrapping code 2011-06-30: FIX: Fixed the node metaclass to correctly handle signatures and docstrings for inheritance chains. 2011-06-30: ERF: Some small pylint-motivated updates. 2011-06-30: ERF: wrap private methods in meteclass even if no docstring is defined. 2011-06-30: ERF: Made the _get_required_train_args method more robust. 2011-06-30: OTH: refactored metaclass tests, again. 2011-06-30: OTH: refactored metaclass tests 2011-06-16: DOC: added proper git format for changelog 2011-06-16: OTH: commit failing test for docstring overwriting Thanks to Alberto Escalante to point this bug out. 2011-04-07: FIX: verbose argument in set_cachedir was ignored. 2011-06-12: FIX: Fixed a regression that broke the DBN example. 2011-06-11: ERF: Major refactoring of the binet inspection code. This follows the refactoring of the flow-to-HTML conversion. Smaller refactorings in realted parts (slideshow) were also done. 2011-06-11: ERF: Prepare large refactoring by renaming the files first. 2011-05-31: ERF: Refactored the flow-to-HTML conversion. Threw out useless code, fixed style issues and now use the proper vocabulary (visitor pattern). The bimdp inspection has not yet been updated and is therefore broken in this commit. 2011-04-18: FIX: monkeypatch_pp was broken I made some changes without actually testing if stuff works... 2011-04-15: FIX: delete main joblib cache directory at mdp exit The directory is of course only deleted if we created it ourselves, i.e. if it is a temporary directory. 2011-04-15: FIX: delete joblib cache directory after tests 2011-04-15: DOC: describe MDPNUMX and MDPNSDEBUG env. vars. 2011-04-15: FIX: bump supported scikits-learn version number Setting >=0.6 is pretty conservative, but Debian's 0.5-1 is bad for sure. 2011-04-14: DOC: document MDP_DISABLE_MONKEYPATCH_PP 2011-04-14: DOC: document MDP_DISABLE_* variables 2011-01-12: DOC: improve rst in mdp/extension.py 2011-03-21: FIX: drop some unused variables & imports Wanted to test pyflakes on something. This is the result. 2011-04-14: FIX: apply a temporary workaround to the pp import problem For details see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620551. ppworker.py must be run from some safe place. A temporary dir seems a good option. Unfortunately a temporary file is not enough, because parent directory should be empty. TemporaryDirectory is so complicated, because the code is run during Python shutdown procedure and some modules are not available. 2011-04-05: FIX: make short description fit within 200 char limit Tiziano proposed the text, nobody protested... I guess that this signifies a consensus. :) Some small formatting fixes in source code and output were applied. 2011-04-01: OTH: remove unnecessary parentheses around assert 2011-04-04: FIX: restore python2.4, 2.5 support in setup.py Module ast is not available in python < 2.6. The format of docstrings is slightly changed: removed empty lines at the top. Tested with python 2.4, 2.5, 2.6, 2.7, 3.1, 3.2. Output looks identical. 2011-04-01: FIX: [pp] Result container was shared between invocations 2011-04-01: ERF: improved scikits.learn detection code. 2011-03-31: ERF: Some small code improvements, no functional changes. 2011-03-31: FIX: Fixed source path handling. ------------------------------------------------------------------------------- MDP-3.1: 2011-03-29: FIX: fixed shogun version detection code. As I expected, explicit version checking is bound to fail. I would prefer to just remove it and rely on functional checks, i.e. is the feature we depend on present or not? 2011-03-24: ERF: CovarianceMatrix has the option of not centering the data; SFANode modified accordingly 2011-03-22: FIX: fix wrong normalization in SFANode SFANode was using the covariance matrix of the derivatives, while the SFA algorithm requires the non-centered second moment matrix of the derivatives. This bug is probably irrelevant in most cases, but in some corner cases the error scales with 1/sqrt(N) where N is the number of samples. Many thanks to Sven Dähne for fishing this out ;-) 2011-03-22: ERF: added new tests for SFANode Those tests are currently failing. 2011-03-22: ERF: really use the debug flag in SFANode.stop_training 2011-03-02: FIX: old svm versions would break the import process Bug reported by Philipp Meier. 2011-03-03: DOC: updated TODO 2011-03-03: DOC: updated TODO 2011-02-23: DOC: updated CHECKLIST and TODO 2011-02-23: ERF: performance and memory improvements for KNNClassifier. Transform array of n_samples^2 * n_features array into n_samples^2. Thanks to Fabian Pedregosa! 2011-02-17: FIX: Small cosmetic fix in flow inspection for the case when stop_training doesn't receive any argument. 2011-02-17: FIX: Do not wrap abstract scikits.learn transformers 2011-02-17: Robustify wrap_scikits_transformer. Fix for the case that a transform does not implement some of the methods. 2011-01-31: ERF: running self-contained test script is now blocking the prompt 2011-01-27: FIX: Made the target checks more permissive when execution ends or is aborted. 2011-01-27: ERF: Added additional checks for copy flag in BiLayer. 2011-01-27: FIX: Fixed regression in inspection method output. 2011-01-27: FIX: BiLayer was not compatible with all return value options. 2011-01-27: FIX: Fixed some leftover inconsistencies from BiMDP stop_training interface changes. 2011-01-26: DOC: with_extension doesn't work for coroutines, tell epydoc about extension 2011-01-25: ERF: remove unittest-style wrapper class from test_extension.py. 2011-01-25: OTH: use context managers to open/close file for pickling 2011-01-25: ERF: Check for empty slides in execution as well. 2011-01-25: ERF: Improved the behavior of show_training if an already trained flow is given (a special expection is now raised). 2011-01-17: FIX: add trove classifiers for Python 2 and 3. 2011-01-14: ERF: Updated the Parallel Python support, especially the NetworkPPScheduler. It now works with pp 1.6, and there are some refactoring and robustnes improvements as well. 2011-01-13: FIX: really update CHECKLIST 2011-01-13: NEW: mdp descriptions now defined in the module. They new descriptions are used in the setup.py script and in generating the web site. 2011-01-13: ERF: get version and description in a robust way. ------------------------------------------------------------------------------- MDP-3.0: 2011-01-12: FIX: import NormalizeNode in mdp.nodes 2011-01-12: FIX: no return in IdentityNode method 2011-01-12: FIX: test_scikits should be run only if scipy is available 2011-01-12: FIX: tell epydoc that nodes are documented in rst 2011-01-11: NEW: convert scikits docstrings to rst This way I'm only getting missing target warnings and the text is parse as rst. No monospace font :) 2011-01-11: FIX: fix some epydoc warnings, add some links and a forgotten export 2011-01-07: MISC: duplicate some useful code among the three wrappers last merge from scikits branch. 2011-01-11: ERF: make scikits default docs rst-compatible 2011-01-10: Merge branch 'namespace_fixup' Conflicts: mdp/__init__.py mdp/nodes/__init__.py mdp/utils/__init__.py Add missing comma in __all__ in mdp/__init__.py. 2011-01-10: OTH: shorten test name (Looked awkward in py.test output.) 2011-01-10: NEW: introduce MDPNSDEBUG environment variable This variable controls namespace fixup debugging messages. Also remove 'advanced string formatting' in favour of printf-style statements (for python 2.5 compatibility). 2011-01-10: FIX: made the one scikits test a bit more useful 2011-01-10: FIX: there is no problem with output_dim in scikits classifiers because they are identity nodes 2011-01-10: DOC: documentation of output_dim problem in scikits.learn wrappers 2011-01-10: FIX: check for existence of im_func in classifier wrapper 2011-01-10: FIX: fail meaningfully when trying to set output_dim 2011-01-10: FIX: added docstrings to scikits wrappers 2011-01-10: FIX: Cache mechanism called pre_execution_check with too much information 2011-01-10: FIX: broken variable for disabling scikits.learn 2011-01-10: FIX: fix wrapper string in scikits nodes 2011-01-10: FIX: fixed hard-coded scikits test. 2011-01-10: FIX: fixed a bit pp_remote support. I commented out the test. There's no point in having a test that requires a working ssh setup. we should move that code in the examples. TODO: I still did not manage to test the remote support properly: it does not work if ssh spits some session information on startup :-( 2011-01-10: FIX: fix namespace issues with scikits nodes. 2011-01-10: FIX: Made the straight forward fixes for pp 1.6 support, not sure if this is working now. 2011-01-10: Merge remote branch 'origin/master' 2011-01-10: Merge a branch with some scikits work I'm doing this as a merge instead of rebasing, because the work was really done in parallel, and e.g. Tiziano removed the file, which I moved and updated. 2011-01-10: FIX: make scikits support depend on version 0.5 Version 0.4 breaks... Version 0.5 at least does learn & execute. 2011-01-10: FIX: move scikits test into mdp/tests/ 2011-01-10: Merge remote branch 'origin/master' Conflicts: mdp/test/test_pp_local.py 2011-01-10: FIX: Updated local scheduler to work with latest pp version 1.6. 2011-01-10: FIX: fix name leaking in nodes/__init__.py 2011-01-10: FIX: add scikits to list of dependencies in testall.py 2011-01-10: FIX: Fixed local Parallel Python tests. 2011-01-10: FIX: make test_ISFANode more robust. 2011-01-10: FIX: remove stale test_scikits.py file 2011-01-10: NEW: merged constant_expansion_node branch. Adds new GeneralExpansionNode thanks to Alberto Escalante. Tests and node had to be adjusted to merge cleanly and to follow new conventions. TODO: pseudo_inverse method is quite fragile, why? 2011-01-10: ERF: Added native traceback flag to IDE test run template. 2011-01-09: FIX: remove bitrot in test_pp_*.py. This makes the local tests pass with parallel python 1.5.4. Remote tests still fail because amongst other things the server list must be passed explicitely. The tests fail horribly with newer pp version. 2011-01-09: FIX: kill epydoc warnings 2011-01-09: Revert "DOC: migrated class.__doc__ to rst for nerual_gas_nodes" This reverts commit 2c2a4cd72ecd7d2dbb2032dd7db4f0754b3ba846. 2011-01-07: FIX: make joblib version checking more robust e.g. joblib.__version__='1.0.0-gitABCEDFG' should pass. 2011-01-07: FIX: be more tolerant against missing modules in scikits.learn. depending on the installation procedure, user may or may not have some of the scikits.learn modules. we just wrap the modules we find. 2011-01-07: FIX: add wrongly removed 'scikits' namespace from mdp.nodes. 2011-01-07: FIX: wrong version in scikits.learn info item. 2011-01-07: ERF: Merged "scikits" branch into "master". Conflicts: mdp/__init__.py. Fixed new config syntax and generic_tests. 2011-01-06: FIX: fixed testall script. now it works. the script should be ported to use subprocess, so that it runs OS agnostic. 2011-01-05: ERF: improved testall.py 2011-01-05: DOC: updated CHECKLIST for release. 2011-01-05: FIX: Slightly changed the include_last_sample argument to fix the problem with the standard parallel fork implementation. 2011-01-05: FIX: fix test broken due to new keyword in SFANode. 2011-01-05: FIX: added include_last_sample to SFA2Node too. 2011-01-05: ERF: added include_last_sample switch to SFANode. Motivation and discussion can be found in this thread: http://sourceforge.net/mailarchive/forum.php?thread_name=20100826183424.GF26995%40tulpenbaum.cognition.tu-berlin.de&forum_name=mdp-toolkit-users 2011-01-05: FIX: clean up __all__ in mdp/__init__.py numx* should not be in all. Quoting Tiziano: > numx was not in __all__, and therefore was not documented by epydoc. > Once it is added to __all__, indeed things break heavily. well, I think even it was by mistake, it is a good thing that numx is not in __all__. mdp.numx is an *internal* thing. people doing from mdp import * should not get numx. so, leave it like this and we don't even need a workaround for epydoc. While at it, remove whitening which was already gone and make the list alphabetical. 2011-01-04: Merge branch 'cache' Conflicts: mdp/__init__.py 2011-01-04: FIX: make setup.py run on also on python3 The code must run on all supported python versions. try: ... except Type, v: ... file() cannot be used. While at it, I'm changing exec() to re.match. It's simpler. 2011-01-04: FIX: python2.5 has no itertools.product 2011-01-04: ERf: added script to test all python versions and dependencies. 2011-01-04: FIX: fix name error in configuration.py 2011-01-04: ERF: added way of disabling optional dependencies optional dependencies can be disabled setting the env variable MDP_DISABLE_DEPNAME 2011-01-04: ERF: remove long deprecated helper functions. pca and fastica survive because we use them as ad in the the site and because most probably they are the only one in real use out there. 2011-01-04: FIX: fix test failures due to previous commit. 2011-01-04: ERF: cleaned up mdp/__init__.py. configuration is now a separate file. the logic of numx loading has been changed (again!). numpt/scipy can not be treated as an external dependency. 2011-01-04: FIX: fix generic node test failures for TimeFrameSlidingWindowNode. 2011-01-04: ERF: support iterables in generic node tests. 2011-01-03: FIX: MDP depends on joblib >= 0.4.3 2011-01-03: FIX; fixed git log format in CHECKLIST 2011-01-03: DOC: add __homepage__ variable in __init__.py 2011-01-03: FIX: removed useless file. 2011-01-03: ERF: updated author and maintainers, put version in one single place. 2011-01-03: DOC: changed reference to installation instructions 2011-01-03: ERF: removed our names from COPYRIGHT. It makes little sense to keep up-to-date the list of maintainers in this file. we have one authoritative source: the development.rst page. 2010-12-31: FIX: fixed TimeDelayNode docstring rst formatting 2010-12-31: NEW: new TimeDelay and TimeDelaySlidingWindow nodes. Thanks to Sebastian Höfer! 2010-12-31: DOC: specify dependency in svm nodes. 2010-12-31: FIX: change order of nodes in nodes/__init__.py __all__ order is somehow arbitrary, but better than before. it is needed for the automatic node list generation in the web site. 2010-12-31: DOC: migrated class.__doc__ to rst for svm family 2010-12-31: FIX: logic and wording of the symeig dependency test were wrong. I don't have a 64bit machine to test that the function in mdp/utils/routines.py still does the right thing. if it does not, just change mdp.config.has_symeig == '...' to mdp.config.has_symeig != '...' ;-) 2010-12-31: DOC: migrated class.__doc__ to rst for misc_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for classifier_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for expansion_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for nerual_gas_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for regression_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for rbm_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for lle_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for em_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for fda_nodes 2010-12-31: DOC: migrated class.__doc__ to rst for sfa family 2010-12-31: DOC: migrated class.__doc__ to rst for ica family 2010-12-31: DOC: migrated class.__doc__ to rst for nipals 2010-12-31: DOC: migrated class.__doc__ to rst for pca_nodes 2010-12-31: DOC: migrate convolution nodes to rst docstring 2010-12-31: DOC: fixed migration to rst docstrings for xsfa_nodes. 2010-12-30: Merge branch 'feature/libsvm_291_support' Conflicts: mdp/__init__.py mdp/test/test_contrib.py 2010-12-30: FIX: failing dtype_consistency_tests with numpy as backend The config.has_symeig logic was that config.has_symeig is False when using the _fake_symeig compatibility wrapper. Dtypes were selected based on that. 2010-12-30: FIX: make sure mdp.config.has_{numpy,scipy} are always set, really 2010-12-30: FIX: make sure mdp.config.has_{numpy,scipy} are always set 2010-12-30: FIX: Don’t try to fetch version of numx_version twice. 2010-12-29: ERF: Put SVM tests into a separate file. Also: Fix skip_on_condition on class. 2010-12-27: DOC: rename ExternalDepFail to -Failed and document stuff 2010-12-27: FIX: test_seed failured when testing running bimdp.test() after mdp.test() The reason was that when the test functions were imported from mdp.test into bimdp.test, they still referenced mdp.test._SEED global variable. But the --seed option in bimdp is independent, so it was set to a different random seed. By duplicating test_seed.py, a second independent global is created. 2010-12-27: Add a test for separable data. 2010-12-27: NEW: check if joblib is >= 0.4.6 2010-12-27: ERF: Restructured the libsvm tests. 2010-12-27: OTH: make COPYRIGHT valid rst This makes is easier to include in the webpage. 2010-12-27: Merge branch 'config_simplification' Conflicts: mdp/__init__.py This merge commit contains an adaptation of caching to the new framework. 2010-12-27: NEW: convert caching_extention.py to rst 2010-12-27: Merge branch 'rst_docstrings' Conflicts: mdp/signal_node.py 2010-12-27: Merge branch 'cache' Conflicts: mdp/caching/caching_extension.py 2010-12-27: Merge commit '06007d3e8987a6c8574fd63c7608b37e9e657e66' 2010-12-27: ERF: Added test for execute_method in classifiers. 2010-12-27: ERF: Add validation for libsvm parameters. 2010-12-27: ERF: Get rid of superfluous parameter handling. Use svm_parameter directly. 2010-12-27: FIX: Get the libsvm tests running for versions >=2.91. TODO: * The new interface still needs some polishing. * We need to test the RBF classifier. It won’t work right now. 2010-12-24: FIX: fix test of PCANode for degenerate case, it was failing occasionally. 2010-12-24: removed now useless copy method overwriting in NoiseNode 2010-12-24: Merge branches 'deepcopy' and 'master' 2010-12-24: ERF: added additional tests for node and flow deepcopy This tests fail in master branch righ now, because lambdas can not be pickled! 2010-12-24: ERF: added additional tests for node and flow deepcopy 2010-12-24: Merge branch 'master' of ssh+git://mdp-toolkit.git.sourceforge.net/gitroot/mdp-toolkit/mdp-toolkit 2010-12-24: FIX: fixex bimdp.test() under windows. The FIX introduced with dfa8ec5a0d367941e4c297325a43361d579f8bbd was not working on windows, because git does not support symlinks there. It has been fixed differently now, and it should work reliably under any system, I hope. 2010-12-22: ERF: Improved the exception handling for failing training argument check (user now gets a better error message). 2010-12-22: changed my email address in copyright and setup 2010-12-21: Merge remote branch 'new_guidelines' 2010-12-21: FIX: now bimdp.test() really works as advertised! 2010-12-21: FIX: regenerate run_tests.py script for running tests without py.test 2010-12-03: OTH: remove uses of deprecated dict.has_key() 2010-12-03: OTH: use with_statement in signal_node 2010-12-18: DOC: improved docs of caching mechanism 2010-12-18: FIX: possible to switch caching path while extension active 2010-12-18: FIX: caching started at second execution because of automatic setting of dtype, input_dim 2010-12-18: NEW: caching extension can now cache individual classes or instances 2010-12-18: DOC: a few fixes to the cache extension docs 2010-12-09: NEW: Added parallelization for NearestMean and KNN classifier. Also updated NearestMeanClassifier attribute names to avoid confusion. 2010-12-09: DOC: Added explanation in _default_fork docstring. 2010-12-09: DOC: Improved code documentation. 2010-12-03: FIX: copy with deepcopy everywhere, raise DeprecationWarning on old API Since Node.copy() is a public function, changing the allowed parameters might be bad. So just ignore the parameter and raise a DeprecationWarning if the parameter has a non-None value. >>> import mdp >>> node = mdp.Node() >>> node2 = node.copy(protocol=1) __main__:1: MDPDeprecationWarning: protocol parameter to copy() is ignored 2010-12-03: FIX: Patch for using deepcopy instead of pickle for Node and Flow Hi all, here is a patch and test script for replacing the pickle with deepcopy in Node.copy() and Flow.copy(). The signature of the copy function changes (the protocol keyword is no longer necessary), I don't know what the proper way to handle this is (deprecation error?), so I'll leave it up to you guys. Thanks for all the efforts, we get very positive feedback from all users of mdp and Oger! David 2010-12-02: OTH: remove redundant shogun version checking 2010-12-02: NEW: add tests for the new config architecture 2010-12-01: OTH: Convert config.has* to an attribute I have suspicions that using a lambda function was causing problems with the process scheduler. git grep -l -E 'config.has_'|xargs sed -r -i 's/(config.has_[a-z_]+)\(\)/\1/g' 2010-12-01: OTH: simplify mdp config discovery Create ExternalDepFound/ExternalDepFail objects immediately after attempting import. This way there's no need to reverse engineer where the symeig implementation comes from. TODO: test_process_schedule fails! 2010-12-01: OTH: simplify numpy/scipy imports 2010-12-01: OTH: make ExternalDep objects have boolean value 2010-12-02: OTH: replace 'map()' with 'for:' following 2to3's advice 2010-12-02: OTH: remove redundant OrderedDict implementation I'm also moving the OrderedDict recipe to a separate file, because it's kind of logically separate and will not be used in newer versions of Python anyway. 2010-12-01: OTH: mdp.test() should not cause SystemExit Function py.cmdline.pytest calls py.test.cmdline.main, but also raises SystemExit. Just call the latter one, so the interactive session can continue. 2010-12-01: Change __license__ to 'Modified BSD' in source code The license text was already changed in the documentation, but not in the source code. 2010-11-30: NEW: Added the execute_method argument and attribute to the Classifier class. This makes it possible to get the classification results from a normal flow without resorting to monkey patching (which makes nodes unpickelable). 2010-11-30: ERF: Improved code readibility. 2010-11-30: NEW: Added iadd method to Flow. Also fixed the error strings. 2010-11-29: NEW: Added parallel version of Gaussian classifier. 2010-11-29: ERF: Added helper function to combine CovarianceMatrix instances. 2010-11-24: NEW: Added KNN classifier. 2010-11-24: FIX: Fixed wrongly created classifier BiNodes. 2010-11-24: NEW: Added nearest-mean classifier node. 2010-11-24: FIX: Updated test name. 2010-11-24: ERF: Some cleanup in the GaussianClassifier. Added an exception if any class covariance matrix is singular. 2010-11-23: BRK: Renamed GaussianClassifierNode to GaussianClassifier to follow the general classifier convention (otherwise a special case would be needed in the BiMDP autogenerated code). 2010-11-23: FIX: Updated BiMDP test for the new siganture of FDANode. 2010-11-23: BRK: Updated FDANode siganture to follow the newer conventions from ClassifierNode (labels instead of cl) and the PCA/SFANode (n instead of range). 2010-11-09: OTH: move PROJECT_GUIDELINES and NEW_DEVELOPER_INFO to development.rst in docs 2010-11-01: NEW: convert neural_gas_nodes.py and rbm_nodes.py docstrings to rst 2010-11-01: NEW: add reference to JoMLR article 2010-11-01: NEW: convert mdp/nodes/xsfa_nodes.py docstrings to rst 2010-11-01: NEW: convert mdp/__init__.py and mdp/nodes/signal_node.py docstrings to rst 2010-11-01: Merge commit 'c3bdc14c092b92c214f8bd76002be565706f07ca' 2010-11-01: FIX: Fixed bug in node join, leading to inconsistent state under certain conditions with FlowNode. 2010-10-31: ERF: Added copy_callable option for thread scheduler. 2010-10-16: FIX: Updated failing unittest. 2010-10-16: FIX: Fixed the parameter names in the switchboard factory. 2010-10-15: BRK: Updated the remaining switchboards. 2010-10-15: BRK: Started to replace the x_ and y_ arguments in 2d switchboards with a single _xy argument. So far only the Rectangular2dSwitchboard is done. 2010-09-26: FIX: Correctly distinguish Flow and BiFlow in trace inspection execute. 2010-09-25: FIX: Fixed bug in ParallelFlowNode and added unittest. 2010-09-14: DOC: Fixed wrong docstring. 2010-09-14: BRK: Improved extension context manager and decorator to only deactivate extensions that were activated by it. This prevents unintended side effects. Corresponsing tests were added. 2010-09-14: FIX: Fixed outdated import. 2010-09-14: Merge commit '4671fc2511b3446e57afcc1974d46f15ac92cb5f' 2010-09-14: BRK: Improved the dimension consistency handling in FlowNode, also making the dimension setting stricter. This is to prevent really strange errors in some corner cases (e.g. when the output_dim is automatically set in execute). One generic test had to be dropped, but explicit test for the dimension setting were added. 2010-09-14: ERF: Streamlined the parallel fork template method. 2010-09-14: FIX: Fixed the test node in the test_execute_fork unittest. 2010-09-14: ERF: Removed the ParallelBiNode, since it is no longer needed. 2010-09-14: Revert "FIX: Fixed small bug in dimension consistency check." This reverts commit 0b37100894f08faf3653bab09bc4b5fb21705d72. 2010-09-13: ERF: Added more unittests for parallel. One still fails because an improvement in FlowNode is needed. 2010-09-13: DOC: Added comment on necessary extension context improvement. 2010-09-13: FIX: Fixed small bug in dimension consistency check. 2010-09-13: ERF: Improved the threaded scheduler (better exception handling). 2010-09-13: FIX: Fixed parallel bug, missing argument in callable. 2010-09-13: ERF: Turned the use_execute_fork property into a normal method. 2010-09-12: FIX: Added the missing property decorators (this was dangerous, since a function attribute is cast as True).. 2010-09-12: FIX: Fixed bug in ParallelNode. 2010-09-12: FIX: Updated ParallelFlow to use correct execution result container. 2010-09-12: FIX: Updated __all__ list. 2010-09-10: OTH: python2.5: remove PEP 3101 formatting 2010-07-30: OTH: python2.5: 'with' and 'as' 2010-09-09: Remove next-to-last import numpy from mdp codebase numx rules! 2010-09-09: ERF: Changed the node purging mechanism in parallel to no longer use a special extension method in FlowNode. Also some smaller comment updates. 2010-09-09: NEW: MDP migrates to BSD license! 2010-09-09: BRK: Clarfied some subtle aspects of the parallel API and updated the code to improve consistency. 2010-09-09: Make git display python diffs better 2010-09-08: FIX: Some smaller fixes in the updated parallel code. 2010-09-08: FIX: The parallel BiMDP tests are running again. Also some more cleanup in MDP parallel. 2010-09-08: FIX: The standard MDP tests now all run again after the changes in parallel. 2010-09-07: BRK: Continued work on the parallelization update, not working yet. 2010-09-06: BRK: Started to modify the parallel node forking. The is_bi_training in BiNode is replaced with a use_execute_fork in the ParallelExtensionNode base class. This is more logical, less complicated and a first step towards enabling more parallelization patterns. 2010-09-02: OTH: the caching mechanism could be simplified with the latest joblib 2010-08-31: DOC: Improve docs of caching mechanism, keywork argument for verbosity of cache 2010-08-26: FIX: SFANode.train fails with a meaningful error if trained with x.shape = (1, n) 2010-08-26: Fix --seed option for py.test >= 1.3 Py.test in version 1.3 added a feature to skip conftest.py files when they are exactly the same. This helps when a directory is copied to a subdirectory of itself and the config files are not idempotent. Unfortunately, this runs afoul of our logic to add the --seed option everywhere, irrespective of wheter py.test is run implicitely for the whole mdp-toolkit or for mdp or for bimdp or for both. The solution is to modify one of the conftest.py files to be unidentical. Tested with with py.test 1.2.1 and 1.3.3. 2010-08-18: OTH: Simplify docstring formatting. 2010-08-25: NEW: FANode detects singluar matrices 2010-08-24: ERF: fftpack does not support float >64; those types are removed from the supported list for ConvolutionNode 2010-08-24: FIX: Remove forgotten print statements 2010-08-24: ERF: ISFA supports float>64 2010-08-23: ERF: added python version to mdp.config 2010-08-19: ERF: Add complex256 to list of unsafe dtypes 2010-08-19: FIX: Generic tests failed for MDPNUMX='numpy' When symeig and scipy.linalg.eigh are not present, MDP falls back into using numpy.linalg.eig . This does not support large floating point types, for some reasons, which caused the tests to fail. 2010-08-17: ERF: Updated the classifier nodes that were overlooked in the big PreserveDimNode cleanup. 2010-08-17: Merge branch 'supporteddtypes' Conflicts: mdp/nodes/misc_nodes.py 2010-08-17: ERF: Clarify questions about support for float64 only 2010-08-17: FIX: Fixed generic tests, now check that PreserveDimNode raises right exceptions. 2010-08-17: ERF: Added tests for PreserveDimNode. 2010-08-17: ERF: Wrapped up the PreserveDimNode changes. Unable to fix the generic unittests, somebody has to fix those. 2010-08-16: ERF: Refined the choice of supported dtypes 2010-08-16: ERF: Redefine default supported dtypes to be 'Floats', and modify all nodes accordingly 2010-08-16: ERF: Further simplified Cumulator mechanism; added test After digging into numpy's C code, we decided that at present numpy.concatenate does the right thing, i.e. it creates a buffer large enough and uses memcpy to copy the data in each array. 2010-08-16: FIX: py.test failed with an error reporting a duplicated 'seed' option In py.test 1.3.3 they changed the sequence in which the conftest.py files are loaded. In our case, the /mdp/test/conftest.py file was laoded before the /conftest.py file, which tried to redefine the optione 'seed', causing an error. 2010-08-14: ERF: Simplified concatenation mechanism in Cumulator The new solution is much faster and still avoids direct calls to numpy.concatenate, that performs pairwise concatenations and wastes a lot of memory. 2010-08-14: FIX: Cumulator had no docstring 2010-08-10: FIX: Added missing exit target check in BiFlow. Changed the unittest to better test this case. 2010-08-10: ERF: Changed BiFlow.execute to always return a tuple (x,msg), even if the msg is empty. The previous changing return signature was too likely to cause errors. 2010-08-10: DOC: Small fix in docstring. 2010-08-10: DOC: Small fix in comment. 2010-08-09: ERF: Added check for case when both x and msg are None to produce better error message. 2010-08-09: ERF: Removed duplicate verbose print. 2010-08-08: FIX: Fixed the missing import for PreserveDimNode and fixed the broken generic tests for these nodes by excluding them. This is only a provisional fix. 2010-08-08: ERF: Rewrote the creation of the autogenerated BiNode classes. Went back to dynamically creating the classes at runtime. Now use a node blacklist instead of the previous whitelist. These two changes allow the import of nodes with dependencies, like the SVM nodes. 2010-08-08: NEW: Added new PreserveDimNode base class for input_dim == output_dim. This should avoid duplication of the set_dim methods. 2010-08-05: ERF: Tweaked the hinet CSS. 2010-08-05: DOC: Improved the ParallelFlow docstrings. 2010-07-30: DOC: Small improvements to the corutine decorator docs. 2010-07-30: FIX: Removed some left over stop_message references. 2010-07-29: NEW: extend namespace_fixup to bimdp 2010-07-29: ERF: rework fixup_namespace function and add tests 2010-07-27: FIX: NodeMetaclass and ExtensionException where imported but not in __all__ 2010-07-27: FIX: remove helper_funcs module from mdp namespace, they are imported into mdp 2010-07-27: NEW: Added a simple run script to run the tests from a .py file (e.g. to use the Eclipse debugger). 2010-07-27: ERF: Optimized the switchboard gradient implementation (about 10x faster). 2010-07-27: ERF: Changed one more unittest to use scheduler context manager. 2010-07-27: ERF: Added context manager interface to Scheduler class and added unittests. 2010-07-27: ERF: Renamed callable_ to task_callable and made some small docstring updates. 2010-07-27: ERF: Removed unused imprts and updated docs. 2010-07-27: FIX: Fix double delete 2010-07-26: NEW: use sphinx links in mdp.parallel docstring 2010-07-25: FIX: remove del's of nonexistent symbols 2010-07-25: NEW: use fixup_namespace to clean up __import__ 2010-07-25: FIX: missing comma in __all__ was concatentating names 2010-07-25: OTH: add import of fixup_namespace without actually using it This is seperate to check if there are no circular imports 2010-07-24: FIX: remove nonexistent name from __all__ 2010-07-23: FIX: remove unused import of hotshot.log 2010-07-23: FIX: fix broken name delete 2010-07-23: FIX: fixed setup.py (remove refs to demo & contrib) 2010-07-23: FIX: convolution nodes are conditional on scipy.signal 2010-07-23: FIX: remove del of nonexistent symbol 2010-07-23: FIX: move pp_simple_slave_test.py to examples 2010-07-23: FIX: regenerate bimdp wrappers for classifiers 2010-07-23: ERF: convert parallel python tests to py.test and disable them 2010-07-23: FIX: TODO had the wrond line ending. Sorry everybody :-( 2010-07-23: FIX: Fix tests in test_nodes_generic with svm classifier nodes. Add arguments to ShogunSVMClassifier and LibSVMClassifier to automatically set kernel and classifier on __init__. Add parameters to test_nodes_generic to use these arguments. 2010-07-23: DOC: updated TODO list 2010-07-23: NEW: Added new tests for Convolution2DNode 2010-07-23: FIX: removed contrib directory 2010-07-23: FIX: duplicate conftest.py twice, so py.test can be run without options, try 3 Previous version worked only under cygwin when on windows. 2010-07-23: ERF: PEP8 2010-07-23: DOC: The reason of the strange transformations in CumulatorNode 2010-07-23: FIX: Automatic test now cover everything, fixed a lot of stuff in the meanwhile! 2010-07-23: FIX: NormalNoise did not function properly 2010-07-23: FIX: KMeansNode failed on some special cases 2010-07-23: FIX: duplicate conftest.py twice, so py.test can be run without options, try 2 Previous version worked only when PYTHONPATH included mdp-toolkit/. 2010-07-23: ERF: Migrated the demos to the examples. Removed the tutorial demo. 2010-07-23: FIX: duplicate conftest.py twice, so py.test can be run without options Note: bimdp/test/conftest.py is a symbolic link to bindmp/test/conftest.py. OTOH, conftest.py in the top directory is a little different. 2010-07-23: ERF: remove old run_coverage script The new way is: py.test --figleaf and the result go into html/. 2010-07-23: OTH: Renamed NEW_DEVELOPER_INFO.txt → NEW_DEVELOPER_INFO. 2010-07-23: ERF: Made tests for SVM classifiers, Convolution2D conditional on presence of nodes 2010-07-23: Merge branch 'test_cleanup' Conflicts: mdp/test/_tools.py 2010-07-23: FIX: fix broken conditional test for caching 2010-07-23: ERF: simplify testing by providing commonly used imports in test/_tools All testing files can just say from _tools import * and the get numx, numx_rand, mult, ... Py.test is not imported into _tools, so that it is easier to possible to import files which don't actually depend on py.test when it is not available. Also includes some tiny naming and space corrections. 2010-07-23: NEW: Conditional tests decorator; decorated test_caching tests 2010-07-23: FIX: use the right TESTDECIMALS in test_utils_generic 2010-07-23: ERF: convert utils tests to py.test 2010-07-23: NEW: add QuadraticFormException for QuadraticForm errors 2010-07-23: ERF: Caching now imported conditional on joblib 2010-07-23: Merge branch 'master' of ssh+git://mdp-toolkit.git.sourceforge.net/gitroot/mdp-toolkit/mdp-toolkit 2010-07-23: Merge branch 'master' into HEAD Conflicts: mdp/__init__.py 2010-07-23: ERF: Added *Cumulator and ClassifierNode to __all__ 2010-07-23: OTH: Trying to push changes 2010-07-23: ERF: Caching tests moved to own file, updated to py.test style 2010-07-23: ERF: de-obfuscated code in config object 2010-07-23: Merge branch 'sprint_cache' Conflicts: mdp/__init__.py mdp/extension.py mdp/nodes/__init__.py mdp/nodes/convolution_nodes.py mdp/test/test_extension.py mdp/test/test_nodes.py mdp/utils/__init__.py mdp/utils/routines.py 2010-07-23: FIX: Windows specific fix. 2010-07-23: OTH: whitespaces 2010-07-23: ERF: make generic_test_factory a public function It is now even documented. 2010-07-23: OTH: Fixed whitespaces in convolution nodes 2010-07-23: DOC: describe the complicated big_nodes argument of _generic_test_factory 2010-07-23: NEW: tests can be run within python shell. You can run the tests with import mdp mdp.test() you don't need py.test installed! 2010-07-23: Merge branch 'sprint_conv2' 2010-07-23: ERF: Made import of Convolution2DNode conditional on presence of scipy 2010-07-23: ERF: Added method in config object to check for existence of arbitrary module by name 2010-07-22: FIX: remove nonexistent import from __all__ 2010-07-22: ERF: Adding numpy and scipy to config. 2010-07-22: Merge branch 'sprint_variadic_cumulator' 2010-07-22: FIX: fix broken test_gradient. It was not useing the numx, numx_rand convention!!! >:-( 2010-07-22: FIX: Fixing an error in contrib tests. 2010-07-22: ERF: migrated bimdp tests to py.test 2010-07-22: FIX: remove unexistent test name 2010-07-22: NEW: Added convolution class and tests 2010-07-22: ERF: Merged master to convolution branch and removed vestigial file 2010-07-22: DOC: Update docs 2010-07-22: ERF: Cache extension migrated to own directory, tests updated 2010-07-22: NEW: Init for caching module 2010-07-22: OTH: Attempted refactoring cache extension in own directory, got metaclass conflict 2010-07-22: ERF: update gitignore for py.test gnerated files 2010-07-22: Merge branch 'test_framework' Conflicts: bimdp/test/test_binode.py mdp/nodes/misc_nodes.py 2010-07-22: NEW: Context manager for caching extension 2010-07-22: FIX: Fixed documentation and call with wrong argument 2010-07-22: DOC: Fixed error in documentation of context manager 2010-07-22: ERF: Deleted forgotten print statement 2010-07-22: NEW: activate_caching, deactivate_caching 2010-07-22: ERF: Simplified extension context manager 2010-07-22: ERF: port contrib and hinet to py.test 2010-07-22: ERF: Cache directory can be changed or picked at random (default) 2010-07-22: Merge branch 'sprint_info_refactoring' 2010-07-22: ERF: Renamed ‘Requirements’ → ‘MDPConfiguration’. Changed the API style a little. Needs more love with version checking. 2010-07-22: ERF: Caching extension moved to own file 2010-07-22: ERF: Tests for cache extension 2010-07-22: DOC: add note about where the links must be changed in sphinx rst 2010-07-22: FIX: Exception missing mdp module. 2010-07-22: ERF: ClassifyCumulator also inherits from VariadicCumulator. A little bit useless atm, since many methods are overwritten. 2010-07-22: FIX: UTF-8 problem. I want to have Python 3 only… 2010-07-22: FIX: broken linear regression test Use non-random input value, so that it doesn't fail randomly. 2010-07-22: NEW: added hooks and a command-line option in py.test Use --seed to set the random seed. Added report of extended configuration infos before and after testing reports. Added unit test for random seed [should only fail in case of a bug in py.test and/or numpy]. 2010-07-22: FIX: make generated hinet tests pass 2010-07-22: ERF: Cache extension now based on joblib 2010-07-22: NEW: Added VariadicCumulator with mdp.Cumulator being a special case of it. VariadicCumulator adds as many automatic fields as are specified in the initialisation function. 2010-07-22: ERF: use py.test.raises for exception testing 2010-07-22: FIX: correct PCANode generation 2010-07-22: ERF: extract PCANode generation to a helper function 2010-07-22: ERF: migrate tests for hinet to py.test 2010-07-22: FIX: Switchboard.is_invertible() cannot be a staticmethod 2010-07-22: ERF: remove previously converted tests from test_nodes.py 2010-07-22: ERF: migrate tests for CuBICA- and TDSEPNodes to py.test 2010-07-22: ERF: migrate tests for HistParade- and TimeFrameNodes to py.test 2010-07-22: ERF: migrate tests for EtaComputerNode to py.test 2010-07-22: ERF: migrate tests for GrowingNeuralGasNode to py.test 2010-07-22: ERF: migrate tests for NoiseNode to py.test 2010-07-22: ERF: migrate tests for FDANode to py.test 2010-07-22: ERF: migrate tests for GaussianClassifier to py.test 2010-07-22: ERF: migrate tests for FANode to py.test 2010-07-22: ERF: migrate tests for ISFANode to py.test 2010-07-22: ERF: migrate tests for RMB*Node to py.test 2010-07-22: ERF: move spinner to _tools 2010-07-22: ERF: migrate tests for LinearRegressionNode to py.test 2010-07-22: ERF: migrate tests for CutoffNode to py.test 2010-07-22: ERF: migrate tests for HistogramNode to py.test 2010-07-22: ERF: migrate tests for RBFExpansionNode to py.test 2010-07-22: ERF: migrate tests for AdaptiveCutoffNode to py.test 2010-07-22: ERF: migrate tests for SFA2Node to py.test 2010-07-22: ERF: migrate tests for SFANode to py.test 2010-07-22: ERF: migrate tests for WhiteningNode to py.test 2010-07-22: ERF: migrate tests for PCANode to py.test 2010-07-22: ERF: migrate tests for PolynomialExpansionNode to py.test 2010-07-22: ERF: migrate covariance Node tests to py.test 2010-07-22: ERF: add node copying, saving and training tests 2010-07-22: ERF: move BogusNode* to _tools 2010-07-22: FIX: fix python2.5 compatibility 2010-07-21: FIX: Don’t include utils until it is needed. 2010-07-21: ERF: Drop Python 2.4, use built-in all(). 2010-07-21: ERF: Fix some of the issues with contrib.__all__ and dependencies. 2010-07-21: FIX: Fixing bugs with scheduling. Avoid printing while mdp is imported. Rename _info() to req.info() in MDPVersionCallable. req.info() is a different object but it’s exact layout is not important for scheduling. 2010-07-21: ERF: add tests for RBFExpansionNode 2010-07-21: FIX: don't use self in staticmethod 2010-07-21: ERF: add generated tests for FastICA 2010-07-21: ERF: generate tests for reversing 2010-07-21: ERF: use any and all to check conditions 2010-07-21: BRK: make is_trainable staticmethod where possible 2010-07-21: BRK: make is_invertible staticmethod where possible 2010-07-21: ERF: Everybody loves nicer output 2010-07-21: OTH: implemented obvious thing of decorating the execute method with joblib, it does not work; breaks the caching extension 2010-07-21: ERF: Remove all the cool logic and decorators because __dict__ is not ordered and all the methods are executed in arbitrary order. 2010-07-21: Merge commit '38664d80675ea7304ee28b460ba88c547b55629e' 2010-07-20: NEW: Added a new Requirements object which checks for available features. Current version needs some discussion/rework because class methods are not initialised in order... 2010-07-21: ERF: generate dimdtypeset consistency tests 2010-07-21: FIX: Fixed the remaining broken unittests. 2010-07-21: ERF: generate outputdim_consistency tests 2010-07-21: NEW: Adding the ‘official’ backport for OrderedDict to our routines.py. 2010-07-21: FIX: Updated the bimdp.hinet package to work with the new stop_training. 2010-07-21: ERF: world's first automatic test generation 2010-07-21: OTH: Merged cache branch with convolution branch 2010-07-21: FIX: Updated the BiFlowNode to work with new stop_training. 2010-07-21: DOC: Improved documentation for Convolution2DNode 2010-07-21: FIX: Fixed the failing BiFlow unittest. 2010-07-21: ERF: Convolution2DNode now supports FFT convolution, checks for the validity of all of its argments; the new tests are in a file outside the repository, waiting for the new test framework 2010-07-21: FIX: Fixed the inspection by removing the stop_message reference. 2010-07-21: BRK: Simplified the coroutine decorator according the stop_message removal. 2010-07-21: BRK: Updated and simplified BiFlow for the new stop_training specification. Not tested yet. 2010-07-21: ERF: Added output dimension check to IdentityNode. 2010-07-21: ERF: ported test_flows to py.test 2010-07-21: ERf: ported test_graph.py to py.test 2010-07-21: ERF: ported test_parallelflows to py.test 2010-07-21: ERF: ported test_parallelhinet.py to py.test 2010-07-21: ERF: ported test_parallelnodes.py to py.test 2010-07-21: ERF: ported test_process_schedule to py.test 2010-07-21: ERF: ported test_extension to py.test 2010-07-21: FIX: caching extension now works with non-contiguous arrays 2010-07-21: OTH: Updated bimdp todo list. 2010-07-21: BRK: Started with change of the stop_training signature in bimdp and removed stop_message. The binode file is basically done. 2010-07-21: NEW: New utility function to generate Gabor wavelets 2010-07-21: ERF: ported test_classifier to py.test 2010-07-21: ERF: added new testing tools file. 2010-07-21: ERF: ported test_schedule to py.test 2010-07-20: FIX: globally remove trailing whitespace Used http://svn.python.org/projects/python/trunk/Tools/scripts/reindent.py . 2010-07-20: FIX: broken import 2010-07-20: Merge branch 'py3k', remote branch 'origin/sprint_gradient' into master Conflicts: bimdp/inspection/trace_inspection.py 2010-07-20: FIX: Removed use of new.instancemethod from inspection. 2010-07-20: FIX: typo in Flow.__setitem__ 2010-07-20: ERF: use context manager for file access 2010-07-20: FIX: don't create a list that is ignored RefactoringTool: Warnings/messages while refactoring: RefactoringTool: ### In file /home/zbyszek/mdp/mdp-toolkit/build/py3k/mdp/linear_flows.py ### RefactoringTool: Line 481: You should use a for loop here 2010-07-20: FIX: Fixed the integer division in bimdp. 2010-07-20: FIX: remove bogus import in test/__init__.py 2010-07-20: FIX: get rid of the "callable" variable and fix the scheduler shutdown An explicit flush was needed. 2010-07-20: NEW convolution2d node 2010-07-20: ERF: esthetic change: activate heart beat spinner 2010-07-20: FIX: another integer division problem 2010-07-20: FIX: don't use None in comparisons 2010-07-20: FIX: integer division again 2010-07-20: FIX: fixed handling of binary mode for stdin and stdout for pickle 2010-07-20: FIX: remove unused import 2010-07-20: FIX: don't compare float with NoneType In Python2.6 None is smaller than any float, but in Python3 the comparison fails with TypeError. 2010-07-20: FIX: whitespace 2010-07-20: FIX: correct relative imports in process_schedule.py 2010-07-20: FIX: another integer division problem 2010-07-20: FIX: whitespace 2010-07-20: FIX: add x before range git grep -l 'for.*[^x]range' mdp/test/|xargs sed -i -r 's/for(.*[^x])in range/for\1in xrange/g' 2010-07-20: FIX: matlab→python and py3k cleanups a = a + 1 becomes a += 1 / becomes // range() becomes xrange() useless cast removed exception variable doesn't leak out after the catch block anymore 2010-07-19: FIX: whitespace 2010-07-20: FIX: zip returns a generator in py3k, we need a list 2010-07-19: FIX: fixed integer division 2010-07-19: FIX: fixed calling unbound class methods in extensions. unbound methods have been removed in python3. 2010-07-19: ERF: refactored py3tool 2010-07-19: FIX: use sets not lists in testing GraphNode 2010-07-19: FIX: open files in binary mode when loading a pickle 2010-07-19: MISC: gitignore build stuff 2010-07-19: ERF: use 'open' function instead of the deprecated 'file' in mdp/demo 2010-07-19: FIX: missing import in setup.py [2] 2010-07-19: FIX: missing import in setup.py 2010-07-19: NEW: python3 setup logic (from numpy) 2010-07-19: ERF: use 'open' function instead of the deprecated 'file'. 2010-07-20: ERF: Restricted the gradient default implementation to the IdentityNode, now raise an exception as the default. 2010-07-20: ERF: Removed the explicitly defined IdentityBiNode, use the autogenerated one instead. 2010-07-20: NEW context manager for extensions 2010-07-20: NEW basic implementation of the cache execute extension 2010-07-19: ERF: Added a gradient unittest with a small network. 2010-07-19: ERF: Improved one layer gradient unittest into a functional test. Insignificant cleanup in gradient module. 2010-07-19: FIX: Fixed the switchboard gradient and added unittest. 2010-07-19: NEW: Added the switchboard gradient implementation with a test (more unittests are needed). 2010-07-19: NEW: Added gradient implementation for layer with some unittests (more are needed). Added check in gradient base node that node has finished training. 2010-07-19: DOC: Added the new project guidelines. 2010-07-19: ERF: use integer division 2010-07-19: NEW: Added gradient extension with some implementations for simple nodes (no hinet yet). 2010-07-02: Added kwargs to SenderBiNode init to enable multiple Inheritance. 2010-07-02: Fixed bug in inspection: If nodes were added in later training phases the clickability broke for all nodes. Again this affected XSFA. Changed text in inspection from layer to node. 2010-07-02: Updated the inspection example (more training phases for better illustration). Tiny doc update in SenderBiNode. 2010-07-02: Fixed bug for normal node in BiFlowNode (this broke the XSFA inspection example). 2010-07-01: Simplified the inspection msg printing. 2010-07-01: Improved the inspection message printing (alphabetic sorting and highlighted keywords). 2010-06-29: Improved the key order in the inspection msg HTML view. 2010-06-29: Improved the array HTML display in the inspection. 2010-06-29: Fixed one corner case bug in coroutine decorator and added more unittests. Updated bimdp todo list. Small docstring update in switchboard. 2010-06-16: Merged the coroutine mixin class into the BiNode base class. Added _bi_reset hook method that should be overwritten instead of bi_reset. This is more consistent with the standard MDP design. The bi_reset template method now clears the coroutine table. Dervied BiNode classes should rename their bi_reset to _bi_reset, but unless they use the coroutine decorator there is currently no negative effect for not doing so. Updated the BiMDP todo list. 2010-06-15: Fixed duplicate classifier nodes in autogenereated code. 2010-06-14: Added check and unittest for corner case of a directly terminating coroutine. 2010-06-13: Reverted my misguided fixes to the metaclass wrapping helpers. 2010-06-11: Small comments update. 2010-06-11: Updated the codecorator to work with the updated NodeMetaclass wrapping helper functions. Add new feature to specify argument default values. Changed the _coroutine_instances to be initially None for better efficiency. 2010-06-11: Rewrote the NodeMetaclass wrapping helper functions. The old versions contained a bug (default values would prevent user defined values from being passed to the function). The new version is also arguably more elegant and flexible. A unittest was added for parts of the new functionality. 2010-06-11: Fixed the n argument in PCANode inverse. 2010-06-09: Added new coroutine decorator and mixin for BiMDP, allowing easy continuations (without boilerplate code or explicit state machines). 2010-06-09: Fixed bug in SenderBiNode. 2010-06-09: Fixed typo. 2010-06-09: Fixed broken SFA execute range argument and renamed it to n. Added unittests for PCA and SFA n arguments. Added some missing SFANode attributes to init. 2010-06-09: Fixed bug in BiFlowNode. 2010-05-31: Added loop check for previous button in slideshow. 2010-05-27: Numpy still uses the deprecated string exceptions, which were naturally not caught during inspection. I now changed inspection to catch everything. 2010-05-19: Added check for loop setting in slideshow next(). 2010-05-17: Very small cosmetic updates. 2010-05-17: fixed other two python2.4 incompatibilities in demos. 2010-05-15: fixed bug with ProcessScheduler when mdp installed by debian package. Now it works correctly even when multiple versions of mdp are installed, for example a system version via debian and a local git version. A unit test has been added to make sure parent and child processes are running the very same mdp. Thanks to Yaroslav Halchenko for pointing out the problem! ------------------------------------------------------------------------------- MDP-2.6: 2010-05-14: fix spurious shogun warning. 2010-05-14: applied patch from Rike to re-enable some of the working Shogun tests. 2010-05-14: fixed bug when using most recent numpy (1.4.1). utils.get_dtype was failing when called with 'All' argument. most of MDP unittests were failing! 2010-05-14: added stylesheet files to setup script. only *.py files are installed by default. 2010-05-14: modified mechanism to get git revision in order to properly handle the case when git fails. added stylesheets to MANIFEST template 2010-05-14: several additions to distribution files 2010-05-14: removed NaiveBayesClassifer from automatically generated nodes in bimdp. regenerated node wrappers 2010-05-14: fixed bug in GaussianClassifierNode and FDANode when training with a list of labels. Removed obsolete 'uniq' function in utils. we can use builtin set instead. 2010-05-14: disabled Shogun tests. they often fail withtou apparent reasons. try for example: python2.5 -c 'import mdp; mdp.test(seed=257416710)' 2010-05-14: Added a maximum iteration constraint to the k-means classifier. 2010-05-14: Moved the NaiveBayesClassifier to the demo. 2010-05-14: Fixed a bug where the Classifier rank() method returned items in the reverse order. 2010-05-13: LLENode was not fixed ;-) disabled 2D test and added reminder to TODO 2010-05-13: fixed ever failing LLENode test. 2010-05-13: added info about LibSVM and Shogun in mdp.info() 2010-05-13: first take at disabling SVM tests when libraries are not available 2010-05-12: Updated the todo list to reflect the latest developments. 2010-05-12: Adjusted the BiClassifier node according to the renamings. 2010-05-12: Renamings in the classifier nodes (classify->label, cl->labels). 2010-05-11: removed code duplication from test/__init__.py 2010-05-11: added info function to display infos about MDP and dependencies 2010-04-29: Added ability to exit BiFlow with -1 target value, making it easier to use inverse execution. 2010-04-22: Inserted the new sys.path behavior also in the main clause. 2010-04-22: Changed the sys.path behavior in subprocesses to fix problems with multiple MDP versions on a system. 2010-04-14: Fall back on default if specified browser is not available. 2010-04-14: Added tracebacks to exception handling during debug inspection. 2010-04-12: Added ability to specify a specific browser for slideshows, also changed the argument name. 2010-04-09: Rewrote K-Means training to be aligned with the Cumulator training. 2010-04-09: Adapted the SVM Classifiers to use the new ClassifierCumulator class. 2010-04-03: Made a Cumulator version for simple Classifiers. 2010-04-06: Made GaussianClassifierNode inherit from ClassifierNode. 2010-04-04: Simplified the inheritance names in classifier nodes’ declarations. 2010-03-29: Patch from Benjamin Schrauwen to fix the method polution issue. 2010-03-29: Fixed the dysfunctional unittest, it now breaks, currently no solution. 2010-03-29: Added test for pp scheduler with real flow. 2010-03-28: Improved the extension verbose printing. 2010-03-28: Fixed one more issue (method polution) and added a test. 2010-03-28: Added new failing test, caused by polution. 2010-03-28: Added unittest for the special behavior when multiple extensions extend the same method. 2010-03-28: Patch from Benjamin Schrauwen for extension mechanism. 2010-03-27: Slightly changed the behavior of targeted message keys: They are now removed even if they are not args of the method. Updated the unittests accordingly. 2010-03-27: Fixed bug for layer containing a single node. 2010-03-26: Added BiClassifier and automatic creation of BiMDP versions for MDP classifiers (currently except the SVN based ones). 2010-03-25: Applied patch from Benjamin Schrauwen, the BiMDP tests now all pass. 2010-03-25: Changed the BiMDP msg key seperator from "=>" to "->" to allow for more consistent convention in the future, when more options might be added. Updated the todos accordingly. 2010-03-25: Undid the changes to the extension mechanism, they are now available in a seperate branch. 2010-03-25: Enable inheritance in extensions. Patch thanks to Benjamin Schrauwen! (cherry picking from commit aacbc906be0f79e66124085e1c51c35a0aee731d) Enable inheritance in extensions. Test thanks to Benjamin Schrauwen! (cherry picking from commit 89b7facb223aff09d4581ce5aa68d07a8ef47b1b) 2010-03-25: Enable inheritance in extensions. Test thanks to Benjamin Schrauwen! 2010-03-25: Enable inheritance in extensions. Patch thanks to Benjamin Schrauwen! 2010-03-24: Python fixes for compatibility with 2.4. 2010-03-24: Reverted some of the Python 2.6 (and Numpy 1.4) only changes. 2010-03-24: Added verbose argument to mdp.activate_extension. 2010-03-23: Added a section about dealing with testing branches. 2010-03-22: Added unittest for bimdp parallel stuff and updated another. Update the todos. 2010-03-22: Improved the CloneBiLayer message data splitting and added corresponding unittest. 2010-03-22: Slightly changed the message handing in BiSwitchboard and added corresponding unittests. Small rename in BiNode. Small todo update. 2010-03-16: Added a simple k-means clustering classifier. 2010-03-14: Added node_id support to BiFlowNode. 2010-03-13: Added utility function izip_stretched. 2010-03-12: Added test for adding node to flow. Moved one BiNode test to correct class. 2010-03-11: Fixed bug in flow in-place adding method. 2010-03-11: Added a refcast to classify and prob methods. 2010-03-10: Fixed the remaining failing tests from Tiziano. It was caused by an ambiguity of the BiFlow.train docstring, so this is now explained in more detail. An additional check was added to BiFlow to detect this kind of error. 2010-03-10: Refactored the additional argument check into seperate method, so that it can be reused by derived flow classes (especially BiFlow). 2010-03-10: Fixed the test for FDA in a biflow. 2010-03-10: Added other failing tests for BiFlow. 2010-03-10: Added failing tests for BiFlows. 2010-03-10: Added special __add__ method to BiNode, creating a BiFlow. Also added corresponding unittest. 2010-03-09: Fixed an assertion bug in Shogun test. 2010-03-09: Added unittests for recent stop_message magic. Also made some small improvements and added for documentation for this. Made small updates to the general bimdp docstring. 2010-03-09: Added a section on using git with Windows or Eclipse. Added a section on following PEP 8. 2010-03-09: Added checks for input_dim. 2010-03-09: We need to have shogun 0.9 for our SVM Classifier. 2010-03-08: Updated NEW_DEVELOPER_INFO to ‘The git situation’. 2010-03-08: Fixed Py2.6 DeprecationWarning in RBMLearning test. 2010-03-08: Fixed a new bug in BiNode. Moved the SVN nodes to the classifier part in the autogen module. 2010-03-08: Made a larger set of additions to the SVM tests. 2010-03-08: Updated the docstrings for the SVM classifiers. 2010-03-06: Fix: Forgot to set the classifier_type in libsvm. 2010-03-06: Added simple support for probability estimations in LibSVM through our _prob() method. 2010-03-04: Renamed SVM_Node -> SVM_Classifier. 2010-03-02: Supplying arguments to the shogun classifier works now. Improved the test suite. 2010-03-01: Lots of updates and refinements to shogun integration. 2010-02-28: Added some recognition for KernelMachines in shogun. 2010-02-27: Applied some fixes and optimisations to the SVM code. 2010-02-26: Added class _LabelNormalizer to ease the handling of label mapping. 2010-02-26: ClassifierNode-Migration: Now use ClassifierNode._classify in SVMNodes. 2010-02-26: Last commit before migration of SVM nodes to ClassifierNode. 2009-09-16: Made some improvements in SVM testing and overall structure. 2010-03-06: Improved the algorithm for _randomly_filled_hyperball(). Scaling is much better now. 2010-03-06: Fixed a bug in ClassifierNode.rank(). It now expects a list of feature vectors to function. 2010-03-06: Fixed one potential stop_message issue. 2010-03-06: Added magic in BiNode to call execute or inverse from stop_message. 2010-02-27: Made the product helper method take advantage of Python 2.6. 2010-03-04: Moved release files in root of master branch. 2010-03-03: Added automatic detection of number of CPU cores. This is used in the ProcessScheduler and the ThreadScheduler as the default value. 2010-03-02: Fixed bug left over from inspection cleanup. 2010-02-27: get_svn_revision --> get_git_revision 2010-02-25: Made a couple of smaller improvements in the inspections stuff. Added a nice demo for customized inspections. 2010-02-22: Introducing a node for a simple discrete Hopfield model. 2010-02-22: Stupid bug in bool_to_sign fixed. 2010-02-23: Simplified the improved import precautions. 2010-02-23: Enabled calling bimdp.test(). Removed redundant code from autogen. 2010-02-23: Made the import process in the worker processes more robust, to fix the problem with calling bimdp.test() from the command line. 2010-02-23: Small updated in the autogen code. 2010-02-23: Changed the automatic creation of BiNode versions for MDP nodes. Now a module file is used that is created by a special script. While less elegant than the original dynamic solution this is now compatible with code checkers and is more transparent for users. 2010-02-23: Added general purpose routines bool_to_sign and sign_to_bool. 2010-02-22: Fixed mdp import bug in process scheduler (caused by the occurance of mdp in the repo name). 2010-02-19: Delete mdp_dist. All future updates should be made in release-manager branch. 2010-02-19: Removed remaining binet references. Renamed some inspection classes to get the MDP out of the name. Updated the todo list. 2010-02-19: Need to check against numpy.all when comparing array elements. 2010-02-18: Corrected the common assert-statement-with-parentheses mistake. 2010-02-18: Restructured bimdp to follow the mdp structure. 2010-02-17: Renamed binet to bimdp. 2009-08-01: Typo fix in progressbar script and clarification for OS X (the automatic size works there as well). 2010-02-17: Added .gitignore file for .pyc files and some generic patterns. 2010-02-14: Added option to automatically handle the source_paths in the worker processes. 2010-02-13: Added more unittests for BiFlow. Fixed one bug in inspection. Moved the JumpBiNode to the tests. 2010-02-11: Updated the parallel demo. 2010-02-11: Added a new thread based scheduler. Some very tiny updates to ProcessScheduler. 2010-02-09: Added more BiNode unittests. Updated BiNode documentation. Updated BiFlow unittests (not yet complete). 2010-01-30: Some small fixes in the inspection. Tried to use cgitd to show nice HTML tracebacks, but so far this failed (FlowExceptionCR only preserves a traceback string). 2010-01-29: Removed the updown module (this should be no longer needed). 2010-01-26: Added check in get_quadratic_form to make it more flexible (e.g. when a derived class wants to use it in _stop_training). Also made some small PEP8 updates. 2010-01-26: Updated the imports for the parallel package. Fixed some other small issues. 2010-01-22: Fixed one issue in rectangular switchboards (the data in each patch was transposed). Added corresponding unittests. 2010-01-11: Seriously beefed up the automatic BiNode creation to preserve the init signature. This makes it compatible with the introspection in the parallel default fork implementation. Also added a special ParallelBiNode and made a tiny style improvement in BiNode. 2010-01-11: Added a default implementation for forking nodes. 2010-01-06: Updated the todos. Also one small improvement to the metaclass modification. 2010-01-05: Some small fixes and cosmetic correction. 2010-01-05: Fixed one bug from hell in FlowNode (copy was broken for nested FlowNodes when the copy happened after training). 2010-01-05: Fixed a bug in BiFlowNode. 2010-01-04: Modified the automatic node creation, now is compatible with pickle and should be 100% transparent. Also fixed the switchboard factory extension support. 2010-01-04: Put the automatic node creation into a function to avoid namespace polution. Added automatic node creation for switchboards. There is one remaining issue with pickling. 2010-01-04: Fixed bugs from refactoring. 2010-01-04: Small refactoring in switchboard factory extension (to allow easier modification by derived classes). 2010-01-04: Added automatic creation of BiNode versions of all nodes in mdp.nodes. 2010-01-04: Removed leftover code. 2010-01-04: Updated todos and docstring in init. Small cosmetic updates elsewhere. 2010-01-03: Fixed bug of the new inspection training node highlighting feature. 2010-01-03: Fixed one issue with stop messages in ParallelBiFlow, added a related convenience check to CloneBiLayer. 2010-01-03: Small improvements and bugfixes with respect to stop_message. 2010-01-03: Added highlighting of the currently training node in the inspection. 2010-01-02: Fixed a couple of bugs. The DBN example is now working again. 2010-01-02: Inspection was simplified, parallel did not need any changes. The binet simplification should now be complete (but I have not run real-world tests yet). 2010-01-02: Updated bilayer and biswitchboard (with some huge simplifications in biswitchboard). Now parallel and inspection remain to be updated. 2010-01-02: Added a new switchboard. 2010-01-01: Fixed some issues in BiFlow after simplification. Updated BiFlowNode, this is hopefully done. 2009-12-30: Finished simplification of BiFlow. bihinet still needs to be updated as well. 2009-12-25: Added /usr/share/dict/words to the list of dictionaries. 2009-12-23: Started with the binet simplification. BiNode should be more or less finished, most of the rest is not yet done. In principle everything should already work, there is just a large amount of dead code around. 2009-12-22: Fixed one bug in the trace inspection (added check for msg being None). 2009-12-22: Slightly modified the BiLayer data splitting behavior. 2009-12-22: Fixed bug in iterator / argument check for train: default argument values were not considered. 2009-12-16: Renamed the 'html_representation' extension to 'html'. 2009-12-15: Added a copy method to FlowNode to enable delegation to internal nodes. Added corresponding tests. 2009-12-13: Prettified the argument representations in the slides. 2009-12-12: Small update to SenderBiNode. 2009-12-12: Improved the exception display in the inspection slideshows. Fixed missing reset in fascade. 2009-12-12: Fixed bug in BiFlow (same bug that was previously fixed in BiFlowNode, just forgot to commit this). 2009-12-12: Fixed bug in BiFlowNode (relative target index was not translated to absolute index during training). 2009-12-12: Increased the robustnes of the training inspection in debug mode (it can now deal with exceptions before the stop training hook is reached). 2009-12-11: clean up a couple of lines in RBM nodes 2009-12-09: Added a small parallelization demo to demonstrate and explore the speedup. 2009-12-05: Fixed outdated default value in slideshow (could cause JS error in special circumstances). 2009-12-04: added documentation about the convention for the train methods of multiple training phase nodes. 2009-12-04: added Node.has_multiple_training_phases method. 2009-12-03: Modified check for missing argument in node training to also check for too many arguments. Added a corresponding test. 2009-12-03: Added check for missing training arguments in Flow (which should be provided by the iterator). Also edited the corresponding unittest. 2009-12-03: Fixed small error in docstring for slideshow. 2009-12-02: well, NoiseNode *can* be pickled if you use pickle instead of cPickle. I hope this bug is fixed in python2.6 or python3 ;-) 2009-12-02: raise error if trying to copying or saving the NoiseNode error (bug in cPickle) 2009-12-02: added failing test for iterables mess in flow. 2009-12-01: Added missing super call. 2009-12-01: Fixed one evil bug: When the last training phase of a node was not parallelizable in a ParallelCheckpointFlow then the checkpoint function was not called. The fix required the addition of another hook method in ParallelFlow, but is overall much cleaner than the previous solution. Also improved the status messages for local training phases. 2009-12-01: gaussian classifier still had overwritten train just to offer a doc-string. putting the doc-string in _train is sufficient. 2009-11-29: Added new version of SenderBiNode (doesn't use branching). 2009-11-26: Fixed one biflow issue when in inverse mode (especially inside a BiFlowNode). 2009-11-26: Updated some docstrings for the extension mechanism (they were only refering to methods and not attributes). 2009-11-26: Fixed a bug in the inspection facade. 2009-11-22: Improved the extension unittests (now testing class attributes as well). 2009-11-21: Improved the slideshow button text hints (they now also contain the keyboard shortcuts). 2009-11-21: Fixed one embarrassing mistake in the node metaclasses. 2009-11-21: Added support for kwargs in training and execution inspection. 2009-11-16: Added a SimpleMarkovClassifier node. There is duplicated functionality compared to the NaiveBayesClassifier, so the NaiveBayesClassifier could be refactored to be based on the SimpleMarkovClassifier. 2009-11-15: Fixed the signature overwriting in NodeMetaclass. Also renamed some occurances of "kargs" to "kwargs" in the Node class (previously both names were used in different methods). 2009-11-15: Fixed a bug in rank(). 2009-11-14: Moved ClassifierNode up one directory. 2009-11-14: added file with info for new developers 2009-11-13: Added a ClassifierNode with basic methods classify, rank and prob. 2009-11-13: Fixed one bug in the message container, thanks to Sven Dähne. 2009-11-09: Fixed one small bug in switchboard factory. Added switchboard factory extension in binet. Updated todos. 2009-11-07: Added new switchboard factory node extension. This has been factored out of the hinet planer and I will now use it in my simulation software as well (therefore I wanted to integrate it into MDP). Unittests and documentation are currently missing (unittests will be somewhat tricky, not sure how deeply this should be covered in the tutorial anyway). 2009-11-06: Rewrote some parts of the extension mechanism. It now works for arbitrary attributes. One nice things is that this actually reduced the number of lines of code. The tutorial has not yet been updated. Attribute specific unittests are missing as well. 2009-11-06: Updated the todo list. 2009-11-05: Slightly improved the API for activating multiple extensions. Discovered that the extension mechanism does not work for classmethods/staticmethods, since they appear as non-callable descriptors. I will change the extension mechanism to work for arbitrary attributes ASAP. 2009-11-04: Small improvements in extension mechanism, added more comments. Added missing Exception import in hinet init. 2009-11-04: Fixed a small slideshow issue. 2009-11-03: Completed the clickable inspection nodes. One can now click on a node to jump to the next slide where it is reached. This does not work in IE yet (the workaround would be simple, but don't want to clutter the code with IE specific garbage). Also removed the AJAX storage div (caused trouble due to duplicate ids and is not needed anyway). 2009-11-03: Added support for active node ids in binet inspection. This will make it possible to click on a node and directly jump to the next time it is reached. The JS part of this is not yet implemented. 2009-11-03: Fixed the slideshow image CSS and added IE support. 2009-10-30: Cleaned up the JavaScript code in the binet inspection. 2009-10-27: Added checks in channel switchboard. 2009-10-21: Sorry, forgot to fix the webbrowser.open issue in binet. 2009-10-21: Fixed the webbrowser.open issue on MacOS as suggested by Rike. 2009-10-20: Tweaked hinet css. Extracted slideshow css into speparate file. 2009-10-20: Extracted CSS code into separate file. 2009-10-18: Fixed error in rhombic switchboard, added corresponding unittest. 2009-10-17: Added new features to the ChannelSwitchboard base class to get the effective receptive fields in hierarchical networks. Also added corresponding tests. Minor cosmetic updates in hinet translator. 2009-10-16: Added hinet translatation adapter for valid XHTML (instead of HTML). Also added a corresponding unittest, but this does not test the validity of the XHTML. 2009-10-16: Fixed two small issues in the hinet HTML representation. 2009-10-14: fixed bug in TimeFramesNode when input_dim was set explicitly. thanks to anonymous sourceforge user [Bug ID: 2865106] 2009-10-14: Some CSS fixes and a fix in the demo. 2009-10-14: Added slideshow CSS for crisp rescaling, in anticipation of the Firefox 3.6 beta release. 2009-10-12: Added feature that nicely line wraps the section ids in a slideshow. 2009-10-07: Added more checks to DoubleRect2dSwitchboard. Some small improvements. Updated the package init file. 2009-10-07: Reverted output_channels renaming in switchboard, to not create compatibility issues. 2009-10-07: Many switchboard updates. A new ChannelSwitchbard base class was introduced, many code improvements, HTML representations were added for the new switchboard types. 2009-10-06: removed spurious print statement in QuadraticForm tests. 2009-10-04: Added a section on the extension mechanism in the tutorial (note that this is a first draft). Also added a description of the slideshow stuff (plus a minor update in the slideshow code). 2009-10-04: Migrated extension stuff to separate module. 2009-10-01: Fixed some issues in the new DoubleRhomb2dSwitchboard, added more tests. 2009-09-29: Added a new switchboard class, DoubleRhomb2dSwitchboard. The tests are currently incomplete and there are probably bugs in there. 2009-09-29: Some simplifications in the switchboard classes. 2009-09-29: Added a new switchboard class, DoubleRect2dSwitchboard. This will probably be complemented in the future by a Rhomb2d switchboard for multilayer networks. 2009-09-24: Fixed support for multiple slideshows in one file. Added multiple slideshow demo. Allowed keyboard shortcuts for slideshows to be turned off. 2009-09-23: Updated todos. 2009-09-23: Fixed the template indentation handling. Updated the binet inspection to work with the new slideshow. Moved the manual tests for slideshow and hinet to the demos folder. 2009-09-23: Some more cleanup for the slideshow stuff. 2009-09-23: Small update in binet for moving the hinet basic CSS to utils. 2009-09-23: Cleaned up the slideshow JavaScript code. Most importantly the use of global variables is now minimized by using an object oriented design with a closure. Some additional cleanup in the slideshow classes was done as well. Added one helper function to directly create an HTML slideshow. Moved the default CSS from hinet to utils, so it can be used by both slideshow and hinet. Moved the hinet HTML test/demo to the test folder and added a similar demo for slideshow (using the MDP logo animation). 2009-09-19: added script to analyze code coverage during tests and output html report; needs figleaf, http://darcs.idyll.org/~t/projects/figleaf/doc/; mostly, we don't test exception, but there are some more worrying parts, like we don't test for for flow inversion... 2009-09-17: Added new utility function orthogonal_permutations. The function helps avoiding deeply nested statements when several of several arguments need to be tested against each other. 2009-09-14: Many thanks to Christian Hinze for pointing out a bug in QuadraticForm.get_invariances. Removed warning about bug in linalg.qr in numpy 1.0.1. 2009-09-14: Mainly added basic svm tests and did some cleanup and bug fixes. Also, the requested comments have been investigated. 2009-09-10: fixed bug in QuadraticForm.get_invariances: second derivative value was wrong when linear term significantly large; second derivative directions were ok 2009-08-30: small cleanups of svm_nodes and comments/requests for comments. rike? 2009-08-30: changed import order in nodes/__init__.py to clean up import in expansion_nodes.py for GrowingNeuralGasExpansionNode. 2009-08-23: Made extension method attributes public. Improved the extension unittests. 2009-08-22: Small code improvement in binet inspector. Updated todo for extensions. 2009-08-22: Modified the NodeMetaclass wrapping procedure to use super instead of direct method references. Hopefully this has no negative side effects. The advantage is that it is compatible with runtime monkey patching, so it enables more extension stuff. 2009-08-21: Extension decorator now preserves function docstring and signature. 2009-08-17: Fixed extension related bug in ParallelBiFlow. Improved the related unittests. Added some comments. 2009-08-16: Added little comment. 2009-08-16: Removed use of parallel FlowNodes in parallel flows. Small update to extensions. 2009-08-12: Added option to extension decorator to specify the method name. Added extension decorator unittest (now we have 400 unittests, wheee!). 2009-08-12: Fixed left-over bugs from yesterdays mess, fixed unittests. 2009-08-11: Added more unittests for the extension mechanism. Changes in the extension documentation and comments, and one small fix. 2009-08-11: Use set for list of active extensions. 2009-08-11: Added safety mechanisms to extensions, added one corresponding unittest. 2009-08-10: Re-enabled Shogun nodes. 2009-08-10: Added Henning Sprekeler to the list of developers and removed him from the list of contributors. Updated the various copyright statements all over the place, and the home page. 2009-08-10: Corrected the docstring of the GrowingNeuralGasExpansionNode to be more precise on the relation between max_nodes and the dimension of the expansion. 2009-08-10: added standard tests for GworingNeuralGasExpansionNode and cleaned up its setting of output_dim. 2009-08-07: Bug removed in GrowingNeuralGasExpansionNode: scipy -> numx 2009-08-07: missing file added; UpDownNode modified so it can pass down the results of computations at he top 2009-08-07: Added GrowingNeuralGasExpansionNode to expansion_nodes. Tests are still missing. 2009-08-07: ShogunSVMNode only gets imported when libraries are present. Stylistic changes (not all done yet). Some parameter issues and docstring clarified. Non-kernel classification. self._classification_type added. Parameter mapping for kernels introduced. 2009-08-06: remove import of svm_nodes in contrib. the automatic shogun import is not ready for prime-time. 2009-08-02: Initial SVM commit. Using only shogun for now. Still needs a lot of work and a better API. But it is already working somehow. 2009-08-02: uploaded UpDownBiNode, mother class for DBN, backpropagation; corrected small bug in binet; I've got loads of questions about binet 2009-07-31: GaussianClassifierNode has now explicit output_dim method (which fails). 2009-07-25: Added RBF node, utilities to replicate array on an additional dimension (rrep, lrep, irep) -> very useful 2009-07-19: Updated BiNet todo list. 2009-07-16: Fixed bug in rectangular switchboard that was introduced in the previous update. 2009-07-15: Added unused channel information to rectangular switchboard, this is also shown in the HTML representation. Added comments in slideshow. ------------------------------------------------------------------------------- MDP-2.5: 2009-06-30: Added online detection of numerical backend, parallel python support, symeig backend and numerical backend to the output of unit tests. Should help in debugging. 2009-06-12: Integration of the cutoff and histogram nodes. 2009-06-12: Fixed bug in parallel flow (exception handling). 2009-06-09: Fixed bug in LLENode when output_dim is a float. Thanks to Konrad Hinsen. 2009-06-05: Fixed bugs in parallel flow for multiple schedulers. 2009-06-05: Fixed a bug in layer inverse, thanks to Alberto Escalante. 2009-04-29: Added a LinearRegressionNode. 2009-03-31: PCANode does not complain anymore when covariance matrix has negative eigenvalues iff svd==True or reduce==True. If output_dim has been specified has a desired variance, negative eigenvalues are ignored. Improved error message for SFANode in case of negative eigenvalues, we now suggest to prepend the node with a PCANode(svd=True) or PCANode(reduce=True). 2009-03-26: Migrated from old thread package to the new threading one. Added flag to disable caching in process scheduler. There are some breaking changes for custom schedulers (parallel flow training or execution is not affected). 2009-03-25: Added svn revision tracking support. 2009-03-25: Removed the copy_callable flag for scheduler, this is now completely replaced by forking the TaskCallable. This has no effect for the convenient ParallelFlow interface, but custom schedulers get broken. 2009-03-22: Implemented caching in the ProcessScheduler. 2009-02-22: make_parallel now works completely in-place to save memory. 2009-02-12: Added container methods to FlowNode. 2009-03-03: Added CrossCovarianceMatrix with tests. 2009-02-03: Added IdentityNode. 2009-01-30: Added a helper function in hinet to directly display a flow HTML representation. 2009-01-22: Allow output_dim in Layer to be set lazily. 2008-12-23: Added total_variance to the nipals node. 2008-12-23: Always set explained_variance and total_variance after training in PCANode. 2008-12-12: Modified symrand to really return symmetric matrices (and not only positive definite). Adapted GaussianClassifierNode to account for that. Adapted symrand to return also complex hermitian matrices. 2008-12-11: Fixed one problem in PCANode (when output_dim was set to input_dim the total variance was treated as unknown). Fixed var_part parameter in ParallelPCANode. 2008-12-11: Added var_part feature to PCANode (filter according to variance relative to absoute variance). 2008-12-04: Fixed missing axis arg in amax call in tutorial. Thanks to Samuel John! 2008-12-04: Fixed the empty data iterator handling in ParallelFlow. Also added empty iterator checks in the normal Flow (raise an exception if the iterator is empty). 2008-11-19: Modified pca and sfa nodes to check for negative eigenvalues in the cov matrices 2008-11-19: symeig integrated in scipy, mdp can use it from there now. 2008-11-18: Added ParallelFDANode. 2008-11-18: Updated the train callable for ParallelFlow to support additional arguments. 2008-11-05: Rewrite of the make parallel code, now supports hinet structures. 2008-11-03: Rewrite of the hinet HTML repesentation creator. Unfortunately this also breaks the public interface, but the changes are pretty simple. 2008-10-29: Shut off warnings coming from remote processes in ProcessScheduler 2008-10-27: Fixed problem with overwriting kwargs in the init method of ParallelFlow. 2008-10-24: Fixed pretrained nodes bug in hinet.FlowNode. 2008-10-20: Fixed critical import bug in parallel package when pp (parallel python library) is installed. ------------------------------------------------------------------------------- MDP-2.4: 2008-10-16: added interface to BLAS's "gemm" matrix multiplication function. 2008-10-15: removed obsolete helper functions. 2008-10-15: added new feature. Now: output = XXXNode(output_dim=10)(x) trains and executes the node. This makes helper_functions obsolete! It even works for multiple training phases (only if the training phase has not started yet). 2008-10-15: removed use of deprecated features with python2.6 -3. 2008-10-14: removed dangerous list default argument in rotate and permute functions. A tuple is now used. 2008-10-13: PEP8 code restyling (pylint). 2008-10-07: Removed workarounds for pickle bug in numpy < 1.1.x (see numpy ticket 551). 2008-09-24: Implemeted metaclass trick for automatic inheritance of documentation for private methods. Node's subclass authors can now directly document "_execute", and let users see those docs as documenting "execute": class MyNode(Node): def _execute(self): """blah""" >>> print MyNode.execute.__doc__ blah. Just defined set of methods allow overwriting of the docstring. the current list is: ['_train', '_stop_training', '_execute', '_inverse'] 2008-09-22: Added new functionality to nodes and flows. Node1+Node2 now returns a flow and Flow1+Node1 appends Node1 to Flow1. 2008-09-07: New node for Locally Linear Embedding 2008-08-28: The docstring of Flow.train now mentions that instead of x the iterators can also return a tuple of x and additional args. 2008-08-28: Fixed bug in PCANode: when setting output_dim to a float number after instantiation but before stop_training, i.e: pca = PCANode() pca.train(x) pca.output_dim = 0.9 pca.stop_training() an exception was thrown: Output dim are set already (0) (1 given) 2008-08-28: Fixed bug in PCANode: when setting output_dim to float number, after stop_training pca.output_dim was a float number instead of integer. 2008-08-21: Added inverse for Switchboard, including unittests. 2008-08-19: Added parallel package. 2008-08-19: Added new NormalNoiseNode (with small unittest), which can be safely pickled. 2008-08-07: fixed bug in rbm_nodes (TrainingFinishedException). Thanks to Mathias Franzius! 2008-07-03: Node.__call__ method now takes *args and **kwargs to call the execute method. Thanks to Jake VanderPlas! 2008-06-30: Fix debian bug 487939: Modifed the fix for the debian bug so that white_parm defaults to None instead of {}. With default {} a sublcass updating the dictionary would have updated it for all instances... http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=487939 Applied patch from Michael Hanke. Thank you! ------------------------------------------------------------------------------- MDP-2.3: 2008-05-08: fixed bug in the raising of the switchboard exception. 2008-05-02: added exception for hinet.Rectangular2dSwitchboard and corresponding unittest. 2008-04-25: added new TDSEPNode, updated ISFANode. 2008-04-16: added an HTML visualisation tool for hinet flows to the hinet package. Added a hinet section in the tutorial. 2008-03-22: released MDP 2.2, this release is intended for internal use only 2008-03-21: added hinet package 2008-03-19: added RBM nodes 2008-03-18: fixed bug in PCANode when output_dim was specified as float. 2008-03-16: HitParadeNode now supports integer dtypes. 2008-03-13: created contrib subpackage and test_contrib test suites. JADENode moved to contrib. Tests are now sorted by test_suite. Added the NIPALSNode for iterative PCA. 2008-03-11: added JADENode with tests 2008-03-10: added test for dimensions settings (nodes should have output_dim and input_dim set after training) 2008-01-22: removed utils.comb scipy code and obsolete SciPy copyright notice from utils/routines.py 2008-01-03: fixed bug in SFA2Node when input_dim was set on instantiation, fixed bug in SFA2Node._stop_training when output_dim was set and larger than input_dim, fixed bug in QuadraticForm when H was indefinite. 2007-09-14: FastICANode has been completely rewritten. It is now up-to-date with the original Matlab version (2.5) published on 19.10.2005. Highlights: - fine tuning is implemented - the stabilized version of the algorithm is implemented - the new 'skew' non linearity for skewed input data is implemented - bug fix in 'tanh' non linearity - bug fix in 'gaus' non linearity in 'symm' approach - all combinations of input parameters are being tested 2007-09-12: Added new funcionality for PCA and Whitening. The nodes can now be instantiated with svd=True, to use SVD instead of the standard eigenvalue problem solver. Setting reduce=True and var_abs and var_rel it is possible to automatically discard irrelevant principal components. See the nodes documentation for more info 2007-09-11: added check for positive eigenvalues in symeg and symeig_fake 2007-08-17: added pre_inversion_checks, inversion equivalent to pre_execution_checks 2007-07-20: enable iteration on items and time completion estimation method in progress_bar 2007-07-09: fixed bug in SFA2Node: when instantiated with input_dim==output_dim, the range in symeig was not set and output_dim was wrong 2007-07-04: - fixed bug in mdp.utils.__init__.py about SymeigException not caught - fixed bug in ISFANode when perturbing eps_contrast was not respected (it was perturing indefinitely) - added a 'debug' kwarg to stop_training in PCANode, WhiteningNode, and SFANode. When stop_training fails because of singular matrices, the matrices itselves are not deleted (as before) but kept in self.cov_mtx and self.dcov_mtx for later inspection 2007-07-03: fixed bug in ISFANode when lags was array. 2007-06-25: Added get_{proj,rec}matrix method to the ICANodes. 'get_recmatrix' returns an estimate of the mixing matrix. ------------------------------------------------------------------------------- MDP-2.1: 2007-03-23: Updated tutorial and web site. 2007-03-23: Use get_limits.finfo to set precision limits 2007-03-23: Use symeig if found 2007-03-23: Use scipy instead of numpy when possible 2007-03-23: Numpy functions substituted with array method where possible 2007-03-22: Implemented invariances in Quadraticforms 2007-03-21: MDP now fully compatible with numpy 1.0 2007-03-15: Added ISFANode 2007-03-13: Added MultipleCovarianceMatrices utility class 2006-11-04: Added 'save' method to Node and Flow 2006-11-04: Node's train and stop_training methods now accept *args and **kwargs ------------------------------------------------------------------------------- MDP-2.0RC: 29.06.2006: Updated tutorial and web site. 28.06.2006: New random_rot. Added SFA2Node, QuadraticForm, moved graph into the mdp tree. 27.06.2006: Converted typecode handling to numpy.dtype style; supported_typecodes is now a property. Added bias in covariance. 26.06.2006: Converted to numpy. Scipy, Numeric, and numarray are not supported anymore 06.12.2005: pca_nodes: added get_explained_variance public method. 02.12.2005: New introspection utils in mdp.utils. 01.11.2005: New nodes: FANode, FDANode, GaussianClassifierNode 31.10.2005: Non back-compatible changes. Node has got three new 'properties': output_dim, input_dim, typecode. They are accessible through their getters (get_PROPERTY). They can be set using the default setters (set_PROPERTY). Subclasses can customize the setters, overriding the _set_PROEPRTY private methods. All nodes had to be changed to conform with the new structure. All tests pass. 26.10.2005: To force MDP to use a particular numerical extension, you can now set the enviroment variable MDPNUMX. Supported values are 'symeig', 'scipy', 'Numeric', 'numarray'. Mainly useful for testing purposes. 06.10.2005: The SfaNode, CuBICA, and FastICA aliases have been deleted. 06.10.2005: Node supports multiple and even an infinite number of training phases. FiniteNode makes the implementation of a class with a finite number of phases easy and one with just one phase trivial. 06.10.2005: Flow supports the new nodes and even nodes requiring a supervision signal during training. 06.10.2005: SignalNode, SignalNodeException, and SimpleFlow are now deprecated aliases. Use Node, NodeException and Flow instead. 06.10.2005: some bug fixes. 05.10.2005: fixed failing 'import mdp' in test_symeig when mdp is not installed 12.07.2005: bug in utils.symrand (global name "mult" is not defined) 06.07.2005: changed round off error checking in FastICANode (it was 1e-15 and it is now 1e-5). it failed on a MacOSX machine. 23.06.2005: _check_roundoff in lcov.py issues a MDPWarning using warnings.warn. it was using 'raise' before, and it was caught as a FlowException. 21.06.2005: node consistency is assured at flow instantiation. ------------------------------------------------------------------------------- MDP-1.1.0: 13.06.2005: MDP 1.1.0 released. 01.06.2005: Crash_recovery is now off by default. To switch it on do: flow.set_crash_recovery(1) 30.05.2005: New NoiseNode. 30.05.2005: SimpleFlow and SignalNode now have a 'copy' method. 30.05.2005: SimpleFlow is now a mutable sequence type and implements many of the 'list' methods. 30.05.2005: removed scipy dependency. Now mdp runs with either Numeric, numarray or scipy. 24.05.2005: symeig removed from mdp. 23.05.2005: all classes are now new-style. ------------------------------------------------------------------------------- MDP-1.0.0: 15.11.2004: MDP 1.0.0 released 09.11.2004: Added crash recovery capabilities to SimpleFlow (on by default). 05.11.2004: New GrowingNeuralGasNode. New graph module. 04.11.2004: New IdentityNode subclass added. All analysis nodes are now subclasses of IdentityNode. Use of input_dim and output_dim in the nodes' constructor is now consistent. 02.11.2004: Now symeig works reliably also for complex matrices. symeig now can be distributed as an independent package It is still contained in mdp.utils for convenience. Default value for option overwrite changed from 1 to 0. 14.10.2004: With the release of Scypy 0.3.2, the installation of MDP got much simpler. 06.10.2004: Fixed a bug in symeig (when B=None and overwrite=0, symeig raised an exception) 04.09.2004: Fixed Windows-xspecific problems. ------------------------------------------------------------------------------- MDP-0.9.0: 24.08.2004: MDP 0.9.0 released. First public release. 16.08.2004: MDP project registered at SourceForge. -------------------------------------------------------------------------------