Release Notes

Elephant 0.12.0 release notes

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


  • 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


  • 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

Elephant 0.11.2 release notes

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, 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)


  • 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)


  • Include spike_train_synchrony in the init of elephant, now spike_train_synchrony module is imported automatically (#518)


  • 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 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:

  • 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)

Elephant 0.11.1 release notes

Bug fixes

  • Fix installation on macOS (#472)


  • Added example to asset.discretise_spiketimes docstring (#468)


  • 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)

Elephant 0.11.0 release notes

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)


  • 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)


  • 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

Elephant 0.10.0 release notes


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


CUDA and OpenCL support

[Analysis of Sequences of Synchronous EvenTs]( has become the first module in Elephant that supports CUDA and OpenCL (,, 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

New functionality and features

Bug fixes

Elephant 0.9.0 release notes

This release is titled to accompany the [2nd Elephant User Workshop](


Meet Viziphant, the visualization of Elephant analysis methods, at This package provides support to easily plot and visualize the output of Elephant functions in a few lines of code.

Provenance tracking

Provenance is becoming a separate direction in Elephant. Many things are still to come, and we started with annotating time_histogram, instantaneous_rate and cross_correlation_histogram outputs to carry the information about the parameters these functions used. This allowed Viziphant, the visualization of Elephant analyses, to look for the .annotations dictionary of the output of these function to “understand” how the object has been generated and label the plot axes accordingly.

New functionality and features

Python 3 only


  • You have been asking for direct numpy support for years. Added _t_start, _t_stop, and _bin_size attributes of BinnedSpikeTrain are guaranteed to be of the same units and hence are unitless ( It doesn’t mean though that you need to care about units on your own: t_start, t_stop, and bin_size properties are still quantities with units. The .rescale() method of a BinnedSpikeTrain rescales the internal units to new ones in-place. The following Elephant functions are optimized with unitless BinnedSpikeTrain: - cross_correlation_histogram - bin_shuffling (one of the surrogate methods) - spike_train_timescale

  • X4 faster binning and overall BinnedSpikeTrain object creation (

  • instantaneous_rate function is vectorized to work with a list of spike train trials rather than computing them in a loop (previously, for spiketrain in spiketrains; do compute instantaneous_rate(spiketrain); done), which brought X25 speedup (; thanks to @gyyang for the idea and original implementation).

  • Memory-efficient zscore function (

  • Don’t sort the input array in ISI function (, which reduces function algorithmic time complexity from O(N logN) to linear O(N). Now, when the input time array is not sorted, a warning is shown.

  • Vectorized Current Source Density generate_lfp function (

Breaking changes

  • mpi4py package is removed from the extra requirements to allow pip install elephant[extras] on machines without MPI installed system-wide. Refer to [MPI support]( installation page in elephant.

  • BinnedSpikeTrain (, - previously, when t_start/stop, if set manually, was outside of the shared time interval, only the shared [t_start_shared=max(t_start), t_stop_shared=min(t_stop)] interval was implicitly considered without any warnings. Now an error is thrown with a description on how to fix it. - removed lst_input, input_spiketrains, matrix_columns, matrix_rows (in favor of the new attribute - shape), tolerance, is_spiketrain, is_binned attributes from BinnedSpikeTrain class. Part of them are confusing (e.g., is_binned was just the opposite of is_spiketrain, but one can erroneously think that it’s data is clipped to 0 and 1), and part of them - lst_input, input_spiketrains input data - should not have been saved as attributes of an object in the first place because the input spike trains are not used after the sparse matrix is created. - now the users can directly access .sparse_matrix attribute of BinnedSpikeTrain to do efficient (yet unsafe in general) operations. For this reason, to_sparse_array() function, which does not make a copy, as one could think of, is deprecated.

  • instantaneous_rate function ( - in case of multiple input spike trains, the output of the instantaneous rate function is (always) a 2D matrix of shape (time, len(spiketrains)) instead of a pseudo 1D array (previous behavior) of shape (time, 1) that contained the instantaneous rate summed across input spike trains; - in case of multiple input spike trains, the user needs to manually provide the input kernel instead of auto, which is set by default, for the reason that it’s currently not clear how to estimate the common kernel for a set of spike trains. If you have an idea how to do this, we`d appreciate if you let us know by [getting in touch with us](

Other changes

Bug fixes

Elephant 0.8.0 release notes

New features

New tutorials


Python 2.7 and 3.5 deprecation

Python 2.7 and 3.5 are deprecated and will not be maintained by the end of 2020. Switch to Python 3.6+.

Breaking changes

Elephant 0.7.0 release notes

Breaking changes

gpfa = GPFA(bin_size=20*, x_dim=8)
results = gpfa.fit_transform(spiketrains, returned_data=['xorth', 'xsm'])

New tutorials


  • Python 2.7 support will be dropped on Dec 31, 2020. Please switch to Python 3.6, 3.7, or 3.8.

  • [spike train generation] homogeneous_poisson_process_with_refr_period(), introduced in v0.6.4, is deprecated and will be deleted in v0.8.0. Use homogeneous_poisson_process(refractory_period=…) instead.

  • [pandas bridge] pandas_bridge module is deprecated and will be deleted in v0.8.0.

New features

Bug fixes


Elephant 0.6.4 release notes

This release has been made for the “1st Elephant User Workshop” (

Main features

  • neo v0.8.0 compatible

New modules

Bug fixes


Elephant 0.6.3 release notes

July 22nd 2019

The release v0.6.3 is mostly about improving maintenance.

New functions

Bug fixes

Other changes

Elephant 0.6.2 release notes

April 23rd 2019

New functions

  • signal_processing module
    • New functions to calculate the area under a time series and the derivative of a time series.

Other changes

  • Added support to initialize binned spike train representations with a matrix

  • Multiple bug fixes

Elephant 0.6.1 release notes

April 1st 2019

New functions

  • signal_processing module
    • New function to calculate the cross-correlation function for analog signals.

  • spade module
    • Spatio-temporal spike pattern detection now includes the option to assess significance also based on time-lags of patterns, in addition to patterns size and frequency (referred to as 3D pattern spectrum).

Other changes

  • This release fixes a number of compatibility issues in relation to API breaking changes in the Neo library.

  • Fixed error in STTC calculation (spike time tiling coefficient)

  • Minor bug fixes

Elephant 0.6.0 release notes

October 12th 2018

New functions

  • cell_assembly_detection module
    • New function to detect higher-order correlation structures such as patterns in parallel spike trains based on Russo et al, 2017.

  • wavelet_transform() function in module
    • Function for computing wavelet transform of a given time series based on Le van Quyen et al. (2001)

Other changes

  • Switched to multiple requirements.txt files which are directly read into the

  • instantaneous_rate() accepts now list of spiketrains

  • Minor bug fixes

Elephant 0.5.0 release notes

April 4nd 2018

New functions

  • change_point_detection module:
    • New function to detect changes in the firing rate

  • spike_train_correlation module:
    • New function to calculate the spike time tiling coefficient

  • phase_analysis module:
    • New function to extract spike-triggered phases of an AnalogSignal

  • unitary_event_analysis module:
    • Added new unit test to the UE function to verify the method based on data of a recent [Re]Science publication

Other changes

  • Minor bug fixes

Elephant 0.4.3 release notes

March 2nd 2018

Other changes

  • Bug fixes in spade module:
    • Fixed an incompatibility with the latest version of an external library

Elephant 0.4.2 release notes

March 1st 2018

New functions

  • spike_train_generation module:
    • inhomogeneous_poisson() function

  • Modules for Spatio Temporal Pattern Detection (SPADE) spade_src:
    • Module SPADE:

  • Module
    • Added CV2 (coefficient of variation for non-stationary time series)

  • Module
    • Added normalization in cross-correlation histogram() (CCH)

Other changes

  • Adapted the to automatically install the spade modules including the compiled C files

  • Included testing environment for MPI in travis.yml

  • Changed function arguments in to neo.AnalogSignal instead list of neo.AnalogSignal objects

  • Fixes to travis and setup configuration files

  • Fixed bug in ISI function isi(), module

  • Fixed bug in dither_spikes(),

  • Minor bug fixes

Elephant 0.4.1 release notes

March 23rd 2017

Other changes

  • Fix in to correctly import the current source density module

Elephant 0.4.0 release notes

March 22nd 2017

New functions

  • spike_train_generation module:
    • peak detection: peak_detection()

  • Modules for Current Source Density: current_source_density_src
    • Module Current Source Density:

    • Module for Inverse Current Source Density:

API changes

  • Interoperability between Neo 0.5.0 and Elephant

Other changes

  • Fixes to travis and setup configuration files.

  • Minor bug fixes.

  • Added module six for Python 2.7 backwards compatibility

Elephant 0.3.0 release notes

April 12st 2016

New functions

  • spike_train_correlation module:
    • cross correlation histogram: cross_correlation_histogram()

  • spike_train_generation module:
    • single interaction process (SIP): single_interaction_process()

    • compound Poisson process (CPP): compound_poisson_process()

  • signal_processing module:
    • analytic signal: hilbert()

  • sta module:
    • spike field coherence: spike_field_coherence()

  • Module to represent kernels: kernels module

  • Spike train metrics / dissimilarity / synchrony measures: spike_train_dissimilarity module

  • Unitary Event (UE) analysis: unitary_event_analysis module

  • Analysis of Sequences of Synchronous EvenTs (ASSET): asset module

API changes

  • Function instantaneous_rate() now uses kernels as objects defined in the kernels module. The previous implementation of the function using the make_kernel() function is deprecated, but still temporarily available as oldfct_instantaneous_rate().

Other changes

  • Fixes to travis and readthedocs configuration files.

Elephant 0.2.1 release notes

February 18th 2016

Other changes

Minor bug fixes.

Elephant 0.2.0 release notes

September 22nd 2015

New functions

  • Added covariance function covariance() in the spike_train_correlation module

  • Added complexity pdf complexity_pdf() in the statistics module

  • Added spike train extraction from analog signals via threshold detection the in spike_train_generation module

  • Added coherence() function for analog signals in the spectral module

  • Added Cumulant Based Inference for higher-order of Correlation (CuBIC) in the cubic module for correlation analysis of parallel recorded spike trains

API changes

  • Optimized kernel bandwidth in rate_estimation function: Calculates the optimized kernel width when the paramter kernel width is specified as auto

Other changes

  • Optimized creation of sparse matrices: The creation speed of the sparse matrix inside the BinnedSpikeTrain class is optimized

  • Added Izhikevich neuron simulator in the make_spike_extraction_test_data module

  • Minor improvements to the test and continous integration infrastructure