Exemplo n.º 1
0
def varyExpMRate(initialMutRate, endMutRate, resistanceArr, n, size,
                 growthRates, isDrug, isMin):
    step = .01
    xs = np.arange(initialMutRate, endMutRate, step)
    ys = np.arange(resistanceArr[0], resistanceArr[1], 1)
    results = np.zeros((len(ys), len(xs)))
    for x, mRate in enumerate(xs):
        mutationRateUp, mutationRateDown = main.detMutationRate(mRate, size)
        for y, resVal in enumerate(ys):
            if isMin:
                resistances = main.expResAssign(size, n, resVal, size)
            else:
                resistances = main.expResAssign(size, n, 0, resVal)
            eigVal = main.getEig(growthRates, resistances, mutationRateUp,
                                 mutationRateDown, isDrug)
            results[y, x] = eigVal[1]
    return results, xs, ys
Exemplo n.º 2
0
def tumorSizeCalcExp(sequence, mRate, size, reachMaxRes):
    days = len(sequence)
    k = 1
    growthRates = np.full(size, .5)
    resistances = main.expResAssign(size, 1.001, 0, reachMaxRes)
    popArr = main.calcPopDistribution(int(size), .01)
    mutationRatesUp, mutationRatesDown = main.detMutationRate(mRate, size)
    resultArr = odeint(
        main.calculateChange, popArr, np.arange(0, days, 1),
        (growthRates, mutationRatesUp, mutationRatesDown, k, resistances,
         main.periodicDrugDay(sequence, days), np.zeros(popArr.size)))
    return np.sum(resultArr)
Exemplo n.º 3
0
def costOfResFunction(sequence, mRate, size, maxResSwitchNumb, n):
    days = len(sequence)
    k = 1
    resistances = main.expResAssign(size, n, 0, maxResSwitchNumb)
    popArr = main.calcPopDistribution(int(size), 1)
    mutationRatesUp, mutationRatesDown = main.detMutationRate(mRate, size)
    growthRate = main.costOfRes(.25, resistances)
    resultArr = odeint(
        main.calculateChange, popArr, np.arange(0, days, 1),
        (growthRate, mutationRatesUp, mutationRatesDown, k, resistances,
         main.periodicDrugDay(sequence, days), np.zeros(popArr.size)))
    return np.sum(resultArr)
Exemplo n.º 4
0
def eigVary(initSize, endSize, mRateStart, mRateEnd, step):
    sizeArr = np.arange(initSize, endSize + 1, 1)
    mRateArr = np.arange(mRateStart, mRateEnd + step, step)
    results = np.zeros((len(sizeArr), len(mRateArr)))
    for x, mRate in enumerate(mRateArr):
        for y, size in enumerate(sizeArr):
            resistances = main.expResAssign(size, 1.0001, 0, size - 1)
            model = main.GenModelCustRes(mRate * size, size, resistances, 1,
                                         100, [True])
            res = model.RunEig(True)
            results[y, x] = res[1]
    return results, mRateArr, sizeArr
Exemplo n.º 5
0
def varyParametersSize(initialMutRate, endMutRate, maxSize, isDrug):
    xs = np.arange(initialMutRate, endMutRate + .01, .01)
    ys = np.arange(2, maxSize + 1, 1)
    results = np.zeros((len(ys), len(xs)))
    for x, mRate in enumerate(xs):
        for y, size in enumerate(ys):
            mutationRateUp, mutationRateDown = main.detMutationRate(
                mRate * size, size)
            growthRates = np.full(size, .5)
            resistanceVal = main.expResAssign(size, 1.15, 0, size - 1)
            #plotters.PlotHist(resistanceVal)
            #plt.xlabel("State"); plt.ylabel("Resistance Values"); plt.title("Resistance Histogram")
            #plt.show()
            eigVal = main.getEig(growthRates, resistanceVal, mutationRateUp,
                                 mutationRateDown, isDrug)
            results[y, x] = eigVal[1]
    return results, xs, ys
Exemplo n.º 6
0
def objectiveFun(sequence):
    days = 10
    size = 5
    k = 1
    mRate = .05
    growthRates = np.full(size, .5)
    popArr = main.calcPopDistribution(size, .01)
    resistances = main.expResAssign(size, 2, 0, size - 1)
    mutationRatesUp, mutationRatesDown = main.detMutationRate(
        mRate, size, True, False)
    resultArr = odeint(
        main.calculateChange, popArr, np.arange(0, days, 1),
        (growthRates, mutationRatesUp, mutationRatesDown, k, resistances,
         main.periodicDrugDay(sequence, days), np.zeros(popArr.size)))
    weightAns = 0
    for i in range(0, len(resistances)):
        for j in range(0, len(resultArr)):
            weightAns = weightAns + (resistances[i] * resultArr[j][i])
    return weightAns