Downloads · 30 days
0
anonymous-double-blind/paper-to-pulse
paper-to-pulse is a machine learning model from anonymous-double-blind. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Evidence-aligned source, frozen inference assets, reviewer demo, and verified result artifacts for the V23 ECG image-digitization pipeline accompanying the anonymous manuscript Paper to Pulse: A Height-Aware Spatiotem…
Downloads · 30 days
0
Access
Public
Updated Jul 10, 2026
Repo size
949 MB
Likes
0
Public
Click a slice to open those files.
.pth521 MB · 55%
From the Hugging Face model README
Evidence-aligned source, frozen inference assets, reviewer demo, and verified result artifacts for the V23 ECG image-digitization pipeline accompanying the anonymous manuscript Paper to Pulse: A Height-Aware Spatiotemporal Architecture for ECG Digitization.
Primary independent result: official private-leaderboard SNR 20.147 dB, rank 24 / 1,069, in the PhysioNet ECG Image Digitization Challenge.
| Evidence | Cohort | Result | Interpretation |
|---|---|---|---|
| Official private challenge leaderboard | hidden challenge test set | 20.147 dB; rank 24 / 1,069 | Primary independent challenge result |
| LUDB v1.0.1 external waveforms | 200 / 200 records | mean record SNR 21.393 dB (95% bootstrap CI 20.854–21.904) | Waveform-cohort transfer through the same renderer |
| ECG-Image-Kit robustness | 20 records × 4 profiles; 80 / 80 successful runs | clean 23.19, mild 22.35, moderate 21.77, severe 20.35 dB | Paired, same-renderer degradation study |
| Automated interval consistency | 190–197 valid pairs, depending on interval | HR MAE 0.174 bpm; other MAEs 1.85–10.95 ms | Algorithmic consistency only, not clinical validation |
Scope of “external.” LUDB supplies waveform-disjoint records from a source
not listed among the training databases. Those waveforms were rendered through
the same ECG-Image-Kit generator used by the imaging pipeline, pinned to
commit 27b90f56896c9fc78b05a83ca14844ea2637aa0b.
These experiments therefore do not establish cross-generator, scanner,
paper-vendor, or acquisition-device generalization.
Open demo.ipynb in Google Colab or Kaggle and run all cells. It
is preconfigured for this repository and downloads the included inference-only
V23 export, both rectifier checkpoints, and the public challenge demo assets.
A free GPU is sufficient; CPU execution is slower.
The demo assets are for interactive illustration and pipeline checking only. They are not the LUDB external cohort and are not used to substantiate the v4 external, robustness, or interval results.
The repository includes the assets needed for reviewer inference:
| File | Bytes | SHA-256 |
|---|---|---|
v23_paper_to_pulse.pth | 365,826,091 | 2ac8acab2c06644661e7ef93c2304ffa3b3966c2139e4dbbe531238025448b45 |
rectifier/weight/stage0-last.checkpoint.pth | 57,420,817 | b7360dfce9c49305b54272cf242e93e5728823f439a8e5ad59c03b073988cfc9 |
rectifier/weight/stage1-last.checkpoint.pth | 97,834,657 | 313f1e5dafdc212977e4586ce118453866830be0fa32664e36054f7f4568a46a |
The archived full competition checkpoint was named v23_epoch038.pth and has
SHA-256
e290465929654083db9956bbbfb6886c31a9e0aa6d0fe8bbc150eded397a609e.
The smaller file released here is an inference-only export. Its 489-tensor state
dictionary is byte-canonically identical to the audited epoch-38 checkpoint;
the canonical tensor SHA-256 is
c8c7ccfcc542d2d9beef9f9151a33391b1a3e2b5c9aee043cfba013dab0c87fb.
See results/weight_manifest.json and
docs/PROVENANCE.md.
The competition path performs:
The output-free audited Kaggle source is in
notebooks/medal_pipeline.ipynb. The simpler
repository-native execution path is demo.ipynb.
The 200-record run used LUDB v1.0.1 (500 Hz, ten-second, 12-lead waveforms), no post-processing, and the competition-aligned metric with up to 0.2 s temporal alignment plus constant-offset alignment.
| Metric | Result |
|---|---|
| Successful records | 200 / 200 |
| Mean record SNR | 21.3927 dB |
| Median record SNR | 22.2024 dB |
| 95% bootstrap CI for mean SNR | [20.8542, 21.9037] dB |
| Pooled SNR | 20.3311 dB |
| Mean PCC | 0.99255 |
| Mean NMSE | 0.01232 |

