| --- |
| license: mit |
| tags: |
| - icml2026 |
| - open-reproductions |
| - time-series |
| - medical |
| --- |
| |
| # 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](https://arxiv.org/abs/2605.00130), OpenReview |
| [`lrRBHFIgaK`](https://openreview.net/forum?id=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](https://github.com/DL4mHealth/Medformer/tree/891f65b8a7e77188508fd8c56e10ccdba7fc1e18). |
|
|
| Full write-up, per-claim evidence and the agent session trace: |
| **[the Trackio reproduction logbook](https://huggingface.co/spaces/riteshhf/repro-learning-fingerprints-for-medical-time-series-with-redundancy-constrained-information-maxi)**. |
|
|
| ## 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`](https://huggingface.co/datasets/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 |
|
|
| ```bash |
| 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 |
| ``` |
|
|