细胞周期一般包括G1(DNA合成前期)、S(DNA合成期)、G2(DNA合成后期)以及M(细胞分裂期)。
我们找到的高变基因,常常会包含一些细胞周期基因,它们会导致细胞聚类发生一定的偏移,即相同类型的细胞在聚类时会因为细胞周期的不同而分开。
因此我们需要对细胞周期进行分析,评估周期基因是否会对后续的聚类造成影响。
如果已经安装,此步请跳过。
install.packages('Seurat')
install.packages('dplyr')
install.packages('tidyverse')
install.packages('patchwork')
library(Seurat)
library(dplyr)
library(tidyverse)
library(patchwork)
setwd("D:/sc-seq/BC21")
请根据自己数据的存放位置自定义路径。
该数据为标准化后的数据。
scRNA <-load("scRNA1.Rdata")
在单细胞周期分析时,通常只需要考虑三个阶段:G1、S、G2M(G2和M当做一个阶段)。
"cc.genes"为Seurat包自带的数据集,储存了细胞周期的marker基因:"s.genes"和"g2m.genes",在对细胞周期阶段进行评分时,除了这两类外,剩下的归为g1.genes。
CaseMatch函数格式:CaseMatch(search, match)
search:需要查找的基因;match:查找的数据集。
将周期基因与高变基因进行匹配,检查高变基因中有没有周期基因。如果周期基因不存在高变基因中,后面的过程就可以跳过了。
## 查看"cc.genes"数据集
cc.genes
#$s.genes
# [1] "MCM5" "PCNA" "TYMS" "FEN1" "MCM2" "MCM4" "RRM1" "UNG" "GINS2"
#[10] "MCM6" "CDCA7" "DTL" "PRIM1" "UHRF1"
#………………
#$g2m.genes
# [1] "HMGB2" "CDK1" "NUSAP1" "UBE2C" "BIRC5" "TPX2" "TOP2A" "NDC80" "CKS2" "NUF2"
#[11] "CKS1B" "MKI67" "TMPO" "CENPF" "TACC3" "FAM64
#………………
## 查看周期基因与高变基因的交集
CaseMatch(c(cc.genes$s.genes,cc.genes$g2m.genes),VariableFeatures(scRNA1))
# MCM5 PCNA TYMS FEN1 MCM2 MCM4 RRM1 UNG GINS2
# "MCM5" "PCNA" "TYMS" "FEN1" "MCM2" "MCM4" "RRM1" "UNG" "GINS2"
# MCM6 CDCA7 DTL UHRF1 HELLS RFC2 NASP RAD51AP1 GMNN
#………………
CellCycleScoring函数格式:CellCycleScoring(object,s.features,g2m.features,……)
object:标准化后Seurat对象;
s.features:与s期相关的特征向量;
g2m.features:与g2m期相关的特征向量。
# 提取g2m特征向量
g2m_genes = cc.genes$g2m.genes
g2m_genes = CaseMatch(search = g2m_genes, match = rownames(scRNA1))
# 提取s期特征向量
s_genes = cc.genes$s.genes
s_genes = CaseMatch(search = s_genes, match = rownames(scRNA1))
# 对细胞周期阶段进行评分
scRNA1 <- CellCycleScoring(object=scRNA1, g2m.features=g2m_genes, s.features=s_genes)
RunPCA函数格式:RunPCA(object,features = NULL, npcs = 50,……)
object:标准化后的Seurat对象;
features:用来进行PCA的基因集合;
DimPlot函数格式:DimPlot(object,reduction,group.by,……)
object:主成分分析后的Seurat对象;
reduction:选择降维方式;
group.by:指定绘图分组信息。
# 对周期基因进行主成分分析
PCA <- RunPCA(scRNA1, features = c(s_genes, g2m_genes))
# 对主成分分析结果进行可视化
PCA_plot <- DimPlot(PCA, reduction = "pca", group.by = "Phase")
# 将图片输出到画板
PCA_plot
我们可以看到三个周期细胞大部分聚集在一个点上,说明对后续降维聚类影响不大。如果三个周期基因分开的很明显,则有影响。
对周期基因再次标准化,"features"表示需要标准化的基因名向量;如果提供"vars.to.regress"会对其内容进行单独标准化;
在这里我们不需要进行标准化。
#scRNA2 <- ScaleData(scRNA1, vars.to.regress = c("S.Score", "G2M.Score"), features = rownames(scRNA1))
根据自己的实验需要选择是否再次标准化。