Record-level and per-lead artifacts are in results/external/.
All modes were evaluated on the same 200 LUDB records. The frozen no-post path was best; smoothing and the algebraic constraint variants reduced SNR on this cohort.
| Mode | Mean SNR (dB) | Paired change vs no post (dB) |
|---|---|---|
| none | 21.393 | 0.000 |
| smooth | 19.082 | -2.311 |
| partial projection | 19.395 | -1.997 |
| full projection | 19.367 | -2.026 |
| Lead-II blend | 21.382 | -0.011 |
| smooth + projection + blend | 17.457 | -3.935 |
This is a component ablation, not a claim that every physiological constraint is harmful in every setting.
The robustness run used only supported ECG-Image-Kit options at the pinned commit—no separate renderer and no custom image overlay. Twenty paired LUDB records were rendered under four profiles.
| Profile | Successful runs | Mean SNR (dB) | Paired change vs clean (dB) |
|---|---|---|---|
| clean | 20 / 20 | 23.19 | 0.00 |
| mild | 20 / 20 | 22.35 | -0.85 |
| moderate | 20 / 20 | 21.77 | -1.42 |
| severe | 20 / 20 | 20.35 | -2.85 |

Exact profile arguments, record-level values, and confidence intervals are in
docs/METHODS.md and
results/robustness/.
The same NeuroKit2 delineator was applied to native LUDB Lead II and to the digitized Lead II.
| Quantity | Valid pairs | MAE |
|---|---|---|
| HR | 197 | 0.174 bpm |
| RR | 197 | 1.85 ms |
| QRS | 190 | 7.18 ms |
| PR | 190 | 9.11 ms |
| QT | 196 | 10.26 ms |
| QTc | 196 | 10.95 ms |
These values measure automated-analysis consistency. They are not an independent cardiologist reading study, diagnostic-accuracy result, or clinical ground truth for the digitizer. Comparisons with LUDB annotations remain in the released tables so the delineator's own error is visible.
The previously circulated 23.08 dB number is only an internal arithmetic aggregate of 13 listed per-lead values. No released record manifest, record-level predictions, evaluation output, or checkpoint metadata links it to a held-out cohort. It is not treated here as a validation, external-test, or challenge result.
The artifact checks use only the Python standard library:
python3 scripts/verify_results.py
python3 scripts/render_summary.py
The output-free notebook
notebooks/reproduce_results.ipynb runs the
same checks interactively. GPU/remote notebooks preserve the exact source used
for the reported analyses:
notebooks/medal_pipeline.ipynbnotebooks/ludb_external_validation.ipynbnotebooks/ludb_robustness.ipynbnotebooks/ludb_interval_consistency.ipynbRaw LUDB waveforms, rendered LUDB images, and prediction caches are not redistributed. The remote notebooks obtain the public waveform source at runtime and assert the pinned renderer commit before generation.
demo.ipynb repository-native reviewer demo
demo_data/ public challenge demo assets only
v23_paper_to_pulse.pth inference-only V23 state export
rectifier/ Stage-0/Stage-1 source, weights, offline wheel
docs/ provenance, methods, and limitations
notebooks/ output-free medal and LUDB analysis notebooks
results/ verified CSV, JSON, and PNG artifacts
scripts/ standard-library verification utilities
Data source for external evaluation: LUDB v1.0.1,
DOI 10.13026/eegm-h675.
The bundled rectifier code and weights derive from a publicly released challenge baseline and retain their upstream terms. The demo assets originate from the public PhysioNet/Kaggle challenge and are provided for reviewer verification. Model weights and repository-authored notebooks are released for research and review. See the upstream sources and challenge terms before redistribution or commercial use.