单细胞预测Doublets软件包汇总|过渡态细胞是真的吗?

写在前面

Doublets 一个液滴或一个微孔中包含了2个或多个细胞。

对于高通量方法,在细胞捕获效率和双重比例之间存在折中,通常的做法是以1-5%的双重线为目标(Ziegenhain et al。,2017)(http://refhub.elsevier.com / S0098-2997(17)30049-3 / sref115) 。

在以前分析单细胞数据的时候,我其实从来没有注意过这样一个问题,即使知道可能会出现双峰,还是会天真地认为自己的专业知识是可以把这一部分避免掉,比如当同时在一类细胞中发现两种不同的细胞标记(他们之间不可以相互转化),我一般会果断的定义为污染。可是随着看的文献越来越多,发现细胞之间的特异性标记物越来越模糊,一些不能进行相互转化的细胞标记物可能存在于某一小类细胞中。

当然,这些ř包并不一定能够解决这些问题,多数的双峰软件对异质性较高的细胞之间的预测较好,但希望通过总结这类软件,提醒大家在定义过渡态细胞时一定要反复去验证,保证数据的真实性。

双峰软件包汇总

1.DoubletFinder

DoubletFinder是一种ř包,可预测单细胞RNA 测序数据中的双重峰。

实现DoubletFinder:Seurat> = 2.0(https://satijalab.org/seurat/

DoubletFinder由Cell Systems于2019年4月出版:HTTPS://www.cell.com/cell-systems/fulltext/S2405-4712(19)30073-0

安装(在R / RStudio中)

devtools::install_github('chris-mcginnis-ucsf/DoubletFinder')

依赖包

  • 修拉(> = 2.0)

  • 矩阵(1.2.14)

  • 领域(9.6)

  • KernSmooth(2.23-15)

  • 模式(0.7.0)

  • ROCR(1.0-7)

DoubletFinder概述

DoubletFinder可以分为4个步骤:
(1)从现有的scRNA-seq数据中生成人工双联;

(2)预处理合并的真实人工数据;

(3)执行PCA并使用PC距离矩阵查找每个单元的artificial k
最近邻居(pANN)的比例;
(4)根据预期的双峰数量排序和计算阈值pANN值;

image

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

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

## pK Identification ---------------------------------------------------------------------------------------------------------
sweep.res.list_kidney <- paramSweep(seu_kidney, PCs = 1:10)
sweep.stats_kidney <- summarizeSweep(sweep.res.list_kidney, GT = FALSE)
bcmvn_kidney <- find.pK(sweep.stats_kidney)

## Homotypic Doublet Proportion Estimate -------------------------------------------------------------------------------------
homotypic.prop <- modelHomotypic(annotations)           ## ex: annotations <- seu_kidney@meta.data$ClusteringResults
nExp_poi <- round(0.075*length(seu_kidney@cell.names))  ## Assuming 7.5% doublet formation rate - tailor for your dataset
nExp_poi.adj <- round(nExp_poi*(1-homotypic.prop))

## Run DoubletFinder with varying classification stringencies ----------------------------------------------------------------
seu_kidney <- doubletFinder(seu_kidney, PCs = 1:10, pN = 0.25, pK = 0.09, nExp = nExp_poi, reuse.pANN = FALSE)
seu_kidney <- doubletFinder(seu_kidney, PCs = 1:10, pN = 0.25, pK = 0.09, nExp = nExp_poi.adj, reuse.pANN = "pANN_0.25_0.09_913")

## Plot results --------------------------------------------------------------------------------------------------------------
seu_kidney@meta.data[,"DF_hi.lo"] <- seu_kidney@meta.data$DF.classifications_0.25_0.09_913
seu_kidney@meta.data$DF_hi.lo[which(seu_kidney@meta.data$DF_hi.lo == "Doublet" & seu_kidney@meta.data$DF.classifications_0.25_0.09_473 == "Singlet")] <- "Doublet_lo"
seu_kidney@meta.data$DF_hi.lo[which(seu_kidney@meta.data$DF_hi.lo == "Doublet")] <- "Doublet_hi"
TSNEPlot(seu_kidney, group.by="DF_hi.lo", plot.order=c("Doublet_hi","Doublet_lo","Singlet"), colors.use=c("black","gold","red"))
image

详情可以点击DoubletFinderhttps://github.com/ddiez/DoubletFinder)对自己的数据进行一下预测哦!

2. scrublet

小号 ingle- ç埃尔- [R做emover ublet小号

用于识别单细胞RNA-seq数据中doublets的Python代码。可以参考Cell Systems(https://www.sciencedirect.com/science/article/pii/S2405471218304745)上的文章或者bioRxiv(https:// www。 biorxiv.org/content/early/2018/07/09/357368)。

快速开始:

给定原始(非标准化)UMI计算矩阵counts_matrix,其中细胞为行,基因为列,计算每个细胞的双峰分数:

import scrublet as scr
scrub = scr.Scrublet(counts_matrix)
doublet_scores, predicted_doublets = scrub.scrub_doublets()

scr.scrub_doublets()模拟数据的doublets,并使用k-最近邻分类器是每个转录组计算连续的doublet_score(在0和1之间)。分数是由自动设定的阈值生成
predict_doublets,一个布尔数组,预测是双峰时为真,否则为假。

最佳做法:

1.处理来自多个样品的数据时,分别对每个样品运行Scrublet.Scrublet用于检测由两个细胞的随机共包封形成的双峰,所以它可能在合并数据集上表现不佳;

2.在2-D嵌入(例如,UMAP或t-SNE)中可视化doublets预测;

安装:

要使用PyPI进行安装:

pip install scrublet

要从源安装:

git clone https://github.com/AllonKleinLab/scrublet.git
cd scrublet
pip install -r requirements.txt
pip install --upgrade .

详情可以点击scrublethttps://github.com/AllonKleinLab/scrublet)对自己的数据进行一下预测哦!

3.DoubletDecon

一种细胞状态识别工具,用于从单细胞RNA-SEQ数据中去除双峰。

image

具体步骤可以参见文章:

bioRxiv (https://www.biorxiv.org/content/early/2018/07/08/364810

安装

if(!require(devtools)){
  install.packages("devtools") # If not already installed
}
devtools::install_github('EDePasquale/DoubletDecon')

依赖包

  • DeconRNASeq

  • gplots

  • dplyr

  • MCL

  • clusterProfiler

  • mygene

  • tidyr

  • R.utils

  • 的foreach

  • doParallel

  • stringr

source("https://bioconductor.org/biocLite.R")
biocLite(c("DeconRNASeq", "clusterProfiler", "hopach", "mygene", "tidyr", "R.utils", "foreach", "doParallel", "stringr"))
install.packages("MCL")#进行安装依赖包

以下数据的应用均来自于:

bioRxiv (https://www.biorxiv.org/content/early/2018/07/08/364810

location="/Users/xxx/xxx/" #Update as needed
expressionFile=paste0(location, "counts.txt")
genesFile=paste0(location, "Top50Genes.txt")
clustersFile=paste0(location, "Cluster.txt")

newFiles=Seurat_Pre_Process(expressionFile, genesFile, clustersFile)
filename="PBMC_example"
write.table(newFiles$newExpressionFile, paste0(location, filename, "_expression"), sep="\t")
write.table(newFiles$newFullExpressionFile, paste0(location, filename, "_fullExpression"), sep="\t")
write.table(newFiles$newGroupsFile, paste0(location, filename , "_groups"), sep="\t", col.names = F)

results=Main_Doublet_Decon(rawDataFile=newFiles$newExpressionFile,
                           groupsFile=newFiles$newGroupsFile,
                           filename=filename,
                           location=location,
                           fullDataFile=NULL,
                           removeCC=FALSE,
                           species="hsa",
                           rhop=1.1,
                           write=TRUE,
                           PMF=TRUE,
                           useFull=FALSE,
                           heatmap=FALSE,
                           centroids=TRUE,
                           num_doubs=100,
                           only50=FALSE,
                           min_uniq=4)

详情可以点击:

**DoubletDecon **(https://github.com/EDePasquale/DoubletDecon)对自己的数据进行一下去除doublets哦!

4.DoubletDetection

DoubletDetection是一个Python3包,用于检测单细胞RNA-SEQ计数矩阵中的双峰(技术错误)。

安装

git clone https://github.com/JonathanShor/DoubletDetection.git
cd DoubletDetection
pip3 install .

运行基本双峰分类:

import doubletdetection
clf = doubletdetection.BoostClassifier()
# raw_counts is a cells by genes count matrix
labels = clf.fit(raw_counts).predict()

raw_counts是scRNA-seq计数矩阵(基因细胞),并且是阵列式的
标签是一维numpy ndarray,值1表示检测到的doublet,0表示单细胞,np.nan表示模糊的细胞。

分类器在以下情况运行最适合

  • 数据中存在几种细胞类型;

  • 它在聚合计数矩阵中每次单独运行;

参见jupyter notebook,链接为:

https://nbviewer.jupyter.org/github/JonathanShor/DoubletDetection/blob/master/tests/notebooks/PBMC_8k_vignette.ipynb ,可以看到举个栗子!

详情可以点击:

**DoubletDetection **(https://github.com/JonathanShor/DoubletDetection)对自己的数据进行一下预测吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容