Dose-response curve fitter

Fits a four-parameter logistic to dose and response data and reports the midpoint, plateaus and slope.

Datadose, response: one pair per line

EC50

What a dose-response curve fit gives you

Paste dose and response pairs and the tool fits the four-parameter logistic, the sigmoid that almost every pharmacology and toxicology package uses. Four numbers come out of it: the baseline the response starts from, the maximum it reaches, the dose halfway between the two, and how steeply it turns. The midpoint is the EC50 or ED50, and it is the number that gets reported, but it is only trustworthy when the other three are supported by the data.

y = Bottom + (Top − Bottom) / (1 + 10^((log EC50 − log dose) × Hill slope))

The curve is fitted on the logarithm of the dose, because that is the scale on which the response is symmetric. Every observation is used, replicates included, and the parameters are found by non-linear least squares (Levenberg-Marquardt) started from several positions along the dose range so that the fit does not settle in a poor local minimum.

What the four parameters mean

ParameterMeaning
BottomResponse with no drug, the lower plateau
TopMaximum response the dose can produce, the upper plateau
EC50 or ED50Dose giving a response halfway between bottom and top
Hill slopeSteepness of the transition; 1 for simple one-site binding

The span, Top minus Bottom, is the size of the whole effect and is reported beside the Hill slope. Potency and efficacy are different things: a compound with a low EC50 is potent, one with a large span is efficacious, and the two do not have to go together.

EC50, ED50, IC50 and LD50

They are all the midpoint of the same curve, named after what is being measured. Use this page for any of them; the fit does not care whether the response rises or falls, and a falling curve simply comes out with a negative Hill slope. For pages written around one of them, see the EC50 calculator, theIC50 calculator, theLD50 calculator and theLC50 calculator. To turn an IC50 into a binding constant use the Cheng-Prusoff converter, and for a standard curve read backwards to unknown samples use theELISA analyzer.

Fixing the top and the bottom

Two options let you hold a plateau at a known value. Fix bottom at 0 and top at 100 when the responses are already normalised to a vehicle control and a positive control, which is the usual case for percent inhibition or percent viability. Constraining a plateau removes one free parameter, so the midpoint and the slope become much better determined when the highest or lowest dose stops short of the plateau. The cost is that the constraint is an assumption: if the data clearly level off at 80 rather than 100, forcing the top to 100 pushes the EC50 to the right and inflates the residuals.

Worked example

The built-in example is seven doses from 0.1 to 100 with three replicates each, rising from about 4 to about 97. The unconstrained fit gives an EC50 of 3.25, a Hill slope of 1.00 and a span of 98.66, with Top 99.88, Bottom 1.22 and R² = 0.9965. The slope of 1 is what a single binding site predicts, and both plateaus are within about one unit of the normalised 0 and 100.

Ticking both constraints changes very little, as it should when the data already define the plateaus: the EC50 moves to 3.15 and the Hill slope to 0.98, with R² still 0.9964. A large change when you tick those boxes is a sign that the data do not reach the plateaus.

How to format the data

One dose per line, followed by one or more responses separated by spaces, tabs or commas, so a paste straight out of a spreadsheet works. Extra values on a line are treated as replicates, and repeating the same dose on several lines does the same thing. A header row is ignored. Doses must be above zero, because a zero cannot sit on a log axis; enter the vehicle control as a very small dose or leave it out and fix the bottom instead.

When the fit cannot find a midpoint

If the responses are still climbing at the highest dose, or have not come down to a baseline at the lowest, the curve has no plateau to anchor and the midpoint slides off to a dose that was never tested. Rather than print that number, the tool says the midpoint is not defined and shows the points on their own. The cure is more doses at the open end, or a constraint if the assay really does define that plateau. A poor R² with plateaus that look fine usually means an outlier, a non-monotone response, or a curve that is not sigmoid at all.

Frequently asked questions

What is a four-parameter logistic curve?

It is the standard sigmoid used for dose-response data: a bottom plateau, a top plateau, a midpoint concentration and a slope. Written on a log dose axis it is y = Bottom + (Top − Bottom) / (1 + 10^((log EC50 − log dose) × Hill slope)). The four parameters are fitted together by non-linear least squares, which is why all four have to be supported by the data.

What is the difference between EC50 and ED50?

Nothing mathematical. EC50 is the half maximal effective concentration, used when the dose is a concentration in a dish; ED50 is the half maximal effective dose, used when a whole animal or subject receives a dose. Both are the midpoint of the same fitted curve, and this tool reports whichever you call it.

What does the Hill slope mean?

It is the steepness of the transition between the plateaus. A slope of 1 is what a simple one-site binding model gives. Above about 1.5 the response is steeper than that, which suggests positive cooperativity or a threshold; below about 0.7 it is shallower, which suggests negative cooperativity, more than one binding site class, or a heterogeneous cell population. A negative slope simply means the response falls with dose, as an inhibition curve does.

When should I fix the top or the bottom?

Fix them when the experiment defines them and the data do not. A normalised assay in which the vehicle control is set to 0 percent and the positive control to 100 percent justifies fixing both, and doing so gives a much more stable EC50 when the highest dose has not reached the plateau. Never fix a plateau to a value the data contradict, because that forces the midpoint to move.

How many doses do I need?

At least four, and six to ten spread evenly on a log scale is normal practice, with two or three at each end that clearly sit on the plateaus. Replicates help the precision of the fit but do not replace coverage: ten replicates at four doses still leave a plateau undefined if none of the doses reaches it.