文献速递||R包DropletUtils-基于droplet的单细胞转录组数据cell calling方法

欢迎关注同名公主号:BBio

10X也是基于此文献的,考古一下,学习区分空载和真实细胞大体思路。

当时已经存在的一些方法会假设含有细胞的GEMs会有更高的UMI总数,并以UMI数目指标筛选细胞,但是这种方法难以区分本就存在的小细胞和空载。

文章开发了一种新方法,首先评估ambiant RNA的表达特征,然后检验每个barcode和ambiant RNA的差异,有显著差异的barcode认为是一个真实的细胞,并结合barcode rank曲线的拐点,保证总UMI数较多的barcode始终保留。

//文献

EmptyDrops: distinguishing cells from empty droplets in droplet-based single-cell RNA sequencing data

//原理
  • 构建ambient RNA池的表达谱

首先确定一个UMI阈值,默认为100,UMI数目低于阈值的定义为ambient RNA。每个droplet中相同基因的UMI数目总和为ambient RNA表达谱中该基因的UMI数目,得到所有基因的UMI数目。使用Good-Turing算法处理,生成每个基因的UMI数目比例的期望值。

假设溶液中的转录本随机的封装到空载中,对于每个droplet来说,每个基因的转录本被抽到的概率和期望值相同。使用Monte Carlo计算每个barcode的p-value。

  • 检测barcode rank曲线的拐点

使用p-value可以筛选和ambient RNA有显著差异的barcode,但是有些情况下还能存在问题。ambient RNA是有很多破裂的细胞组成的,很难代表任何单一的细胞,但是当细胞群高度均匀,或者一个更易裂解的细胞亚群不成比例地贡献ambient RNA时,就可能存在barcode和ambient RNA表达相似。barcode序列测序错误也可能会对ambient RNA的估计产生偏差,原因是将包含细胞的droplet的UMI数错误地分配给具有低UMI总数的barcode。

通过绘制barcode rank plot,并计算曲线的拐点,第一个拐点标志UMI总数从高到低的快速转变。UMI总数较高的barcode都应该认定为是一个真实细胞。以拐点的UMI数为阈值,凡是大于阈值的barcode都认为是一个真实细胞。拐点下方的细胞也能因为和ambient RNA的显著差异认定为细胞,这是其它方法做不到的。

image-20220420092114724.png
//10X官网的cell calling方法描述
  • It uses a cutoff based on total UMI counts of each barcode to identify cells. This step identifies the primary mode of high RNA content cells.
  • Then the algorithm uses the RNA profile of each remaining barcode to determine if it is an “empty" or a cell containing partition. This second step captures low RNA content cells whose total UMI counts may be similar to empty GEMs.
  • Therefore, starting from Cell Ranger 6.1, it is recommended to run all analyses with the --expect-cells option with a reasonable estimate of recovered cells, especially for higher cell load experiments.

首先cellranger软件expect-cells参数(默认3000)作为期望细胞数,对这些细胞的UMI总数进行排序,并以99%分位数除以10作为UMI阈值。第二步的描述也就和EmptyDrops方法相同了。

补充说明里对于expect-cells参数的选择应该有合理的评估,但评估出准确的阈值似乎很难。当把两个步骤鉴定的细胞数的并集作为最终的细胞时,依赖expect-cells的第一步也显得很重要。当细胞上样量过大或者过小时,需要谨慎选择expect-cells。

//R包DropletUtils测试

模拟10X数据,并绘制barcode rank plot。

set.seed(0)
my.counts <- DropletUtils:::simCounts()
br.out <- barcodeRanks(my.counts)
names(br.out)
# Making a plot.
plot(br.out$rank, br.out$total, log="xy", xlab="Rank", ylab="Total")
o <- order(br.out$rank)
lines(br.out$rank[o], br.out$fitted[o], col="red")
abline(h=metadata(br.out)$knee, col="dodgerblue", lty=2)
abline(h=metadata(br.out)$inflection, col="forestgreen", lty=2)
legend("bottomleft", lty=2, col=c("dodgerblue", "forestgreen"),
legend=c("knee", "inflection"))
image-20220420104915998.png

测试emptyDrops函数。

out <- emptyDrops(my.counts)
out
#DataFrame with 11100 rows and 5 columns
#          Total   LogProb    PValue   Limited        FDR
#      <integer> <numeric> <numeric> <logical>  <numeric>
#1             2        NA        NA        NA         NA
#2             9        NA        NA        NA         NA
#3            20        NA        NA        NA         NA
#4            20        NA        NA        NA         NA
#5             1        NA        NA        NA         NA
#...         ...       ...       ...       ...        ...
#11096       215  -246.428 9.999e-05      TRUE 0.00013799
#11097       201  -250.234 9.999e-05      TRUE 0.00013799
#11098       247  -275.905 9.999e-05      TRUE 0.00013799
#11099       191  -228.763 9.999e-05      TRUE 0.00013799
#11100       198  -233.043 9.999e-05      TRUE 0.00013799
is.cell <- out$FDR <= 0.001
sum(is.cell, na.rm=TRUE)
#[1] 942
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容