TS-Fingerprint — independent reproduction code (ICML 2026 #7348)
Independent re-implementation of "Learning Fingerprints for Medical Time Series with
Redundancy-Constrained Information Maximization"
(arXiv 2605.00130, OpenReview
lrRBHFIgaK).
The paper released no code. A GitHub code search for TS-Fingerprint returns zero
repositories and the paper carries no code link, so every component here was derived from
the paper text (Sec. 3.2 architecture, Sec. 3.3 losses, Sec. 3.4 head, Sec. 4.1
hyperparameters). Data preprocessing follows the paper's own stated protocol reference,
DL4mHealth/Medformer.
Full write-up, per-claim evidence and the agent session trace: the Trackio reproduction logbook.
Files
| File | Purpose |
|---|---|
model.py |
TSFingerprint (Perceiver-style cross-attention bottleneck, masked F′-only decoder, TCR diversity loss, attention-pooling head) + TiMAE and SimMTM baselines |
train.py |
pre-train → fine-tune harness; subject-wise splits, Adam 1e-3/1e-4, ≤100 epochs, early stopping on val F1 (patience 10), macro Acc/P/R/F1/AUROC |
schedule.py |
small GPU-slot scheduler for running the config grids locally |
prep_adftd.py |
ADFTD (OpenNeuro ds004504) → 69,752 windows, reproducing Medformer's notebook |
prep_ptbxl.py |
PTB-XL (PhysioNet) → 213,880 windows, 5 diagnostic superclasses |
audit_claim1.py |
Claim 1: fixed k×d output, learnable Q, k ≪ T, strict X → F′ → X̂ chain |
audit_theorem31.py |
Claim 2: numerical audit of Theorem 3.1, both legs, with controls |
audit_table1_rank.py |
Claim 5: re-parses all 420 Table-1 values and recomputes the average rank |
analyze_adftd.py, analyze_sweep.py |
Claims 3/4 and Claim 6 summaries + figures |
jobs_*.json |
the exact config grids that were run |
Data
Processed ADFTD arrays:
riteshhf/tsfp-repro-adftd-processed.
PTB-XL must be fetched from PhysioNet (see prep_ptbxl.py; the
physionet-open S3 mirror works without credentials).
Reproducing
python prep_adftd.py --root data/ADFTD --out data/ADFTD/processed
python train.py --data-dir data/ADFTD/processed --model tsfp --mode pretrain_ft \
--use-div 1 --k 8 --mask-ratio 0.6 --seeds 41 42 43 --out rec_div.json