Reference
Statistical Methods
Gradiance uses industry-standard algorithms to ensure your results are accurate, reproducible, and publication-ready.
Non-Linear Regression
For dose-response analysis, we utilize the Levenberg-Marquardt algorithm for iterative non-linear least squares minimization. This is the gold standard for fitting 4PL and 5PL models.
The 4PL Equation
Y = Bottom + (Top - Bottom) / (1 + 10^((LogIC50 - X) * HillSlope))
Where X is the log of concentration, Y is the response, and HillSlope describes the steepness of the curve.
Weighting
Biological data often exhibits heteroscedasticity (variance increases with signal). Gradiance supports 1/Y² weighting to correctly prioritize lower-signal data points, which is crucial for accurate IC₅₀ determination in many assays.
Outlier Detection
We employ the ROUT method for identifying robust outliers from non-linear regression. This allows us to automatically flag data points that deviate significantly from the expected model without manually cherry-picking data.
IC₅₀: relative vs absolute
The IC50 parameter in a 4PL fit is, by convention, the relative IC₅₀ — the concentration at the midpoint between the fitted top and bottom asymptotes. When a curve's lower asymptote sits well above zero (e.g. when the lowest doses already produce meaningful inhibition), this differs from the absolute IC₅₀ that most papers and regulatory submissions report — namely the concentration where response actually crosses 50 %.
Gradiance reports the absolute IC₅₀ as the headline whenever the two diverge by >10 %, computed by linear interpolation in log-concentration space on the raw data, and surfaces the relative IC₅₀ alongside as a secondary parameter with an explanatory note.
Validation against published data
We re-ran the dose-response, enzyme-kinetics, and standard-curve datasets from a peer-reviewed 2026 xanthine-oxidase study (Li et al., Zenodo 10.5281/zenodo.19378973) end-to-end through Gradiance and compared against both the published values and an independent scipy fit:
| Assay | Parameter | Paper | Gradiance | Δ |
|---|---|---|---|---|
| Allopurinol IC₅₀ | IC₅₀ (µg/mL) | 2.47 | 2.46 | 0.4 % |
| Alcalase YFP IC₅₀ | IC₅₀ (mg/mL) | 0.60 | 0.59 | 1.4 % |
| SRGQIEEL IC₅₀ | IC₅₀ (µg/mL) | 180 | 178.4 | 0.9 % |
| XO Michaelis–Menten | Vmax (µM/min) | 6.112 | 6.137 | 0.4 % |
| XO Michaelis–Menten | Km (µM) | 9.915 | 10.04 | 1.3 % |
Every fit matched scipy.optimize.curve_fit to four decimal places, and matched the paper to within ~1.4 %.



