Schindler

Description

The Schindler synergy model is a dose-dependent model. It is based on a multi-dimensional Hill-type response surface equation. The model was specifically built to satisfy the Loewe additivity criterion. Unlike the standard form of Loewe, Schindler can be defined for combinations whose effect exceeds Emax of either drug (Loewe is generally limited by Emax of the weaker drug).

Synergy is defined as the difference between the observed \(E(d_1, d_2)\) and the \(E_\text{schindler}(d_1, d_2)\) predicted by Schindler’s multidimensional Hill equation.

The values of Schindler synergy are interpreted as

Value

Interpretation

\(> 0\)

Synergistic

\(< 0\)

Antagonistic

\(= 0\)

Additive

Assumptions

  • Each individual drug follows a Hill equation dose response

Defaults

  • Single-drug models:

    • Default: synergy.single.hill.Hill

    • Required: synergy.single.hill.Hill or subclass

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, plot_surface_plotly, set_plotly_interactive

set_plotly_interactive()  # This should only be run in an interactive notebook setting - for other scripts skip this

d1, d2, E = datasets.load_2d_example()

Fit the Schindler model to data

[2]:
from synergy.combination.schindler import Schindler

model = Schindler()
synergy = model.fit(d1, d2, E)
plot_heatmap(d1, d2, synergy, cmap="PRGn", title="Schindler Synergy", center_on_zero=True)
plot_surface_plotly(d1, d2, synergy, cmap="PRGn", title="Schindler Synergy", center_on_zero=True)
../../_images/models_synergy_schindler_4_0.png

N-drug Combinations

The Schindler model has been generalized to the \(N\)-drug (\(N > 2\)) case. Synergy is interpreted identically to the 2D case.

[3]:
from synergy.higher.schindler import Schindler as SchindlerND
from synergy.utils.plots import plotly_isosurfaces
from synergy import datasets

d, E = datasets.load_3d_example()
modelND = SchindlerND()
synergy = modelND.fit(d, E)

plotly_isosurfaces(d, E, title="3D Response Data", cmap="YlGnBu")  # or add fname= to save to file
plotly_isosurfaces(d, synergy, title="3D Schindler Synergy", cmap="PRGn", center_on_zero=True)

References

Schindler, M. Theory of synergistic effects: Hill-type response surfaces as ‘null-interaction’ models for mixtures. Theor Biol Med Model 14, 15 (2017). https://doi.org/10.1186/s12976-017-0060-y

[ ]: