BioF3 FigCode · SCI 绘图代码集

细胞周期评分(Cell Cycle Scoring)

导出日期:2026年6月27日

分类:降维可视化 | 依赖包:Seurat、patchwork

解决的生物学问题

我的细胞分群是不是被细胞周期主导?需不需要在 ScaleData 中 regress.out?

应用场景

输入数据格式

Seurat 对象(含 RNA assay)

关键参数

快速开始

1. 直接在线运行

打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。

2. 本地复现

下载脚本和示例数据,本地 RStudio 运行:

# 下载
curl -O https://<your-site>/figcode/scripts/sc-cell-cycle.R
curl -O https://<your-site>/figcode/data/sc-cell-cycle.csv

3. 安装依赖

# CRAN 包
install.packages(c("patchwork"))

# Bioconductor 包(如需)
# BiocManager::install(c())

完整代码

library(Seurat)
library(patchwork)

# --- Demo data ---
data("pbmc_small")
seu <- pbmc_small

# Built-in cell cycle gene lists (pbmc_small uses human symbols)
s.genes   <- intersect(cc.genes$s.genes, rownames(seu))
g2m.genes <- intersect(cc.genes$g2m.genes, rownames(seu))

# --- Score cells ---
seu <- CellCycleScoring(seu, s.features = s.genes, g2m.features = g2m.genes,
                        set.ident = FALSE)

# --- Visualizations ---
# (1) S vs G2M scatter, colored by called Phase
p1 <- FeatureScatter(seu, "S.Score", "G2M.Score", group.by = "Phase",
                     plot.cor = FALSE) +
        geom_hline(yintercept = 0, linetype = "dashed", color = "grey60") +
        geom_vline(xintercept = 0, linetype = "dashed", color = "grey60") +
        ggtitle("S vs G2M score")

# (2) UMAP colored by Phase (compute UMAP first if missing)
if (!"umap" %in% Reductions(seu)) {
  seu <- ScaleData(seu, verbose = FALSE)
  seu <- RunPCA(seu, verbose = FALSE)
  seu <- RunUMAP(seu, dims = 1:10, verbose = FALSE)
}
p2 <- DimPlot(seu, reduction = "umap", group.by = "Phase",
              cols = c(G1 = "#94a3b8", S = "#dc2626", G2M = "#2563eb")) +
        ggtitle("UMAP by Phase")

p1 | p2

替换为自己的数据

脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:

延伸阅读