单细胞测序的细胞数目成千上万,在后续分析中需要对其进行注释,但是对每一个细胞都进行注释不现实,因此我们需要对这些细胞进行聚类,这样只需要对聚类生成的cluster进行注释就可以了(聚成一类的细胞大概率是相同的细胞类型)。
目前Seurate采用的是谱聚类,基于共享最近邻图和模块化优化的聚类算法识别细胞簇。聚类算法原理请看:你知道scRNA-Seq细胞聚类的算法原理嘛?
如果已经安装,此步请跳过。
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")
FindNeighbors函数格式:FindNeighbors(object,dims = 1:10,……)
object:标准化后存储PCA信息的Seurat对象;
dims:设定维度。
# 选取PC数
pc.num=1:15
# 计算K最近邻,构造SNN图
scRNA1 <- FindNeighbors(scRNA1, dims = pc.num)
FindClusters函数格式:FindClusters(object, resolution = 0.8,……)
object:上一步生成的已经构造SNN图的Seurat对象;
resolution:分辨率参数的值,如果要获得更多/更少的细胞簇,请使用高于/低于1.0的值。
## 识别细胞簇
scRNA1 <- FindClusters(scRNA1, resolution = 1)
## 查看每一类有多少个细胞
table(scRNA1@meta.data$seurat_clusters)
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#634 435 404 365 323 306 281 262 214 203 127 114 80 62 30 14
scRNA1<-BuildClusterTree(scRNA1)
PlotClusterTree(scRNA1)
① RunTSNE函数格式:RunTSNE(object,dims,……)
object:聚类后的Seurat对象;
dims:指定纬度信息。
② DimPlot函数格式:DimPlot(object,reduction,……)
object:上一步tSNE降维后的Seurat对象;
reduction:降维方式(umap,tsne,pca)
# 对选定的特征运行tSNE降维
scRNA1 = RunTSNE(scRNA1, dims = pc.num)
# 绘制降维图
plot1 = DimPlot(scRNA1, reduction = "tsne")
#label = TRUE把注释展示在图中
#DimPlot(scRNA1, reduction = "tsne",label = TRUE)
# 将图输出到画板
plot1
参数同tSNE。
# 对选定的特征运行umap降维
scRNA1 <- RunUMAP(scRNA1, dims = pc.num)
# 绘制降维图
plot2 = DimPlot(scRNA1, reduction = "umap")
# 将图输出到画板
plot2
# 合并图片
tSNE_UMAP <- CombinePlots(plots = list(plot1,plot2),nrow=1)
# 将图输出到画板
tSNE_UMAP
# 保存图片
ggsave(filename = "tSNE_UMAP_plot.pdf",tSNE_UMAP,wi = 25,he = 15)
save(scRNA1,file='scRNA1.Rdata')