예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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,
예제 #6
0
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,
예제 #7
0
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)
예제 #8
0
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()
예제 #9
0
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,
예제 #10
0
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)
예제 #11
0
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()
예제 #12
0
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,
예제 #13
0
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([])
예제 #14
0
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)
예제 #15
0
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)