跳至主要内容

干性指数(mRNAsi)图

作者

[编辑] ZCode (GLM) — AI 生成,独立 AI 复核

修改于

2026-11-05

🤖 AI Skill — Download the Bizard unified skill for your AI assistant ⬇️ Download Skill ZIP
🔌 MCP Server — Let AI agents (Claude Code, Cursor, …) query Bizard live: claude mcp add bizard -- npx @openbiox/bizard-mcp — or the free hosted instance (no install, faster from mainland China): claude mcp add --transport http bizard http://biotree.top:38123/bizard-mcp/mcp 📖 MCP Docs
📖 Cite Bizard — if Bizard helps your research, please cite: Li, K., Zheng, H., Huang, K., et al. (2026). Bizard: A Community-Driven Platform for Accelerating and Enhancing Biomedical Data Visualization. iMetaMed, e70038. 🔗 DOI / BibTeX

基于 mRNA 表达的干性指数(mRNAsi)是干性基因 signature 表达矩阵的第一主成分,重标到 0–1 [1]。论文图把样本按 mRNAsi 排序,并在下方以色条堆叠已知临床特征——读者一眼看到哪些亚组处于去分化端。

Example

StemnessPlot DEMO

Setup

  • 系统要求:跨平台(Linux/MacOS/Windows)

  • 编程语言:R

  • 依赖包: ComplexHeatmap; ggplot2; dplyr; circlize

# 安装必要的包
if (!requireNamespace("ComplexHeatmap", quietly = TRUE)) {
  BiocManager::install("ComplexHeatmap")
}
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}
if (!requireNamespace("dplyr", quietly = TRUE)) {
  install.packages("dplyr")
}
if (!requireNamespace("circlize", quietly = TRUE)) {
  install.packages("circlize")
}

# 加载包
library(ComplexHeatmap)
library(ggplot2)
library(dplyr)
library(circlize)
sessioninfo::session_info("attached")
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.6.2 (2026-10-29)
 os       Ubuntu 26.04.1 LTS
 system   x86_64, linux-gnu
 ui       X11
 language (EN)
 collate  C.UTF-8
 ctype    C.UTF-8
 tz       UTC
 date     2026-11-05
 pandoc   3.7.0.2 @ /usr/bin/ (via rmarkdown)
 quarto   1.11.9 @ /usr/local/bin/quarto

─ Packages ───────────────────────────────────────────────────────────────────
 ! package        * version    date (UTC) lib source
 P circlize       * 0.4.18     2026-04-04 [?] RSPM
 P ComplexHeatmap * 2.28.0     2026-04-28 [?] Bioconductor 3.23 (R 4.6.2)
 P dplyr          * 1.2.1      2026-04-03 [?] RSPM
 P ggplot2        * 4.0.3.9000 2026-11-03 [?] Github (tidyverse/ggplot2@b638d65)

 [1] /home/runner/.cache/R/renv/library/Bizard-5140bdc6/linux-ubuntu-resolute/R-4.6/x86_64-pc-linux-gnu
 [2] /home/runner/work/_temp/Library
 [3] /opt/R/4.6.2/lib/R/library

 * ── Packages attached to the search path.
 P ── Loaded and on-disk path mismatch.

──────────────────────────────────────────────────────────────────────────────

Data Preparation

真实数据中,mRNAsi 由肿瘤表达矩阵向 PCBC 干性 signature 投影得到(参考工作流的 pcbc-stemsig 文件)。我们直接模拟投影输出:60 个髓母细胞瘤样样本、连续 mRNAsi 与两个临床特征。

set.seed(1101)
n_sam <- 60
samples <- paste0("MB-", sprintf("%02d", 1:n_sam))
subgroup <- sample(c("Group3", "SHH", "Group4", "WNT"), n_sam,
                   replace = TRUE, prob = c(0.3, 0.3, 0.3, 0.1))
metastasis <- sample(c("M0", "M1"), n_sam, replace = TRUE, prob = c(0.6, 0.4))
# 潜在干性 z 分:Group3/Group4 高、WNT 低、M1 更高(同参考图)——
# 效应加完之后再重标到 0..1,且不再排序,否则数值与临床特征脱钩
z <- rnorm(n_sam) + 0.9 * (subgroup %in% c("Group3", "Group4")) -
  0.8 * (subgroup == "WNT") + 0.3 * (metastasis == "M1")
