Exemple #1
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)
Exemple #2
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)
Exemple #3
0
def tumorSizeCalcLinear(sequence, mRate, size):
    days = len(sequence)
    k = 1
    growthRates = np.full(size, .5)
    resistances = main.assignResistance(size, [0, 1])
    popArr = main.calcPopDistribution(int(size), .01)
    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)))
    return np.sum(resultArr[50, :])
def varyParametersPop(initialMutRate, endMutRate, maxSize, k, drugWeeks,
                      timesteps, initPopSize):
    xs = np.arange(initialMutRate, endMutRate, .01)
    ys = range(2, maxSize + 1)
    resultsArr = 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)
            popArr = main.calcPopDistribution(size, initPopSize)
            resistances = main.assignResistance(size, [0, 1])
            change = np.zeros(size)
            growthRates = np.full(size, 1)
            results = odeint(main.calculateChange, popArr, timesteps,
                             (growthRates, mutationRateUp, mutationRateDown, k,
                              resistances, drugWeeks, change))
            resultsArr[y, x] = np.sum(results[:][-1])
    return resultsArr, xs, ys
Exemple #5
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
Exemple #6
0
def nextSimulation(initialPop, mRate, k, tolerance, size, days, sequence):
    popArr = main.calcPopDistribution(size, initialPop)
    resistanceArr = main.assignResistance(size, [0, 1])
    growthRates = np.full(size, 1)
    mutationRatesUp, mutationRatesDown = main.detMutationRate(mRate, size)
    results = odeint(
        main.calculateChange, popArr, np.arange(0, 100, 1),
        (growthRates, mutationRatesUp, mutationRatesDown, k, resistanceArr,
         main.periodicDrugDay(sequence, days), np.zeros(size)))

    totalPops = np.sum(results, axis=0)
    sumPop = np.sum(totalPops)
    mean, standardDev = main.getMeanAndStandardDeviation(popArr)
    info.append([sumPop, mean, standardDev])

    # For next iteration (essentially a recursion)
    tolerance = tolerance - 1
    if tolerance > 0:
        nextSimulation(initialPop, mRate, k, tolerance, size + 1, days,
                       sequence)
    return info