{"id":20956613,"url":"https://github.com/bluebrain/efel","last_synced_at":"2025-10-21T06:17:36.079Z","repository":{"id":31580405,"uuid":"35145177","full_name":"BlueBrain/eFEL","owner":"BlueBrain","description":"Electrophys Feature Extraction Library","archived":false,"fork":false,"pushed_at":"2025-01-28T10:21:18.000Z","size":64077,"stargazers_count":69,"open_issues_count":23,"forks_count":40,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-02-16T20:47:07.313Z","etag":null,"topics":["computational-neuroscience","electrophysiology","neurons","neuroscience","python"],"latest_commit_sha":null,"homepage":"http://efel.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BlueBrain.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-06T07:26:19.000Z","updated_at":"2025-01-12T12:54:03.000Z","dependencies_parsed_at":"2023-02-15T08:01:54.439Z","dependency_job_id":"ec5a8a94-6058-428b-b75d-3820e46db02c","html_url":"https://github.com/BlueBrain/eFEL","commit_stats":{"total_commits":610,"total_committers":21,"mean_commits":"29.047619047619047","dds":0.440983606557377,"last_synced_commit":"bc8a863e8f50d0fb2f6c6c32fa282d3d43d0fa8a"},"previous_names":[],"tags_count":116,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlueBrain%2FeFEL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlueBrain%2FeFEL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlueBrain%2FeFEL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlueBrain%2FeFEL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlueBrain","download_url":"https://codeload.github.com/BlueBrain/eFEL/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240385219,"owners_count":19792980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computational-neuroscience","electrophysiology","neurons","neuroscience","python"],"created_at":"2024-11-19T01:27:08.382Z","updated_at":"2025-10-21T06:17:36.073Z","avatar_url":"https://github.com/BlueBrain.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!WARNING]\n\u003e The Blue Brain Project concluded in December 2024, so development has ceased under the BlueBrain GitHub organization.\n\u003e Future development will take place at: https://github.com/openbraininstitute/eFEL\n\n\u003cimg src=\"https://raw.githubusercontent.com/BlueBrain/eFEL/master/docs/source/logo/eFELBanner.png\" alt=\"eFEL banner\" /\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e\n  \u003ctd\u003eLatest Release\u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://pypi.org/project/efel/\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/efel.svg\" alt=\"latest release\" /\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd\u003eDocumentation\u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://efel.readthedocs.io/\"\u003e\n    \u003cimg src=\"https://readthedocs.org/projects/efel/badge/?version=latest\" alt=\"latest documentation\" /\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd\u003eLicense\u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://github.com/BlueBrain/efel/blob/master/LICENSE.txt\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/l/efel.svg\" alt=\"license\" /\u003e\n    \u003c/a\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd\u003eBuild Status\u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://github.com/BlueBrain/eFEL/actions\"\u003e\n    \u003cimg src=\"https://github.com/BlueBrain/eFEL/workflows/Build/badge.svg?branch=master\" alt=\"actions build status\" /\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd\u003eCoverage\u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://codecov.io/gh/BlueBrain/efel\"\u003e\n    \u003cimg src=\"https://codecov.io/github/BlueBrain/eFEL/coverage.svg?branch=master\" alt=\"coverage\" /\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd\u003eGitter\u003c/td\u003e\n    \u003ctd\u003e\n        \u003ca href=\"https://gitter.im/bluebrain/efel\"\u003e\n        \u003cimg src=\"https://badges.gitter.im/Join%20Chat.svg\" /\u003e\n    \u003c/a\u003e\n    \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n    \u003ctd\u003eCitation\u003c/td\u003e\n    \u003ctd\u003e\n        \u003ca href=\"https://doi.org/10.5281/zenodo.593869\"\u003e\n        \u003cimg src=\"https://zenodo.org/badge/DOI/10.5281/zenodo.593869.svg\" alt=\"DOI\"/\u003e\n    \u003c/a\u003e\n    \u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\nIntroduction\n============\n\nThe Electrophys Feature Extraction Library (eFEL) allows neuroscientists\nto automatically extract features from time series data recorded from neurons\n(both in vitro and in silico).\nExamples are the action potential width and amplitude in voltage traces recorded\nduring whole-cell patch clamp experiments.\nThe user of the library provides a set of traces and selects the features to\nbe calculated. The library will then extract the requested features and return\nthe values to the user.\n\nThe core of the library is written in C++, and a Python wrapper is included.\nAt the moment we provide a way to automatically compile and install the library\nas a Python module. Instructions on how to compile the eFEL as a standalone C++\nlibrary can be found [here](http://efel.readthedocs.io/en/latest/installation.html#installing-the-c-standalone-library).\n\nHow to cite\n===========\nWhen 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.\n\nFor detailed citation information, please refer to the [CITATION.cff](./CITATION.cff) file.\n\nRequirements\n============\n\n* [Python 3.9+](https://www.python.org/downloads/)\n* [Pip](https://pip.pypa.io) (installed by default in newer versions of Python)\n* C++ compiler that can be used by pip\n* [Numpy](http://www.numpy.org) (will be installed automatically by pip)\n* The instruction below are written assuming you have access to a command shell\non Linux / UNIX / MacOSX / Cygwin\n\nInstallation\n============\n\nThe easiest way to install eFEL is to use [pip](https://pip.pypa.io)\n\n```bash\npip install efel\n```\n\nIn case you don't have administrator access this command might fail with a\npermission error. In that case you could install eFEL in your home directory\n\n```bash\npip install efel --user\n```\n\nOr you could use a [python virtual environment](https://virtualenv.pypa.io)\n\n```bash\nvirtualenv pythonenv\n. ./pythonenv/bin/activate\n# If you use csh or tcsh, you should use:\n# source ./pythonenv/bin/activate.csh\npip install efel\n```\n\nIf you want to install straight from the github repository you can use\n\n```bash\npip install git+git://github.com/BlueBrain/eFEL\n```\n\nQuick Start\n===========\n\nFirst you need to import the module\n\n```python\nimport efel\n```\n\nTo get a list with all the available feature names\n\n```python\nefel.get_feature_names()\n```\n\nNote that the extra-cellular features, the bpap_attenuation feature and the check_ais_initiation feature are not listed above because they have to be used in a special way, as described [here](https://github.com/BlueBrain/eFEL/blob/master/examples/extracellular/extrafeats_example.ipynb) for extra-cellular features, [here](https://github.com/BlueBrain/eFEL/blob/master/docs/source/eFeatures.rst#bpap_attenuation) for bpap_attenuation feature and [here](https://github.com/BlueBrain/eFEL/blob/master/docs/source/eFeatures.rst#check_ais_initiation) for check_ais_initiation feature.\n\nTo change the spike detection threshold setting (default is -20 mV)\n\n```python\nefel.set_setting('Threshold', -30)\n```\nFor a full list of available settings, please refer to the [Setting class](./efel/settings.py)\n\nThe python function to extract features is get_feature_values(...).\nBelow is a short example on how to use this function. The code and example\ntrace are available\n[here](https://github.com/BlueBrain/eFEL/blob/master/examples/basic/basic_example1.py)\n\n```python\n\"\"\"Basic example 1 for eFEL\"\"\"\n\nimport efel\nimport numpy\n\ndef main():\n    \"\"\"Main\"\"\"\n\n    # Use numpy to read the trace data from the txt file\n    data = numpy.loadtxt('example_trace1.txt')\n\n    # Time is the first column\n    time = data[:, 0]\n    # Voltage is the second column\n    voltage = data[:, 1]\n\n    # Now we will construct the datastructure that will be passed to eFEL\n\n    # A 'trace' is a dictionary\n    trace1 = {}\n\n    # Set the 'T' (=time) key of the trace\n    trace1['T'] = time\n\n    # Set the 'V' (=voltage) key of the trace\n    trace1['V'] = voltage\n\n    # Set the 'stim_start' (time at which a stimulus starts, in ms)\n    # key of the trace\n    # Warning: this need to be a list (with one element)\n    trace1['stim_start'] = [700]\n\n    # Set the 'stim_end' (time at which a stimulus end) key of the trace\n    # Warning: this need to be a list (with one element)\n    trace1['stim_end'] = [2700]\n\n    # Multiple traces can be passed to the eFEL at the same time, so the\n    # argument should be a list\n    traces = [trace1]\n\n    # set the threshold for spike detection to -20 mV\n    efel.set_setting('Threshold', -20)\n\n    # Now we pass 'traces' to the efel and ask it to calculate the feature\n    # values\n    traces_results = efel.get_feature_values(traces,\n                                           ['AP_amplitude', 'voltage_base'])\n\n    # The return value is a list of trace_results, every trace_results\n    # corresponds to one trace in the 'traces' list above (in same order)\n    for trace_results in traces_results:\n        # trace_result is a dictionary, with as keys the requested features\n        for feature_name, feature_values in trace_results.items():\n            print(\"Feature %s has the following values: %s\" %\n                (feature_name, ', '.join([str(x) for x in feature_values])))\n\n\nif __name__ == '__main__':\n    main()\n```\n\nThe output of this example is\n```\nFeature AP_amplitude has the following values: 72.5782441262, 46.3672552618, 41.1546679158, 39.7631750953, 36.1614653031, 37.8489295737\nFeature voltage_base has the following values: -75.446665721\n```\nThis means that the eFEL found 5 action potentials in the voltage trace. The\namplitudes of these APs are the result of the 'AP_amplitude' feature.\nThe voltage before the start of the stimulus is measured by 'voltage_base'.\nResults are in mV.\n\nFull documentation\n==================\nThe full documentation can be found [here](http://efel.readthedocs.io)\n\nFunding\n=======\nThis work has been partially funded by the European Union Seventh Framework Program (FP7/2007­2013) under grant agreement no. 604102 (HBP),\nthe European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 720270, 785907\n(Human Brain Project SGA1/SGA2) and by the EBRAINS research infrastructure, funded from the European Union’s Horizon 2020 Framework\nProgramme for Research and Innovation under the Specific Grant Agreement No. 945539 (Human Brain Project SGA3).\nThis project/research was supported by funding to the Blue Brain Project, a research center of the École polytechnique fédérale de\nLausanne (EPFL), from the Swiss government’s ETH Board of the Swiss Federal Institutes of Technology.\n\nCopyright (c) 2009-2024 Blue Brain Project/EPFL\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluebrain%2Fefel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluebrain%2Fefel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluebrain%2Fefel/lists"}