AskDimitri Stats · Meta-analysis · Version 1.1

Reconstruct patient data from Kaplan-Meier curves

For survival meta-analyses: load the published figure, mark its axes, trace each curve, type the numbers at risk printed under it, and get individual patient data reconstructed with the algorithm of Guyot et al. (2012), checked against the curve you traced.

The image is read in your browser and never uploaded. Nothing you load, click or type is sent anywhere.

  1. Loadthe figure
  2. Axesfour ticks
  3. Traceeach arm
  4. At riskthe numbers
  5. Checkand analyse

Step one

Load the figure

A screenshot of the figure (PNG, JPG or WebP): choose a file, drop it on the box, or paste it with Ctrl+V or Cmd+V. Crop it to the plot and the numbers at risk; the larger the image, the more precise the reading.

Drop an image here, or paste it.

Step two

Set the axes

Click two labelled ticks on the time axis and two on the survival axis, far apart (0 and 36 months; 0 and 1). Type each tick's value. The next tick to mark is chosen for you; to move one, choose it and click again.

not marked
not marked
not marked
not marked

Step three

Trace each arm

Choose an arm, press Trace it, then click once on its line where nothing else touches it. Check the points: drag a stray one, delete it, or add any drop it missed. Hide the legend if the trace wanders into it. Dashed or crossing curves: click their corners yourself with Adds a point.

Step four

Numbers at risk

As printed under the figure: the times of the table, then each arm's numbers at those times, its number of patients and, if the paper reports it, its total number of events. Without a numbers-at-risk table the reconstruction relies on the totals alone and is much less accurate; the result says so.

Step five

Reconstruct and check

The verdict compares the reconstructed curves with the ones you traced, and the reconstructed numbers at risk with the published ones. Then analyse the patients in AskDimitri Stats, or download them.

How it works, and its limits

Reconstruction is an approximation. It recovers patient data consistent with the published curve and numbers, not the trial's own records. Report the validation (how far the reconstructed curves are from the digitized ones, and whether the numbers at risk match) in the manuscript, and say that the analysis used reconstructed data.

The method. The algorithm of Guyot et al. (2012), translated line by line from the R code published with the paper: within each interval of the numbers-at-risk table, censoring is assumed to happen at a constant rate and adjusted until the estimated number at risk matches the next published number; the events are those that make the curve follow the digitized one; the total number of events, when reported, fixes the last interval. It is checked against an independent Python port (the same patients, exactly) and on 270 simulated trials.

What makes it accurate. A large, sharp image; a careful axis calibration; a point at every drop; the numbers at risk at every time printed. Curves hidden under another curve, very thick lines and heavy censoring near the end of follow-up are where errors gather.

Related work. IPDfromKM (Liu, Zhou and Lee 2021) implements the same idea in R and as a web app.

Part of AskDimitri Stats. See the Privacy policy.

Made with the free AskDimitri Stats: askdimitri.net/tools/stats/reconstruct