Workflows
Dose-Response
IC50, EC50, CC50, and NT50 with 4PL and 5PL curve fitting
A dose-response fit converts a concentration series into a single potency number with a confidence interval. Gradiance ships four variants of this workflow — they share the same machinery, only the framing changes.
The four variants
- IC₅₀ (inhibition). Concentration at half-maximal inhibition. The signal goes down with dose.
- EC₅₀ (stimulation). Concentration at half-maximal response. The signal goes up with dose.
- CC₅₀ (cytotoxicity). IC₅₀ on a viability readout. Often reported alongside an EC₅₀ as a selectivity index (CC₅₀/EC₅₀).
- NT₅₀ (neutralization). Antibody or serum titer at 50% neutralization. Doses are dilution factors rather than concentrations, but the math is identical.
Pick the variant in the new-run picker. The agent will normalize to controls automatically when it sees them on the plate, but the underlying fit is the same in all four cases.
The model
4PL (the default)
The four-parameter logistic is the right model for >90% of dose-response assays. It fits a symmetric sigmoid:
y = Bottom + (Top - Bottom) / (1 + 10^((logIC50 - logX) * Hill))- Top — upper plateau (e.g. 100% viability)
- Bottom — lower plateau (e.g. 0% viability)
- IC₅₀ / EC₅₀ — concentration at the midpoint between Top and Bottom
- Hill — slope at the inflection. 1.0 is standard; values much larger suggest cooperativity
5PL (when the curve is asymmetric)
The 5PL adds an asymmetry parameter so the curve can have a different slope on each side of the inflection. Use it when:
- The fitted residuals from a 4PL show a clear S-shape
- You have biological reason to expect asymmetry (some receptor systems, biphasic responses)
If you're unsure, fit 4PL first. The agent will flag asymmetric residuals automatically and suggest 5PL when it's warranted.
Constraints
Constraining a parameter to a known value tightens the fit and narrows the CI on the others. Common choices:
- Fix Top to 100% when the assay is normalized to a no-drug control.
- Fix Bottom to 0% when complete inhibition is expected at high dose (and observed in the data).
- Fix Hill to 1.0 when you want a comparable IC₅₀ across compounds and don't care about cooperativity.
Constraints are honest only if your data actually plateau there. If you fix Bottom to 0 but the optimizer would have fit it at 8%, the parameter pin will fire as a QC flag.
Axis transforms
- X-axis — log₁₀ by default. Linear is available for the rare assays that genuinely want it.
- Y-axis — raw response or normalized to controls (% of vehicle, % inhibition, etc.). Normalization happens before the fit, not after.
Outliers
- Flagged automatically. Points whose residuals are inconsistent with the converged fit are highlighted on the plot (rendered as a red
×) and listed in the QC section. They stay in the fit unless you say otherwise — silent auto-removal is a known source of irreproducibility, so we surface the question instead. - Excluded on request. “Exclude the 100 µM replicate” or “drop the highest dose” refits in place. The exclusion is logged in the audit bundle so a reviewer can see exactly what was dropped and why.
QC checks specific to dose-response
See Quality Control for the full list. The ones that matter most here:
- IC₅₀ extrapolated. The fitted midpoint sits outside your tested range. Add a higher or lower dose.
- No upper plateau. The Top asymptote has a wide or unbounded CI. Either run a higher dose or fix Top to a known control.
- Shallow Hill (< 0.5) or steep Hill (> 5). Real biology can produce both, but they often signal sparse data near the inflection.
Designing a dose-response that fits well
- 6–10 doses spanning at least 2 orders of magnitude, with extra density near the expected IC₅₀.
- Triplicate per dose. Replicates separate signal from noise far better than extra doses do.
- Include vehicle and full-effect controls. The agent uses these to normalize automatically.
- Whenever possible, test concentrations that bracket both Top and Bottom plateaus. The CIs on every parameter improve dramatically when both ends are observed, not extrapolated.
What the result looks like
A typical fit returns IC₅₀ with 95% CI, Top, Bottom, Hill, R², and a quality tier. The export bundle includes the figure (PNG/SVG/PDF), the parameter table, and a standalone Python script that reproduces the fit from your raw data. See Understanding your results for how to read the parameter table.