Group-comparison Heatmap

Authors

[Editor] Hu Zheng;

[Contributors]

Group-comparison Heatmap provides a way to compare multiple variables across multiple (>2) groups and visualize the result with heatmap.

Setup

  • System Requirements: Cross-platform (Linux/MacOS/Windows)

  • Programming language: R

  • Dependent packages: sigminer

# Install packages
if (!requireNamespace("sigminer", quietly = TRUE)) {
  install_github("ShixiangWang/sigminer")
}

# Load packages
library(sigminer)

Data Preparation

# Load data
data <- read.delim("files/Hiplot/082-group-comparison-data.txt", header = T)

# View data
head(data)
  g1 g2 e1         e2
1  A AA  N -1.8060313
2  A AA  N -0.5820759
3  A AA  N -1.1088896
4  A AA  N -1.0149620
5  A AA  P -0.1623095
6  A AA  N  0.5630558

Visualization

# Define plot functions
unlist_and_covert <- function(x, recursive = FALSE) {
  if (!is.null(x)) {
    x <- unlist(x, recursive = recursive)
    if (!is.null(x)) {
      y <- sapply(x, function(x) {
        if (identical(x, "NA")) NA else x
      })
      names(y) <- names(x)
      x <- y
    }
  }
  x
}

plotentry <- function(data,
                      grp_vars = NULL, enrich_vars = NULL, cross = TRUE,
                      co_method = c("t.test", "wilcox.test"), ref_group = NA,
                      scales = "free", add_text_annotation = TRUE,
                      fill_by_p_value = TRUE, use_fdr = TRUE, cut_p_value = FALSE,
                      cluster_row = FALSE) {
  ref_group <- unlist_and_covert(ref_group)
  if (is.null(ref_group)) ref_group <- NA
  rv <- group_enrichment(data, grp_vars, enrich_vars, cross, co_method, ref_group)
  if (length(unique(rv$grp_var)) == 1) {
    p <- show_group_enrichment(rv,
      return_list = TRUE,
      scales = scales, add_text_annotation = add_text_annotation,
      fill_by_p_value = fill_by_p_value, use_fdr = use_fdr, cut_p_value = cut_p_value,
      cluster_row = cluster_row
    )
    p <- p[[1]]
  } else {
    p <- show_group_enrichment(rv,
      scales = scales, add_text_annotation = add_text_annotation,
      fill_by_p_value = fill_by_p_value, use_fdr = use_fdr, cut_p_value = cut_p_value,
      cluster_row = cluster_row
    )
  }
  return(p)
}

# plot
p <- plotentry(
  data = data,
  grp_vars = "g1",
  enrich_vars = c("e1", "e2"),
  cross = T,
  add_text_annotation = T,
  fill_by_p_value = T,
  use_fdr = T,
  cut_p_value = F,
  cluster_row = F,
  co_method = "t.test",
  scales = "free"
)

p
FigureΒ 1: Group-comparison Heatmap