Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Drug-combination synergy analysis — quantify whether two drugs together are synergistic, additive, or antagonistic using the standard reference models (Bliss independence, HSA / highest single agent, Loewe additivity, ZIP, and the Chou-Talalay Combination Index). Use when you have measured single-drug and combination effects (inhibition/viability) and need a synergy score. Explains which model to use, what data each one needs, and how to read the score. NOT for looking up pre-computed synergy in
.claude/skills/tooluniverse-drug-synergy/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | — | — |
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
| case-12 | ✗→✓ | ▲ Improved | — | — |
| case-19 | ✗→✓ | ▲ Improved | — | — |
Decide whether a two-drug combination does more than expected (synergy), exactly as expected (additivity), or less (antagonism) — and pick the right reference model for the data you have.
"Synergy" only means something relative to a null model of additivity, and the models define additivity differently — so the first decision is which model, driven by what data you measured.
| You measured… | Use model | Tool | Input | |---|---|---|---| | Single effects of A, B, and A+B at one dose pair | Bliss | DrugSynergy_calculate_bliss | effect_a, effect_b, effect_combination (each a fraction 0–1) | | Effects of A, B, A+B across several dose points | HSA | DrugSynergy_calculate_hsa | effects_a, effects_b, effects_combo (arrays) | | Single-agent dose-response curves + one combination point | Loewe | DrugSynergy_calculate_loewe | doses_a_single/effects_a_single, doses_b_single/effects_b_single, dose_a_combo, dose_b_combo, effect_combo | | Single-agent dose-response + combo point, want Chou-Talalay CI | Combination Index | DrugSynergy_calculate_ci | same as Loewe + assumption | | A full dose × dose viability matrix | ZIP | DrugSynergy_calculate_zip | doses_a, doses_b, viability_matrix (% , 0–100) |
> Effects must be on a consistent inhibition scale. Bliss/HSA/Loewe expect fractional inhibition 0–1 (0 = no effect, 1 = complete kill). If your data is % viability, convert: inhibition = 1 − viability/100. ZIP takes the viability matrix in % directly. Mixing scales is the most common error.
| Model | Null (additive) expectation | Best when | |---|---|---| | Bliss independence | drugs act independently: E_exp = E_a + E_b − E_a·E_b | different mechanisms; quick single-point screen | | HSA (highest single agent) | combo should beat the better single agent: E_exp = max(E_a, E_b) | conservative "does it beat monotherapy?" question | | Loewe additivity | a drug combined with itself = additive (dose equivalence) | same/similar mechanism; needs dose-response | | ZIP | combines Bliss + Loewe; potency shift of one drug's curve by the other | dose-matrix screens (the SynergyFinder default) | | Chou-Talalay CI | CI<1 synergy, =1 additive, >1 antagonism (median-effect) | classic isobologram-style analysis with dose-response |
There is no single "correct" model — state which one you used. Bliss and Loewe genuinely disagree for some combinations (that's expected, not an error); reporting two models (e.g. Bliss + HSA, or Loewe + ZIP) is good practice.
bash# Bliss (single dose pair, fractional inhibition) tu run DrugSynergy_calculate_bliss '{"operation":"calculate_bliss", "effect_a":0.4,"effect_b":0.3,"effect_combination":0.7}' # -> expected 0.58, bliss_synergy_score 0.12, "Strong synergy"
scripts/synergy_reference.py computes the Bliss, HSA, and Loewe-style expected combination effects side-by-side from one dose pair, so you can see at a glance whether the models agree before running the full tools.
For Bliss/HSA/Loewe/ZIP, the synergy score is (observed − expected) (often ×100):
| Score (fractional, ×100 scale) | Call | |---|---| | > +10 | synergy | | −10 to +10 | additive (no meaningful interaction) | | < −10 | antagonism |
For Combination Index (Chou-Talalay): CI < 1 = synergy, CI = 1 additive, CI > 1 antagonism (note the opposite direction — lower is more synergistic).
tooluniverse-dose-response — fit the single-agent IC50/EC50 curves that Loewe/CI/ZIP need.tooluniverse-cell-line-profiling — look up pre-computed combination synergy (SYNERGxDB).tooluniverse-drug-repurposing / tooluniverse-network-pharmacology — rationale for combinations.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.