inittime <- Sys.time() cat(paste("\n Starting test.flfast-additional.R test at", date())) date() test_that("Issue warnings and messages", { df1 <- data.frame(Genotype = c("A", "B, C"), Fitness = c(1.3, 2), stringsAsFactors = FALSE) expect_warning(OncoSimulR:::allGenotypes_to_matrix(df1), "No WT genotype. Setting its fitness to 1.", fixed = TRUE) df2 <- data.frame(Genotype = c("WT", "A", "B, C"), Fitness = c(5, 1.3, 2)) expect_warning(OncoSimulR:::allGenotypes_to_matrix(df2), "First column of genotype fitness is a factor.", fixed = TRUE) df1 <- data.frame(Genotype = c("A", "B, C"), Fitness = c(1.3, 2), stringsAsFactors = FALSE) expect_warning(OncoSimulR:::to_genotFitness_std(df1), "No WT genotype. Setting its fitness to 1.", fixed = TRUE) df2 <- data.frame(Genotype = c("WT", "A", "B, C"), Fitness = c(5, 1.3, 2)) expect_warning(OncoSimulR:::to_genotFitness_std(df2), "First column of genotype fitness is a factor.", fixed = TRUE) }) test_that("Equality of fitness including allFitnessEffects", { df3 <- data.frame(Genotype = c("WT", "A", "B, C"), Fitness = c(1, 2, 0), stringsAsFactors = FALSE) m3 <- rbind(c(0, 0, 0, 1), c(1, 0, 0, 2.0)) colnames(m3) <- c("A", "B", "C", "Fitness") m4 <- rbind(c(0, 0, 0, 1), c(1, 0, 0, 2.0), c(0, 1, 1, 0)) colnames(m4) <- c("A", "B", "C", "Fitness") ## yes, m3 and m3 missing the attributes expect_equivalent(OncoSimulR:::to_genotFitness_std(df3), m3) expect_equivalent(OncoSimulR:::to_genotFitness_std(df3, simplify = FALSE), m4) ## now, scale by fitness of WT df3 <- data.frame(Genotype = c("WT", "A", "B, C"), Fitness = c(1.3, 2, 0), stringsAsFactors = FALSE) m3 <- rbind(c(0, 0, 0, 1.3), c(1, 0, 0, 2.0)) colnames(m3) <- c("A", "B", "C", "Fitness") m3[, "Fitness"] <- m3[, "Fitness"]/1.3 m4 <- rbind(c(0, 0, 0, 1.3), c(1, 0, 0, 2.0), c(0, 1, 1, 0)) colnames(m4) <- c("A", "B", "C", "Fitness") m4[, "Fitness"] <- m4[, "Fitness"]/1.3 expect_equivalent(OncoSimulR:::to_genotFitness_std(df3), m3) expect_equivalent(OncoSimulR:::to_genotFitness_std(df3, simplify = FALSE), m4) for(i in 1:10) { rxx <- rfitness(7) expect_equal( allFitnessEffects(genotFitness = rxx)$fitnessLandscape, OncoSimulR:::to_genotFitness_std(rxx)) } for(i in 1:10) { ng <- 7 rxx <- rfitness(ng) cnn <- replicate(ng, paste(sample(c(LETTERS, letters, 0:9), 5, replace = TRUE), collapse = "")) if(any(duplicated(cnn))) cnn <- LETTERS[1:ng] colnames(rxx)[1:ng] <- cnn fex <- allFitnessEffects(genotFitness = rxx) gn <- OncoSimulR:::allNamedGenes(fex) m1x <- data.frame(Gene = gtools::mixedsort(cnn), GeneNumID = 1:ng, stringsAsFactors = FALSE) expect_identical(m1x, gn) } }) test_that("drv names OK", { rxx <- rfitness(5) expect_silent(allFitnessEffects(genotFitness = rxx, drvNames = LETTERS[1:4])) }) ## Make sure warning if using Bozic test_that("Bozic and fitness landscape spec", { rxx <- rfitness(7) expect_warning(oncoSimulIndiv( allFitnessEffects(genotFitness = rxx), model = "Bozic", initSize = 5000, onlyCancer = FALSE, finalTime = 10, verbosity = 0), "Bozic model passing a fitness landscape will not work for now", fixed = TRUE) rm(rxx) }) test_that("fitness evaluation what we expect", { for(i in 1:10) { rxx <- rfitness(5) ## allFitnessEffects(genotFitness = rxx) eag <- evalAllGenotypes(allFitnessEffects(genotFitness = rxx), addwt = TRUE) rxxf <- rxx[, "Fitness"] rxxf[rxxf <= 1e-09] <- 0 expect_equal(rxxf, eag[, "Fitness"]) } }) ## rxx <- rfitness(7) ## simul1 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx, ## drvNames = LETTERS[1:7]), ## model = "Exp", initSize = 5000, ## onlyCancer = FALSE, ## finalTime = 1000, ## verbosity = 0) ## summary(simul1) test_that("rt and fl specifications are the same", { ## We test that passing a DAG as a DAG of restrictions or as its ## fitness landscape give identical output ## This subsumes taking an rT, converting to fitness landscape, and ## verifying we get same fitnesses ## n: number of genes dag_fitness <- function(n) { s1min <- 0.1 s1max <- 0.7 dummys1 <- 0.5 ## to put something below, to begin with rt <- simOGraph(n, out ="rT", geneNames = LETTERS[1:n], s = dummys1, sh = -99) ## nparents = sample(2:5, 1), ## h = sample(2:5, 1)) ## Make sure we get variation uc <- unique(rt$child) s1v <- runif(uc, s1min, s1max) names(s1v) <- uc rt$s <- s1v[rt$child] rtf <- evalAllGenotypes(allFitnessEffects(rt), addwt = TRUE) fl <- OncoSimulR:::allGenotypes_to_matrix(rtf) fl[fl[, "Fitness"] == 0, "Fitness"] <- 1e-9 return(list(rt = rt, fl = fl)) } tests <- 10 ng <- 7 for(i in 1:tests) { rtfl <- dag_fitness(ng) is <- round(runif(1) * 100) set.seed(is) s1 <- oncoSimulIndiv(allFitnessEffects(rtfl$rt)) set.seed(is) s2 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rtfl$fl)) expect_identical(s1$pops.by.time, s2$pops.by.time) print(summary(s1)) expect_identical(s1[1:length(s1)], s2[1:length(s2)]) ## they differ in the call attribute, of course ## adding a package for this is an overkill ## expect_true(compare::compare(s1, s2, ignoreAttrs = TRUE)$result) } }) ## FIXME: some tests with mutator, etc? ## NOTE the BREAKING changes!!! missing genotypes set to 0 ## ## catching the label bug ## I was getting weird genotypes labels ## o3 <- allFitnessEffects(orderEffects = c( ## "M > D > F" = 0.99, ## "D > M > F" = 0.2, ## "D > M" = 0.1, ## "M > D" = 0.9), ## noIntGenes = c("u" = 0.01, "z" = 0.01, "w" = 0.02), ## geneToModule = ## c("Root" = "Root", ## "M" = "m", ## "F" = "f", ## "D" = "d") ) ## tmp <- oncoSimulIndiv(o3, model = "McFL", ## mu = 5e-5, finalTime = 500, ## detectionDrivers = 3, ## sampleEvery = 0.03, ## keepEvery = 1, ## onlyCancer = FALSE, ## initSize = 1000, ## keepPhylog = TRUE ## , initMutant = c("d > m > w") ## ) ## tmp$GenotypesLabels ## set.seed(1) ## rxx <- rfitness(5) ## rxx[2, 6] <- 2 ## simul1 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx, ## drvNames = LETTERS[1:5]), ## model = "Exp", initSize = 5000, ## onlyCancer = FALSE, ## finalTime = 300, ## verbosity = 3) ## summary(simul1) ## set.seed(1) ## rxx <- rfitness(5) ## rxx[2, 6] <- 2 ## simul1 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rxx, ## drvNames = LETTERS[1:5]), ## model = "Exp", initSize = 5000, ## onlyCancer = FALSE, ## finalTime = 1000, ## verbosity = 0) ## summary(simul1) ## rtfl <- dag_fitness(5) ## set.seed(2) ## s1 <- oncoSimulIndiv(allFitnessEffects(rtfl$rt)) ## set.seed(2) ## s2 <- oncoSimulIndiv(allFitnessEffects(genotFitness = rtfl$fl)) ## summary(s1) ## summary(s2) ## I think this is already tested ## rxx <- rfitness(3) ## allFitnessEffects(genotFitness = rxx, ## geneToModule = c("Root" = "Root", ## "A" = "a1, a2", ## "B" = "b1", ## "C" = "c1")) cat(paste("\n Ending test.flfast-additional.R test at", date(), "\n")) cat(paste(" Took ", round(difftime(Sys.time(), inittime, units = "secs"), 2), "\n\n")) rm(inittime)