tooluniverse-dose-response

Fit 4-parameter logistic curves to concentration-response data to compute IC50, EC50, and Hill slope.

1.7k|254|Updated Mar 3, 2025
One-click install
npx skills add https://github.com/mims-harvard/ToolUniverse --skill tooluniverse-dose-response
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: tooluniverse-dose-response
Source: https://github.com/mims-harvard/ToolUniverse/tree/main/plugins/tooluniverse/skills/tooluniverse-dose-response
Command: npx skills add https://github.com/mims-harvard/ToolUniverse --skill tooluniverse-dose-response

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires numpy, scipy, and includes scripts (resource) components.

What problem does it solve?

Turning raw concentration-versus-response measurements from enzyme, cell, or binding assays into a trustworthy potency value (IC50/EC50) is error-prone: mixed units, incomplete curves, and overconfident fits produce misleading results. This Skill fits the 4-parameter logistic (Hill sigmoidal) model and surfaces the quality checks needed before reporting a potency number.

Core Features & Use Cases

  • Potency calculation: Compute IC50/EC50 with a 95% confidence interval, Hill slope, Emax/Emin plateaus, and r-squared from paired concentration and response lists via the DoseResponse_calculate_ic50 tool.
  • Compound comparison: Compare two compounds with DoseResponse_compare_potency to get each IC50 plus a fold-shift and which compound is more potent.
  • Custom fitting script: Use scripts/fit_dose_response.py for CSV input, replicate averaging, raw-signal normalization to percent of control, and automatic quality warnings.
  • Use Case: A pharmacologist screens a kinase inhibitor at six concentrations, fits the curve, and reports "compound A is 6.2x more potent than compound B" with confidence intervals and fit-quality caveats.

Quick Start

Fit a dose-response curve to my concentrations 0.001, 0.01, 0.1, 1, 10, 100 uM with responses 98, 95, 80, 45, 12, 3 and give me the IC50, Hill slope, and fit quality.

Frequently Asked Questions about tooluniverse-dose-response

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I calculate IC50 from concentration and response data?

Pass your concentrations (linear scale, one consistent unit) and responses to DoseResponse_calculate_ic50, which fits a 4-parameter logistic model. It returns the IC50 with a 95% confidence interval, Hill slope, Emax, Emin, and r-squared. You need at least four distinct positive concentrations.

How to compare potency of two compounds from dose-response curves?

Use DoseResponse_compare_potency with conc_a/resp_a and conc_b/resp_b to get each compound's IC50 plus the fold-shift and which is more potent. Only treat the ratio as meaningful when both fits have r-squared above 0.95 and comparable Hill slopes.

Should concentrations be log-transformed before fitting a dose-response curve?

No, pass concentrations on the linear scale such as 0.01, 0.1, 1, 10; the fitter logs them internally. Drop any literal zero concentration since log(0) is undefined, and keep one consistent unit because the IC50 is returned in that unit.

Why is my IC50 unreliable even with a good fit?

An IC50 is unreliable when the curve never plateaus at both ends, when fewer than four to five points exist, or when no points bracket the inflection. The fit can converge to a nonsense IC50 with high r-squared, so check that the IC50 falls within the tested concentration range.

What are the limitations of the 4-parameter logistic model?

The 4PL assumes a monotonic sigmoid, so it cannot describe biphasic, U-shaped, or hormetic responses. It also measures potency, not affinity: IC50 depends on assay conditions and requires a Cheng-Prusoff correction to approximate Ki.