The data¶
The PhysioNet/Computing in Cardiology Challenge 2019 corpus, published under the Open Database License.
That licence is why this project exists in public. The trained models can be shared on a model hub and every number can be reproduced by a stranger. Credentialed corpora such as MIMIC and eICU allow neither: PhysioNet requires that models trained on them stay on the platform.
| patients | 40,336 across two hospital systems (A: 20,336, B: 20,000) |
| rows | 1,552,210, one per ICU hour |
| septic | 2,932 patients, 7.3 percent |
| channels | 8 vital signs, 26 laboratory values, 6 demographic fields |
| size | 42 MB |
| corpus digest | ef46d3e6ec2497f7279ef352acdc32521cf54d42bb785ba2f3df4f2e179d854f |
Never committed¶
Nothing under data/ reaches the repository, the wheel or a model repository.
prodrome data fetch downloads it and prodrome data prepare computes a digest over
the sorted per-patient content hashes, which is stable across machines and changes if a
single hour of a single patient changes.
The ignore rules are anchored to the repository root. An unanchored data/ also
matches src/prodrome/data/, which in this repository silently excluded a source
package from a commit and from the linter before it was caught.
The label¶
SepsisLabel turns on six hours before a recorded clinical onset, which the
organisers defined as suspicion of infection, meaning a culture drawn and antibiotics
given within a defined window, together with an increase in SOFA score.
It is a proxy for a biological event, not the event. Every document in this project says so, because a model that quietly treats a proxy as ground truth is the standard dishonesty of this field. What Prodrome predicts is the moment a clinician was about to write something down.
The channels¶
Vital signs are charted most hours: heart rate, oxygen saturation, temperature, systolic and diastolic pressure, mean arterial pressure, respiratory rate, end-tidal carbon dioxide.
Laboratory values are ordered rather than sampled, so most hours have none. That asymmetry is the single most important thing about this dataset: the pattern of which values exist encodes clinician suspicion. See What the model reads.
Demographics are age, sex, two unit indicators, the time between hospital and ICU
admission, and ICULOS, the ICU hour.
Rows are contiguous with no gaps, which the parser checks, so shifting by k rows is shifting by k hours.
What this corpus cannot support¶
There is no Glasgow Coma Scale, so:
- qSOFA is two of three components and can never reach 3. It is named
qsofa_partial. - SOFA covers four of six organ systems: coagulation, liver, cardiovascular and renal.
Respiration needs PaO2, which is absent. It is named
sofa_partial.
SIRS is complete, since all four of its components are present.
Calling a partial score by its full name would make the baseline look worse than the real thing and flatter the models, so the names carry the suffix everywhere.
The synthetic corpus¶
The test suite runs entirely on a corpus the package generates, so a fresh clone with no download and no data licence still proves the pipeline works. It reproduces the shape rather than the medicine: hourly rows, vitals present most hours, laboratory values present rarely, stays of very different lengths, and a minority that turn positive.
Citation¶
Reyna MA, Josef CS, Jeter R, et al. Early Prediction of Sepsis From Clinical Data: The PhysioNet/Computing in Cardiology Challenge 2019. Critical Care Medicine 48(2): 210-217, 2020.