Skip to main content

Read and write EDF/EDF+ files.

Project description

edfio

Python PyPI License Docs Poetry Checked with mypy Code style: black Linting: Ruff

edfio is a Python package for reading and writing EDF and EDF+C files.

It requires Python>=3.9 and NumPy>=1.22 and is available on PyPI:

pip install edfio
  • Support for EDF and EDF+C, including annotations
  • Fast I/O thanks to NumPy - read and write GB-sized files in seconds
  • Fail late on read: Non-compliant header fields only raise an exception when the corresponding property is accessed.
  • Fail early on write: Trying to create a new non-compliant EDF file raises an exception.
  • Object-oriented design and type annotations for IDE autocompletion
  • Pure Python implementation and 100% test coverage to simplify contributions

Features

  • Read/write from/to files or file-like objects
  • Modify signal and recording headers
  • Drop EDF+ annotations
  • Slice recordings (by seconds or annotation texts)
  • Drop individual signals
  • Anonymize recordings

Known limitations

  • Discontiguous files (EDF+D) are treated as contiguous ones.
  • The maximum data record size of 61440 bytes recommended by the EDF specs is not enforced.
  • To write an EDF with a non-integer seconds duration, the data record duration has to be manually set to an appropriate value.
  • Slicing an EDF to a timespan that is not an integer multiple of the data record duration does not work.
  • BDF files (BioSemi) are not supported.

Contributing

Contributions are welcome and highly appreciated. Check out the contributing guidelines to get started.

Usage

Further information is available in the API reference and usage examples.

To read an EDF from a file, use edfio.read_edf:

from edfio import read_edf

edf = read_edf("example.edf")

A new EDF can be created and written to a file as follows:

import numpy as np

from edfio import Edf, EdfSignal

edf = Edf(
    [
        EdfSignal(np.random.randn(30 * 256), sampling_frequency=256, label="EEG Fpz"),
        EdfSignal(np.random.randn(30), sampling_frequency=1, label="Body Temp"),
    ]
)
edf.write("example.edf")

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

edfio-0.1.0.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

edfio-0.1.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file edfio-0.1.0.tar.gz.

File metadata

  • Download URL: edfio-0.1.0.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.9.18 Linux/6.2.0-1015-azure

File hashes

Hashes for edfio-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b3b35fdbffadd80441600c600a3553d882b0112d54cec0a1ffd1738f613f50b4
MD5 9f50af0933bd0d81b9f3e75f68f7861a
BLAKE2b-256 c98b11c08c7972b0d1d81c36b7cfadfb48bec4581a20df269851aecddbf0f55f

See more details on using hashes here.

File details

Details for the file edfio-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: edfio-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.9.18 Linux/6.2.0-1015-azure

File hashes

Hashes for edfio-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9b6bfa8ec2010edcff0e3a1a696fe48f7983459916ba9b43d44bc1397c6b4fb
MD5 addf4838a7eae72075860d2d15f283bf
BLAKE2b-256 c1a92c0d6d2a206dc4f8f9fb8377b0cf37a11177d9bde448ce533bc794785d70

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page