Table Of Contents

Previous topic

License

Next topic

PyMVPA - The Movie

This content refers to the previous stable release of PyMVPA. Please visit www.pymvpa.org for the most recent version of PyMVPA and its documentation.

PyMVPA Development Changelog

This changelog only lists rather macroscopic changes to PyMVPA. The full VCS changelog for 0.4.x series of PyMVPA is available here:

In addition there is also a somewhat unconventional visual changelog:

‘Closes’ statement IDs refer to the Debian bug tracking system and can be queried by visiting the URL:

http://bugs.debian.org/<bug id>
Unreleased changes

Changes described here are not yet released, but available from VCS repository.

  • Many, many, many

Releases

  • 0.4.8 (Tue, Apr 23 2012) (Total: 14 commits)

    A bugfix release

    • Fixed
      • Compatibility with libsvm 3.10, shogun >= 1.0 (Closes: #655643)
      • import ma directly from numpy
      • GPRLinearWeights – correct access to weights
      • FslEV3 – gzip import and getNEVs
      • read_fsl_design() – correct splitting of the fields
      • score() – assure std to be an array during application
    • RF
      • extensions are built inplace
  • 0.4.7 (Tue, Mar 07 2011) (Total: 12 commits)

    A bugfix release

    • Fixed
      • Addressed the issue with input NIfTI files having scl_* fields set: it could result in incorrect analyses and map2nifti-produced NIfTI files. Now input files account for scaling/offset if scl_ fields direct to do so. Moreover upon map2nifti, those fields get reset.
      • doc/examples/searchlight_minimal.py - best error is the minimal one
    • Enhancements
      • GNB can now tolerate training datasets with a single label
      • TreeClassifier can have trailing nodes with no classifier assigned
  • 0.4.6 (Tue, Feb 01 2011) (Total: 20 commits)

    A bugfix release

    • Fixed (few BF commits):
      • Compatibility with numpy 1.5.1 (histogram) and scipy 0.8.0 (workaround for a regression in legendre)
      • Compatibility with libsvm 3.0
      • PLR robustification
    • Enhancements
      • Enforce suppression of numpy warnings while running unittests. Also setting verbosity >= 3 enables all warnings (Python, NumPy, and PyMVPA)
      • doc/examples/nested_cv.py example (adopted from 0.5)
      • Introduced base class LearnerError for classifiers’ exceptions (adopted from 0.5)
      • Adjusted example data to live upto nibabel’s warranty of NIfTI standard-compliance
      • More robust operation of MC iterations – skip iterations where classifier experienced difficulties and raise an exception (e.g. due to degenerate data)
  • 0.4.5 (Fri, Oct 01 2010) (Total: 27 commits)

    A bugfix release

    • Fixed (13 BF commits):
      • Compatible with LIBSVM >= 2.91 (Closes: #583018)
      • No string exceptions raised (Python 2.6 compatibility)
      • Setting of shrinking parameter in sg interface
      • Deducing number of SVs for SVR (LIBSVM)
      • Correction of significance in the tails of non-parametric tests
    • Miscellaneous:
  • 0.4.4 (Mon, Feb 2 2010) (Total: 144 commits)

    Primarily a bugfix release, probably the last in 0.4 series since development for 0.5 release is leaping forward.

    • New functionality (19 NF commits):
      • GNB implements Gaussian Naïve Bayes Classifier.
      • read_fsl_design() to read FSL FEAT design.fsf files (Contributed by Russell A. Poldrack).
      • SequenceStats to provide basic statistics on labels sequence (counter-balancing, autocorrelation).
      • New exceptions DegenerateInputError and FailedToTrainError to be thrown by classifiers primarily during training/testing.
      • Debug target STATMC to report on progress of Monte-Carlo sampling (during permutation testing).
    • Refactored (15 RF commits):
      • To get users prepared to 0.5 release, internally and in some examples/documentation, access to states and parameters is done via corresponding collections, not from the top level object (e.g. clf.states.predictions instead of soon-to-be-deprecated clf.predictions). That should lead also to improved performance.
      • Adopted copy.py from python2.6 (support Ellipsis as well).
    • Fixed (38 BF commits):
      • GLM output does not depend on the enabled states any more.
      • Variety of docstrings fixed and/or improved.
      • Do not derive NaN scaling for SVM’s C whenever data is degenerate (lead to never finishing SVM training).
      • sg :
        • KRR is optional now – avoids crashing if KRR is not available.
        • tolerance to absent set_precompute_matrix in svmlight in recent shogun versions.
        • support for recent (present in 0.9.1) API change in exposing debug levels.
      • Python 2.4 compatibility issues: kNN and IFS
  • 0.4.3 (Sat, 5 Sep 2009) (Total: 165 commits)

    • Online documentation editor is no longer available due to low demand – please submit changes via email.
    • Performance (Contributed by Valentin Haenel) (3 OPT commits):
      • Further optimized LIBSVM bindings.
      • Copy-if-sorted in selectFeatures.
    • New functionality (25 NF commits):
      • ProcrusteanMapper with orthogonal and oblique transformations.
      • Ability to generate simple reports using reportlab. See/run examples/match_distribution.py for example.
      • TreeClassifier – construct simple hierarchies of classifiers.
      • wtf() to report information about the system/PyMVPA to be included in the bug reports.
      • Parameter ‘reverse’ to swap training/testing splits in Splitter .
      • Example code for the analysis of event-related dataset using ERNiftiDataset.
      • toEvents() to create lists of Event.
      • mvpa-prep-fmri was extended with plotting of motion correction parameters.
      • ColumnData can be explicitly told either file contains a header.
      • In XMLBasedAtlas (e.g. fsl atlases) it is now possible to provide custom ‘image_file’ to get maps or indexes for the areas given an atlas’s volume registered into subject space.
      • Updated included LIBSVM version to 2.89 and provided support for its “silencing”.
    • Refactored (27 RF commits):
    • Fixed (70 BF commits):
      • OneWayAnova: previously degrees of freedom were not considered while computing F-scores.
      • Majority voting strategy in kNN: it was not working.
      • Various fixes to ensure cross-platform building (numpy header locations, etc).
      • Stability fixes in ConfusionMatrix.
      • idsonboundaries(): samples at the end of the sequence were not handled properly.
      • Proper “untraining” of FeatureSelectionClassifier s classifiers which use sensitivities: it could lead to various unpleasant side-effects if the same slave classifier was used simultaneously by multiple MetaClassifiers (like TreeClassifier).
    • Documentation (25 DOC commits): citations, spelling corrections, etc.
  • 0.4.2 (Mon, 25 May 2009)

    • New correlation stability measure (CorrStability).
    • New elastic net classifier (ENET).
    • New GLM-Net regression/classifier (GLMNET).
    • New measure CompoundOneWayAnova.
    • New measure DSMDatasetMeasure.
    • New meta-measure TScoredFeaturewiseMeasure.
    • New basic GLM implementation.
    • New examples for Gaussian process regression.
    • New example showing a searchlight analysis employing a dissimilarity matrix based measure.
    • New ZScoreMapper.
    • New import helper for FSL design matrices (FslGLMDesign).
    • New implementation of a mapper using a self-organizing map (SimpleSOMMapper) and a corresponding example.
    • Matplotlib backend is now configurable via MVPA_MATPLOTLIB_BACKEND.
    • PyMVPA version is now avialable from mvpa.__version__.
    • Renamed mvpa.misc.plot.errLinePLot to plotErrLine() for consistency.
    • Fixed NFoldSplitter to support N-3 and larger splits.
    • Improved speed of LIBSVM backend. Thanks to Valentin Haenel and Tiziano Zito.
    • Updated included LIBSVM version to 2.89.
    • Adjust LIBSVM Python interface for recent NumPy API and latest LIBSVM release 2.89.
    • Refactored examples parser into a standalone tool to turn PyMVPA examples into restructured text sources.
  • 0.4.1 (Sat, 24 Jan 2009)

    • Unit tests and example data are now also installed. In conjunction with mvpa.test(), this allow to easily run unittests from within Python.
    • NiftiDataset capable to handle files with less than 4 dimensions, which can, optionally, be provided as a list of filenames or NiftiImage objects. That makes it easy to load data from a sequence of files.
    • Changes (code refactorings) which might impact any user who imports from suite:
      • Pre-populated warehouses of classifiers and regressions are renamed from clfs and regrs into clfswh and regrswh respectively.
      • Hamster is not derived from dict any longer – just from a basic object class. API includes methods ‘dump’, ‘asdict’ and a property ‘registered’.
    • Changes (code refactorings) which should not impact any user who imports from suite:
      • Meta classifiers definitions moved from base into meta.
      • Splitters definitions moved from splitter into splitters
  • 0.4.0 (Sat, 15 Nov 2008)

    • Add Hamster, as a simple facility to easily store any serializable objects in a compressed file and later on resurrect all of them with a single line of code.
    • SVM backend is now configurable via MVPA_SVM_BACKEND (libsvm or shogun).
    • Non-deterministic tests in the unittest battery are now configurable via MVPA_TESTS_LABILE.
    • New helper to determine and plot the best matching distribution(s) for the data (matchDistribution, plotDistributionMatches). It is WiP thus API can change in the upcoming release.
    • Simplifies API of mappers.
    • Splitters can now limit the number of splits automatically.
    • New CombinedMapper to map between multiple, independent dataspace and a common feature space.
    • New ChainMapper to create chains of mappers of abitrary lenght (e.g. to build preprocessing pipelines).
    • New EventDataset to rapidly extract boxcar-shaped samples from data array using a simple list of Event definitions.
    • Removed obsolete MetricMapper class. Mapper itself provides the facilities for dealing with metrics.
    • BoxcarMapper can now handle data with more than four dimensions/axis and also performs reverse mapping of single boxcar samples.
    • FslEV3 can now convert EV3 files into a list of Event instances.
    • Results of tests for external dependencies are now stored in PyMVPA’s config manager (mvpa.cfg) and can be stored to a file (not done automatically at the moment). This will significantly decrease the time needed to import the mvpa module, as it prevents the repeated and lengthy tests for working externals.
    • Initial support for ROC computing and AUC as an accuracy measure.
    • Weights of LARS are now available via LARSWeights.
    • Added an initial list of MVPA-related references to the manual, tagged with keywords and comments as well is DOI or similar URL reference to the original document.
    • Added initial glossary to the manual.
    • New ‘Module reference’, as a middle-ground between manual and API reference.
    • New manual section about meta-classifiers (contributed by James M. Hughes).
    • New minimal example for a ‘getting started’ section in the manual.
    • Former MVPA_QUICKTEST was renamed to MVPA_TESTS_QUICK.
    • Update installation instructions for RPM-based distributions to make use of the OpenSUSE Build Service.
    • Updated install instructions for several RPM-based GNU/Linux distributions.
    • Switch from distutils to numpy.distutils (no change in dependencies).
    • Depend on PyNIfTI >= 0.20081017.1 and gain a smaller memory footprint when accessing NIfTI files via all datasets with NIfTI support.
    • Added workaround to make PyMVPA work with older Shogun releases and those from 0.6.4 on, which introduced backward-incompatible API changes.
  • 0.3.1 (Sun, 14 Sep 2008)

    • New manual section about feature selection with a focus on RFE. Contributed by James M. Hughes.
    • New dataset type ChannelDataset for data structured in channels. Might be useful for data modalities like EEG and MEG. This dataset includes support for common preprocessing steps like resampling and baseline signal substraction.
    • Plotting of topographies on heads. Thanks to Ingo Fründ for contributing this code. Additionally, a new example shows how to do such plots.
    • New general purpose function for generating barplots and candlestick plots with error bars (plotBars()).
    • Dataset supports mapping of string labels onto numerical labels, removing the need to perform this mapping manually in user code. ‘clfs_examples.py’ is adjusted accordingly to demonstrate the new feature.
    • New mvpa.clfs.base.Classifier.summary() method to dump classifier settings.
    • Improved and more flexible plotERPs().
    • New IterativeRelief sensitivity analyzer.
    • Added visualization of confusion matrices via mvpa.clfs.transerror.ConfusionMatrix.plot() inspired by Ingo Fründ.
    • The PyMVPA version is now globally available in mvpa.pymvpa_version.
    • BugFix: TuebingenMEG reader failed in some cases.
    • Several improvements (docs and implementation) for building PyMVPA on MacOS X.
    • New convenience accessor methods (select(), where() and __getitem__()) for :class`~mvpa.datasets.base.Dataset`.
    • New mvpa.seed() function to configure the random number generators from user code.
    • Added reader for a MEG sensor locations format (TuebingenMEGSensorLocations).
    • Initial model selection support for GRP (using openopt).
    • And tons of minor bugfixes, additional tests and improved documentation.
  • 0.3.0 (Mon, 18 Aug 2008)

    • Import of binary EEP files (used by EEProbe) and EEPDataset class.
    • Initial version of a meta dataset class (MetaDataset). This is a container for multiple datasets, which behaves like a dataset itself.
    • Regression performance is summarized now within RegressionStatistics.
    • Error functions: CorrErrorPFx, RelativeRMSErrorFx.
    • Measures: CorrCoef.
    • Data generators: chirp, wr1996
    • Few more examples: curvefitting, kerneldemo, smellit, projections
    • Updated kNN classifier. kNN is now able to use custom distance function to determine that nearest neighbors. It also (re)gained the ability to do simple majority or weighted voting.
    • Some initial convenience functions for plotting typical results and data exploration.
    • Unified configuration handling with support for user-specific and analysis-specific config files, as well as the ability to override all config settings via environment variables. The configuration handling is used for PyMVPA internal settings, but can also be easily used for custom (user-)settings.
    • Improved modularity, e.g. SciPy is not required anymore, but still very useful.
    • Initial implementations of ICA and PCA mapper using functionality provided by MDP. These mappers are more or less untested and should be used with great care.
    • Further improved docstrings of some classes, but still a long way to go.
    • New ‘boxcar’ mapper, which is the similar to the already present transformWithBoxCar() function, but implemented as a mapper.
    • New SampleGroupMapper that can be used for e.g. block averaging of samples. See new FAQ item.
    • Stripped redundant suffixes from module names, e.g. mvpa.datasets.niftidataset -> mvpa.datasets.nifti
    • mvpa.misc.cmdline variables opt* and opts* were groupped within opt and optss class instances. Also names of the options were changed to match ‘dest’ of the options. Use tools/refactor.py to quickly fix your custom code.
    • Change all references to PyMVPA website to www.pymvpa.org.
    • Make website stylesheet compatible with sphinx 0.4.
    • Several minor improvements of the compatibility with MacOS.
    • Extended FAQ section of the manual.
    • Bugfix: doubleGammaHRF() ignoring K2 argument.
  • 0.2.2 (Tue, 17 Jun 2008)

    • Extended build instructions: Added section on OpenSUSE.
    • Replaced ugly PYMVPA_LIBSVM environment variable to trigger compiling the LIBSVM wrapper with a proper ‘–with-libsvm’ switch in setup.py. Additionally, setup.py now detects if included LIBSVM has been built and enables LIBSVM wrapper automatically in this case.
    • Added proper Makefiles for LIBSVM copy, with configurable compiler flags.
    • Added ‘setup.cfg’ to remove the need to manually specify swig-opts (Windows specific configuration is in ‘setup.cfg.win’).
  • 0.2.1 (Sun, 15 Jun 2008)

    • Several improvements to make building PyMVPA on Windows systems easy (e.g. added dedicated Makefile.win to build a binary installer).
    • Improved and extended documentation for building and installing PyMVPA.
    • Include a minimal copy of the required (patched) LIBSVM library (currently version 2.85.0) for convenience. This copy is automatically compiled and used for the LIBSVM wrapper when PyMVPA built using the Make approach.
  • 0.2.0 (Wed, 29 May 2008)

    • New Splitter class (HalfSplitter) to split into first and second half.
    • New Splitter class (CustomSplitter) to allow for splits with an arbitrary number of datasets per split and the ability to specify the association of samples with any of those datasets (not just the validation set).
    • New sparse multinomial logistic regression (SMLR) classifier and associated sensitivity analyzer.
    • New least angle regression classifier (LARS).
    • New Gaussian process regression classifier (GPR).
    • Initial documentation on extending PyMVPA.
    • Switch to Sphinx for documentation handling.
    • New example comparing the performance of all classifiers on some artificial datasets.
    • New data mapper performing singular value decomposition (SVDMapper) and an example showing its usage.
    • More sophisticated data preprocessing: removal of non-linear trends and other arbitrary confounding regressors.
    • New Harvester class to feed data from arbitrary generators into multiple objects and store results of returned values and arbitrary properties.
    • Added documentation about how to build patched libsvm version with sane debug output.
    • libsvm bindings are not build by default anymore. Instructions on how to reenable them are available in the manual.
    • New wrapper from SVM implementation of the Shogun toolbox.
    • Important bugfix in RFE, which reported incorrect feature ids in some cases.
    • Added ability to compute stats/probabilities for all measures and transfer errors.
  • 0.1.0 (Wed, 20 Feb 2008)

    • First public release.