Nothing
inittime <- Sys.time()
cat(paste("\n Starting LOD_POM at", date(), "\n"))
date()
test_that("Exercise LOD and POM code", {
pancr <- allFitnessEffects(data.frame(parent = c("Root", rep("KRAS", 4), "SMAD4", "CDNK2A",
"TP53", "TP53", "MLL3"),
child = c("KRAS","SMAD4", "CDNK2A",
"TP53", "MLL3",
rep("PXDN", 3), rep("TGFBR2", 2)),
s = 0.05,
sh = -0.3,
typeDep = "MN"))
pancr1 <- oncoSimulIndiv(pancr, model = "Exp", keepPhylog = TRUE)
pancr8 <- oncoSimulPop(6, pancr, model = "Exp", keepPhylog = TRUE,
detectionSize = 1e5,
mc.cores = 2)
lop8 <- LOD(pancr8)
OncoSimulR:::LOD_as_path(lop8)
expect_true(inherits(POM(pancr1), "character"))
require(igraph)
## expect_true(inherits(LOD(pancr1, strict = FALSE)$all_paths[[1]], "igraph.vs"))
## expect_true(inherits(LOD(pancr1), "igraph.vs"))
expect_true(inherits(LOD(pancr1), "character"))
expect_true(inherits(POM(pancr8), "list"))
expect_true(inherits(LOD(pancr8), "list"))
expect_true(inherits(diversityPOM(POM(pancr8)), "numeric"))
expect_true(inherits(diversityLOD(LOD(pancr8)), "numeric"))
expect_true(diversityPOM(POM(pancr8)) >= 0)
expect_true(diversityLOD(LOD(pancr8)) >= 0)
expect_error(diversityPOM(POM(pancr1)),
"Object must be a list", fixed = TRUE)
expect_error(diversityLOD(LOD(pancr1)),
"Object must be a list", fixed = TRUE)
pancr88 <- oncoSimulPop(8, pancr, model = "McFL",
keepPhylog = TRUE,
finalTime = 0.01,
max.num.tries = 1,
mc.cores = 2,
max.wall.time = 0.01,
detectionSize = 1e6)
expect_warning(LOD(pancr88),
"Missing needed components.", fixed = TRUE)
expect_warning(POM(pancr88),
"Missing needed components.", fixed = TRUE)
pancr8 <- suppressWarnings(suppressMessages(oncoSimulPop(20,
pancr, model = "McFL",
keepPhylog = TRUE,
onlyCancer = FALSE,
max.num.tries = 2,
finalTime = 0.01,
sampleEvery = 0.5,
mu = 1e-8,
mc.cores = 2,
mutationPropGrowth = FALSE,
initSize = 10)))
lop8 <- suppressWarnings(LOD(pancr8))
lop8b <- suppressWarnings(LOD(pancr8))
OncoSimulR:::LOD_as_path(lop8[[1]])
OncoSimulR:::LOD_as_path(lop8)
gg <- allFitnessEffects(noIntGenes = rep(-.9, 100))
pancr22 <- oncoSimulPop(6, gg,
model = "Exp",
keepPhylog = TRUE,
onlyCancer = FALSE,
max.num.tries = 2,
initSize = 1e3,
mu = 1e-2,
mc.cores = 2,
finalTime = 2.5)
lp22 <- LOD(pancr22)
## There is like soooo remote chance this will fail
## and the previous exercises the code anyway.
## expect_true(any(unlist(lp22) %in% "WT_is_end"))
})
date()
test_that("Warnings when no descendants", {
## cannot move from wt with this fitness landscape
m1 <- cbind(A = c(0, 1), B = c(0, 1), Fitness = c(1, 1e-8))
s1 <- oncoSimulIndiv(allFitnessEffects(genotFitness = m1),
mu = 1e-14, detectionSize = 1, initSize = 100,
keepPhylog = TRUE)
expect_warning(LOD(s1),
"LOD structure has 0 rows:",
fixed = TRUE)
s2 <- oncoSimulIndiv(allFitnessEffects(genotFitness = m1),
mu = 1e-14, detectionSize = 1, initSize = 100,
keepPhylog = FALSE)
expect_warning(LOD(s2),
"LOD structure has 0 rows:",
fixed = TRUE)
})
## Done better below and make sure it runs with keepPhylog = FALSE
## date()
## test_that("LOD, strict, same as would be obtained from full structure", {
## ## we are testing in an extremely paranoid way, against a
## ## former version
## n <- 10
## for(i in 1:n) {
## ng <- 6
## rxx <- rfitness(ng)
## rxx[sample(2:(ng + 1)), ng + 1] <- 1.5 ## make sure we get going
## s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
## initSize = 1000, detectionSize = 1e6,
## keepPhylog = TRUE, mu = 1e-3)
## lods <- LOD(s7)
## loda <- OncoSimulR:::LOD.oncosimul2_pre_2.9.2(s7, strict = FALSE)
## ## lods should be among the loda
## if(!is.null(s7$pops.by.time)) {
## expect_true(any(
## unlist(lapply(loda$all_paths,
## function(x) identical(names(x),
## names(lods))))))
## if(length(loda$all_paths) == 1) {
## expect_true(identical(names(loda$lod_single),
## names(lods)))
## }
## ## print(OncoSimulR:::LOD_as_path(lods))
## ## print(OncoSimulR:::LOD_as_path(loda))
## }
## }
## })
## date()
## Done better below and make sure it runs with keepPhylog = FALSE
## date()
## test_that("LOD, strict, same as would be obtained from full structure, with initMutant", {
## n <- 10
## ## with initMutant
## for(i in 1:n) {
## rxx <- rfitness(6)
## rxx[3, 7] <- 1.5
## s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
## initSize = 1000, detectionSize = 1e6,
## keepPhylog = TRUE, mu = 1e-3,
## initMutant = c("B"))
## lods <- LOD(s7)
## loda <- OncoSimulR:::LOD.oncosimul2_pre_2.9.2(s7, strict = FALSE)
## ## lods should be among the loda
## expect_true(any(
## unlist(lapply(loda$all_paths,
## function(x) identical(names(x),
## names(lods))))))
## if(length(loda$all_paths) == 1) {
## expect_true(identical(names(loda$lod_single),
## names(lods)))
## }
## ## print(loda)
## }
## })
## date()
set.seed(NULL)
si <- runif(1, 1, 1e9)
print(si)
date()
test_that("LOD, strict, same as would be obtained from full structure, seed", {
## we are testing in an extremely paranoid way, against a
## former version
n <- 10
for(i in 1:n) {
ng <- 8
rxx <- rfitness(ng, c = 1, sd = 0.1,
reference = rep(1, ng))
## rxx[sample(2:(ng + 1)), ng + 1] <- 1.5 ## make sure we get going
set.seed(si + i)
s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 10, detectionSize = 1e5,
keepPhylog = FALSE, mu = 5e-3)
set.seed(si + i)
s7b <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 10, detectionSize = 1e5,
keepPhylog = TRUE, mu = 5e-3)
lods <- LOD(s7)
print(lods)
loda <- OncoSimulR:::LOD.oncosimul2_pre_2.9.2(s7b, strict = FALSE)
## lods should be among the loda
if(!is.null(s7$pops.by.time)) {
expect_true(any(
unlist(lapply(loda$all_paths,
function(x) identical(names(x),
lods)))))
if(length(loda$all_paths) == 1) {
expect_true(identical(names(loda$lod_single),
lods))
}
## print(OncoSimulR:::LOD_as_path(lods))
## print(OncoSimulR:::LOD_as_path(loda))
}
}
})
date()
set.seed(NULL)
si <- runif(1, 1, 1e9)
print(si)
date()
test_that("LOD, strict, same as would be obtained from full structure, with initMutant", {
n <- 10
## with initMutant
for(i in 1:n) {
rxx <- rfitness(8, reference = rep(1, 8))
rxx[4, ncol(rxx)] <- 1.5
set.seed(2 * si + i)
s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 100, detectionSize = 1e5,
keepPhylog = FALSE, mu = 5e-3,
initMutant = c("C"))
set.seed(2 * si + i)
s7b <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 100, detectionSize = 1e5,
keepPhylog = TRUE, mu = 5e-3,
initMutant = c("C"))
lods <- LOD(s7)
print(lods)
attributes(lods) <- NULL
loda <- OncoSimulR:::LOD.oncosimul2_pre_2.9.2(s7b, strict = FALSE)
## we need this because o.w. the old output it ain't an igraph
## object with names
if(!any(grepl("_is_end", lods)) && !any(grepl("No_descendants", lods))) {
## lods should be among the loda
if(!is.null(s7$pops.by.time)) {
expect_true(any(
unlist(lapply(loda$all_paths,
function(x) identical(names(x),
lods)))))
if(length(loda$all_paths) == 1) {
expect_true(identical(names(loda$lod_single),
lods))
}
}
} else if (any(grepl("No_descendants", lods))) {
expect_true(identical(loda$lod_single,
lods))
} else {
if(!is.null(s7$pops.by.time)) {
expect_true(any(
unlist(lapply(loda$all_paths,
function(x) identical(x,
lods)))))
if(length(loda$all_paths) == 1) {
expect_true(identical(loda$lod_single,
lods))
}
}
}
}
})
date()
set.seed(NULL)
date()
test_that("POM from C++ is the same as from the pops.by.time object", {
## Must make sure keepEvery = sampleEvery or granularity of
## C++ can be larger
n <- 10
for(i in 1:n) {
ng <- 6
rxx <- rfitness(ng)
rxx[sample(2:(ng + 1)), ng + 1] <- 1.5 ## make sure we get going
s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 1000, detectionSize = 1e6,
mu = 1e-3)
pom <- OncoSimulR:::POM_pre_2.9.2(s7)
if(!is.null(s7$pops.by.time) &&
!any(apply(s7$pops.by.time[, -1], 1, function(x) length(which(x == max(x))) > 1)))
expect_true(identical(s7$other$POM, pom))
}
## with initMutant
for(i in 1:n) {
rxx <- rfitness(6)
rxx[3, 7] <- 1.5
s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 1000, detectionSize = 1e6,
mu = 1e-3,
initMutant = c("B"))
pom <- OncoSimulR:::POM_pre_2.9.2(s7)
## if(!is.null(s7$pops.by.time)) {
if(!is.null(s7$pops.by.time) &&
!any(apply(s7$pops.by.time[, -1, drop = FALSE], 1,
function(x) length(which(x == max(x))) > 1)))
expect_true(identical(s7$other$POM, pom))
}
## try to make extinction likely
for(i in 1:n) {
rxx <- rfitness(6)
rxx[3, 7] <- 1e-8
s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
initSize = 10, detectionSize = 1e6,
mu = 1e-3,
max.num.tries = 3,
errorHitMaxTries = FALSE,
initMutant = c("B"))
pom <- OncoSimulR:::POM_pre_2.9.2(s7)
if(!is.null(s7$pops.by.time) &&
!any(apply(s7$pops.by.time[, -1, drop = FALSE], 1,
function(x) length(which(x == max(x))) > 1))) {
if(any(s7$other$POM == "_EXTINCTION_"))
expect_true(identical(s7$other$POM[-length(s7$other$POM)], pom))
else
expect_true(identical(s7$other$POM, pom))
}
}
})
date()
## can be unpredictably slow. Not needed.
## date()
## test_that("POM from C++ is the same as from the pops.by.time object, McFL", {
## ## Must make sure keepEvery = sampleEvery or granularity of
## ## C++ can be larger
## n <- 10
## for(i in 1:n) {
## ng <- 6
## rxx <- rfitness(ng)
## rxx[sample(2:(ng + 1)), ng + 1] <- 1.5 ## make sure we get going
## s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
## initSize = 1000, detectionSize = 1e4,
## mu = 1e-3, model = "McFL")
## pom <- OncoSimulR:::POM_pre_2.9.2(s7)
## if(!is.null(s7$pops.by.time) &&
## !any(apply(s7$pops.by.time[, -1], 1, function(x) length(which(x == max(x))) > 1)))
## expect_true(identical(s7$other$POM, pom))
## }
## ## with initMutant
## for(i in 1:n) {
## rxx <- rfitness(6)
## rxx[3, 7] <- 1.5
## s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
## initSize = 1000, detectionSize = 1e4,
## mu = 1e-3, model = "McFL",
## initMutant = c("B"))
## pom <- OncoSimulR:::POM_pre_2.9.2(s7)
## ## if(!is.null(s7$pops.by.time)) {
## if(!is.null(s7$pops.by.time) &&
## !any(apply(s7$pops.by.time[, -1], 1, function(x) length(which(x == max(x))) > 1)))
## expect_true(identical(s7$other$POM, pom))
## }
## })
## date()
## ## To see how the above works by returning LOD sensu stricto you can look
## ## at this code:
## pancr <- allFitnessEffects(data.frame(parent = c("Root", rep("KRAS", 4), "SMAD4", "CDNK2A",
## "TP53", "TP53", "MLL3"),
## child = c("KRAS","SMAD4", "CDNK2A",
## "TP53", "MLL3",
## rep("PXDN", 3), rep("TGFBR2", 2)),
## s = 0.05,
## sh = -0.3,
## typeDep = "MN"))
## pancr1 <- oncoSimulIndiv(pancr, model = "Exp", keepPhylog = TRUE)
## ## All we need to get LOD sensu stricto (i.e., identical to Szendro)
## ## is keep pop size of receiving, or destination, genotype.
## ## Then, filter those where popSize > 0
## ## And use first (starting from bottom) of that path
## ## So find, for each child, the last event with popSize == 0,
## ## and keep only that row.
## ## Probably enough to run duplicated in reverse (on the df with popSize
## ## child = 0)
## ## The indices to keep: !rev(duplicated(rev(fg3[, 2])))
## fg1 <- pancr1$other$PhylogDF
## fg3 <- data.frame(parent = c("", "", "A", "B", "C", "A, B"),
## child = c("A","B","A, B","A, B", "A, C", "A, B, C"),
## time = 1:6,
## pop_size_child = c(0, 0, 0, 0, 0, 0),
## stringsAsFactors = FALSE)
## fg4 <- data.frame(parent = c("", "", "A", "B", "C", "A, B"),
## child = c("A","B","A, B","A, B", "A, C", "A, B, C"),
## time = 1:6,
## pop_size_child = c(0, 0, 0, 2, 0, 0),
## stringsAsFactors = FALSE)
## ## ## from phylogClone, key parts
## ## fpc <- function(df) {
## ## tG <- unique(c(df[, 1], df[, 2]))
## ## g <- igraph::graph.data.frame(df[, c(1, 2)])
## ## nodesInP <- unique(unlist(igraph::neighborhood(g, order = 1e+09,
## ## nodes = tG, mode = "in")))
## ## allLabels <- unique(as.character(unlist(df[, c(1, 2)])))
## ## nodesRm <- setdiff(allLabels, V(g)$name[nodesInP])
## ## g <- igraph::delete.vertices(g, nodesRm)
## ## tmp <- list(graph = g, df = df)
## ## class(tmp) <- c(class(tmp), "phylogClone")
## ## return(tmp)
## ## }
## ## ## Filter the PhylogDF so we obtain LOD, sensu stricto.
## ## filter_phylog_df_LOD_ <- function(x) {
## ## x <- x[x$pop_size_child == 0, ]
## ## keep <- !rev(duplicated(rev(x$child)))
## ## return(x[keep, ])
## ## }
## require(igraph)
## all_simple_paths(OncoSimulR:::phcl_from_lod(OncoSimulR:::filter_phylog_df_LOD_with_n(fg3))$graph,
## from = "",
## to = "A, B, C",
## mode = "out")
## all_simple_paths(OncoSimulR:::phcl_from_lod(OncoSimulR:::filter_phylog_df_LOD_with_n(fg3))$graph,
## to = "",
## from = "A, B, C",
## mode = "in")
cat(paste("\n Ending LOD_POM at", date(), "\n"))
### Why we need to exclude some POMs in the testing
## with i = 2335 ## new one removes entries
## because two have identical values
## apply(s7$pops.by.time[, -1], 1, function(x) which(x == max(x)))
## with i = 10001421 ## different entries
## same problem: a case of two pops with identical values
## with i = 15046 ## new one adds entries
## same problem
## OK if we account for that
## while(TRUE) {
## i <- i + 1
## set.seed(i)
## ng <- 6
## rxx <- rfitness(ng)
## rxx[sample(2:(ng + 1)), ng + 1] <- 1.5 ## make sure we get going
## s7 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx),
## initSize = 1000, detectionSize = 1e6,
## mu = 1e-3)
## pom <- OncoSimulR:::POM_pre_2.9.2(s7)
## if(!is.null(s7$pops.by.time))
## expect_true(identical(s7$other$POM, pom))
## }
cat(paste(" Took ", round(difftime(Sys.time(), inittime, units = "secs"), 2), "\n\n"))
rm(inittime)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.