def test_musyc_no_gamma(): import numpy as np from synergy.combination import MuSyC from synergy.utils.dose_tools import grid E0, E1, E2, E3 = 1, 0.2, 0.1, 0 h1, h2 = 2.3, 0.8 C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 3.2, 1.1 model = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, variant="no_gamma") npoints = 8 npoints2 = 12 D1, D2 = grid(1e-3, 1e0, 1e-2, 1e1, npoints, npoints2) np.random.seed(0) E = model.E(D1, D2) Efit = E * (1 + (np.random.rand(len(D1)) - 0.5) / 10.) model.fit(D1, D2, Efit) assert model.r_squared > 0.9
def test_parametric_model_heatmap_replicates(): from synergy.utils.dose_tools import grid from synergy.combination import MuSyC d1, d2 = grid(0.01, 10, 0.01, 10, 5, 5, include_zero=True, replicates=3) model = MuSyC(E0=1, E1=0.2, E2=0.5, E3=0.1, h1=1.4, h2=0.9, C1=0.2, C2=0.2, alpha12=2, alpha21=0.5, gamma12=1, gamma21=1) model.plot_heatmap(d1, d2, fname="parametric.pdf") assert 1 == 1
def create_data(i): if i == 1: E0, E1, E2, E3 = 1., 0., 0., 0. h1, h2 = 1., 1. C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 10., 1. gamma12, gamma21 = 1, 1 elif i == 2: E0, E1, E2, E3 = 1., 0., 0., 0. h1, h2 = 1., 3. C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 0.1, 1. gamma12, gamma21 = 1, 1 elif i == 3: E0, E1, E2, E3 = 1., 0.4, 0.2, 0. h1, h2 = 2., 1. C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 1., 1. gamma12, gamma21 = 1, 1 musyc = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) npoints1 = 8 npoints2 = 10 D1, D2 = grid(1e-4, 10, 1e-4, 10, npoints1, npoints2, include_zero=True) E = musyc.E(D1, D2) return D1, D2, E
def test_musyc_higher(): import numpy as np from synergy.utils import dose_tools from synergy.higher import MuSyC from synergy.utils import plots E_params = [2, 1, 1, 1, 1, 0, 0, 0] h_params = [2, 1, 0.8] C_params = [0.1, 0.01, 0.1] alpha_params = [2, 3, 1, 1, 0.7, 0.5, 2, 1, 1] gamma_params = [0.4, 2, 1, 2, 0.7, 3, 2, 0.5, 2] params = E_params + h_params + C_params + alpha_params + gamma_params truemodel = MuSyC() truemodel.parameters = params d = dose_tools.grid_multi((1e-3, 1e-3, 1e-3), (1, 1, 1), (6, 6, 6), include_zero=True) d1 = d[:, 0] d2 = d[:, 1] d3 = d[:, 2] np.random.seed(0) E = truemodel.E(d) noise = 0.05 E_fit = E + noise * (E_params[0] - E_params[-1]) * (2 * np.random.rand(len(E)) - 1) model = MuSyC(E_bounds=(0, 2), h_bounds=(1e-3, 1e3), alpha_bounds=(1e-5, 1e5), gamma_bounds=(1e-5, 1e5)) model.fit(d, E_fit) assert model.r_squared > 0.9
C2 = 0.1 alpha21 = 0.2 alpha12 = 10 gamma21 = 3 gamma12 = 0.7 r1r = 1 r2r = 1 d1, d2 = grid(1e-3, 1e2, 1e-3, 1e2, 20, 20) model1 = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha21=alpha21, alpha12=alpha12, gamma21=gamma21, gamma12=gamma12) model2 = MuSyC2(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha21=alpha21,
from synergy.utils.dose_tools import grid from matplotlib import pyplot as plt E0, E1, E2, E3 = 1, 0.5, 0.2, 0.1 h1, h2 = 1., 1. C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 0., 0. gamma12, gamma21 = 1, 1 model = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) model2 = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12,
from synergy.combination import MuSyC, CombinationIndex, BRAID, Zimmer from synergy.utils.dose_tools import grid from synergy.utils import plots from matplotlib import pyplot as plt import numpy as np mtrue = MuSyC(E0=1, E1=0.05, E2=0.75, E3=0.1, h1=0.8, h2=1, C1=5e1, C2=1e3, alpha12=1, alpha21=20, gamma21=0.5, gamma12=1) model = CombinationIndex() d1, d2 = grid(1, 1e4, 1., 1e4, 10, 10, include_zero=True) E = mtrue.E(d1, d2) * (1 + 0.05 * (2 * (np.random.rand(len(d1))) - 1)) model.fit(d1, d2, E) fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3) fig.set_size_inches(14, 4) fig.tight_layout(pad=3.0) # Plot raw data heatmap plots.plot_heatmap(d1, d2, E, ax=ax1, cmap="RdYlGn", vmin=-1, vmax=1)
from synergy.utils import plots from synergy.utils.dose_tools import grid from synergy.utils.data_exchange import to_synergyfinder E0, E1, E2, E3 = 1., 0., 0., 0. h1, h2 = 1., 1. C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 10., 1. gamma12, gamma21 = 1, 1 musyc = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) npoints1 = 8 npoints2 = 10 D1, D2 = grid(1e-4, 10, 1e-4, 10, npoints1, npoints2, include_zero=True) E = musyc.E(D1, D2) # Build ZIP model model = ZIP()
from synergy.combination import MuSyC from synergy.utils import plots from synergy.utils import dose_tools E0, E1, E2, E3 = 1, 0.7, 0.6, 0.4 h1, h2 = 2.3, 0.8 C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 10.2, 1.1 gamma12, gamma21 = 1, 1 model = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) replicates = 2 npoints = 6 npoints2 = 8 D1, D2 = dose_tools.grid(1e-3, 1, 1e-2, 10, npoints, npoints2,
from synergy.combination import MuSyC from synergy.utils.dose_tools import grid E0, E1, E2, E3 = 1, 0.6, 0.4, 0. h1, h2 = 2.3, 0.8 C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 2., 1. gamma12, gamma21 = 1.3, 0.5 truemodel = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) npoints = 8 npoints2 = 8 d1, d2 = grid(C1 / 1e2, C1 * 1e2, C2 / 1e2, C2 * 1e2, npoints, npoints2, include_zero=True)
C1, C2 = 1e-2, 1e-1 #alpha12, alpha21 = 3.2, 1.1 #gamma12, gamma21 = 1, 1 npoints = 50 npoints2 = 50 d1, d2 = grid(1e-3 / 3, 1 / 3, 1e-3, 10, npoints, npoints2, include_zero=False) MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=1, alpha21=1, gamma12=1, gamma21=1).plot_surface_plotly(d1, d2, fname="1_1_1_1.html", auto_open=True) MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1,
schindler = Schindler() s_synergy = schindler.fit(d1, d2, E, drug1_model=loewe.drug1_model, drug2_model=loewe.drug2_model) bliss = Bliss() bsynergy = bliss.fit(d1, d2, E, drug1_model=loewe.drug1_model, drug2_model=loewe.drug2_model) musyc = MuSyC() musyc.fit(d1, d2, E) fig = plt.figure(figsize=(12, 3)) ax = fig.add_subplot(1, 4, 1) musyc.plot_heatmap(d1, d2, ax=ax, logscale=False, title="Sham Surface") ax = fig.add_subplot(1, 4, 2) loewe.plot_heatmap(ax=ax, title="-log(Loewe)", vmin=-0.01, vmax=0.01, logscale=False, neglog=True) ax.set_yticks([])
from synergy.combination import MuSyC from synergy.utils import plots from synergy.utils.dose_tools import grid E0, E1, E2, E3 = 1, 0.2, 0.1, 0.4 h1, h2 = 2.3, 0.8 C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 3.2, 1.1 gamma12, gamma21 = 1, 1 model = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) npoints = 8 npoints2 = 12 D1, D2 = grid(1e-3 / 3, 1 / 3, 1e-2, 10, npoints, npoints2, include_zero=True) E = model.E(D1, D2) Efit = E * (1 + (np.random.rand(len(D1)) - 0.5) / 5.) model.fit(D1, D2, Efit)
from synergy.combination import MuSyC from synergy.utils.dose_tools import grid E0, E1, E2, E3 = 1, 0.6, 0.4, 0. h1, h2 = 2.3, 0.8 C1, C2 = 1e-2, 1e-1 alpha12, alpha21 = 2., 1. gamma12, gamma21 = 1, 1 truemodel = MuSyC(E0=E0, E1=E1, E2=E2, E3=E3, h1=h1, h2=h2, C1=C1, C2=C2, alpha12=alpha12, alpha21=alpha21, gamma12=gamma12, gamma21=gamma21) npoints = 8 npoints2 = 8 d1, d2 = grid(C1 / 1e2, C1 * 1e2, C2 / 1e2, C2 * 1e2, npoints, npoints2, include_zero=True)