IC50 Methodology
This page describes the curve fitting algorithm, quality control metrics, and classification system used to calculate and evaluate IC50 values.
Dose-Response Curves
Dose-response experiments measure the cellular response (typically luminescence) to varying concentrations of a compound. The relationship between concentration and response typically follows a sigmoidal (S-shaped) curve.
The application supports two assay types:
- Reporter Assay — Measures transcriptional activity
- CTG (CellTiter-Glo) — Measures cell viability
IC50 Calculation
IC50 (half maximal inhibitory concentration) is the concentration of a compound that produces 50% inhibition of the maximum response. It is a key metric for compound potency.
The application provides two sources of IC50 values:
- CRO IC50 — Provided directly from the CRO experiment data
- Calculated IC50 — Derived by fitting a dose-response curve to the raw measurement data
Curve Fitting Models
The system fits two competing sigmoid models and selects the best one using AICc (corrected Akaike Information Criterion).
4-Parameter Logistic (4PL) Model
y = bottom + (top - bottom) / (1 + (x / IC50)^hill)
Where:
- y = response (luminescence)
- x = concentration
- bottom = minimum response (lower asymptote)
- top = maximum response (upper asymptote)
- IC50 = concentration at 50% response
- hill = Hill slope (steepness), constrained to [0.1, 5.0]
3-Parameter Logistic (3PL) Model (bottom = 0)
y = top / (1 + (x / IC50)^hill)
This model assumes complete inhibition (bottom fixed at zero). It is useful for compounds that fully suppress the response and is selected when it fits as well as or better than 4PL by AICc.
Model Selection via AICc
For each curve, the system:
- Fits both 4PL and 3PL models using robust optimization (soft_l1 loss)
- Computes AICc for each model (penalizes complexity while rewarding fit)
- Selects the model with the lower AICc
- Compares the selected sigmoid model against a null (flat) model
The sigmoid model is accepted only if:
delta_AICc = AICc(sigmoid) - AICc(null) ≤ -10
— ensuring the sigmoid is substantially better than a flat line.
Quality Control Metrics
| Metric | Formula | Pass Threshold | Interpretation |
|---|---|---|---|
| Efficacy | (baseline - min_response) / baseline |
≥ 0.20 (20%) | Fraction of response reduction from baseline |
| SNR | (max_response - min_response) / pooled_SD |
≥ 3.0 | Signal strength relative to measurement noise |
| Monotonicity | Spearman correlation of log(dose) vs response | rho < 0 and p < 0.05 | Statistically significant decreasing trend |
| Model test | AICc(sigmoid) - AICc(null) |
≤ -10 | Sigmoid model is substantially better than flat line |
IC50 Censoring
IC50 values are flagged based on whether they fall within the tested concentration range:
| Status | Condition | Interpretation |
|---|---|---|
| None | IC50 within tested range | IC50 is reliable |
| Left-censored | IC50 < minimum tested concentration | Compound is very potent; IC50 is an upper bound |
| Right-censored | IC50 > maximum tested concentration | Compound shows weak/no activity; IC50 is a lower bound |
Classification System
Based on the QC metrics, each curve is automatically classified:
| Classification | Criteria | Meaning |
|---|---|---|
| ACTIVE | Passes all 4 QC tests (model, monotonicity, efficacy, SNR) | High-quality dose-response with reliable IC50 |
| PARTIAL | Passes model and monotonicity, but fails efficacy OR SNR | Detectable response but weaker signal or incomplete inhibition |
| INACTIVE | Fails monotonicity OR model comparison | No significant dose-response detected |
| UNCERTAIN | Edge cases not fitting other categories | Requires manual review |
CRO IC50 Classification
For CRO-provided IC50 values, classification is based on the value prefix:
- IC50 with
>prefix (e.g., ">30000") → INACTIVE (right-censored, compound exceeded max tested concentration) - IC50 without
>prefix → ACTIVE
Percent Inhibition
Percent inhibition is calculated differently for CRO and calculated values:
| Source | Formula |
|---|---|
| Calculated | ((baseline - min_response) / baseline) × 100 |
| CRO | ((baseline - max_conc_response) / baseline) × 100 |
Interpretation:
- 100% = complete inhibition (response reduced to zero)
- 50% = half-maximal inhibition
- 0% = no inhibition
- Negative values = activation/stimulation