TMEclassifier is an R package to perform tumor microenvironment classification based on TME characteristics of gastric cancer.
- 1.TMEclassifier was designed to classify the tumor microenvironment (TME) of gastric cancer and even other cancers.
- 2.This package consists an ensemble classification model integrating
6 machine learning algorithms:
Support Vector Machine (SVM),Random Forest (RF),Neural Networks (NNET),k-Nearest Neighbor (KNN),Decision Tree (DecTree),eXtreme Gradient Boosting (XGBoost). - 3.TMEclassifier identifies three TME-clusters based on expression profiles of 134 TME-related genes and ensemble models.
- 4.In addition, TMEclassifier provides functions for multi-scale
visualization of TMEcluster and some functions depend on
IOBR, which was developed by our team previously. The research about IOBR can be reached by this link.
It is essential that you have R 3.6.3 or above already installed on your computer or server. Before installing TMEclassifier, please install all dependencies by executing the following command in R console:
The dependencies includes caret, e1071, crayon, ggplot2,
scales, tibble, IOBR, ggplot2 and ggpubr.
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
depens<-c("crayon", "ggplot2", "scales", "tibble", "caret", "e1071", "randomForest", "xgboost", "ggpp", "kernlab", "ComplexHeatmap", "survminer", "ggpubr")
for(i in 1:length(depens)){
depen<-depens[i]
if (!requireNamespace(depen, quietly = TRUE))
BiocManager::install(depen,update = FALSE)
}The package is not yet on CRAN or Bioconductor. You can install it from Github:
if (!requireNamespace("TMEclassifier", quietly = TRUE))
devtools::install_github("LiaoWJLab/TMEclassifier")
#> Warning: 程辑包'tidyHeatmap'是用R版本4.2.3 来建造的Library R packages
library(TMEclassifier) data("eset_example1")
res<-tme_classifier(eset = t(eset_example1), method = "ensemble", scale = T)
#> Step-1: Expression data preprocessing...
#> >>> There are no missing values
#>
#> Step-2: TME deconvolution...
#> >>> This step was skipped, user can set parameter `tme_deconvolution` to TRUE or provide TME data to realize prediction.
#>
#> Step-3: Predicting TME phenotypes...
#> >>>-- Scaling data...
#> >>>--- Ensemble Model was used to predict TME phenotypes...
#> [17:26:58] WARNING: amalgamation/../src/learner.cc:1040:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> [17:26:58] WARNING: amalgamation/../src/learner.cc:749: Found JSON model saved before XGBoost 1.6, please save the model using current version again. The support for old JSON model will be discontinued in XGBoost 2.3.
#>
#> >>>--- DONE!
head(res)
#> ID IE IS IA TMEcluster
#> 1 GSM1523727 0.14378383 0.09860092 0.75761525 IA
#> 2 GSM1523728 0.00769956 0.10048409 0.89181635 IA
#> 3 GSM1523729 0.86870675 0.10316410 0.02812915 IE
#> 4 GSM1523744 0.04996065 0.06216853 0.88787082 IA
#> 5 GSM1523745 0.05508487 0.81613011 0.12878502 IS
#> 6 GSM1523746 0.56659350 0.38249992 0.05090658 IE
table(res$TMEcluster)
#>
#> IA IE IS
#> 108 93 99Functions applied to visualization were depends on the IOBR R package. Users can install it from Github:
if (!requireNamespace("IOBR", quietly = TRUE))
devtools::install_github("IOBR/IOBR")
library(IOBR)Combining TMEcluster data and phenotype data.
data("pdata_example")
input<-inner_join(res, pdata_example, by = "ID")
input[1:5, 1:8]
#> ID IE IS IA TMEcluster ProjectID Technology
#> 1 GSM1523727 0.14378383 0.09860092 0.75761525 IA GSE62254 Affymetrix
#> 2 GSM1523728 0.00769956 0.10048409 0.89181635 IA GSE62254 Affymetrix
#> 3 GSM1523729 0.86870675 0.10316410 0.02812915 IE GSE62254 Affymetrix
#> 4 GSM1523744 0.04996065 0.06216853 0.88787082 IA GSE62254 Affymetrix
#> 5 GSM1523745 0.05508487 0.81613011 0.12878502 IS GSE62254 Affymetrix
#> platform
#> 1 HG-U133_Plus_2
#> 2 HG-U133_Plus_2
#> 3 HG-U133_Plus_2
#> 4 HG-U133_Plus_2
#> 5 HG-U133_Plus_2Box plot
cols<- c('#fc0d3a','#ffbe0b','#2692a4')
p1<-sig_box(data = input, signature = "TMEscore", variable = "TMEcluster", cols = cols, hjust = 0.5)
#> # A tibble: 3 × 8
#> .y. group1 group2 p p.adj p.format p.signif method
#> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#> 1 signature IA IE 3.66e-24 1.10e-23 < 2e-16 **** Wilcoxon
#> 2 signature IA IS 1.18e-17 2.40e-17 < 2e-16 **** Wilcoxon
#> 3 signature IE IS 9.44e- 6 9.40e- 6 9.4e-06 **** Wilcoxon
#> Warning: Removed 1 rows containing non-finite values (`stat_boxplot()`).
#> Warning: Removed 1 rows containing non-finite values (`stat_signif()`).
#> Warning: Removed 1 rows containing non-finite values (`stat_compare_means()`).
p2<-sig_box(data = input, signature = "T.cells.CD8", variable = "TMEcluster", cols = cols, hjust = 0.5)
#> # A tibble: 3 × 8
#> .y. group1 group2 p p.adj p.format p.signif method
#> <chr> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr>
#> 1 signature IA IE 1.06e- 9 2.10e- 9 1.1e-09 **** Wilcoxon
#> 2 signature IA IS 7.54e-18 2.3 e-17 < 2e-16 **** Wilcoxon
#> 3 signature IE IS 1.09e- 3 1.1 e- 3 0.0011 ** WilcoxonKM-plot
library(survminer)
p3<-surv_cluster(input_pdata = input,
target_group = "TMEcluster",
time = "OS_time",
status = "OS_status",
project = "ACRG",
cols = c('#fc0d3a','#ffbe0b','#2692a4'),
save_path = paste0("./man/figures"))
#> IA IE IS
#> 108 93 99Distribution of TMEcluster and molecular subtypes
# install.package("remotes") #In case you have not installed it.
if (!requireNamespace("ggpie", quietly = TRUE))
remotes::install_github("showteeth/ggpie")
library(ggpie)
p4<-ggdonut(data = input, group_key = "TMEcluster", count_type = "full",
label_info = "ratio", label_type = "circle", label_split = NULL,
label_size = 5, label_pos = "in", donut.label.size = 4)+
scale_fill_manual(values = cols)
p5<-ggdonut(data = input, group_key = "Subtype", count_type = "full",
label_info = "ratio", label_type = "circle", label_split = NULL,
label_size = 5, label_pos = "in", donut.label.size = 4)+
scale_fill_manual(values = palettes(palette = "nrc", show_col = FALSE, show_message = FALSE))
#########################################
p6<-ggnestedpie(data = input,
group_key = c("TMEcluster", "Subtype"),
count_type = "full",
inner_label_info = "ratio",
inner_label_split = NULL,
inner_labal_threshold = 5,
inner_label_size = 3,
outer_label_type = "circle",
outer_label_size = 5,
outer_label_pos = "in",
outer_label_info = "count")+
scale_fill_manual(values = cols)Combination of plots
if (!requireNamespace("patchwork", quietly = TRUE))
install.packages("patchwork")
library(patchwork)
p<-(p1|p2|p3)/(p4|p5|p6)
p + plot_annotation(tag_levels = 'A')
#> Warning: Removed 1 rows containing non-finite values (`stat_boxplot()`).
#> Warning: Removed 1 rows containing non-finite values (`stat_signif()`).
#> Warning: Removed 1 rows containing non-finite values (`stat_compare_means()`).1.Zeng D, Yu Y, Qiu W, Mao Q, …, Zhang K, Liao W; Tumor microenvironment immunotyping heterogeneity reveals distinct molecular mechanisms to clinical immunotherapy applications in gastric cancer. (2023) Under Review.
2.Zeng D, Li M, …, Liao W; Tumor microenvironment characterization in gastric cancer identifies prognostic and imunotherapeutically relevant gene signatures. Cancer Immunology Research, 2019, 7(5), 737-750. DOI: 10.1158/2326-6066.CIR-18-0436, PMID: 30842092
3.Zeng D, Ye Z, Sheng R, Yu G, Xiong Y, …, Liao W; IOBR: Multi-omics Immuno-Oncology Biological Research to decode tumor microenvironment and signatures. Frontiers in Immunology, 2021, 12:687975. DOI: 10.3389/fimmu.2021.687975, PMID: 34276676
Please report bugs to the Github issues page
E-mail any questions to dongqiangzeng0808@gmail.com


