{"id":21746,"library":"pyedflib","title":"pyedflib","description":"A Python library to read and write EDF+/BDF+ files, commonly used for biomedical signal data (e.g., EEG, ECG). Current version 0.1.42. Low release cadence, maintenance mode.","status":"active","version":"0.1.42","language":"python","source_language":"en","source_url":"https://github.com/holgern/pyedflib","tags":["edf","bdf","biomedical","signal","eeg","ecg"],"install":[{"cmd":"pip install pyedflib","lang":"bash","label":"PyPI install"}],"dependencies":[],"imports":[{"note":"EdfReader is a class, not a module.","wrong":"import pyedflib.EdfReader","symbol":"EdfReader","correct":"from pyedflib import EdfReader"},{"note":"Common mistake: trying to import EdfWriter from the wrong submodule.","symbol":"EdfWriter","correct":"from pyedflib import EdfWriter"},{"note":"highlevel is a submodule; use from pyedflib import highlevel.","wrong":"import pyedflib.highlevel","symbol":"highlevel","correct":"from pyedflib import highlevel"}],"quickstart":{"code":"from pyedflib import EdfReader, EdfWriter\nimport numpy as np\n\n# Read an EDF file\nreader = EdfReader('example.edf')\nsignal = reader.readSignal(0)\nprint(f'Signal length: {len(signal)}')\nreader.close()\n\n# Write an EDF file\nwriter = EdfWriter('output.edf', n_channels=1, file_type=1)  # EDF+ type: 1=EDF, 0=BDF\nwriter.setSignalHeader(0, label='ECG', dimension='mV', sample_rate=256, physical_min=-5, physical_max=5, digital_min=-32768, digital_max=32767)\ndata = np.sin(np.linspace(0, 10, 2560))\nwriter.writeSamples([data])\nwriter.close()","lang":"python","description":"Basic read/write of EDF+ files with pyedflib."},"warnings":[{"fix":"Upgrade to pyedflib >=0.1.38 and use Python 3.8+.","message":"In v0.1.38, pyedflib dropped support for Python <3.8 and numpy <2.0. Ensure your environment uses Python 3.8+.","severity":"breaking","affected_versions":"<0.1.38"},{"fix":"Replace `sample_rate` with `sample_frequency` in `setSignalHeader` calls.","message":"The parameter `sample_rate` in `setSignalHeader` is deprecated since v0.1.39. Use `sample_frequency` instead.","severity":"deprecated","affected_versions":">=0.1.39"},{"fix":"Ensure physical_min and physical_max correctly represent the expected signal range.","message":"When writing EDF files, `physical_min` and `physical_max` are no longer strictly asserted (since v0.1.39). Incorrect values may produce warnings but still write, potentially corrupting data.","severity":"gotcha","affected_versions":">=0.1.39"},{"fix":"Refer to documentation for signal scaling details.","message":"The `readSignal` method returns a numpy array; indexing and handling differ from raw digital values. Be aware of the scaling applied.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use an absolute path or ensure the current working directory is correct.","cause":"File path does not exist or is relative to the wrong directory.","error":"FileNotFoundError: [Errno 2] No such file or directory: 'example.edf'"},{"fix":"Set physical_min and physical_max to reasonable values matching the signal amplitude, or upgrade to >=0.1.39 which only warns.","cause":"Previous versions (pre-0.1.39) raised an error for extreme physical ranges.","error":"ValueError: The physical_min and physical_max values are too small. The scaling factor is too large."},{"fix":"Use `from pyedflib import EdfReader` and ensure version >=0.1.0.","cause":"Trying to import from the wrong module or an older version of pyedflib.","error":"ImportError: cannot import name 'EdfReader' from 'pyedflib'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}