scRNA基础分析-4:细胞亚类再聚类、注释
2020-08-26 本文已影响0人
小贝学生信
scRNA基础分析-1:安装包、导入数据、过滤质控 - 简书
scRNA基础分析-2:降维与聚类 - 简书
scRNA基础分析-3:鉴定细胞类型 - 简书
scRNA基础分析-4:细胞亚类再聚类、注释 - 简书
scRNA基础分析-5:伪时间分析 - 简书
scRNA基础分析-6:富集分析 - 简书
上一步已经鉴定出每个cluster细胞类型。在单细胞数据分析中,一般需要对可以细分的细胞再聚类,比如本次分析中的T细胞群体可以细分为Navie T cells、CD8+ T cells、Treg cells、Tmemory cells等。
rm(list = ls())
library(Seurat)
library(tidyverse)
library(patchwork)
scRNA <- readRDS("scRNA.rds")
首先提取待分析数据
- 本次演示,我们提取之前注释的T cell 进行分析;
- 思路同前笔记2、3。先降维聚类,再注释亚类类型
Cells.sub <- subset(scRNA@meta.data, celltype=="T_cells")
summary(Cells.sub$seurat_clusters)
scRNAsub <- subset(scRNA, cells=row.names(Cells.sub))
#
步骤一:降维,聚类
- 1、寻找高变基因
scRNAsub <- FindVariableFeatures(scRNAsub, selection.method = "vst", nfeatures = 2000)
- 2、PCA降维(线性降维)
scRNAsub <- RunPCA(scRNAsub, features = VariableFeatures(scRNAsub))
ElbowPlot(scRNAsub, ndims=20, reduction="pca")
# 如下图结果,选取10个主成分为宜
1-1
- 3、聚类 cluster
pc.num=1:10
scRNAsub <- FindNeighbors(scRNAsub, dims = pc.num)
scRNAsub <- FindClusters(scRNAsub, resolution = 0.9)
table(scRNAsub@meta.data$seurat_clusters)
# 0 1 2 3 4
#177 125 64 57 44
metadata <- scRNAsub@meta.data
cell_cluster <- data.frame(cell_ID=rownames(metadata), cluster_ID=metadata$seurat_clusters)
#将所有的T cell 分成了5类
- 4、非线性降维
#tSNE
scRNAsub = RunTSNE(scRNAsub, dims = pc.num)
embed_tsne <- Embeddings(scRNAsub, 'tsne')
#细胞坐标信息
plot1 = DimPlot(scRNAsub, reduction = "tsne")
#UMAP
scRNAsub <- RunUMAP(scRNAsub, dims = pc.num)
embed_umap <- Embeddings(scRNAsub, 'umap')
plot2 = DimPlot(scRNAsub, reduction = "umap")
plotc <- plot1+plot2+ plot_layout(guides = 'collect')
1-2
步骤二:注释cell type
法1:人工注释
diff.wilcox = FindAllMarkers(scRNAsub)
all.markers = diff.wilcox %>% select(gene, everything()) %>% subset(p_val<0.05)
top10 = all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
#挑选出5个cluster里的top10 高变基因,结合相关数据库,判断亚类类型
2-1
法2:SingleR包注释
library(SingleR)
#refdata <- MonacoImmuneData()
#好慢呀...,未成功;下面的因此还没有follow
load("ref_Monaco_114s.RData")
#加载之前下载好的数据库
refdata <- ref_Monaco
testdata <- GetAssayData(scRNAsub, slot="data")
clusters <- scRNAsub@meta.data$seurat_clusters
cellpred <- SingleR(test = testdata, ref = refdata, labels = refdata$label.fine,
# 注意此时labels参数为 refdata$label.fine,与上一节注释时的设置不同
method = "cluster", clusters = clusters,
assay.type.test = "logcounts", assay.type.ref = "logcounts")
celltype = data.frame(ClusterID=rownames(cellpred), celltype=cellpred$labels, stringsAsFactors = F)
2-2
#结合上述分析结果,给scRNAsub注释
for(i in 1:nrow(celltype)){
scRNAsub@meta.data[which(scRNAsub@meta.data$seurat_clusters == celltype$ClusterID[i]),'celltype'] <- celltype$celltype[i]}
#可视化
p1 = DimPlot(scRNAsub, group.by="celltype", label=T, label.size=5, reduction='tsne')
p2 = DimPlot(scRNAsub, group.by="celltype", label=T, label.size=5, reduction='umap')
p3 = plotc <- p1+p2+ plot_layout(guides = 'collect')
2-3
# 最后保存结果文件,下一步拟时分析会用到
saveRDS(scRNAsub, file="scRNAsub.rds")