Barcoding|Barcoding || 海量单细胞的关键技术
海量单细胞技术涉及到三大底层技术:
- 微流控技术
- Barcode 技术
- UMI技术
我们知道海量单细胞技术是在微孔或液滴中物理隔离单个细胞,在这个小格子中裂解细胞,释放mRNA(或其他细胞内小分子信息),这里第一步就是用Barcode来对每个小格子里面的细胞来加标签。目前的技术是把成千上万的Barcode种在一个磁珠上,把这个磁珠放到小格子里标记细胞。
今天我们讨论的就是这个barcode。
- barcode 多长是合理的?
- barcode之间的汉明距离对单细胞实验的影响
- barcode 还可以标记其他生物信息吗?可以,已经在用了。
barcode 本质上是一串碱基序列,如AAAAA、ATCAAGTTC等等。作为细胞的标签,我们认为这段分子标签至少要是稳定的,如果是一段有许多GC碱基组成的序列,那么它的稳定性很可能达不到要求。这段分子标签要从细胞裂解,经过UMI标记分子,RT,建库测序。所以我们在设计这个段序列的时候,要考虑它的用处。同时还要考虑它的可合成性。
另一个主要的问题就是关于生产的,在固定了barcode的长度之后,就要考虑合成什么样的序列了,如果合成的序列太相似,就很可能把不同的磁珠标记上一样的barcede。这样磁珠一旦形成,就会使得不同的油滴或微孔形成带有一样的barcode,从而形成另一种双细胞(不是一个微孔或者液滴包含两个细胞的那种)。所以我们可以根据barcode的距离推断这种可能性,衡量序列相似性的一种方法就是汉明距离。
汉明距离是以理查德·卫斯里·汉明的名字命名的。在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。下面我们来算一下几个例子:
library(stringdist) # 至少你应该知道我用的是R语言
stringdist('ATGCCTAA','ATGCCTAA', method = "hamming")
[1] 0
stringdist('AAAAAAAA','ATGCCTAA', method = "hamming")
[1] 5
stringdist('AAAAAACC','ATGCCTAA', method = "hamming")
[1] 7
那么barcode列表的最小汉明距离越大,那么这个系统就更加稳定。目前市场上主流的两款技术10X和新格元的barcode列表都是可以在其开源软件查到的,所以可以比较一下。
新格元的barcode 列表在其定量软件CeleScope软件(可以在github或gitee)中的路径是:CeleScope/celescope/data/chemistry/scopeV2.0.0 #新格元的barcode是组合起来的,具体可以阅读CeleScope源码了解其结构。
10X 的定量软件Cellranger(可在其官网下载)中Barcode列表在:cellranger-X.X.X/lib/python/cellranger/barcodes
分享一个粗略的方法来寻在其barcode的最小值:
seq1 = barcodelist
library(tidyverse)
min(unlist(map(1:10000,function(i){
x = sample(seq1,1)
y = sample(seq1,1)
while(x==y){y=sample(seq1,1)}
stringdist(x,y, method = "hamming")
})))
汉明距离的另一个应用场景是用来做barcode的纠错,二代测序不是完美的测序技术肯定会有测错的情况,那么如何判断测出来的序列是不是一个细胞的barcode呢?一般的方法是在其定量软件里面内置一个白名单,拿测的序列和这个白名单比较,来矫正barcode。对于没有出现在白名单的barcode允许某个汉明距离的差异。
所以在你的单细胞系统里面,这些关键问题思考全面了吗?
【Barcoding|Barcoding || 海量单细胞的关键技术】Thielecke, L., Aranyossy, T., Dahl, A. et al. Limitations and challenges of genetic barcode quantification. Sci Rep 7, 43249 (2017). https://doi.org/10.1038/srep43249
https://bookdown.org/lambdamoses/museumst/current-techs.html
https://bioinformatics.stackexchange.com/questions/5183/why-are-there-more-barcodes-than-gems-in-10x-chromium-data
https://kb.10xgenomics.com/hc/en-us/articles/115003133812-How-does-cellranger-count-process-and-filter-UMIs-
https://kb.10xgenomics.com/hc/en-us/articles/115004037743-How-does-Cell-Ranger-correct-for-amplification-bias-
https://github.com/singleron-RD/CeleScope
推荐阅读
- 孩子的海量阅读,兴趣是种能力
- 单细胞转录多样性是发育潜能的一个标志
- 利用 Amazon Batch 来为容器化负载调用海量云端算力
- 格创东智选择|格创东智选择 TDengine,实现海量数据实时全生命周期管理
- 机器学习实现海量新闻自动分类
- ActiveMQ集群负载配置
- 海量数据处理问题(一)|海量数据处理问题(一) ---- 内存无法处理的词频统计
- 海量数据
- 智能化监控可以分为几大类型()
- 京东评价系统海量数据存储设计