Rust EDF
A pure Rust library for reading and writing EDF/EDF+ files. It aims at providing a feature-rich and reliable way to work with *.edf files. This crate is optimized to work efficiently with very large EDF file sizes. It is based on the official specification here. Currently the primary focus for this project is to power my other project NoctiG Scorer.
This library is an unofficial implementation. It is still in an early development stage which is not yet considered stable and will have breaking changes in the future.
Features
Here is a non-exhaustive list of all implemented and planned features for this library:
✅ Reading EDF/EDF+ files
✅ Creating / Updating existing EDF/EDF+ files
✅ Adding / Removing / Updating existing records and signals
✅ Support for seeking
✅ Reading data by custom duration (nanoseconds, seconds, etc.)
🚧 Extensive documentation
🚧 Examples
🗓️ Support for BDF/BDF+ files and EDF extensions
🗓️ Conversion from (and maybe to) other formats (e.g. OpenBCI Recordings)
🗓️ Additional features (e.g. merging files, etc.)
Legend: ✅ Implemented 🚧 In progress 🗓️ Planned
Usage
The code snippet below shows how to open an EDF+ file, print the metadata and read the first few data-records.
use EDFFile;
⚠️ Disclaimer
I (the developer of this tool) am not a scientist, doctor or similar. I am just a programmer who maintains this tool as a hobby because it is the application I wish existed. This means it is possible that some features of this tool do not work as they should (due to lack of scientific knowledge or similar). This tool is not intended for medical treatment or diagnosis. This software is offered "as is" and it could contain errors, bugs or vulnerabilities which could lead to unexpected or undesirable consequences. If you encounter such problems, feel free to report them in the issues section. Keep in mind that this application is still in a very early development stage and not yet considered stable. I cannot and do not accept any liability for damages related to the use of this software. Use it at your own risk.
Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.
📜 License
This project is licensed under either of
- Apache License, Version 2.0 [LICENSE-APACHE]
- MIT License [LICENSE-MIT]
at your option.