Docs Getting started Preparing KM coordinates
Getting started

Preparing KM coordinates

The survival templates (PSM and PSM-cure) need two inputs from a published trial or your own trial report: digitized (time, survival) coordinates and the numbers-at-risk table. The quality of these two inputs sets the ceiling on reconstruction fidelity, so it pays to prepare them carefully before uploading.

What you need from the publication or trial report

Before you start, find these in the paper, its supplement or your own trial report:

  • The Kaplan–Meier figure for the arm you want to model, as a clear image (vector PDF or a high-resolution screenshot).
  • The numbers-at-risk table printed beneath the curve, with the time points it reports.
  • The total sample size (N) for the arm.
  • The total number of events, if reported. This is optional but improves the reconstruction by constraining inferred censoring.
  • The time unit. EasyHTA works in months: convert your coordinates and the at-risk interval to months before uploading.

Digitizing the curve

Digitizing turns a picture of the curve into numeric coordinates. Any plot digitizer works; a common free choice is WebPlotDigitizer. Whichever tool you use, the steps are the same:

  1. Calibrate the axes. Mark two known points on each axis (for example survival 0 and 1 on the y-axis, and two time labels on the x-axis) so the tool can map pixels to values.
  2. Capture the origin. Make sure you have a point at time = 0, survival = 1; survival curves start at 1.
  3. Sample enough points, especially around steps. Place a point just before and just after each visible drop so the step pattern is preserved. Smooth stretches need only a few points.
  4. Export to CSV with time and survival columns.
Aim for a few hundred points. Very dense exports are slower to process and add no fidelity; thin them out before uploading.

CSV format

The upload needs a plain CSV with just two numeric columns, time and survival (survival as a probability between 0 and 1). A header row only needs to contain the words “time” and “survival” (case-insensitive), so column order doesn’t matter and descriptive names like Time (months) are fine; a file with no header row is also accepted, with columns identified from their values. Any further column is rejected rather than ignored, so keep the file to just those two columns.

km_arm_a.csv
time,survival 0,1.000 1,0.984 2,0.972 3,0.956 …
  • Save as a plain .csv, .txt, or .tsv file (comma, semicolon, tab, or pipe separated), not an .xlsx spreadsheet.
  • Survival must be a probability between 0 and 1. If your tool exported percentages (for example 95 instead of 0.95), divide the column by 100.
  • Numbers only: no patient identifiers or text labels.
  • The at-risk table does not belong in the CSV; it is entered separately in the app (see below).
  • Keep the file under 5 MB and 5,000 rows. A digitized curve is normally tens to a few hundred points, so this is only a guard against the wrong file being picked.

The at-risk table

The numbers at risk are entered in the app alongside the upload, on the same step, before you click Reconstruct IPD. They tell the Guyot algorithm how many patients remained in follow-up at each reported time, which is what makes patient-level reconstruction possible.

  • Read the counts at the interval the publication reports (the time step, often 3, 6, or 12 months).
  • Enter one value per grid point: time 0, one step, two steps, and so on up to the max time. The form shows the exact times it expects.
  • The first at-risk value should equal (or be below) the total sample size N.
  • A single trailing “0 at risk” is tolerated.
The time step must match the table. Entering yearly counts while the step is set to quarterly (or vice versa) makes the reconstructed curve drift from the digitized one. After reconstruction, use the overlay to confirm the two curves track each other. See The Guyot algorithm for why this matters.

Pre-upload checklist

  • Survival values are probabilities between 0 and 1, not percentages.
  • The origin (time 0, survival 1) is captured.
  • There are points just before and after every visible step.
  • The at-risk interval matches the time step you will enter.
  • The first at-risk value is at or below total N.
  • Time units are consistent between the curve and the at-risk table.
Want to practice first? Click Run Demo when creating a new project (or Run Demo Analysis on the Survival curves tab inside an existing one) to load a demo dataset without digitizing your own curve.

Survival analysis, cost-effectiveness and budget impact for health technology assessment teams.

EasyHTA on LinkedIn LinkedIn

Graphics and branding by Ilari Ilvessalo · EasyHTA Oy 2026. All rights reserved.