# Dose Response Curve

## Specs

| Label                     | Value                         |
| ------------------------- | ----------------------------- |
| **Version**               | 4.0.0 (updated on 2026-04-10) |
| **Developer**             | Labii Inc.                    |
| **Type**                  | Section                       |
| **Support Configuration** | Yes                           |

## Overview

The [dose–response relationship](https://en.wikipedia.org/wiki/Dose%E2%80%93response_relationship) describes how a biological system responds to varying levels of exposure to a substance — from a small effect at low doses to a plateau at high doses. Analyzing dose-response data is central to drug development, toxicology studies, and bioassay validation. Traditionally this requires exporting data to external tools such as GraphPad Prism, which adds manual steps and version-control risks. Labii's **Dose Response Curve** widget brings the entire workflow — plate layout design, raw data entry, background subtraction, four-parameter logistic (4PL) curve fitting, and EC50/IC50 reporting — into a single ELN section. With one click you get a publication-ready sigmoidal curve and all key pharmacological parameters, with a full audit trail.

## Use Cases

* **Drug Potency Screening** — Calculate IC50 or EC50 values for candidate compounds during lead identification and optimization
* **Cytotoxicity Assays** — Determine cell viability dose-response relationships and derive LD50 values for toxicology studies
* **Enzyme Inhibition Studies** — Characterize inhibitor potency and Hill cooperativity across a concentration range
* **Receptor Binding Assays** — Fit agonist or antagonist response curves and extract binding affinity parameters
* **Quality Control** — Confirm assay performance by monitoring EC50 and Hill slope consistency across batches
* **Compliance Workflows** — Maintain traceable, audit-ready dose-response records within a 21 CFR Part 11–compliant ELN

## Interface

### Read-only View

The read-only view displays the completed dose-response analysis. It shows the sigmoidal curve plot with each data point, error bars derived from replicates, and the best-fit 4PL curve overlay. Below the plot, a results table lists each sample with its calculated EC50/IC50, Hill slope, minimum response, maximum response, and R² goodness-of-fit value.

<figure><img src="https://3607108856-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LHVg57XIRcjV-Vbubtn%2Fuploads%2Fgit-blob-2779cc92adc21331e1ee379b667a6986255f9dc3%2Fwidget-section-dose-response-curve.webp?alt=media" alt="Dose Response Curve read-only view showing the sigmoidal 4PL curve and results table"><figcaption><p>The read-only view displays the fitted 4PL dose-response curve with per-sample EC50/IC50, Hill slope, and min/max response values</p></figcaption></figure>

### Edit View

The edit view presents a 96-well plate interface with two input stages: **Layout** and **Data**. In the Layout stage, users define the plate map by assigning concentration series, blanks, positive controls, and sample identifiers. In the Data stage, users enter raw response readings. Once both stages are complete, clicking the **Analysis** button runs the full automated pipeline.

## Configuration

Click the **Edit** icon in the widget header to open the configuration panel and adjust the following settings.

### Settings

* **Concentration Unit** — The concentration unit label displayed on the plot X-axis (e.g., `ug/ml`, `nM`, `uM`)
* **Data Transform** — Transformation applied to response values before curve fitting:
  * `x` — No transformation (raw values)
  * `log(x)` — Natural logarithm
  * `log10(x)` — Base-10 logarithm
  * `10^x` — Antilogarithm
  * `(x/POSITIVE)*100` — Normalize response as a percentage of the positive control
* **X-Axis Scale** — Scale applied to the concentration (X) axis on the plot:
  * `x` — Linear scale
  * `log(x)` — Natural log scale
  * `log10(x)` — Log10 scale
* **Fit Method** — Regression model used to fit the dose-response curve. Defaults to `4PL` (four-parameter logistic)
* **Fit Settings** — Per-sample initial parameter overrides for the Levenberg–Marquardt fitting algorithm. Because the algorithm converges to the global minimum only when the initial guess is close to the true solution, use these settings to provide better starting values when the default fit fails. Each entry requires:
  * **Name** — The sample name, which must exactly match the label used in the plate layout
  * **Max Iterations** — Maximum number of function calls during fitting. Defaults to `1000`. Higher values improve fit quality at the cost of performance
  * **Hill Slope** — Initial guess for the steepness of the curve at the inflection point. Defaults to `1`
  * **Minimum** — Initial guess for the smallest response value (baseline at zero dose). Defaults to `1`
  * **Maximum** — Initial guess for the greatest response value (plateau at saturating dose). Defaults to `1`
  * **Inflection Point (EC50/IC50)** — Initial guess for the dose at which the response is at half-maximum. Defaults to `1`

{% hint style="info" %}
For most dose-response assays, use `log10(x)` for the X-axis scale to produce the characteristic sigmoidal curve shape. Use `(x/POSITIVE)*100` as the data transform when normalizing response to a percentage of maximal effect.
{% endhint %}

## Additional Functions

### Prepare Layout

The widget supports 96-well plates. Define the plate map by assigning well roles.

{% stepper %}
{% step %}
Click **Edit Plate** to open the well-editor interface
{% endstep %}

{% step %}
Assign well roles using the following labels:

* **First cell** — Enter the concentration unit (e.g., `ug/ml`) to label the axis
* **CONC** — Place as a row or column label to define a series of standard concentrations along that row or column
* **BLANK** — Mark a well as a blank; blank values are averaged and subtracted as background
* **POSITIVE** — Mark a well as a positive (upper) control; used for percentage normalization when the `(x/POSITIVE)*100` transform is selected
* Any other label is treated as a sample identifier; duplicate labels are treated as replicates
* Leave a well empty to exclude it from analysis
  {% endstep %}

{% step %}
Optionally, click the **edit** icon on a well to update its individual dilution factor (defaults to `1`)
{% endstep %}

{% step %}
Alternatively, paste layout values directly from Excel or Word, or drag and drop a tabular file to import the layout automatically
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**CONC** must be placed as a row or column label — not in a data cell — to correctly define the concentration series along that row or column.
{% endhint %}

### Prepare Data

{% stepper %}
{% step %}
Switch to the **Data** input mode within the widget
{% endstep %}

{% step %}
Copy response readings from your plate reader output and paste them into the corresponding wells, or type values manually
{% endstep %}

{% step %}
Leave any well blank to exclude that data point from the analysis
{% endstep %}
{% endstepper %}

### Perform Analysis

Click the **Analysis** button to run the full automated pipeline. The analysis completes in seconds and executes the following sequence:

1. **Average blank response** — All wells marked `BLANK` are averaged to produce the background value
2. **Average positive control response** — All wells marked `POSITIVE` are averaged; used for percentage normalization if selected
3. **Background subtraction and data transform** — The blank average is subtracted from every data point, then the selected data transform is applied. Transformed data can be downloaded
4. **4PL curve fitting** — The [four-parameter logistic (4PL)](https://en.wikipedia.org/wiki/Dose%E2%80%93response_relationship) model is fitted to each sample using the [Levenberg–Marquardt algorithm](https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm). The fitted equation and four parameters are displayed:
   * **Minimum** — Baseline response at zero dose
   * **Maximum** — Plateau response at saturating dose
   * **EC50/IC50** — Dose at the inflection point (half-maximal effect)
   * **Hill slope** — Steepness of the curve at the inflection point
5. **Curve plot** — Each data point is plotted with standard error bars (when replicates exist) and the best-fit 4PL curve overlay. The X-axis is scaled according to the selected X-axis scale setting

{% embed url="<https://youtu.be/bREMXPW9BdM>" %}

{% hint style="warning" %}
The Levenberg–Marquardt algorithm converges to the global minimum only when the initial parameter guess is reasonably close to the true solution. If the fitted curve appears incorrect for a sample, click the **edit** icon on that sample to adjust the initial parameter values and re-run the analysis.
{% endhint %}

## Best Practices

* **Run samples in replicate** — Duplicate or triplicate wells at each concentration allow standard error calculation and improve curve fit reliability
* **Include blanks on every plate** — Blanks ensure accurate background subtraction; unexpectedly high blank readings indicate reagent or plate contamination
* **Include a positive control** — A positive control at a known saturating concentration confirms assay performance and enables percentage normalization
* **Cover a sufficient concentration range** — The concentration series should span at least two orders of magnitude on either side of the expected EC50/IC50 to fully define the sigmoidal curve
* **Use log10 X-axis scaling** — Log-scaling the concentration axis linearizes the mid-range of the curve and produces the characteristic S-shaped dose-response plot
* **Adjust initial parameters if the fit fails** — If the curve does not converge, set initial guesses for Minimum, Maximum, EC50, and Hill slope close to the expected values using the per-sample **edit** icon

{% hint style="success" %}
For assays with steep sigmoidal curves, a Hill slope significantly above 1 may indicate cooperative binding or multiple binding sites. Flag these for further mechanistic investigation.
{% endhint %}

## Related Widgets

* [**ELISA Standard Curve**](https://docs.labii.com/widgets/section-widgets/biology/assay/elisa-standard-curve) — Fits linear and non-linear standard curves for quantitative concentration determination. Use when the goal is to calculate sample concentrations from a standard curve rather than pharmacological parameters
* [**ELISA Qualitative**](https://docs.labii.com/widgets/section-widgets/biology/assay/elisa-qualitative) — Performs binary positive/negative classification of ELISA data. Use when a pass/fail result is needed rather than a continuous dose-response relationship

## References

* [Dose–Response Relationship — Wikipedia](https://en.wikipedia.org/wiki/Dose%E2%80%93response_relationship)
* [Four-Parameter Logistic (4PL) Curve — AAT Bioquest](https://www.aatbio.com/tools/four-parameter-logistic-4pl-curve-regression-online-calculator)
* [Levenberg–Marquardt Algorithm — Wikipedia](https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm)
* [Video Tutorial](https://youtu.be/bREMXPW9BdM) — Walkthrough of the Dose Response Curve widget
* [21 CFR Part 11 — Electronic Records and Signatures](https://www.ecfr.gov/current/title-21/chapter-I/subchapter-A/part-11)
