For the CLIF Consortium · Fully synthetic · Openly shareable

Realistic CLIF datasets,
safe to share.

Use the ready-made data, or pull the levers and generate your own — clinically realistic, CLIF-conformant, and provably synthetic. No credential. No data-use agreement.

CLIF 2.1 today ICU + whole-hospital Runs on a laptop MIT licensed

From aggregate stats to a dataset you can share

CLIFForge fits a compact parameter pack to aggregate CLIF statistics, then samples whole hospitalizations offline — so the output lands in the real statistical region while staying provably synthetic.

01 · Real aggregates

Fit from CLIF statistics

Marginals, couplings, and state transitions are fitted from aggregate statistics only — never row-level records.

fit
02 · Parameter pack

A shareable, versioned pack

Distributions and couplings condense to a versioned pack (~84 KB). No real data lives inside it.

sample
03 · Latent acuity spine

Coupled patient trajectories

Each synthetic stay follows an internal acuity trajectory, keeping vitals, labs, and organ support coupled (vasopressors ↔ hypotension).

emit
04 · Sampled CLIF tables

CLIF 2.1-conformant Parquet

Offline sampling covers all 28 CLIF 2.1 tables; share packages write the 25 website-badged beta/concept Parquets — clinically coherent, and provably synthetic.

🔒 Private by construction. Generation samples from aggregate parameters and never copies a record — no synthetic patient traces back to a real one.

  1. 1

    Choose

    Grab the ready-made data, or write a short TOML recipe.

  2. 2

    Generate or grab

    Run clif-forge generate, or git clone the committed samples.

  3. 3

    Inspect & validate

    Parquet per table, plus the synthetic-vs-real report.

Take the data — or make the data

Every CLIFForge dataset is both a finished product and a recipe. Grab what's shipped, or change the recipe and generate a cohort that's yours.

01

Use the ready-made datasets

Realistic, CLIF 2.1-conformant samples are committed in the repo — an ICU cohort and a whole-hospital population. Full-size masters (85k ICU, 365k whole-hospital) ship as exactly 25 website-badged tables (clif_<table>_2.1_{beta|concept}.parquet) on Dropbox. Clone and go.

# clone and inspect — no credential, no fit
git clone https://github.com/sajor2000/clif-forge.git
02

Pull the levers, make your own

Install the package, edit a short recipe, and generate a distinct cohort that still looks like the real thing. No two recipes produce the same data — and every one is reproducible from its recipe.

# install and generate your own cohort
pip install git+https://github.com/sajor2000/clif-forge.git
clif-forge presets
clif-forge generate --preset high-acuity --n-patients 5000 --out ./my-icu
# teaching rare events: --preset rare-support

Why the data looks like the real thing

CLIFForge fits distributions, couplings, and patient trajectories to aggregate CLIF statistics, then samples offline from a versioned parameter pack. It lands in the real statistical region while staying provably synthetic.

Empirical value shapes

Labs use an empirical-quantile marginal through a Gaussian copula, so skewed, long-tailed distributions (creatinine's kidney tail, lactate's skew) match real — not just their means.

Real missingness

Per-stay lab presence is correlated, so co-ordered panels — a metabolic panel, an arterial blood gas — are measured together rather than independently. CI locks mean ABG co-occurrence on the shareable base pack.

Real trajectories

Length-of-stay tails, organ support, and a deterioration-toward-death course (falling pressure, rising creatinine) track the real cohort — with realistic ER/OR/transfer patient flow.

🔒

Private by construction

Generation samples from aggregate parameters and never copies a record. No synthetic patient traces back to a real one — verified with distance-to-closest-record and identifiability metrics.

Read the full synthetic-vs-real validation report →

What you control

Change any lever and get a new, still-clinically-realistic, still-conformant dataset. Finer knobs are on the Python API.

LeverWhat it changesSet with
Population shapeICU cohort vs. whole-hospital populationmode
SizeAny number of encounters, on any machinen
DemographicsAge shift, Hispanic fraction, exact race mixage_shift, race_target
Illness ratesVentilation, mortality, vasopressors, CRRT, proning, rare-event ECMOimv, ecmo_stay…
PresetsShipped recipes: high-acuity, older-cohort, sepsis-heavy, rare-support--preset / clif-forge presets
Patient flowAdmission mix, ward→ICU and outside-hospital→ICU transfersadmission_route
Compute footprintRAM and CPU dials — any cohort runs on an ordinary laptop--chunk-size, --max-threads

What ships today

85k
encounter ICU cohort master
365k
whole-hospital population master
25
CLIF 2.1 share tables (beta/concept)
0
real records in the output

One engine, every CLIF version

CLIFForge is versioned to the CLIF standard it emits and is schema-driven — so a new version is a refit step, not a rewrite. The version each dataset targets is recorded in its manifest.

Available now

CLIF 2.1

Schemas, mCIDE, and the fitted base pack all target 2.1. Every dataset here is 2.1-conformant.

Planned

CLIF 3.0

Lands once 3.0 is finalized and there's aggregate data to fit it to — vendor the dictionary, refit, ship.

Ahead

Future versions

The same path for every version, so the consortium has one place to pull synthetic data for whichever CLIF version a study needs.

A single home for the datasets is planned at clif-icu.com (not yet live).