How to calculate ELISA, IC50, potency and ecotoxicology indices
The formulas behind every Labreador module — written out so you can check the maths, reproduce it, or cite it. All calculations run locally in your browser.
Labreador is a free, browser-based platform that performs these calculations for you. Every method below is implemented in the app, runs entirely in your browser (no upload, no account), and can be exported as CSV or a PDF report.
How do I calculate concentrations from an ELISA standard curve?
-
Subtract the blank. Mean the blank wells and subtract that value from every OD reading. Optionally use the blank as a zero-concentration anchor for the lower asymptote.
-
Fit the standards. Plot corrected OD against the known standard concentration and fit a four-parameter logistic (4PL) curve:
OD = D + (A − D) / (1 + (C / EC50)^B)where
A= lower asymptote,D= upper asymptote,B= Hill slope,EC50= inflection point. Use 5PL (extra asymmetry factorE) when the curve is visibly asymmetric. -
Invert the curve to convert each sample OD into a concentration:
C = EC50 · ((A − D) / (OD − D) − 1)^(1/B) -
Multiply by the dilution factor of that well.
-
Flag out-of-range results. Anything below the lowest standard (LLOQ) or above the highest (ULOQ) is extrapolated and must be reported as such, not as a number.
In Labreador: open the ELISA module, paste or upload the plate, mark blanks/standards/samples on the platemap, and read concentrations directly. R², replicate CV%, back-calculated standard recovery, and a Method Health panel are produced automatically.
Which curve model should I use — 4PL, 5PL, linear or quadratic?
- 4PL — the default for sigmoidal immunoassays (ELISA, MSD, Luminex). Use whenever you have a full dose range with both plateaus.
- 5PL — when residuals show systematic curvature on one side of the curve (asymmetric response). Costs one degree of freedom; only justified if it clearly reduces residual scatter.
- Linear / semi-log linear — only for a narrow, genuinely linear working range, e.g. protein assays (BCA, Bradford).
- Quadratic — a pragmatic fallback for mildly curved calibrations with no plateau.
Judge the model on residual structure and back-calculated standard recovery, not on R² alone: a bad 4PL can still give R² = 0.99. Labreador accepts 85–115% recovery for ordinary standards and 80–120% at the lowest/highest non-zero standards (LLOQ/ULOQ); at least 75% of standards must pass. These are application defaults, not universal validation limits for every assay.
How do I calculate IC50 or EC50?
IC50/EC50 is the concentration producing 50% of the maximal response. Fit a 4PL to response versus log concentration and read the inflection parameter:
Response = Bottom + (Top − Bottom) / (1 + (C / IC50)^HillSlope)
Key rules:
- Normalise responses to controls (0% = untreated / vehicle, 100% = full inhibition) when you want a comparable relative IC50.
- Report the 95% confidence interval, not just the point estimate.
- If the fitted IC50 falls outside your tested concentration range, or the CI spans more than an order of magnitude, the value is extrapolated and unreliable — extend the dose range instead.
- Z′ factor (
Z′ = 1 − 3(σpos + σneg)/|µpos − µneg|) tells you whether the assay window is fit for screening: > 0.5 excellent, 0–0.5 marginal, < 0 unusable.
In Labreador: the Dose-Response module fits multiple compounds simultaneously, reports IC50/EC50 with CI, Hill slope, asymptotes, Z′ factor, and warns when asymptotes are extrapolated.
How do I calculate relative potency (parallel line analysis)?
Relative potency compares a test preparation against a reference standard:
-
Fit reference and test with a joint (constrained) model sharing slope and asymptotes.
-
Test parallelism with an F-test comparing the constrained fit to the unconstrained fit. If parallelism fails, relative potency is not defined.
-
Relative potency is the horizontal shift between curves:
RP = EC50(reference) / EC50(test), reported asRP% = 100 · RP -
Report a confidence interval (Fieller's theorem or bootstrap) and check it against the acceptance interval for your product (commonly 80–125%).
-
Combine independent runs as a geometric mean with a combined CI.
These methods are informed by Ph. Eur. 5.3 and USP <1032>/<1034>; a software verdict alone does not establish regulatory compliance. Labreador's PLA module performs the joint fit, parallelism F-test, lack-of-fit test, Grubbs outlier screening, 500-iteration residual-bootstrap and Fieller CIs, forest-plot multi-run combination, and a five-criterion quality gate: parallelism, minimum R², relative CI width, log-concentration overlap and residual variance homogeneity.
How do I analyse a kinetic assay (Vmax, AUC, slope)?
- Subtract the blank from every time point (blank = instrument/medium noise; a negative control is a biological baseline and is handled separately).
- Reduce each well's time course to a single metric:
- Vmax — maximum slope over a sliding window of consecutive points (ΔSignal/Δtime).
- Initial rate — slope of the first linear segment.
- AUC — trapezoidal integration:
AUC = Σ (t(i+1) − t(i)) · (y(i) + y(i+1)) / 2. - Endpoint / Δ Signal — last value minus first.
- Average replicates, then compare groups statistically (see below).
In Labreador: the Kinetic / Group Comparison module auto-detects the time axis from a plate-reader export, maps wells to groups by click-and-drag, and computes all reduction metrics with per-group statistics.
Which statistical test should I use to compare groups?
- Two groups — unpaired t-test (Welch's if variances differ); Mann-Whitney U if the data are not normal.
- Three or more groups — one-way ANOVA followed by Tukey HSD (all pairs) or Dunnett (versus one control); Kruskal-Wallis with Dunn's post-hoc for non-normal data.
- Report effect size (Cohen's d) alongside p-values, and state the exact p rather than only stars.
- Significance markers:
* p < 0.05,** p < 0.01,*** p < 0.001.
Labreador selects the appropriate test automatically from normality and group count, and draws significance brackets on the chart.
How do I calculate estimated daily intake (EDI), THQ and HI?
- EDI (mg/kg body weight/day):
EDI = (C × IR) / BWwhereC= element concentration in food (mg/kg),IR= ingestion rate (kg/day),BW= body weight (kg). - Target Hazard Quotient:
THQ = EDI / RfD(RfD = oral reference dose).THQ > 1indicates potential non-carcinogenic risk. - Hazard Index:
HI = Σ THQacross all elements — cumulative exposure. - Target Cancer Risk: Advanced
CR = LADD × CSF, withLADD = (C × IR × EF × ED) / (BW × 70 × 365). Non-cancer EDI usesAT = ED × 365. Simple CR assumes daily lifetime exposure, so LADD equals simple EDI. The 70-year lifetime is an explicit screening assumption, not a population-specific estimate. - Advanced THQ is
EDI_advanced / RfD. IR is kg/day; no additional 10^-3 factor applies. - HI requires every entered/mapped element; missing RfD or concentration makes the total undefined. Valid measured zero remains zero. CR covers supplied CSFs only; absent CSFs are not evidence of no carcinogenic hazard. Monte Carlo uses the same rules and returns unavailable probabilities rather than false 0% when no valid panel exists.
Labreador's Risk Assessment module ships default RfD/CSF values for 23 trace elements, supports batch mode across many samples, THQ heatmaps, and Monte Carlo probabilistic uncertainty analysis.
Lead (Pb) exception: the application retains legacy screening assumptions of RfD 0.0035 mg/kg/day and CSF 0.0085 (mg/kg/day)^-1. Neither is a numerical oral benchmark supplied by EPA IRIS. The historical RfD rationale refers to WHO/JECFA PTWI 25 µg/kg/week (approximately 0.003571 mg/kg/day), withdrawn in 2010 as insufficiently protective. The authoritative source of the retained CSF remains unverified. Lead THQ, HI and CR based on these assumptions do not establish safe exposure or a validated lead cancer-risk estimate; disclose the assumptions and limitations in reports. Sources: EPA IRIS lead assessment and WHO/JECFA lead evaluation.
How do I calculate pollution indices (CF, PLI, Igeo, EF, MPI)?
- Contamination Factor:
CF = C(sample) / C(background) - Pollution Load Index:
PLI = (CF₁ × CF₂ × … × CFₙ)^(1/n)— geometric mean;PLI > 1indicates pollution. - Geoaccumulation Index:
Igeo = log₂(C / (1.5 × B)) - Enrichment Factor:
EF = (C(x)/C(ref))sample / (C(x)/C(ref))background, usually normalised to Al or Fe. - Metal Pollution Index:
MPI = (C₁ × C₂ × … × Cₙ)^(1/n)
Labreador's Pollution Indices module computes CF, PLI, Igeo, MPI and Håkanson Er/RI from pasted data. EF and water-specific HPI formulas exist in the engine only; they have no user-facing calculator yet. PLI/MPI require a complete mapped panel of strictly positive values: zero, missing, invalid or unresolved censored entries produce an unavailable index, not a reduced-panel mean. Missing baseline blocks PLI but not MPI. RI requires every mapped Er. Baseline means include measured zeros and discard only unavailable/invalid replicates; no valid replicates means unavailable, not a stale previous baseline.
How do I calculate BSAF, BAF and biometric condition indices?
- Biota-Sediment Accumulation Factor:
BSAF = C(organism) / C(sediment) - Bioaccumulation Factor:
BAF = C(organism) / C(water) - BSAF here is an unnormalised ratio on compatible tissue/sediment mass bases; BAF from mg/kg tissue and mg/L water has units L/kg.
- Imports preserve raw values and measured/censored/undetected/missing/invalid states.
<0.05is a reported censoring bound, not automatically an LOD. OptionalLOD/2applies only to explicit non-detects with a declared matrix-specific LOD (sediment mg/kg, water mg/L); a numeric bound must match that declared LOD.<LOQ, blanks, invalid cells, negative values and measured zeros are not substituted. A legacy common LOD is not reused across matrices. - Fulton's condition factor:
K = 100 × W / L³(W in g, L in cm) - Hepatosomatic index:
HSI = 100 × liver weight / body weight - Gonadosomatic index:
GSI = 100 × gonad weight / body weight
Labreador's Bioaccumulation and Biometric Indices modules compute these from pasted spreadsheets with charts and CSV/PDF exports retaining all rows and original measurements. K requires positive weight and length; HSI/GSI require positive body weight and nonnegative valid organ mass (not greater than body mass), independently of length. Measured zero organ mass gives zero; missing gives unavailable. Means disclose per-index eligible counts. Stable row IDs prevent duplicate labels from mismatching exported measurements. Wet/dry conversion and dedicated BCF controls are not implemented; users must prepare compatible bases before import.
How do I check whether my ELISA run is valid?
Check these five signals before trusting any concentration:
- Fit quality tier — Tier 1: R² ≥0.98; Tier 2: 0.95 ≤ R² <0.98; Tier 3: R² <0.95 (concentrations not reported). R² is necessary but not sufficient.
- Residual plot — scatter should be random around zero; a U-shape means the wrong model.
- Back-calculated standard recovery — 85–115% for ordinary standards; 80–120% at LLOQ/ULOQ. Synthetic zero anchors are excluded.
- Replicate CV% — under 15% (under 20% at the LLOQ).
- Assay window — Labreador's ΔOD diagnostic passes at ≥1.5, warns at 0.5 to <1.5 and fails below 0.5. These are screening thresholds, not a substitute for assay-specific validation.
Warning signs of a failed method: EC50 outside the standard range, a 95% CI spanning orders of magnitude, asymptotes fitted far beyond observed data, or a Hill slope far from 1.
Labreador's Method Health panel has five conditional diagnostics: ΔOD (1.5/0.5 thresholds), signal-to-blank ratio (10×/3×), EC50 placement (inside range passes; no more than twofold outside warns), EC50 CI upper/lower ratio (≤3× passes; ≤10× warns), and R² (0.98/0.95). Recovery, replicate CV and residual plots are separate outputs. Method Health changes no fit or interpolation.
Is my data uploaded anywhere?
The web calculators do not upload your measurements, plate maps or results: calculations run locally in your browser. Optional Lab Assistant chat sends the text and conversation context you choose to share; external MCP clients send their selected inputs to a separate server endpoint.
Can I calculate without an internet connection?
Yes, already loaded calculator functionality continues to run locally if you disconnect while keeping the tab open. Internet is required to load the app initially, reload or reopen it reliably, and fetch modules or export dependencies that have not yet loaded. Installing Labreador provides a standalone window, not guaranteed offline startup. AI chat and external MCP calls require internet. Export your results before closing or refreshing: experimental data is held in memory, not saved as a project.
