Skip to contents

This function performs single-sample Gene Set Enrichment Analysis (ssGSEA) to classify GBM samples into subtypes based on Wu et al. 2024 molecular markers, including Proneural (PN), Mesenchymal (MES), and Oxidative Phosphorylation (OXPHOS).

Usage

WuGBM(
  data.test,
  dir.file = ".",
  gct.filename = "data.gct",
  number.perms = 100,
  tolerate.mixed = FALSE,
  method = c("internal", "GSVA", "external")
)

Arguments

data.test

A matrix or data frame representing the input expression data, where rows are genes and columns are samples.

dir.file

Character. Directory for saving the output files (default: '.'). Set to NULL to use a temporary directory.

gct.filename

Character. The filename for the generated GCT file (default: 'data.gct').

number.perms

Integer. Number of permutations for ssGSEA analysis (default: 100).

tolerate.mixed

Logical. Whether to allow "Mixed" predictions when multiple gene sets have the same minimum p-value (default: FALSE).

method

Character. The ssGSEA implementation to use: "internal" (built-in), "GSVA" (requires GSVA package), or "external". Default: "internal".

Value

A data frame with the following columns:

  • ID: Sample identifiers.

  • Predict: Predicted subtype for each sample.

  • Columns with _pval: P-values for each subtype.

Details

The function uses predefined marker gene sets for GBM subtypes from Wu et al. 2024:

  • PN: Proneural subtype markers.

  • OXPHOS: Oxidative phosphorylation subtype markers.

  • MES: Mesenchymal subtype markers.

References

Wu M, Wang T, Ji N, Lu T, Yuan R, Wu L, et al. Multi-omics and pharmacological characterization of patient-derived glioma cell lines. Nat Commun. 2024;15:6740. doi:10.1038/s41467-024-51214-y.

Author

Zaoqu Liu; Email: liuzaoqu@163.com

Examples

if (FALSE) { # \dontrun{
# Simulated expression data
data.test <- matrix(rnorm(10000), nrow = 100, ncol = 100)
rownames(data.test) <- paste0("Gene", 1:100)
colnames(data.test) <- paste0("Sample", 1:100)

# Run WuGBM subtyping
result <- WuGBM(
  data.test = data.test,
  number.perms = 50,
  tolerate.mixed = TRUE
)
print(result)
} # }