https://github.com/bluebrain/efel

Electrophys Feature Extraction Library

https://github.com/bluebrain/efel

Science Score: 72.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    16 of 28 committers (57.1%) from academic institutions
  • Institutional organization owner
    Organization bluebrain has institutional domain (portal.bluebrain.epfl.ch)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.4%) to scientific vocabulary

Keywords

computational-neuroscience electrophysiology neurons neuroscience python

Keywords from Contributors

optimisations parameter neuron biological-simulations evolutionary-algorithms genetic-algorithm build morphology brain circuit
Last synced: 6 months ago · JSON representation ·

Repository

Electrophys Feature Extraction Library

Basic Info
  • Host: GitHub
  • Owner: BlueBrain
  • License: other
  • Language: Python
  • Default Branch: master
  • Homepage: http://efel.readthedocs.io
  • Size: 61.1 MB
Statistics
  • Stars: 69
  • Watchers: 18
  • Forks: 40
  • Open Issues: 23
  • Releases: 100
Archived
Topics
computational-neuroscience electrophysiology neurons neuroscience python
Created almost 11 years ago · Last pushed 12 months ago
Metadata Files
Readme Changelog License Citation Authors

README.md

[!WARNING] The Blue Brain Project concluded in December 2024, so development has ceased under the BlueBrain GitHub organization. Future development will take place at: https://github.com/openbraininstitute/eFEL

eFEL banner

Latest Release latest release
Documentation latest documentation
License license
Build Status actions build status
Coverage coverage
Gitter
Citation DOI

Introduction

The Electrophys Feature Extraction Library (eFEL) allows neuroscientists to automatically extract features from time series data recorded from neurons (both in vitro and in silico). Examples are the action potential width and amplitude in voltage traces recorded during whole-cell patch clamp experiments. The user of the library provides a set of traces and selects the features to be calculated. The library will then extract the requested features and return the values to the user.

The core of the library is written in C++, and a Python wrapper is included. At the moment we provide a way to automatically compile and install the library as a Python module. Instructions on how to compile the eFEL as a standalone C++ library can be found here.

How to cite

When you use this eFEL software for your research, we ask you to cite it (this includes poster presentations) by referring to the "Cite this repository" button at the top of the repository page to get various citation formats, including APA and BibTeX.

For detailed citation information, please refer to the CITATION.cff file.

Requirements

  • Python 3.9+
  • Pip (installed by default in newer versions of Python)
  • C++ compiler that can be used by pip
  • Numpy (will be installed automatically by pip)
  • The instruction below are written assuming you have access to a command shell on Linux / UNIX / MacOSX / Cygwin

Installation

The easiest way to install eFEL is to use pip

bash pip install efel

In case you don't have administrator access this command might fail with a permission error. In that case you could install eFEL in your home directory

bash pip install efel --user

Or you could use a python virtual environment

```bash virtualenv pythonenv . ./pythonenv/bin/activate

If you use csh or tcsh, you should use:

source ./pythonenv/bin/activate.csh

pip install efel ```

If you want to install straight from the github repository you can use

bash pip install git+git://github.com/BlueBrain/eFEL

Quick Start

First you need to import the module

python import efel

To get a list with all the available feature names

python efel.get_feature_names()

Note that the extra-cellular features, the bpapattenuation feature and the checkaisinitiation feature are not listed above because they have to be used in a special way, as described here for extra-cellular features, here for bpapattenuation feature and here for checkaisinitiation feature.

To change the spike detection threshold setting (default is -20 mV)

python efel.set_setting('Threshold', -30) For a full list of available settings, please refer to the Setting class

The python function to extract features is getfeaturevalues(...). Below is a short example on how to use this function. The code and example trace are available here

