dartEDFLib
Features
A wrapper library around EDFLib v1.23 inspired by pyEDFlib v0.1.28 to read/write EDF+ files. The definition of the EDF/EDF+/BDF/BDF+ format can be found under edfplus.info.
This package uses dart:ffi to call libEDF's C APIs, which implies that libEDF must be bundled to or deployed with the host application.
Installation
Make sure that you have installed/compiled EDFLib on your computer, and that it can be found by dylib.
For example, you can set EDFLIB_PATH
to the full path of the dynamic library (.dll/.so/.dylib), or to the folder where it can be found. (e.g. EDFLIB_PATH=C:\edflib\edflib.dll
).
Add dartedflib
to pubspec.yaml
:
dependencies:
dartedflib: ^0.1.0
Compiling EDFLib
Install gcc on your computer.
# windows
gcc -Wall -Wextra -Wshadow -Wformat-nonliteral -Wformat-security -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -shared edflib.c -o edflib.dll
# linux
gcc -Wall -Wextra -Wshadow -Wformat-nonliteral -Wformat-security -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -shared edflib.c -o libedflib.so
Usage
import 'package:edflib/edflib.dart';
final writer = EdfWriter(fileName: filePath, numberOfChannels: 1);
try {
final channelInfo = {
'label': 'ECG1',
'dimension': 'mV',
'sample_frequency': measurement.deviceConfig!.ecgSampleRate!,
'physical_max': 10.0,
'physical_min': -10.0,
'prefilter': '',
};
writer.setSignalHeaders(channelInfo);
final data = List<num>.filled(500, 0.1);
writer.writeSamples([data]);
} finally {
// don't forget to close it!
writer.close();
}
Additional information
This package is currently developed by Praxa Sense.
Tests
To run the unit tests via vs code, add the dynamic library to the root folder of this repo, because settings.json
contains a reference to EDFLIB_PATH
:
"dart.env": {
"EDFLIB_PATH": "."
},
The .edf-files found in test/data
are direct copies from pyedflib/tests/data.
Regenerating bindings.dart
Make sure you have installed LLVM as described in ffigen.
In tasks.json there is a task to generate bindings.dart
. It's important to notice that the edflib.h
file in the root folder is taken for that. If you want to upgrade to a later version of EDFLib, replace edflib.h
with a newer version and run the task.
Libraries
- dartedflib
- Wrapper around edflib by Teuniz.