v0.0.7 - Signal Characteristics, Flexible Inputs & Sphinx Docs
What's New
Signal Characteristics Model
New SignalCharacteristics dataclass on every ECGRecord — captures technical signal encoding metadata directly from each format:
bits_per_sample,signal_offset,signal_signeddata_encoding(e.g.base64_int16le,format_212,int16)compression(e.g.none,huffman)number_channels_allocated/number_channels_validelectrode_placement,acsetting, and signal processing flags
All 12 parsers now populate record.signal from format-specific fields.
Expanded Metadata Extraction
Parsers now extract significantly more metadata from each format:
- Technician — Sierra XML, GE MUSE, DICOM, GE MAC 2000
- Referring physician — Sierra XML, EDF, GE MUSE, GE MAC 2000
- Patient weight — SCP-ECG (Tag 12), BeneHeart R12, GE MAC 2000
- Patient height — BeneHeart R12, GE MAC 2000
- Patient race — HL7 aECG, Mortara EL250, GE MAC 2000
- RR interval & QRS count — Mortara EL250, BeneHeart R12, GE MAC 2000
- Device serial number — HL7 aECG, GE MAC 2000
- Notch filter active flag — now properly set across all parsers
Flexible Inputs — Numpy Arrays Everywhere
All processing and plotting functions now accept raw numpy arrays directly alongside Lead objects. Pass the sample rate via fs=:
import numpy as np
from ecgdatakit.processing import diagnostic_filter, detect_r_peaks
from ecgdatakit.plotting import plot_lead
signal = np.random.randn(5000)
filtered = diagnostic_filter(signal, fs=500)
peaks = detect_r_peaks(filtered)
plot_lead(filtered, peaks=peaks)Plotting Improvements
- Auto-display: static plots now call plt.show() by default — pass show=False to get the figure for saving
- Sample index axis: plot_lead(lead, x_axis="samples") for sample indices instead of time
- Cleaner layout: reduced margins, integer time ticks on x-axis
Documentation Migration
- Migrated from Hugo to Sphinx with the Furo theme
- Full autodoc API reference generated from source docstrings
- Hosted at https://ecgdatakit.ummisco.fr
Bug Fixes
- BeneHeart R12: fixed assignment to non-existent RecordingInfo.device field
- SCP-ECG: now reads patient weight from Tag 12 (was silently skipped)
- MFER: notch filter now correctly extracted from filter tag when 12+ bytes present
Full Changelog: https://github.com/UMMISCO/ECGDataKit/commits/v0.0.0.7