Activity

85
Commits
17
Active days
1
Contributors
2026-10-13
Last commit
v2.0.1
Latest release
Contributions
Mar Apr May Jun Jul Aug Sep Oct Mon Wed Fri 2026-03-01: No commits 2026-03-02: 14 commits 2026-03-03: 6 commits 2026-03-04: 4 commits 2026-03-05: 1 commits 2026-03-06: 4 commits 2026-03-07: 3 commits 2026-03-08: No commits 2026-03-09: No commits 2026-03-10: No commits 2026-03-11: No commits 2026-03-12: No commits 2026-03-13: No commits 2026-03-14: No commits 2026-03-15: No commits 2026-03-16: No commits 2026-03-17: No commits 2026-03-18: No commits 2026-03-19: 8 commits 2026-03-20: 3 commits 2026-03-21: No commits 2026-03-22: No commits 2026-03-23: No commits 2026-03-24: No commits 2026-03-25: No commits 2026-03-26: No commits 2026-03-27: No commits 2026-03-28: No commits 2026-03-29: No commits 2026-03-30: No commits 2026-03-31: No commits 2026-04-01: No commits 2026-04-02: No commits 2026-04-03: No commits 2026-04-04: No commits 2026-04-05: No commits 2026-04-06: No commits 2026-04-07: No commits 2026-04-08: No commits 2026-04-09: No commits 2026-04-10: No commits 2026-04-11: No commits 2026-04-12: No commits 2026-04-13: No commits 2026-04-14: No commits 2026-04-15: No commits 2026-04-16: No commits 2026-04-17: No commits 2026-04-18: No commits 2026-04-19: No commits 2026-04-20: No commits 2026-04-21: No commits 2026-04-22: No commits 2026-04-23: No commits 2026-04-24: No commits 2026-04-25: No commits 2026-04-26: No commits 2026-04-27: No commits 2026-04-28: No commits 2026-04-29: No commits 2026-04-30: No commits 2026-05-01: No commits 2026-05-02: No commits 2026-05-03: No commits 2026-05-04: No commits 2026-05-05: No commits 2026-05-06: No commits 2026-05-07: No commits 2026-05-08: No commits 2026-05-09: No commits 2026-05-10: No commits 2026-05-11: No commits 2026-05-12: No commits 2026-05-13: No commits 2026-05-14: No commits 2026-05-15: No commits 2026-05-16: No commits 2026-05-17: No commits 2026-05-18: No commits 2026-05-19: No commits 2026-05-20: No commits 2026-05-21: No commits 2026-05-22: No commits 2026-05-23: No commits 2026-05-24: No commits 2026-05-25: No commits 2026-05-26: No commits 2026-05-27: No commits 2026-05-28: 3 commits 2026-05-29: No commits 2026-05-30: No commits 2026-05-31: No commits 2026-06-01: No commits 2026-06-02: No commits 2026-06-03: No commits 2026-06-04: No commits 2026-06-05: No commits 2026-06-06: No commits 2026-06-07: No commits 2026-06-08: No commits 2026-06-09: No commits 2026-06-10: No commits 2026-06-11: No commits 2026-06-12: No commits 2026-06-13: No commits 2026-06-14: No commits 2026-06-15: No commits 2026-06-16: No commits 2026-06-17: No commits 2026-06-18: No commits 2026-06-19: No commits 2026-06-20: No commits 2026-06-21: No commits 2026-06-22: No commits 2026-06-23: No commits 2026-06-24: No commits 2026-06-25: No commits 2026-06-26: No commits 2026-06-27: No commits 2026-06-28: No commits 2026-06-29: No commits 2026-06-30: No commits 2026-07-01: No commits 2026-07-02: No commits 2026-07-03: No commits 2026-07-04: No commits 2026-07-05: No commits 2026-07-06: 2 commits 2026-07-07: 4 commits 2026-07-08: No commits 2026-07-09: No commits 2026-07-10: No commits 2026-07-11: No commits 2026-07-12: No commits 2026-07-13: No commits 2026-07-14: No commits 2026-07-15: No commits 2026-07-16: No commits 2026-07-17: No commits 2026-07-18: No commits 2026-07-19: No commits 2026-07-20: No commits 2026-07-21: No commits 2026-07-22: No commits 2026-07-23: No commits 2026-07-24: No commits 2026-07-25: No commits 2026-07-26: No commits 2026-07-27: No commits 2026-07-28: No commits 2026-07-29: No commits 2026-07-30: No commits 2026-07-31: No commits 2026-08-01: No commits 2026-08-02: No commits 2026-08-03: No commits 2026-08-04: No commits 2026-08-05: No commits 2026-08-06: No commits 2026-08-07: No commits 2026-08-08: No commits 2026-08-09: No commits 2026-08-10: No commits 2026-08-11: No commits 2026-08-12: No commits 2026-08-13: No commits 2026-08-14: No commits 2026-08-15: No commits 2026-08-16: No commits 2026-08-17: No commits 2026-08-18: No commits 2026-08-19: No commits 2026-08-20: No commits 2026-08-21: No commits 2026-08-22: No commits 2026-08-23: No commits 2026-08-24: No commits 2026-08-25: No commits 2026-08-26: No commits 2026-08-27: No commits 2026-08-28: No commits 2026-08-29: No commits 2026-08-30: No commits 2026-08-31: No commits 2026-09-01: No commits 2026-09-02: No commits 2026-09-03: No commits 2026-09-04: No commits 2026-09-05: No commits 2026-09-06: No commits 2026-09-07: No commits 2026-09-08: No commits 2026-09-09: No commits 2026-09-10: No commits 2026-09-11: No commits 2026-09-12: No commits 2026-09-13: No commits 2026-09-14: No commits 2026-09-15: No commits 2026-09-16: No commits 2026-09-17: No commits 2026-09-18: No commits 2026-09-19: No commits 2026-09-20: No commits 2026-09-21: No commits 2026-09-22: No commits 2026-09-23: No commits 2026-09-24: No commits 2026-09-25: No commits 2026-09-26: No commits 2026-09-27: No commits 2026-09-28: No commits 2026-09-29: No commits 2026-09-30: No commits 2026-10-01: No commits 2026-10-02: No commits 2026-10-03: No commits 2026-10-04: No commits 2026-10-05: No commits 2026-10-06: No commits 2026-10-07: No commits 2026-10-08: 5 commits 2026-10-09: 13 commits 2026-10-10: 5 commits 2026-10-11: 7 commits 2026-10-12: 1 commits 2026-10-13: 2 commits Mar Apr May Jun Jul Aug Sep Oct Mon Wed Fri 2026-03-01: No commits 2026-03-02: 14 commits 2026-03-03: 6 commits 2026-03-04: 4 commits 2026-03-05: 1 commits 2026-03-06: 4 commits 2026-03-07: 3 commits 2026-03-08: No commits 2026-03-09: No commits 2026-03-10: No commits 2026-03-11: No commits 2026-03-12: No commits 2026-03-13: No commits 2026-03-14: No commits 2026-03-15: No commits 2026-03-16: No commits 2026-03-17: No commits 2026-03-18: No commits 2026-03-19: 8 commits 2026-03-20: 3 commits 2026-03-21: No commits 2026-03-22: No commits 2026-03-23: No commits 2026-03-24: No commits 2026-03-25: No commits 2026-03-26: No commits 2026-03-27: No commits 2026-03-28: No commits 2026-03-29: No commits 2026-03-30: No commits 2026-03-31: No commits 2026-04-01: No commits 2026-04-02: No commits 2026-04-03: No commits 2026-04-04: No commits 2026-04-05: No commits 2026-04-06: No commits 2026-04-07: No commits 2026-04-08: No commits 2026-04-09: No commits 2026-04-10: No commits 2026-04-11: No commits 2026-04-12: No commits 2026-04-13: No commits 2026-04-14: No commits 2026-04-15: No commits 2026-04-16: No commits 2026-04-17: No commits 2026-04-18: No commits 2026-04-19: No commits 2026-04-20: No commits 2026-04-21: No commits 2026-04-22: No commits 2026-04-23: No commits 2026-04-24: No commits 2026-04-25: No commits 2026-04-26: No commits 2026-04-27: No commits 2026-04-28: No commits 2026-04-29: No commits 2026-04-30: No commits 2026-05-01: No commits 2026-05-02: No commits 2026-05-03: No commits 2026-05-04: No commits 2026-05-05: No commits 2026-05-06: No commits 2026-05-07: No commits 2026-05-08: No commits 2026-05-09: No commits 2026-05-10: No commits 2026-05-11: No commits 2026-05-12: No commits 2026-05-13: No commits 2026-05-14: No commits 2026-05-15: No commits 2026-05-16: No commits 2026-05-17: No commits 2026-05-18: No commits 2026-05-19: No commits 2026-05-20: No commits 2026-05-21: No commits 2026-05-22: No commits 2026-05-23: No commits 2026-05-24: No commits 2026-05-25: No commits 2026-05-26: No commits 2026-05-27: No commits 2026-05-28: 3 commits 2026-05-29: No commits 2026-05-30: No commits 2026-05-31: No commits 2026-06-01: No commits 2026-06-02: No commits 2026-06-03: No commits 2026-06-04: No commits 2026-06-05: No commits 2026-06-06: No commits 2026-06-07: No commits 2026-06-08: No commits 2026-06-09: No commits 2026-06-10: No commits 2026-06-11: No commits 2026-06-12: No commits 2026-06-13: No commits 2026-06-14: No commits 2026-06-15: No commits 2026-06-16: No commits 2026-06-17: No commits 2026-06-18: No commits 2026-06-19: No commits 2026-06-20: No commits 2026-06-21: No commits 2026-06-22: No commits 2026-06-23: No commits 2026-06-24: No commits 2026-06-25: No commits 2026-06-26: No commits 2026-06-27: No commits 2026-06-28: No commits 2026-06-29: No commits 2026-06-30: No commits 2026-07-01: No commits 2026-07-02: No commits 2026-07-03: No commits 2026-07-04: No commits 2026-07-05: No commits 2026-07-06: 2 commits 2026-07-07: 4 commits 2026-07-08: No commits 2026-07-09: No commits 2026-07-10: No commits 2026-07-11: No commits 2026-07-12: No commits 2026-07-13: No commits 2026-07-14: No commits 2026-07-15: No commits 2026-07-16: No commits 2026-07-17: No commits 2026-07-18: No commits 2026-07-19: No commits 2026-07-20: No commits 2026-07-21: No commits 2026-07-22: No commits 2026-07-23: No commits 2026-07-24: No commits 2026-07-25: No commits 2026-07-26: No commits 2026-07-27: No commits 2026-07-28: No commits 2026-07-29: No commits 2026-07-30: No commits 2026-07-31: No commits 2026-08-01: No commits 2026-08-02: No commits 2026-08-03: No commits 2026-08-04: No commits 2026-08-05: No commits 2026-08-06: No commits 2026-08-07: No commits 2026-08-08: No commits 2026-08-09: No commits 2026-08-10: No commits 2026-08-11: No commits 2026-08-12: No commits 2026-08-13: No commits 2026-08-14: No commits 2026-08-15: No commits 2026-08-16: No commits 2026-08-17: No commits 2026-08-18: No commits 2026-08-19: No commits 2026-08-20: No commits 2026-08-21: No commits 2026-08-22: No commits 2026-08-23: No commits 2026-08-24: No commits 2026-08-25: No commits 2026-08-26: No commits 2026-08-27: No commits 2026-08-28: No commits 2026-08-29: No commits 2026-08-30: No commits 2026-08-31: No commits 2026-09-01: No commits 2026-09-02: No commits 2026-09-03: No commits 2026-09-04: No commits 2026-09-05: No commits 2026-09-06: No commits 2026-09-07: No commits 2026-09-08: No commits 2026-09-09: No commits 2026-09-10: No commits 2026-09-11: No commits 2026-09-12: No commits 2026-09-13: No commits 2026-09-14: No commits 2026-09-15: No commits 2026-09-16: No commits 2026-09-17: No commits 2026-09-18: No commits 2026-09-19: No commits 2026-09-20: No commits 2026-09-21: No commits 2026-09-22: No commits 2026-09-23: No commits 2026-09-24: No commits 2026-09-25: No commits 2026-09-26: No commits 2026-09-27: No commits 2026-09-28: No commits 2026-09-29: No commits 2026-09-30: No commits 2026-10-01: No commits 2026-10-02: No commits 2026-10-03: No commits 2026-10-04: No commits 2026-10-05: No commits 2026-10-06: No commits 2026-10-07: No commits 2026-10-08: 5 commits 2026-10-09: 13 commits 2026-10-10: 5 commits 2026-10-11: 7 commits 2026-10-12: 1 commits 2026-10-13: 2 commits
Less
More
Show:
2026
Oct 13 · 2 commits
Add an experimental XLE parser and anonymize XLE files
4314c69 Ahmad Fall 1 files +142
Add an experimental XLE parser and anonymize XLE files
bd8a036 Ahmad Fall 12 files +362 -16
Oct 12
Docs update
0c5698d Ahmad Fall 16 files +47 -47
Oct 11 · 7 commits
Files with exactly the same content are the same ECG: they now share one ECG pseudonym, also across runs and patient folders, while each copy is still written. The stats count distinct ECGs from the anonymized file names, so formats without an ECG ID field are counted too.
a4d2f1c Ahmad Fall 7 files +115 -36
Each anonymized file is now named <anonymized_patient_id>_<anonymized_ecg_id>.<extension> instead of an edited raw name, since a raw name can hold identity in any form. The raw name stays in the catalog. With --anonymize-patient-folders only the patient folder is renamed, its sub-folders keep their names.
0a643b7 Ahmad Fall 10 files +220 -177
Docs update
30ed6c3 Ahmad Fall 5 files +21 -14
Add a duplicate column in CSV for anonymization
67a9dc7 Ahmad Fall 5 files +37 -1
Trust the patient folder for the patient ID and count raw and anonymized files from disk
83763bf Ahmad Fall 11 files +482 -232
Match the patient folder name inside the patient ID, rename the pseudonym columns and write anonymization stats
2e2878b Ahmad Fall 11 files +196 -103
Show patient folder name as original patient ID and add anonymization stats
8ec4cbf Ahmad Fall 12 files +284 -8
Oct 10 · 5 commits
Add --group-by-patient-folders and replace the patient ID only when trusted
330ddfb Ahmad Fall 8 files +427 -167
Group patients only by patient folder
cc60485 Ahmad Fall 5 files +87 -62
Allow anonymizing patient folders without --patients-dir-name
c9fb0f6 Ahmad Fall 5 files +139 -53
Anonymization: patient folders, single files and UUID ECG pseudonyms
a63b265 Ahmad Fall 31 files +1072 -247
Docs update
ec99c2d Ahmad Fall 1 files +1 -1
Oct 9 · 13 commits
Docs update
fc38119 Ahmad Fall 6 files +455 -777
ECG anonymization
8a04395 Ahmad Fall 44 files +4394 -399
Rebuild the docs from main when a release is published
39a9bd1 Ahmad Fall 1 files +16
Release v1.1.1
a1e96ec Ahmad Fall 2 files +52 -6
Show the detected format and parser in file_format
edad9f2 Ahmad Fall 4 files +20 -3
Add AliveCor Kardia JSON parser
8c07541 Ahmad Fall 2 files +417
Add AliveCor Kardia JSON parser
7e14541 Ahmad Fall 20 files +70 -28
Store each wave boundary as its own annotation
3f917dd Ahmad Fall 10 files +55 -26
Store each wave boundary as its own annotation
4d1be85 Ahmad Fall 4 files +12 -10
Sierra and Mortara parsers stored measurement values both in measurements and in annotations. Values with a measurement field now go only to measurements, all other values stay in annotations.
61b1d4b Ahmad Fall 2 files +30 -25
Docs update
a255640 Ahmad Fall 1 files +1058
Docs update
f35806a Ahmad Fall 6 files +1359
The default R-peak detector no longer stops after an artifact, finds no beats on flat signals and no longer counts T waves as beats. - Lead derivation, resampling and normalization give correct values and units on raw and physical leads. - DeepFADE keeps the input amplitude and is marked experimental. - EDAN Holter support is marked experimental. GE MAC 2000 and BeneHeart R12 are removed: they had no specification and no real sample. - DICOM measurements, MFER multi-frame files, GE MUSE units and statements, and several file edge cases are handled correctly. - Batch parsing no longer keeps every record in memory, and long recordings parse and plot with much less memory.
f76b39e Ahmad Fall 93 files +5128 -2846
Oct 8 · 5 commits
Stop filling in a sampling rate the file does not give
10f015c Ahmad Fall 5 files +52 -6
Warn when the sampling rate is missing from the file
eb5cf52 Ahmad Fall 9 files +188
Fix and harden all ECG parsers, report only stored values
3d742c0 Ahmad Fall 39 files +11744 -6490
Add ChecksumWarning and expose ISHNE checksum validity
9f45244 Ahmad Fall 6 files +47 -7
Harden ISHNE Holter parser and extend unified schema
85e38d1 Ahmad Fall 20 files +413 -75
Jul 7 · 4 commits
Docs update
8e3e538 Ahmad Fall 3 files +115 -121
Docs update
ae237e8 Ahmad Fall 2 files +223 -107
Docs update
66dd24a Ahmad Fall 1 files +9 -2
Fix raw-vs-physical lead labeling and DICOM baseline scaling
f0002ed Ahmad Fall 16 files +155 -35
Jul 6 · 2 commits
Release v1.0.2
5b1e776 Ahmad Fall 3 files +30 -98
ISHNE Holter parser: improve header parsing (pacemaker reading)
dc416fc Ahmad Fall 2 files +234 -132
May 28 · 3 commits
Add support for EDAN SE Holter ECG (.arc)
36fc0b5 Ahmad Fall 3 files +334 -52
Add support for EDAN SE Holter ECG (.arc)
274f66f Ahmad Fall 2 files +62 -7
Add support for EDAN SE Holter ECG (.arc)
b1cf334 Ahmad Fall 119 files +719 -3
Mar 20 · 3 commits
Bug fix on tests
91c3fc2 Ahmad Fall 1 files +32 -13
Refactor normalization methods for better clarity
dc86182 Ahmad Fall 2 files +343 -157
Update noramization methods to normalize per lead and per ecg. Add support for 1D, 2D and 3D arrays.
5bb00dc Ahmad Fall 2 files +85 -18
Mar 19 · 8 commits
Support min-max, z-score, and amplitude normalization across multiple leads independently. Accepts list[Lead], 1D array, or 2D array (n_leads x n_samples). Return type matches input type: Lead in → Lead out, numpy in -> numpy out. Add title param to plot_12lead/iplot_12lead, plotly_white template for interactive plots, seaborn-whitegrid for static plots, show_grid defaults to False.
e9dfa9e Ahmad Fall 2 files +63 -36
Add list[Lead] and 2D array overloads to normalize functions for per-lead normalization
d69987a Ahmad Fall 2 files +99 -18
Switched to seaborn-v0_8-whitegrid — white background with subtle gridlines.
3b7e64c Ahmad Fall 1 files +1 -1
Plots method update
c9df1e8 Ahmad Fall 2 files +5 -3
Update plot_12lead method to support title argument. Update style of interactive plots with plotly white
38c7552 Ahmad Fall 2 files +21 -2
Docs update for 1.0.0 release
24e8f56 Ahmad Fall 1 files +2 -11
Support min-max, z-score, and amplitude normalization across multiple leads independently.
a300dfb Ahmad Fall 8 files +112 -13
Readme update
60e6b2a Ahmad Fall 1 files +1 -1
Mar 7 · 3 commits
Docs update
9fdf32a Ahmad Fall 2 files +35 -2
Release v0.0.9 — ADC resolution pipeline
e9569e2 Ahmad Fall 1 files +1 -1
Rename sample_rate to sampling_rate across entire codebase
0917852 Ahmad Fall 52 files +269 -269
Mar 6 · 4 commits
Add resolution_unit and adc_resolution_unit fields to Lead, update units semantics across all 12 parsers
c6d80da Ahmad Fall 22 files +183 -55
Auto-detect is_raw from scaling metadata, add adc_resolution field, fix resolution unit conversions.
c24a642 Ahmad Fall 16 files +149 -16
Auto-detect is_raw from resolution/offset metadata in all parsers, fix plotting and GE MUSE test fixtures
6cc7453 Ahmad Fall 3 files +12 -8
Auto-detect raw ADC signal from scaling metadata in all 12 parsers Parsers no longer hardcode 'is_raw=True' unconditionally. Instead, is_raw is derived from the resolution/offset metadata: when resolution == 1.0 and offset == 0.0 the samples are already in physical units (is_raw=False), otherwise they are raw ADC counts (is_raw=True). This prevents double-scaling when auto_scale=True encounters data that is already in physical units. Updated Lead docstrings to clarify that units describes the target unit when is_raw=True and the actual unit when is_raw=False.
f3eab51 Ahmad Fall 29 files +1152 -304
Mar 5
* Automatic scaling of ECG signal from raw ADC when parsing by default (can be disabled with argument), by default parsers will convert if possible to mV (if resolution informations are present) * Methods for converting ECG samples to mV * Docs update
de6da73 Ahmad Fall 37 files +2185 -898
Mar 4 · 4 commits
Gitlab development repository URL fix
ffe9130 Ahmad Fall 1 files +2 -2
Add GitLab install option to getting started docs (development version)
aa29da3 Ahmad Fall 1 files +12 -1
Add ECGRecord __repr__ and plot() method for clean console display and quick plotting
62cd97b Ahmad Fall 1 files +111
Add FileParser.supported_formats() with format metadata on all 12 parsers
9ae43c5 Ahmad Fall 13 files +70
Mar 3 · 6 commits
Simplify multi-lead plots: full signal, configurable grid layout Rewrite plot_leads, plot_12lead, iplot_leads, and iplot_12lead to plot full signals vertically by default with optional rows/cols grid params. plot_12lead and iplot_12lead now assign standard 12-lead names (I, II, III, aVR…V6) to unnamed inputs and no longer crop to a fixed duration or use the paper ECG 4×4 grid layout. Added STANDARD_12LEAD constant and _grid_shape() helper to _core.py. Updated plotting API docs.
b799ace Ahmad Fall 5 files +203 -139
Multi-lead numpy array support, Activity page, v0.0.8 - plot_leads, plot_12lead, plot_quality, iplot_leads, iplot_12lead now accept raw numpy arrays with fs=parameter - New LeadsLike type alias for multi-lead inputs - Static plots no longer force matplotlib Agg backend
ba1a770 Ahmad Fall 13 files +1251 -86
Docs update
ec806bf Ahmad Fall 1 files +9 -13
Docs update
3bc25c8 Ahmad Fall 1 files +6 -6
Docs update
5333470 Ahmad Fall 3 files +43
Docs update
0e8e827 Ahmad Fall 6 files +62 -2
Mar 2 · 14 commits
Docs update
02b574a Ahmad Fall 6 files +46 -12
Bug fix in matplotlib static plots - Docs update - Publish to PyPI
395abaf Ahmad Fall 3 files +4 -3
Bug fix in matplotlib static plots - Docs update - Publish to PyPI
390a4d4 Ahmad Fall 43 files +1741 -792
Bug fix in matplotlib static plots - Docs update
b8de506 Ahmad Fall 4 files +679 -66
Bug fix in matplotlib static plots - Docs update
58744cc Ahmad Fall 6 files +360 -170
Update docs, migrate to sphynx
b781d1c Ahmad Fall 92 files +713 -4456
Update docs
c703b83 Ahmad Fall 56 files +2630 -51
Methods supports now data models and raw numpy arrays
301ca4a Ahmad Fall 20 files +880 -129
Run tests
639bde1 Ahmad Fall 1 files +2 -2
Run tests
634f37f Ahmad Fall 2 files +8 -6
Run tests
68369fd Ahmad Fall 4 files +49 -1
Readme update
6abfdb3 Ahmad Fall 1 files +28 -24
Custom domain configured (ecgdatakit.ummisco.fr)
4efb9e9 Ahmad Fall 4 files +3 -2
Initial release v0.0.6
771e46e Ahmad Fall 102 files +16816