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 negaive 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. -------------------------------------------------------------------------------