```python """Basic example 1 for eFEL"""

import efel import numpy

def main(): """Main"""

# Use numpy to read the trace data from the txt file
data = numpy.loadtxt('example_trace1.txt')

# Time is the first column
time = data[:, 0]
# Voltage is the second column
voltage = data[:, 1]

# Now we will construct the datastructure that will be passed to eFEL

# A 'trace' is a dictionary
trace1 = {}

# Set the 'T' (=time) key of the trace
trace1['T'] = time

# Set the 'V' (=voltage) key of the trace
trace1['V'] = voltage

# Set the 'stim_start' (time at which a stimulus starts, in ms)
# key of the trace
# Warning: this need to be a list (with one element)
trace1['stim_start'] = [700]

# Set the 'stim_end' (time at which a stimulus end) key of the trace
# Warning: this need to be a list (with one element)
trace1['stim_end'] = [2700]

# Multiple traces can be passed to the eFEL at the same time, so the
# argument should be a list
traces = [trace1]

# set the threshold for spike detection to -20 mV
efel.set_setting('Threshold', -20)

# Now we pass 'traces' to the efel and ask it to calculate the feature
# values
traces_results = efel.get_feature_values(traces,
                                       ['AP_amplitude', 'voltage_base'])

# The return value is a list of trace_results, every trace_results
# corresponds to one trace in the 'traces' list above (in same order)
for trace_results in traces_results:
    # trace_result is a dictionary, with as keys the requested features
    for feature_name, feature_values in trace_results.items():
        print("Feature %s has the following values: %s" %
            (feature_name, ', '.join([str(x) for x in feature_values])))

if name == 'main': main() ```

The output of this example is Feature AP_amplitude has the following values: 72.5782441262, 46.3672552618, 41.1546679158, 39.7631750953, 36.1614653031, 37.8489295737 Feature voltage_base has the following values: -75.446665721 This means that the eFEL found 5 action potentials in the voltage trace. The amplitudes of these APs are the result of the 'APamplitude' feature. The voltage before the start of the stimulus is measured by 'voltagebase'. Results are in mV.

Full documentation

The full documentation can be found here

Funding

This work has been partially funded by the European Union Seventh Framework Program (FP7/2007­2013) under grant agreement no. 604102 (HBP), the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 720270, 785907 (Human Brain Project SGA1/SGA2) and by the EBRAINS research infrastructure, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 945539 (Human Brain Project SGA3). This project/research was supported by funding to the Blue Brain Project, a research center of the École polytechnique fédérale de Lausanne (EPFL), from the Swiss government’s ETH Board of the Swiss Federal Institutes of Technology.

Copyright (c) 2009-2024 Blue Brain Project/EPFL

Owner

  • Name: The Blue Brain Project
  • Login: BlueBrain
  • Kind: organization
  • Email: bbp.opensource@epfl.ch
  • Location: Geneva, Switzerland

Open Source Software produced and used by the Blue Brain Project

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "eFEL"
doi: 10.5281/zenodo.593869
url: https://doi.org/10.5281/zenodo.593869
abstract: "The Electrophys Feature Extraction Library (eFEL) allows neuroscientists to automatically extract features from time series data recorded from neurons (both in vitro and in silico). Examples are the action potential width and amplitude in voltage traces recorded during whole-cell patch clamp experiments. The user of the library provides a set of traces and selects the features to be calculated. The library will then extract the requested features and return the values to the user."
authors:
  - family-names: "Ranjan"
    given-names: "Rajnish"
  - family-names: "Van Geit"
    given-names: "Werner"
  - family-names: "Moor"
    given-names: "Ruben"
  - family-names: "Roessert"
    given-names: "Christian"
  - family-names: "Riquelme"
    given-names: "Luis"
  - family-names: "Damart"
    given-names: "Tanguy"
  - family-names: "Jaquier"
    given-names: "Aurélien"
  - family-names: "Tuncel"
    given-names: "Anil"
  - family-names: "Mandge"
    given-names: "Darshan"
  - family-names: "Kilic"
    given-names: "Ilkan"
date-released: 2020-03-01
publisher: "Zenodo"

GitHub Events

Total
  • Create event: 6
  • Release event: 3
  • Watch event: 4
  • Delete event: 1
  • Issue comment event: 1
  • Push event: 2
  • Pull request event: 4
  • Pull request review event: 8
  • Pull request review comment event: 6
  • Gollum event: 5
  • Fork event: 3
Last Year
  • Create event: 6
  • Release event: 3
  • Watch event: 4
  • Delete event: 1
  • Issue comment event: 1
  • Push event: 2
  • Pull request event: 4
  • Pull request review event: 8
  • Pull request review comment event: 6
  • Gollum event: 5
  • Fork event: 3

Committers

Last synced: 12 months ago

