Skip to content

Releases: NeuralEnsemble/elephant

Release 1.1.1

28 Oct 15:26
6b1cd7b
Compare
Choose a tag to compare

Bug fixes

  • Resolved deprecated .A attribute in scipy.sparse matrices (scipy >=1.14.0).
    Replaced usage of the deprecated .A attribute 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 copy method for neo objects (neo >=0.13.4), updated Elephant to handle the removal of the copy method from neo objects 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

10 Apr 14:46
15e8ef8
Compare
Choose a tag to compare

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_tools with 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 Trials object 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

10 Nov 18:04
77274f6
Compare
Choose a tag to compare

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_bridge module 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

06 Nov 14:28
9d99c29
Compare
Choose a tag to compare

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_rate function 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.float32 and np.float64 (#592).

Documentation

  • Fixed documentation build on readthedocs by updating deprecated configuration key build.image to build.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

  • Fixed several typos and grammatical errors in GPFA tutorial notebook (#587).
  • Updated the build_wheels action to use cibuildwheel version 2.13.1, enabling the building of wheels for Python 3.11 (#582).

Release 0.13.0

13 Jul 16:51
5a56c31
Compare
Choose a tag to compare

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_neu to 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.json for 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 into segmented_multitaper_psd() and multitaper_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

24 Feb 10:49
7972fb4
Compare
Choose a tag to compare

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

  • Python >= 3.8. #536
  • numpy > 1.20. #536
  • quantities > 0.14.0. #542

Release 0.11.2

09 Nov 10:15
3e169d4
Compare
Choose a tag to compare

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.kernels when passing a multi-dimensional kernel sigma, handling was added for 1-dimensional case (#499)
  • fixed bug in unitary_event_analysis that broke elephants build on arm based systems (#500)
  • fixed bug in elephant/spade_src/include/FPGrowth.h when 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 nosetest to pytest (#505)
  • fixed broken citation in change_point_detection, updated entry in bibtex file, added DOI (#513)

Optimizations

  • Include spike_train_synchrony in the init of elephant, now spike_train_synchrony module 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

  • removed scipy version cap on GitHub actions runners "docs" and "test-conda", by updating to libstdcxx-ng 12.1.0 from conda-forge (#490)
  • nixio added to test requirements, now nix files can be used in unit tests (#515)

Release 0.11.1

14 Apr 16:25
378bc59
Compare
Choose a tag to compare

Bug fixes

  • Fix installation on macOS (#472)

Documentation

  • Added example to asset.discretise_spiketimes docstring (#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)

Release 0.11.0

30 Mar 18:06
d7ee38e
Compare
Choose a tag to compare

Breaking changes

  • For current source density measures electrode coordinates can no longer be supplied via a RecordingChannelGroup object as it is no longer supported in Neo v0.10.0 (#447)

New functionality and features

  • Redesigned elephant.spike_train_generation module using classes (old API is retained for compatibility) (#416)
  • Added function to calculate the multitaper power spectral density estimate in elephant.spectral (#417)
  • Added a boundary correction for the firing rate estimator elephant.statistics.instantaneous_rate with Gaussian kernels (#414)
  • Function to discretise spiketimes for a given spiketrain in elephant.conversion (#454)
  • Support for the new SpikeTrainList object of Neo (#447)

Bug fixes

  • Issue with unit scaling in BinnedSpikeTrain (#425)
  • Changed BinnedSpikeTrain to support quantities<0.12.4 (#418)
  • Fix FloatingPointError in ICSD (#421)
  • t_start information was lost while transposing LFP for current_source_density module (#432)
  • Fix neo_tools unit tests to work with Neo 0.10.0+ (#446)
  • Fixed various issues with consistency of bin boundaries of instantaneous rates (#453)

Documentation

  • Update tutorials ASSET and UE tutorial and datasets to use nixio >=1.5.0 (#441)
  • Updated spade tutorial to work with viziphant 0.2.0 (#444)
  • Fixed figures in the Granger causality tutorial (#434)
  • Add DOIs to documentation (#456)
  • Fixed random seed selection in some tutorials (#430)

Optimizations

  • Highly optimized run-time of the SPADE analysis (#419)
  • More efficient storage of spike complexities by the elephant.statistics.Complexity class (#412)
  • Updated elephant.signal_processing.zscore function for in-place operations (#440)

Other changes

  • Continuous Integration (CI) was moved to github actions (#451)
  • Change test framework from Nose to pytest (#413)
  • Added DOI with zenodo (#445)
  • Versioning for associated elephant-data repository for example datasets introduced (#463)

Selected dependency changes

  • nixio >= 1.5.0
  • neo >= 0.10.0
  • python >= 3.7

Release 0.10.0

04 Mar 18:37
165276f
Compare
Choose a tag to compare

Documentation

The documentation is revised and restructured by categories (#386) to simplify navigation on readthedocs and improve user experience. All citations used in Elephant are stored in a single BibTex file.

Optimizations

CUDA and OpenCL support

Analysis of Sequences of Synchronous EvenTs has become the first module in Elephant that supports CUDA and OpenCL (#351, #404, #399). Whether you have an Nvidia GPU or just run the analysis on a laptop with a built-in Intel graphics card, the speed-up is X100 and X1000 compared to a single CPU core. The computations are optimized to a degree that you can analyse and look for spike patterns in real data in several minutes of compute time on a laptop. The installation instructions are described in the install section.

Other optimizations

  • Surrogates: sped up bin shuffling (#400) and reimplemented the continuous time version (#397)
  • Improved memory efficiency of creating a BinnedSpikeTrain (#395)

New functionality and features

  • Synchrofact detection (#322) is a method to detect highly synchronous spikes (at the level of sampling rate precision with an option to extend this to jittered synchrony) and annotate or optionally remove them.
  • Added phase_locking_value, mean_phase_vector, and phase_difference functions (https://github.com/NeuralEnsemble/elephant/pull/385/files)
  • BinnedSpikeTrain:
    • added to_spike_trains and time_slice functions (#390). Now you can slice a binned spike train as bst[:, i:j] or bst.time_slice(t_start, t_stop). Also, with to_spike_trains function, you can generate a realization of spike trains that maps to the same BinnedSpikeTrain object when binned.
    • optional CSC format (#402)
    • the copy parameter (False by default) in the binarize function makes a shallow copy, if set to True, of the output BinnedSpikeTrain object (#402)
  • Granger causality tutorial notebook (#393)
  • Unitary Event Analysis support multiple pattern hashes (#387)

Bug fixes

  • Account for unidirectional spiketrain->segment links in synchrofact deletion (#398)
  • Joint-ISI dithering: fixed a bug regarding first ISI bin (#396)
  • Fix LvR values from being off when units are in seconds (#389)