mRNAsi <- pnorm(z)

clin <- data.frame(sample = samples,
                   mRNAsi = mRNAsi,
                   Subgroup = subgroup,
                   Metastasis = metastasis)
head(clin, 3)
  sample     mRNAsi Subgroup Metastasis
1  MB-01 0.10727263   Group3         M1
2  MB-02 0.05475588      SHH         M0
3  MB-03 0.75430268   Group4         M1

Visualization

1. 按 mRNAsi 排序的样本与临床色条

ord <- order(clin$mRNAsi)
mat <- rbind(mRNAsi = clin$mRNAsi[ord])
rownames(mat) <- "mRNAsi"
col_fun <- circlize::colorRamp2(c(0, 0.5, 1), c("#445EAD", "white", "#B31E22"))

ha_top <- HeatmapAnnotation(
  mRNAsi = anno_simple(mat["mRNAsi", ], col = col_fun),
  Subgroup = clin$Subgroup[ord],
  Metastasis = clin$Metastasis[ord],
  col = list(Subgroup = c("Group3" = "#B31E22", "SHH" = "#529B40",
                          "Group4" = "#383D8E", "WNT" = "#EABF00"),
             Metastasis = c(M0 = "#dcddde", M1 = "#700353")),
  annotation_name_side = "left")

Heatmap(mat, name = "mRNAsi", top_annotation = ha_top,
        col = col_fun, cluster_columns = FALSE, cluster_rows = FALSE,
        show_column_names = FALSE, show_row_names = FALSE,
        border = TRUE, width = unit(18, "cm"))
图 1: 样本按 mRNAsi 排序(顶部渐变行)+ 亚组与转移色条;去分化端富集 Group 3/4 与 M1。

2. 各分子亚组的 mRNAsi

p_kw <- kruskal.test(mRNAsi ~ Subgroup, data = clin)$p.value
sub_order <- c("WNT", "SHH", "Group4", "Group3")

ggplot(clin, aes(factor(Subgroup, sub_order), mRNAsi, fill = Subgroup)) +
  geom_boxplot(outlier.shape = NA, width = 0.6) +
  geom_jitter(width = 0.12, size = 0.8, alpha = 0.5, show.legend = FALSE) +
  scale_fill_manual(values = c("Group3" = "#B31E22", "SHH" = "#529B40",
                               "Group4" = "#383D8E", "WNT" = "#EABF00")) +
  labs(title = sprintf("mRNAsi by subgroup (Kruskal-Wallis %s)",
       ifelse(p_kw < 0.001, "p < 0.001", sprintf("p = %.3f", p_kw))),
       x = NULL, y = "mRNAsi", fill = NULL) +
  theme_classic(base_size = 11) +
  theme(legend.position = "none")
图 2: 各髓母细胞瘤亚组的 mRNAsi;标注 Kruskal-Wallis p 值。
提示

Practice tips

  • mDNAsi(甲基化版指数)版式完全相同——换掉顶行重跑即可。
  • 色条必须与指数同序;给未排序的矩阵加注释会毁掉整张图的要点。
  • 真实数据用 prcomp() 把 log2 表达矩阵投影到 PCBC signature 取 PC1(mRNAsi = PC1 / max(PC1) 重标到 0–1);参考工作流自带 signature 文件。

Application

干性指数用于跨分子亚组、分期和治疗方式比较;高 mRNAsi 肿瘤通常是队列中去分化、侵袭性一端。排序色条图是标准的总览。

Reference

[1] Malta TM, Sokolov A, Gentles AJ, et al. Machine learning identifies stemness features associated with oncogenic dedifferentiation. Cell. 2018;173(2):338-354.e15. doi:10.1016/j.cell.2018.03.034

[2] Xiaofan Lu, et al. FigureYa: A Standardized Visualization Framework for Enhancing Biomedical Data Interpretation and Research Efficiency. iMetaMed. 2025. doi:10.1002/imm3.70005