test_that("plot Loadings", {
data("GlobalPatterns", package = "mia")
tse <- GlobalPatterns
### 1). TEST error messages ###
# Object without reducedDim
expect_error(plotLoadings(tse), "No reducedDims found.")
# Run/calculate PCA
tse <- agglomerateByPrevalence(tse, rank = "Phylum", update.tree = TRUE)
tse <- transformAssay(tse, method = "clr", pseudocount = 1)
tse <- scater::runPCA(tse, ncomponents = 5, assay.type = "clr")
# Minimal functionality
expect_no_error(plotLoadings(tse, dimred = "PCA"))
# Wrong-entry scenarios
expect_error(plotLoadings(tse, dimred = "PCA", layout = "wrong name"))
# Test that error occurs if tree.name is wrong
expect_error( plotLoadings(tse, add.tree = TRUE, layout ="heatmap", tree.name = "test") )
expect_error( plotLoadings(tse, add.tree = TRUE, layout ="heatmap", tree.name = NULL) )
expect_error( plotLoadings(tse, add.tree = TRUE, layout ="heatmap", tree.name = c("test", "phylo")) )
expect_error( plotLoadings(tse, add.tree = TRUE, layout ="heatmap", tree.name = 1) )
expect_error( plotLoadings(tse, add.tree = TRUE, layout ="heatmap", tree.name = TRUE) )
# Expect that the returned value is always ggplot
p <- plotLoadings(tse, dimred = "PCA")
expect_s3_class(p, "ggplot")
mat <- reducedDim(tse, "PCA")
p <- plotLoadings(mat, layout = "heatmap")
expect_s3_class(p, "ggplot")
p <- plotLoadings(tse, dimred = "PCA", layout = "heatmap", add.tree = TRUE)
expect_s3_class(p, "ggplot")
# Create a mock dataset
df <- data.frame(
Feature = rep(c("Feature1", "Feature2", "Feature3"), times = 2),
Value = c(2, 4, -1, -3, 5, 7),
Value_abs = abs(c(2, 4, -1, -3, 5, 7)),
Sign = c("+", "+", "-", "-", "+", "+"),
PC = rep(c("PC1", "PC2"), each = 3)
)
# Create an empty ggplot object for plot_out
plot_out <- ggplot(df)
### 1). TEST: barplot with absolute scale and color
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = TRUE, show.color = TRUE)
expect_s3_class(plot, "ggplot")
### 2). TEST: barplot without absolute scale but with color
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = FALSE, show.color = TRUE)
expect_s3_class(plot, "ggplot")
### 3). TEST: barplot with absolute scale but no color
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = TRUE, show.color = FALSE)
expect_s3_class(plot, "ggplot")
### 4). TEST: lollipop plot with absolute scale and color
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "lollipop", absolute.scale = TRUE, show.color = TRUE)
expect_s3_class(plot, "ggplot")
### 5). TEST: lollipop plot without absolute scale but with color
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "lollipop", absolute.scale = FALSE, show.color = TRUE)
expect_s3_class(plot, "ggplot")
### 6). TEST: lollipop plot with absolute scale but no color
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "lollipop", absolute.scale = TRUE, show.color = FALSE)
expect_s3_class(plot, "ggplot")
### 7). TEST: error when `absolute.scale` is not a boolean
expect_error(
.plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = "not boolean", show.color = TRUE),
"'absolute.scale' must be TRUE or FALSE."
)
### 8). TEST: error when `show.color` is not a boolean
expect_error(
.plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = TRUE, show.color = "not boolean"),
"'show.color' must be TRUE or FALSE."
)
### 9). TEST: correct labels in the legend
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = TRUE, show.color = TRUE)
expect_true("Effect" %in% ggplot_build(plot)$plot$scales$scales[[1]]$name)
expect_equal(ggplot_build(plot)$plot$scales$scales[[1]]$labels, c("+" = "positive", "-" = "negative"))
### 10). TEST: adding sign labels
plot <- .plot_bar_or_lollipop(plot_out, df, layout = "barplot", absolute.scale = TRUE, show.color = TRUE, show.sign = TRUE)
expect_s3_class(plot, "ggplot")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.