All Time
  • Total Commits: 799
  • Total Committers: 28
  • Avg Commits per committer: 28.536
  • Development Distribution Score (DDS): 0.523
Past Year
  • Commits: 57
  • Committers: 8
  • Avg Commits per committer: 7.125
  • Development Distribution Score (DDS): 0.632
Top Committers
Name Email Commits
Werner Van Geit w****t@e****h 381
Jaquier Aurélien Tristan a****r@e****h 134
Anil Tuncel a****l@e****h 101
Mike Gevaert m****t@e****h 44
Aurélien Jaquier 7****r 25
Kiliç Ilkan Fabrice i****c@b****h 15
Jaquier Aurélien Tristan a****r@b****h 15
arnaudon a****n@e****h 12
dependabot[bot] 4****] 10
ilkilic 1****c 9
Tanguy Pierre Louis Damart t****t@e****h 7
Joffrey Gonin J****n@g****m 7
Ani Nandi a****8@g****m 6
Damart Tanguy Pierre Louis d****t@b****h 5
Luis Riquelme l****e@e****h 4
mariarv j****a@g****m 4
croessert c****a@r****e 4
Rössert Christian Andreas c****t@e****h 4
Sandro d****l@p****l 2
Benoît Coste b****e@e****h 2
Andrew Davison a****n@u****r 1
Darshan Mandge 8****e 1
Erik Heeren e****n@o****g 1
Liesbeth Vanherpe l****e@e****h 1
Oren Amsalem o****1@m****l 1
Pietro Monticone 3****e 1
The Gitter Badger b****r@g****m 1
adietz a****z@e****h 1

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 53
  • Total pull requests: 170
  • Average time to close issues: 6 months
  • Average time to close pull requests: 20 days
  • Total issue authors: 23
  • Total pull request authors: 13
  • Average comments per issue: 3.3
  • Average comments per pull request: 1.72
  • Merged pull requests: 157
  • Bot issues: 0
  • Bot pull requests: 11
Past Year
  • Issues: 4
  • Pull requests: 41
  • Average time to close issues: 24 days
  • Average time to close pull requests: 4 days
  • Issue authors: 3
  • Pull request authors: 6
  • Average comments per issue: 3.0
  • Average comments per pull request: 1.2
  • Merged pull requests: 39
  • Bot issues: 0
  • Bot pull requests: 5
Top Authors
Issue Authors
  • anilbey (10)
  • arnaudon (7)
  • AurelienJaquier (6)
  • appukuttan-shailesh (4)
  • wvangeit (3)
  • tomko-neuron (2)
  • Sverreg (2)
  • darshanmandge (2)
  • shirquinn (2)
  • coder2003lucky (1)
  • Aman-A (1)
  • Helveg (1)
  • KeremKurban (1)
  • PolinaL (1)
  • alexyonk (1)
Pull Request Authors
  • AurelienJaquier (103)
  • anilbey (51)
  • ilkilic (23)
  • dependabot[bot] (21)
  • arnaudon (11)
  • DrTaDa (6)
  • wvangeit (4)
  • darshanmandge (2)
  • mgeplf (2)
  • penguinpee (1)
  • pitmonticone (1)
  • mariarv (1)
  • bbpgithubaudit (1)
Top Labels
Issue Labels
question (1) feature request (1)
Pull Request Labels
dependencies (21)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 3
  • Total dependent repositories: 0
  • Total versions: 1
  • Total maintainers: 1
spack.io: py-efel

The Electrophys Feature Extract Library (eFEL) allows neuroscientists to automatically extract features from time series data recorded from neurons (both in vitro and in silico). Examples are the action potential width and amplitude in voltage traces recorded during whole-cell patch clamp experiments. The user of the library provides a set of traces and selects the features to be calculated. The library will then extract the requested features and return the values to the user.

  • Versions: 1
  • Dependent Packages: 3
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Average: 29.3%
Dependent packages count: 58.6%
Maintainers (1)
Last synced: 6 months ago

Dependencies

setup.py pypi
  • numpy >=1.6
  • six *
.github/workflows/build.yml actions
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v2 composite
  • pypa/gh-action-pypi-publish master composite
.github/workflows/keep-alive.yml actions
  • actions/checkout v2 composite
.github/workflows/test.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • codecov/codecov-action v2 composite