gatk-3.8/analysis/depristo/distributedGATK/model.R

35 lines
854 B
R

JOB_START_RATE = 0.1 # chance of starting is 0.1
WORK_UNITS = 100
WORK_RATE = 1
N_TICKS = 300
ticks <- 1:N_TICKS
# the probability that a job starts at exactly tick i
pThreadStartAtTick <- function(i) {
dexp(i, JOB_START_RATE)
}
jobDoneByI <- function(i) {
return(sapply(i - ticks, function(x) max(x, 0)) * WORK_RATE)
#return(pCompleteAtI(i, pStarts, ticks))
}
pThreadDoneByI <- function(i) {
pStarts <- pThreadStartAtTick(ticks)
workDoneByThreadStartingAtI <- jobDoneByI(i)
fracDone <- workDoneByThreadStartingAtI / WORK_UNITS
doneAtI <- fracDone >= 1
return(sum(pStarts * doneAtI))
}
pThreadsDoneByI <- function(i, nThreads) {
pDone <- rep(0, N_TICKS)
for ( thread : 1:nThreads )
pDone <- pPrevThreadsNotDoneAtI(pDone, i) + pThreadDoneByI(i)
}
#plot(ticks, workDoneByI(100))
plot(ticks, sapply(ticks, function(i) pThreadDoneByI(i)))