Skip to main content

library to read/write EDF+/BDF+ files

Project description

Test Coverage Docs Build PyPI Version Conda Version Conda Downloads

What is pyEDFlib

pyEDFlib is a python library to read/write EDF+/BDF+ files based on EDFlib.

EDF means European Data Format and was firstly published Kemp1992. In 2003, an improved version of the file protocol named EDF+ has been published and can be found at Kemp2003.

The EDF/EDF+ format saves all data with 16 Bit. A version which saves all data with 24 Bit, was introduces by the compony BioSemi.

The definition of the EDF/EDF+/BDF/BDF+ format can be found under

This Python toolbox is a fork of the toolbox from Christopher Lee-Messer and uses the EDFlib from Teunis van Beelen. The EDFlib is able to read and write EDF/EDF+/BDF/BDF+ files.


Documentation is available online at


pyEDFlib can be used with Python >=3.5. It depends on the Numpy package. To use the newest source code from git, you have to download the source code. You need a C compiler and a recent version of Cython. Go then to the source directory and type:

python build
python install

There are binary wheels which can be installed by (use pip3 when available):

pip install pyEDFlib

Users of the Anaconda Python distribution can directly obtain pre-built Windows, Intel Linux or macOS / OSX binaries from the conda-forge channel. This can be done via:

conda install -c conda-forge pyedflib

The most recent development version can be found on GitHub at

The latest release, including source and binary packages for Linux, macOS and Windows, is available for download from the Python Package Index. You can find source releases at the Releases Page.

Highlevel interface

pyEDFlib includes an highlevel interface for easy access to read and write edf files. Additionally functionality as anonymizing, dropping or renaming channels can be found there.

from pyedflib import highlevel

# write an edf file
signals = np.random.rand(5, 256*300)*200 # 5 minutes of random signal
channel_names = ['ch1', 'ch2', 'ch3', 'ch4', 'ch5']
signal_headers = highlevel.make_signal_headers(channel_names, sample_frequency=256)
header = highlevel.make_header(patientname='patient_x', gender='Female')
highlevel.write_edf('edf_file.edf', signals, signal_headers, header)

# read an edf file
signals, signal_headers, header = highlevel.read_edf('edf_file.edf', ch_names=['ch1', 'ch2'])
print(signal_headers[0]['sample_frequency']) # prints 256

# drop a channel from the file or anonymize edf
highlevel.drop_channels('edf_file.edf', to_drop=['ch2', 'ch4'])
highlevel.anonymize_edf('edf_file.edf', new_file='anonymized.edf'
                             to_remove=['patientname', 'birthdate'],
                             new_values=['anonymized', ''])
# check if the two files have the same content
highlevel.compare_edf('edf_file.edf', 'anonymized.edf')
# change polarity of certain channels
highlevel.change_polarity('file.edf', channels=[1,3])
# rename channels within a file
highlevel.rename_channels('file.edf', mapping={'C3-M1':'C3'})


pyEDFlib is a free Open Source software released under the BSD 2-clause license.

Releases can be cited via Zenodo.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyEDFlib-0.1.28.tar.gz (1.7 MB view hashes)

Uploaded source

Built Distributions

pyEDFlib-0.1.28-cp310-cp310-win_amd64.whl (1.8 MB view hashes)

Uploaded cp310

pyEDFlib-0.1.28-cp310-cp310-win32.whl (1.8 MB view hashes)

Uploaded cp310

pyEDFlib-0.1.28-cp39-cp39-win_amd64.whl (1.8 MB view hashes)

Uploaded cp39

pyEDFlib-0.1.28-cp39-cp39-win32.whl (1.8 MB view hashes)

Uploaded cp39

pyEDFlib-0.1.28-cp38-cp38-win_amd64.whl (1.8 MB view hashes)

Uploaded cp38

pyEDFlib-0.1.28-cp38-cp38-win32.whl (1.8 MB view hashes)

Uploaded cp38

pyEDFlib-0.1.28-cp37-cp37m-win_amd64.whl (1.8 MB view hashes)

Uploaded cp37

pyEDFlib-0.1.28-cp37-cp37m-win32.whl (1.8 MB view hashes)

Uploaded cp37

pyEDFlib-0.1.28-cp36-cp36m-win_amd64.whl (1.8 MB view hashes)

Uploaded cp36

pyEDFlib-0.1.28-cp36-cp36m-win32.whl (1.8 MB view hashes)

Uploaded cp36

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page