(笔记)单细胞数据分析1:DoubletFinder 去除双细胞

参考https://zhuanlan.zhihu.com/p/469335625

1. DoubletFinder概述

单细胞测序期望每个barcode标签下只有一个真实的细胞,但是实际数据中会有两个或多个细胞共用一个barcode的情况,我们称之为doublets. DoubletFinder 是一个和Seurat包无缝衔接的,鉴定单细胞数据中Doublets的R包

DoublebletFinder基础原理

单细胞降维后的空间中,表达特征相似的细胞彼此之间距离更近。DoubletFinder生成人工模拟的doublets,并将他们掺入原始单细胞表达数据,原则上人工模拟的doublets会与真实的doublets距离较近。 因此计算每个细胞K最近邻细胞中人工模拟doublets的比例(pANN),就可以根据pANN值对每个barcode的doublets概率进行排序。另外依据泊松分布的统计原理可以计算每个样本中doublets的数量,结合之前的细胞pANN值排序,就可以过滤doublets了。 

可以参照下表计算自己的数据中双细胞的比例。 

DoubletFinder可以分为4个步骤:

(1)从现有的scRNA-seq数据中生成artificial doublets; 

(2)预处理合并的real-artifical data; 

(3)执行PCA并使用PC距离矩阵查找每个单元的artificial k 最近邻居(pANN)的比例; 

(4)根据预期的doublets数量排序和计算阈值pANN值;

缺点:DoubletFinder对同种类型细胞间的doublets不敏感 - 即从转录相似的细胞状态衍生的doublets。

DoubletFinder主要参数:

2. 代码示例

Step1: 数据预处理: 单细胞数据质控、标准化、降维聚类等

首先这个R包的输入是经过预处理(包括归一化、降维,但不一定要聚类)的 Seurat 对象。这里keloid是我的Seurat对象名称你可以换成你的样本对象名称。

library(DoubletFinder)library(tidyverse)library(Seurat)library(patchwork)rm(list=ls())## Pre-process Seurat object -------------------------------------------------------------------------------------------------keloid<-CreateSeuratObject(keloid.data)keloid<-NormalizeData(keloid)keloid<-ScaleData(keloid,vars.to.regress="nUMI")keloid<-FindVariableGenes(keloid,x.low.cutoff=0.0125,y.cutoff=0.25,do.plot=FALSE)keloid<-RunPCA(keloid,pc.genes=seu_kidney@var.genes,pcs.print=0)keloid<-RunTSNE(keloid,dims.use=1:10,verbose=TRUE)

Step2: 确定参数,寻找最优pK值

## (2)pK Identification ----------------------------------------------------------#这是一个测试最佳参数的过程,运行速度慢sweep.res.list_keloid<-paramSweep_v3(keloid,PCs=1:30,sct=FALSE)#head(sweep.res.list_keloid)sweep.stats_keloid<-summarizeSweep(sweep.res.list_keloid,GT=FALSE)bcmvn_keloid<-find.pK(sweep.stats_keloid)#可以看到最佳参数的点## 所以最佳的参数是:mpK<-as.numeric(as.vector(bcmvn_keloid$pK[which.max(bcmvn_keloid$BCmetric)]))

这是一个测试最佳参数的过程,运行速度慢。mpK是最佳参数点。

Step3: 双细胞比例计算

## (3) Homotypic Doublet Proportion Estimate -------------------------------------annotations<-keloid@meta.data$seurat_clustershomotypic.prop<-modelHomotypic(annotations)DoubletRate=ncol(keloid)*8*1e-6#按每增加1000个细胞,双细胞比率增加千分之8来计算DoubletRate=0.042104#估计同源双细胞比例,根据modelHomotypic()中的参数人为混合双细胞。这里是从seurat_clusters中来混双细胞 nExp_poi<-round(DoubletRate*length(keloid$seurat_clusters))#最好提供celltype,而不是seurat_clusters。# 计算双细胞比例nExp_poi.adj<-round(nExp_poi*(1-homotypic.prop))

Step4: 鉴定双细胞

## (4)最后,使用确定好的参数鉴定Doublets. Run DoubletFinder with varying classification stringencies ----------------------------------------------------------------keloid<-doubletFinder_v3(keloid,PCs=1:10,pN=0.25,pK=mpK,nExp=nExp_poi,reuse.pANN=FALSE,sct=F)keloid<-doubletFinder_v3(keloid,PCs=1:10,pN=0.25,pK=mpK,nExp=nExp_poi.adj,reuse.pANN=FALSE,sct=F)# 使用nExp = nExp_poi和nExp = nExp_poi.adj,分别进行doublets鉴定,以便后续确定哪些细胞是Doublet-High Confidience

Step5: 结果可视化

这里确定了Doublet-Low Confidience, Doublet-High Confidience,Singlet三种细胞类型。

## Plot results ---------------------------------------------------------------------------keloid@meta.data[,"DF_hi.lo"]<-keloid@meta.data$DF.classifications_0.25_0.01_222keloid@meta.data$DF_hi.lo[which(keloid@meta.data$DF_hi.lo=="Doublet"&keloid@meta.data$DF.classifications_0.25_0.01_198=="Singlet")]<-"Doublet-Low Confidience"keloid@meta.data$DF_hi.lo[which(keloid@meta.data$DF_hi.lo=="Doublet")]<-"Doublet-High Confidience"table(keloid@meta.data$DF_hi.lo)# Doublet-High Confidience  Doublet-Low Confidience                  Singlet # 198                      24                    5041 ## 结果展示,分类结果在pbmc@meta.data中png("./output/2_cell_annotation/2_doubletFinder.png",2500,1800,res=300)DimPlot(keloid,reduction="umap",group.by="DF_hi.lo",cols=c("black","red","gold"))dev.off()saveRDS(keloid,file="./output/sc_keloid_1_seurat_unanno.rds")

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容