前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多个单细胞亚群合并

多个单细胞亚群合并

作者头像
生信技能树jimmy
发布2021-05-18 12:36:49
3.9K0
发布2021-05-18 12:36:49
举报
文章被收录于专栏:单细胞天地

分享是一种态度

很多时候,我们都没办法很快判断seurat默认聚类分群后的每个亚群的生物学命名,会短暂的把大家先归纳为一个大类,比如肿瘤单细胞数据第一次分群通用规则,按照 :

  • immune (CD45+,PTPRC),
  • epithelial/cancer (EpCAM+,EPCAM),
  • stromal (CD10+,MME,fibo or CD31+,PECAM1,endo)

这3大亚群都有自己的标记基因,它们其实都是涵盖了非常多的亚群,这个时候就需要一定程度的代码进行合并它们多个单细胞亚群。

下面我们以 seurat 官方教程为例:

代码语言:javascript
复制
rm(list = ls())
library(Seurat)
# devtools::install_github('satijalab/seurat-data')
library(SeuratData)
library(ggplot2)
library(patchwork)
library(dplyr)
load(file = 'basic.sce.pbmc.Rdata')

DimPlot(pbmc, reduction = 'umap', 
        label = TRUE, pt.size = 0.5) + NoLegend()

sce=pbmc

如果你不知道 basic.sce.pbmc.Rdata这个文件如何得到的,麻烦自己去跑一下 可视化单细胞亚群的标记基因的5个方法,自己 save(pbmc,file = 'basic.sce.pbmc.Rdata') ,我们后面的教程都是依赖于这个 文件哦!

首先查看标记基因

其实缺一个高质量非冗余单细胞亚群标记基因数据库,假如我们的生物学认知不够,就不需要把T细胞分成 "Naive CD4 T" , "Memory CD4 T" , "CD8 T", "NK" 这些亚群,可以合并为T细胞这个大的亚群:

代码语言:javascript
复制
# 参考;https://mp.weixin.qq.com/s/9d4X3U38VuDvKmshF2OjHA 
genes_to_check = c('PTPRC', 'CD3D', 'CD3E',  'PRF1' , 'NKG7',
            'CD19', 'CD79A', 'MS4A1' ,
            'CD68', 'CD163', 'CD14',
            "FCER1A", "PPBP")
DotPlot(sce, group.by = 'seurat_clusters',
        features = unique(genes_to_check)) + RotatedAxis()

如果生物学背景知识不够,也可以勉强把细胞亚群进行生物学命名:

我们这里假装自己的生物学背景很弱,所以只能是区分 B、DC、Mono、Platelet、T 这5个细胞亚群。

方法一:使用 RenameIdents 函数

代码语言:javascript
复制
Idents(sce)
levels(sce)
head(sce@meta.data)
#  method : 1 
new.cluster.ids <- c("T", "Mono", "T", 
                     "B", "T", "Mono",
                     "T", "DC", "Platelet")
names(new.cluster.ids) <- levels(sce)
sce <- RenameIdents(sce, new.cluster.ids)
DimPlot(sce, reduction = 'umap', 
        label = TRUE, pt.size = 0.5) + NoLegend()

方法二:使用unname函数配合向量:

代码语言:javascript
复制
cluster2celltype <- c("0"="T",
                  "1"="Mono", 
                  "2"="T", 
                  "3"= "B", 
                  "4"= "T", 
                  "5"= "Mono",
                  "6"= "T", 
                  "7"= "DC", 
                  "8"= "Platelet")
sce[['cell_type']] = unname(cluster2celltype[sce@meta.data$seurat_clusters])
DimPlot(sce, reduction = 'umap', group.by = 'cell_type',
        label = TRUE, pt.size = 0.5) + NoLegend()

方法三:使用数据框

代码语言:javascript
复制
# 一个数据框 
(n=length(unique(sce@meta.data$seurat_clusters)))
celltype=data.frame(ClusterID=0:(n-1),
                    celltype='unkown')
celltype[celltype$ClusterID %in% c(0,2,4,6),2]='T'
celltype[celltype$ClusterID %in% c(3),2]='B'
celltype[celltype$ClusterID %in% c(1,5),2]='Mono' 
celltype[celltype$ClusterID %in% c(7),2]='DC' 
celltype[celltype$ClusterID %in% c(8),2]='Platelet'
sce@meta.data$celltype = "NA"
for(i in 1:nrow(celltype)){
  sce@meta.data[which(sce@meta.data$seurat_clusters == celltype$ClusterID[i]),'celltype'] <- celltype$celltype[i]}
table(sce@meta.data$celltype)
DimPlot(sce, reduction = 'umap', group.by = 'celltype',
        label = TRUE, pt.size = 0.5) + NoLegend()

head(sce@meta.data)
table(sce@meta.data$cell_type,
      sce@meta.data$celltype)

可以看到多种方法都是一样的效果:

代码语言:javascript
复制
             B   DC Mono Platelet    T
  B         342    0    0        0    0
  DC          0   32    0        0    0
  Mono        0    0  642        0    0
  Platelet    0    0    0       14    0
  T           0    0    0        0 1608

得到了如下所示的粗糙分群:

绘图代码如下:

代码语言:javascript
复制
p1=DimPlot(sce, reduction = 'umap', group.by = 'celltype',
           label = TRUE, pt.size = 0.5) + NoLegend()
p2=DotPlot(sce, group.by = 'celltype',
           features = unique(genes_to_check)) + RotatedAxis()
library(patchwork)
p1+p2

注:如果想要获取文中代码。后台回复单细胞亚群即可!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先查看标记基因
    • 方法一:使用 RenameIdents 函数
      • 方法二:使用unname函数配合向量:
        • 方法三:使用数据框
        相关产品与服务
        访问管理
        访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档