Releases: NeuralEnsemble/elephant
Release 1.2.1
This is a patch release of Elephant, restoring full C++ acceleration for the SPADE module on macOS and Windows, and modernizing the build system.
Bug Fixes
- Restored full macOS and Windows C++ compiled wheel support for the SPADE module, resolving the limitation noted in 1.2.0 where macOS received a pure-Python SPADE fallback. (#695)
Other Changes
- Migrated from
setup.pytopyproject.toml.setup.pyis retained only for platform-specific C extension compilation, which requires dynamic logic not supported in static TOML. Dependency declarations now use a single source of truth via requirements/*.txt files. (#608) - Added a weekly CI workflow that tests Elephant against the latest upstream builds of core dependencies to catch breaking changes early. (#698)
- Bumped GitHub Actions versions to resolve Node.js 20 deprecation warnings. (#696, #697)
- Restructured CI.yml to reduce duplication: merged pip test jobs into a single matrix job, added a composite action for shared cache restore steps, and fixed a race condition in coveralls partial coverage uploads. (#608)
Release 1.2.0
This release of Elephant marks the change to Numpy 2.x, while Numpy 1.x is no longer supported. Along with this change, a number of new features and improvements for existing functionality were added, in part related to the new concept for managing experimental trials using elephant.trials objects.
New Features
- For the spike times extraction methods in the
spike_train_generationmodule, added multichannel support forneo.AnalogSignaland introduced thealways_as_listparameter to ensure spike trains are returned as a list. (#614) - Extended
statistics.time_histogramto accept both a single spike train and lists of spike trains. (#650) - Extended
statistics.fano_factorto acceptelephant.trialsobjects. (#645) - Added a
datasets.load_datafunction to simplify tutorial and analysis code by allowing dataset retrieval and generation. (#687)
Bug Fixes
- Fixed numerical stability issues in
van_rossum_distanceby preventing small negative floating-point before square root evaluation. (#680) - Fixed issue in
statistics.instantaneous_ratefunction related to unexpected pooling behavior and kernels that exceed the signal length. (#649, #688) - Fixed
BinnedSpikeTrainslicing issues caused by changes in SciPy (>=1.15.0) sparse matrix index validation. (#653, #685) - Resolved GPU backend detection inconsistencies when CUDA libraries are present but PyCUDA is unavailable. (#666)
- Fixed GPU kernel launch resource errors in CUDA-accelerated ASSET computations by adapting thread selection dynamically. (#667)
Documentation
- Improved general documentation quality, including parameter descriptions and tutorial clarity. (#641)
- Fixed documentation build failures by aligning python version(=3.12) for docs test and ReadTheDocs build CI jobs. (#677)
- Replaced hidden notebook plotting cells with equivalent Viziphant functions. (#677)
- Added a new documentation section for example datasets. (#687)
- Fixed documentation build issues related to
sphinx-tabscompatibility. (#681) - Fixed ReadTheDocs MPI-related build failures. (#682)
Breaking changes
- Removed deprecated
verboseparameter in the ASSET module in favor of using Pythonloggingmodule. (#669)
Other changes
- Added Python 3.13 CI runner to ensure compatibility with the latest Python language features (#654)
- Updated README with maintainer contact information. (#683)
- Note: macOS wheels for Elephant are currently distributed as pure Python wheels. The C++ accelerated spade module falls back to a Python implementation on macOS, which may result in reduced performance compared to builds using the C++ backend. Full macOS compiled-acceleration support will be restored in a future patch release.
Selected dependency changes
Release 1.1.1
Bug fixes
-
Resolved deprecated
.Aattribute inscipy.sparsematrices (scipy >=1.14.0).
Replaced usage of the deprecated.Aattribute with.toarray()in SPADE, ensuring compatibility with SciPy 1.14.0 (#636). -
Modified tests to accommodate Neo 0.13.1, where adding the same object multiple times to a container is no longer permitted. These changes fix the generation of test data without affecting Elephant’s core functionality (#634).
-
Fixed deprecated
copymethod forneoobjects (neo >=0.13.4), updated Elephant to handle the removal of thecopymethod fromneoobjects in version 0.13.4 (#646).
Selected dependency changes
- SciPy >= 1.14.0
- Neo >= 0.13.1
- Numpy < 2.0.0
Release 1.1.0
New functionality and features
- New method "Total spiking probability edges" (TPSE) for inferring functional connectivity (#560).
Bug fixes
- Fixed expired SciPy deprecations and breaking changes related to
sp.sqrt, ensuring continued compatibility with the latest version of SciPy (#616). - Addressed failing unit tests for
neo_toolswith Neo 0.13.0, ensuring compatibility with the latest Neo release (#617).
Documentation
- Fixed a bug in the CI docs runner to resolve formatting issues, ensuring documentation build is tested (#615).
Other changes
- added Python 3.12 CI runner to ensure compatibility with the latest Python language features (#611).
- Integrated
Trialsobject with GPFA, allowing for a more formal way of specifying trials (#610).
Selected dependency changes
- scipy>=1.10.0
- Support for Python 3.12
Release 1.0.0
Elephant's first major release is focused on providing a stable and consistent API consistency that will be maintained over the 1.x series of releases. In order to provide future support, this release will remove all features and API specifications that have been deprecated over the course of the last releases of the 0.x line. While work on the next generation of Elephant will commence, all new analysis capabilities will be consistently back-ported to become available in the 1.x release line.
Breaking changes
- Removed deprecated features and naming introduced in #316 with Elephant release v0.8.0 (#488).
- Removed the
pandas_bridgemodule from Elephant in line with the deprecation plan introduced with Elephant v0.7.0 (#530).
Selected dependency changes
- removed pandas from the dependencies (#530).
Release 0.14.0
New Functionality and Features
- Added ASSET class initialization parameter to define the binning rounding error tolerance, allowing users to control the behavior of spike time binning (#585).
- Enhanced ASSET function output messages and status information by replacing print statements with logging calls, introducing tqdm progress bars for looped steps, and providing control over INFO and DEBUG logging via parameters (#570).
- Implemented logging instead of warnings in the round_binning_errors() function in elephant/utils.py (#571).
- Implemented trial handling, providing a unified framework for representing and accessing trial data, supporting diverse trial structures and a common API (#579).
- Improved
instantaneous_ratefunction to support trial data (#579).
Bug Fixes
- Added example to doc-string, handled one-dimensional arrays as input for x_positions, and added regression unit-tests in CSD.generate_lfp (#594).
- Modified the check for signal type in z_score when using inplace option to ensure it works correctly with
np.float32andnp.float64(#592).
Documentation
- Fixed documentation build on readthedocs by updating deprecated configuration key
build.imagetobuild.os(#596).
Validations
- Fixed spike time tiling coefficient calculation for unsorted spiketrains. The fix includes sorting the input spiketrains, additional input checks, and a validation test. (#564).
Other Changes
Release 0.13.0
New functionality and features
- Implemented non-parametric spectral Granger causality analysis, extending the investigation of signal influence in the spectral domain. (#545)
- Added functions to extract time bin and neuron information from Spike Sequence Events (SSEs) obtained using ASSET. (#549)
Bug fixes
- Resolved issue with old references to the gin repository INM-6/elephant-data, ensuring accurate repository information. (#547)
- Fixed the usage of deprecated numpy functions, which were removed with numpy 1.25.0. (#568)
- Rectified a bug in spade, addressing a missing call of
min_neuto specify the minimum number of neurons in a pattern. Also, added a regression test to verify the fix. (#575) - Corrected a bug in the complexity class that resulted in unexpected behavior when binary=False and spread=0. (#554)
- Resolved a bug in cell assembly detection (CAD) that produced different results compared to the original MATLAB implementation. (#576)
Documentation
- Addressed various formatting issues in docstrings that were causing warnings during documentation builds. (#553)
- Updated the contributors guide: The guide now includes a step to install Elephant itself by adding a "pip install -e ." command to the instructions for setting up a development environment. (#566)
Validations
- No changes
Other changes
- Added
codemeta.jsonfor automated publication of Elephant release to ebrains knowledge graph. (#561, #562) - Added "howfairis" badge to README.md, indicating Elephant's compliance with fair-software.eu recommendations. (#551)
- CI: Enhance security of github actions by specifying a particular commit for third party actions, to improve security against re-tagging attacks. (#565)
- Separation of the
multitaper_psd()function intosegmented_multitaper_psd()andmultitaper_psd()without segmentation. This restructuring was done to achieve consistency in the spectral module. (#556) - Improved reporting in test_multitaper_cohere_perfect_cohere: Updated the unittest to utilize the numpy assert array equal function. This enhancement aims to provide more detailed and informative traceback in case of failures. (#573)
- Increased tolerance for Weigthed Phase-Lag Index (WPLI) ground truth test to avoid unitest to fail due minor differences in floating point operations (#572)
- Added shields for twitter and fosstodon to README.md linking to Elephants accounts. (#532)
Selected dependency changes
- no changes
Release 0.12.0
New functionality and features
- ASSET: map pairwise distances matrix to disk while computing the cluster matrix to reduce memory usage. #498
- multitaper cross spectrum: calculate the cross spectrum and the coherence as well as phase lag with the multitaper method. #525
- weighted_phase_lag_index (WLPI), a measure of phase-synchronization based on the imaginary part of the complex-valued cross-spectrum of two signals. #411
Bug fixes
- fixed and included additional unit tests for the
multitaper_psd. #529 - replaced deprecated numpy types with builtins to ensure compatibility with numpy >=1.24.0. #535
Documentation
- fixed math rendering with sphinx 5.3.0. #527
- added documentation for
multitaper_psd. #531 - updated the elephant logo to the current version. #534
- removed version cap for sphinx extension sphinxcontrib-bibtex (previously set to ==1.0.0): citation style changed to name - year. #523
- fixed various formatting issues in docstrings, e.g. indentations, missing quotation marks or missing citation references. #478
- fixed documentation code examples and test code by introducing a doctest runner to CI. #503
- changed heading "Spike-triggered LFP phase" to "Phase Analysis", remove wrong reference to tutorial from function reference. #540
- add launch on ebrains button for elephant tutorials. #538
Validations
- WPLI ‘ground-truth’-testing with: MATLABs package FieldTrip and its function ft_connectivity_wpli() and its wrapper ft_connectivity(); as well as with python package MNE and its function spectral_connectivity(). #411
Other changes
- Fix/CI: update deprecated actions and commands for github actions workflow. #522
- added codemeta.json file for automatic registration of elephant releases to ebrains knowledge graph. #541
Selected dependency changes
Release 0.11.2
New functionality and features
- new installation option to not compile c-extensions, e.g.
pip install elephant --install-option='--no-compile'(#494)
Bug fixes
- added CUDA/OpenCL sources for ASSET GPU acceleration to
manifest.in, they are now included in the distribution package (#483) - fixed bug in
elephant.kernelswhen passing a multi-dimensional kernel sigma, handling was added for 1-dimensional case (#499) - fixed bug in
unitary_event_analysisthat broke elephants build on arm based systems (#500) - fixed bug in
elephant/spade_src/include/FPGrowth.hwhen using current versions of GCC for compilation (#508) - fixed bug in
welch_psd,welch_cohere, replace 'hanning' with 'hann', to ensure compatibility with scipy=>1.9.0 (#511)
Documentation
- fixed bug in CI documentation build (#492)
- reformatted code examples to be used as doctests in the future (#502)
- added specification and example for entries in the bibtex file to the "Contributing to Elephant" section (#504)
- updated documentation on running unit tests from
nosetesttopytest(#505) - fixed broken citation in
change_point_detection, updated entry in bibtex file, added DOI (#513)
Optimizations
- Include
spike_train_synchronyin theinitof elephant, nowspike_train_synchronymodule is imported automatically (#518)
Validations
- added two validation tests for Victor-Purpura-distance to validate against original Matlab implementation in spike train dissimilarity (#482)
Other changes
- re-added report to coveralls.io to github action CI (#480)
- added OpenSSF (Open Source Security Foundations) best practices badge (#495)
- improved documentation by adding links to documentation, bug tracker and source code on pypi (#496) (see: https://pypi.org/project/elephant/)
- CI workflows for macOS updated from version 10 to macOS 11 and 12 (#509)
Selected dependency changes
Release 0.11.1
Bug fixes
- Fix installation on macOS (#472)
Documentation
- Added example to
asset.discretise_spiketimesdocstring (#468)
Optimizations
- Performance improvement of Spike Time Tiling Coefficient (STTC) (#438)
Other changes
- Continuous Integration (CI): added two workflows for macOS (#474)
- Fixed failing unit test asset on macOS (#474)
Selected dependency changes
- scipy >=1.5.4 (#473)