forked from ncats/IntLIM
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added plotting functionality and testing for permutations
- Loading branch information
1 parent
ee47662
commit 4016e27
Showing
8 changed files
with
319 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,6 +19,7 @@ Depends: R (>= 3.2.0) | |
Imports: | ||
ComplexHeatmap, | ||
DT, | ||
ggplot2, | ||
gplots, | ||
graphics, | ||
grDevices, | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
# When input data is not valid, should terminate early. | ||
test_that("Errors on wrong input type",{ | ||
expect_error(PermuteIntLIM(data = "?!%", stype="something", outcome = 1, | ||
independent.var.type = 2, num.permutations = 4), | ||
"The data must be an IntLimData object", ignore.case = TRUE) | ||
}) | ||
|
||
# When the number of permutations is not sufficient, should terminate early. | ||
test_that("Insufficient fold count causes an error",{ | ||
# Create toy data. | ||
pData <- data.frame("Feat1"=c(47.1,26.2,84.3,98.4,43.5,82.6,13.7,87.8), | ||
"Feat2"=c(37.1,40.2,80.3,83.4,6.5,12.6,43.7,75.8), | ||
"Feat3"=c(14.1,74.2,11.3,19.4,73.5,55.6,18.7,91.8), | ||
"Level"=c("Low", "Medium", "Low", "Medium", "Medium", "Low", | ||
"Low", "Medium")) | ||
rownames(pData) <- c("Fred", "Wilma", "Pebbles", "Bambam", "Betty", "Barney", | ||
"Dino", "Hoppy") | ||
geneData <- data.frame("Fred"=c(46.1,20.2,59.3), "Wilma"=c(11.1,34.2,19.3), | ||
"Pebbles"=c(28.1,71.2,94.3), "Bambam"=c(51.1,91.2,32.3), | ||
"Betty"=c(73.1,26.2,40.3), "Barney"=c(91.1,99.2,12.3), | ||
"Dino"=c(38.1,44.2,60.3), "Hoppy"=c(91.1,93.2,63.3)) | ||
rownames(geneData) <- c("Gene1", "Gene2", "Gene3") | ||
metabData <- data.frame("Fred"=c(60.1,32.2,81.3), "Wilma"=c(68.1,58.2,45.3), | ||
"Pebbles"=c(30.1,61.2,67.3), "Bambam"=c(36.1,7.2,79.3), | ||
"Betty"=c(5.1,87.2,91.3), "Barney"=c(5.1,87.2,91.3), | ||
"Dino"=c(99.1,10.2,85.3), "Hoppy"=c(51.1,14.2,76.3)) | ||
rownames(metabData) <- c("Metab1", "Metab2", "Metab3") | ||
metabMetaData <- data.frame("id"=c("Metab1", "Metab2", "Metab3"), "metabname"= | ||
c("Metab1", "Metab2", "Metab3")) | ||
geneMetaData <- data.frame("id"=c("Gene1", "Gene2", "Gene3"), "genename"= | ||
c("Gene1", "Gene2", "Gene3")) | ||
dat <- methods::new("IntLimData", analyteType1=as.matrix(metabData), | ||
analyteType2=as.matrix(geneData), | ||
analyteType1MetaData = metabMetaData, | ||
analyteType2MetaData = geneMetaData, | ||
sampleMetaData = pData) | ||
expect_error(PermuteIntLIM(data = dat, stype="Level", outcome = 1, | ||
independent.var.type = 2, num.permutations = 0), | ||
"The number of permutations must be greater than or equal to 1", | ||
ignore.case = TRUE) | ||
}) | ||
|
||
# Check that the multi-omic function works with meta-data. | ||
test_that("Function works correctly in multi-omic case.", { | ||
# Create toy data. | ||
pData <- data.frame("Feat1"=c(47.1,26.2,84.3,98.4,43.5,82.6,13.7,87.8), | ||
"Feat2"=c(37.1,40.2,80.3,83.4,6.5,12.6,43.7,75.8), | ||
"Feat3"=c(14.1,74.2,11.3,19.4,73.5,55.6,18.7,91.8), | ||
"Level"=c("Low", "Medium", "Low", "Medium", "Medium", "Low", | ||
"Low", "Medium")) | ||
rownames(pData) <- c("Fred", "Wilma", "Pebbles", "Bambam", "Betty", "Barney", | ||
"Dino", "Hoppy") | ||
geneData <- data.frame("Fred"=c(46.1,20.2,59.3), "Wilma"=c(11.1,34.2,19.3), | ||
"Pebbles"=c(28.1,71.2,94.3), "Bambam"=c(51.1,91.2,32.3), | ||
"Betty"=c(73.1,26.2,40.3), "Barney"=c(91.1,99.2,12.3), | ||
"Dino"=c(38.1,44.2,60.3), "Hoppy"=c(91.1,93.2,63.3)) | ||
rownames(geneData) <- c("Gene1", "Gene2", "Gene3") | ||
metabData <- data.frame("Fred"=c(60.1,32.2,81.3), "Wilma"=c(68.1,58.2,45.3), | ||
"Pebbles"=c(30.1,61.2,67.3), "Bambam"=c(36.1,7.2,79.3), | ||
"Betty"=c(5.1,87.2,91.3), "Barney"=c(5.1,87.2,91.3), | ||
"Dino"=c(99.1,10.2,85.3), "Hoppy"=c(51.1,14.2,76.3)) | ||
rownames(metabData) <- c("Metab1", "Metab2", "Metab3") | ||
metabMetaData <- data.frame("id"=c("Metab1", "Metab2", "Metab3"), "metabname"= | ||
c("Metab1", "Metab2", "Metab3")) | ||
geneMetaData <- data.frame("id"=c("Gene1", "Gene2", "Gene3"), "genename"= | ||
c("Gene1", "Gene2", "Gene3")) | ||
dat <- methods::new("IntLimData", analyteType1=as.matrix(metabData), | ||
analyteType2=as.matrix(geneData), | ||
analyteType1MetaData = metabMetaData, | ||
analyteType2MetaData = geneMetaData, | ||
sampleMetaData = pData) | ||
|
||
# Discrete | ||
res <- PermuteIntLIM(data = dat, stype="Level", outcome = 1, | ||
independent.var.type = 2, num.permutations = 4) | ||
expect_equal(nrow(res[[1]]), 4) | ||
expect_equal(ncol(res[[1]]), 2) | ||
expect_equal(length(res[[2]]), 4) | ||
|
||
# Continuous | ||
res <- PermuteIntLIM(data = dat, stype="Feat1", outcome = 1, | ||
independent.var.type = 2, num.permutations = 4, | ||
continuous = TRUE) | ||
expect_equal(nrow(res[[1]]), 4) | ||
expect_equal(ncol(res[[1]]), 2) | ||
expect_equal(length(res[[2]]), 4) | ||
}) | ||
|
||
# Check that we are still able to run without the metadata. | ||
test_that("Function still works when metadata is missing.", { | ||
|
||
# Create toy data. | ||
pData <- data.frame("Feat1"=c(47.1,26.2,84.3,98.4,43.5,82.6,13.7,87.8), | ||
"Feat2"=c(37.1,40.2,80.3,83.4,6.5,12.6,43.7,75.8), | ||
"Feat3"=c(14.1,74.2,11.3,19.4,73.5,55.6,18.7,91.8), | ||
"Level"=c("Low", "Medium", "Low", "Medium", "Medium", "Low", | ||
"Low", "Medium")) | ||
rownames(pData) <- c("Fred", "Wilma", "Pebbles", "Bambam", "Betty", "Barney", | ||
"Dino", "Hoppy") | ||
geneData <- data.frame("Fred"=c(46.1,20.2,59.3), "Wilma"=c(11.1,34.2,19.3), | ||
"Pebbles"=c(28.1,71.2,94.3), "Bambam"=c(51.1,91.2,32.3), | ||
"Betty"=c(73.1,26.2,40.3), "Barney"=c(91.1,99.2,12.3), | ||
"Dino"=c(38.1,44.2,60.3), "Hoppy"=c(91.1,93.2,63.3)) | ||
rownames(geneData) <- c("Gene1", "Gene2", "Gene3") | ||
metabData <- data.frame("Fred"=c(60.1,32.2,81.3), "Wilma"=c(68.1,58.2,45.3), | ||
"Pebbles"=c(30.1,61.2,67.3), "Bambam"=c(36.1,7.2,79.3), | ||
"Betty"=c(5.1,87.2,91.3), "Barney"=c(5.1,87.2,91.3), | ||
"Dino"=c(99.1,10.2,85.3), "Hoppy"=c(51.1,14.2,76.3)) | ||
rownames(metabData) <- c("Metab1", "Metab2", "Metab3") | ||
dat <- methods::new("IntLimData", analyteType1=as.matrix(metabData), | ||
analyteType2=as.matrix(geneData), | ||
analyteType1MetaData = as.data.frame(matrix(, nrow = 0, ncol = 0)), | ||
analyteType2MetaData = as.data.frame(matrix(, nrow = 0, ncol = 0)), | ||
sampleMetaData = pData) | ||
|
||
# Discrete | ||
res <- PermuteIntLIM(data = dat, stype="Level", outcome = 1, | ||
independent.var.type = 2, num.permutations = 4) | ||
expect_equal(nrow(res[[1]]), 4) | ||
expect_equal(ncol(res[[1]]), 2) | ||
expect_equal(length(res[[2]]), 4) | ||
|
||
# Continuous | ||
res <- PermuteIntLIM(data = dat, stype="Feat1", outcome = 1, | ||
independent.var.type = 2, num.permutations = 4, | ||
continuous = TRUE) | ||
expect_equal(nrow(res[[1]]), 4) | ||
expect_equal(ncol(res[[1]]), 2) | ||
expect_equal(length(res[[2]]), 4) | ||
}) | ||
|
||
# Check that we are able to run with both single-omic and multi-omic data. | ||
test_that("Single-omic data gives expected results.", { | ||
# Create toy data. | ||
pData <- data.frame("Feat1"=c(47.1,26.2,84.3,98.4,43.5,82.6,13.7,87.8), | ||
"Feat2"=c(37.1,40.2,80.3,83.4,6.5,12.6,43.7,75.8), | ||
"Feat3"=c(14.1,74.2,11.3,19.4,73.5,55.6,18.7,91.8), | ||
"Level"=c("Low", "Medium", "Low", "Medium", "Medium", "Low", | ||
"Low", "Medium")) | ||
rownames(pData) <- c("Fred", "Wilma", "Pebbles", "Bambam", "Betty", "Barney", | ||
"Dino", "Hoppy") | ||
metabData <- data.frame("Fred"=c(60.1,32.2,81.3), "Wilma"=c(68.1,58.2,45.3), | ||
"Pebbles"=c(30.1,61.2,67.3), "Bambam"=c(36.1,7.2,79.3), | ||
"Betty"=c(5.1,87.2,91.3), "Barney"=c(5.1,87.2,91.3), | ||
"Dino"=c(99.1,10.2,85.3), "Hoppy"=c(51.1,14.2,76.3)) | ||
rownames(metabData) <- c("Metab1", "Metab2", "Metab3") | ||
metabMetaData <- data.frame("id"=c("Metab1", "Metab2", "Metab3"), "metabname"= | ||
c("Metab1", "Metab2", "Metab3")) | ||
geneMetaData <- data.frame("id"=c("Gene1", "Gene2", "Gene3"), "genename"= | ||
c("Gene1", "Gene2", "Gene3")) | ||
dat <- methods::new("IntLimData", analyteType1=as.matrix(metabData), | ||
analyteType2=matrix(, nrow = 0, ncol = 0), | ||
analyteType1MetaData = metabMetaData, | ||
analyteType2MetaData = geneMetaData, | ||
sampleMetaData = pData) | ||
|
||
# Discrete | ||
res <- PermuteIntLIM(data = dat, stype="Level", outcome = 1, | ||
independent.var.type = 1, num.permutations = 4) | ||
expect_equal(nrow(res[[1]]), 4) | ||
expect_equal(ncol(res[[1]]), 2) | ||
expect_equal(length(res[[2]]), 4) | ||
|
||
# Continuous | ||
res <- PermuteIntLIM(data = dat, stype="Feat1", outcome = 1, | ||
independent.var.type = 1, num.permutations = 4, | ||
continuous = TRUE) | ||
expect_equal(nrow(res[[1]]), 4) | ||
expect_equal(ncol(res[[1]]), 2) | ||
expect_equal(length(res[[2]]), 4) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters