Loewe

Description

The Loewe synergy model works by assuming that there is a constant “exchange rate” between each drug. An simple analogy is currency. Five \$1 bills totals \$5. If you exchange two of the \$1 bills, with a total of 8 quarters (\$0.25 value each) then the total value is still \$3 + \$0.25 * 8 = \$5. Loewe says that if fewer than 8 quarters are needed to still total \$5, then quarters and dollars are synergistic, while if more than 8 quarters are needed, then they are antagonistic.

In the context of drugs, for a given combination effect \(E(d_1, d_2)\), Loewe’s model expects a linear tradeoff, such that exchanging \(x\) parts of drug 1 with \(y\) parts of drug 2 will not change the combined drug effect. The ratio of \(x : y\) is obtained from \(D1 := E_1^{-1}(E)\) and \(D2 := E_2^{-1}(E)\), which are the doses of drugs 1 and 2 (respectively) that alone can achieve the combination effect \(E(d_1, d_2)\).

Warning: One shortcoming of this definition is that if the combination achieves greater effects than the individual drugs can achieve as single-agents, then \(E_i^{-1}(E)\) becomes undefined. In fact this limitation is imposed by the maximum effect achievable by the weaker drug. There are multiple modes supported for the Loewe model that attempt to handle such cases.

Multiple modes are supported, and specified by model = Loewe(mode=mode)

  • "ci"

  • "delta_hsa"

  • "delta_weakest"

  • "delta_nan"

Mode: "ci"

In "ci" mode, Loewe synergy is calculated using an equation identical to the Combination Index.

\[synergy(d_1, d_2) := \frac{d_1}{E_1^{-1}(E)} + \frac{d_2}{E_2^{-1}(E)}\]

For combination effects \(E(d_1, d_2)\) that exceed that maximum strength of the weaker drug, \(synergy(d_1, d_2) := \text{nan}\).

The values of Loewe synergy in "ci" mode are interpreted as

Value

Interpretation

\[< 1\]

Synergistic

\[> 1\]

Antagonistic

\[= 1\]

Additive

Mode: ["delta_weakest", "delta_hsa", "delta_nan"]

In all "delta" modes, Loewe synergy is calculated as the difference between an “expected” dose-response surface (\(E_{loewe}(d_1, d_2)\) and the observed one. Each "delta" mode has its own approach to quantify \(E_{loewe}(d_1, d_2)\) at doses for which \(E_i^{-1}(E)\) is undefined: - "delta_hsa" sets \(E_{loewe}(d_1, d_2) = \min(E_i(d_i))\), which is the effect of the stronger drug - "delta_weakest" sets \(E_{loewe}(d_1, d_2) = E_\text{weak}(\infty)\), which is the maximum effect of the weaker drug - This may tend to overestimate synergy at high doses of the stronger drug - "delta_nan" sets \(E_{loewe}(d_1, d_2) = \text{nan}\)

The values of Loewe synergy in all "delta" modes are interpreted as

Value

Interpretation

\[> 0\]

Synergistic

\[< 0\]

Antagonistic

\[= 0\]

Additive

Assumptions

  • mode: "delta":

    • Individual drugs follow a sigmoidal (Hill) dose response shape

Defaults

  • mode: "ci"

  • Single-drug models:

    • mode == "ci"

      • Default: synergy.single.log_linear.LogLinear

      • Required: synergy.single.DoseResponseModel1D or subclass

    • "delta" in mode:

      • Default: synergy.single.hill.Hill

      • Required: synergy.single.hill.Hill

2D

Load and plot example dataset

2D synergy models work with 1D arrays of drug 1 dose, drug 2 dose, and effect.

[1]:
from synergy import datasets
from synergy.utils.plots import plot_heatmap

d1, d2, E = datasets.load_2d_example()

Plot raw dose response data as a heatmap using synergy.utils.plots.plot_heatmap()

[2]:
plot_heatmap(d1, d2, E, title="Response Data", cmap="YlGnBu")
../../_images/models_synergy_loewe_4_0.png

Calculate synergy using the Loewe model

[3]:
from synergy.combination.loewe import Loewe
from synergy.single.hill import Hill

# "ci" mode can work for non-sigmoidal single-drug dose-response curves
# However in this case the synthetic data do have a sigmoidal shape, so
# telling Loewe to use Hill equations tends to improve the results.
model_ci = Loewe(mode="ci", drug1_model=Hill, drug2_model=Hill)

# All "delta" modes automatically default to Hill equations
model_delta_hsa = Loewe(mode="delta_hsa")
model_delta_weaker = Loewe(mode="delta_weakest")
model_delta_nan = Loewe(mode="delta_nan")

# Fit synergy
synergy_ci = model_ci.fit(d1, d2, E)
synergy_delta_hsa = model_delta_hsa.fit(d1, d2, E)
synergy_delta_weaker = model_delta_weaker.fit(d1, d2, E)
synergy_delta_nan = model_delta_nan.fit(d1, d2, E)

# Prepare a plot to show them all
from matplotlib import pyplot as plt
import numpy as np

fig = plt.figure(figsize=(7, 5))
# For ci mode, it is recommended to visualize negative-log synergy, so that values < 0 are antagonistic, and > 0 are synergistic
plot_heatmap(d1, d2, -np.log(synergy_ci), cmap="PRGn", title="ci", center_on_zero=True, ax=fig.add_subplot(2, 2, 1))
plot_heatmap(d1, d2, synergy_delta_hsa, cmap="PRGn", title="delta_hsa", center_on_zero=True, ax=fig.add_subplot(2, 2, 2))
plot_heatmap(d1, d2, synergy_delta_weaker, cmap="PRGn", title="delta_weakest", center_on_zero=True, ax=fig.add_subplot(2, 2, 3))
plot_heatmap(d1, d2, synergy_delta_nan, cmap="PRGn", title="delta_nan", center_on_zero=True, ax=fig.add_subplot(2, 2, 4))
plt.tight_layout()
../../_images/models_synergy_loewe_6_0.png

N-drug Combinations

Currently only "ci" mode is implemented for \(N\)-drug combinations (\(N > 2\)). In this case, synergy is defined as

\[synergy(\vec{d}) := \sum_{i=1}^{N}\frac{d_i}{E_i^{-1}\left(E(\vec{d})\right)}\]

Synergy is interpreted identically as in the 2D case.

[4]:
from synergy.higher.loewe import Loewe as LoeweND
from synergy import datasets
from synergy.single.hill import Hill

d, E = datasets.load_3d_example()
modelND = LoeweND(single_drug_models=[Hill, Hill, Hill])
synergyND = modelND.fit(d, E)
[5]:
from synergy.utils.plots import plotly_isosurfaces
import numpy as np

# For Loewe it is recommended to visualize -log(synergy), so that values < 0 are antagonistic, and > 0 are synergistic
plotly_isosurfaces(d, -np.log(synergyND), center_on_zero=True, cmap="PRGn", title="Loewe Synergy")

References

Loewe, S. (1926). “Effect of combinations: mathematical basis of problem”. Arch. Exp. Pathol. Pharmakol. 114: 313–326. doi:10.1007/BF01952257

[ ]: