赛尔,你好。
高考结束,暑期临近,每年的这个时候,仿佛进入一种季节性的思考:当年高考那会如何如何,高考至今如何如何,总有那么一刹那,想再写一写今年的高考作文题。
欣然于远方,我们总是快速地收拾行囊,只有在夜深人静时分,才会回望来时路。在单细胞数据分析的过程中也是这样,单细胞项目似乎在催促中进行,合作方催着送样,导师催着结果,大量的分析可以做,每天都有新的分析方法出现,令人目不暇接。
设计方案,送样测序,数据下机,定量分析,数据探索,分群聚类,功能富集,基因调控,下游验证,公共数据,生存分析,数据库。。。
投稿和毕业,哪个先来临?我们一直在与时间赛跑。
据说,在阿尔卑斯山谷中的一条马路上,有一块标语牌:“慢慢走,欣赏啊”,劝来往的路人为这华丽的世界驻足欣赏一番。
今天想和你聊聊单细胞数据分析过程中,被过滤掉的数据,有哪些价值?
就拿我们比较熟悉的barocde-UMI曲线来说吧,它是单细胞定量中一个常见的图,而往往被忽视。此图X轴是排序后的barcode
,Y轴是每个barcode
对应的UMI
数量。为什么这个图重要?在这个细胞判定曲线上,我们看到了细胞和数据背景的区别,往往被判定为细胞的是蓝色,背景是灰色。
细胞和背景二者的区别在哪里?最直观的就是对应barcode
的UMI
多少,UMI
多的是细胞,被放在filtered_gene_bc_matrices
中,UMI
少的是背景,被放在raw_gene_bc_matrices
。我们的单细胞数据分析往往起步于蓝色的部分,不知道大家有没有思考过这个问题:单细胞曲线的右下角的灰色线条,就真的毫无意义吗?还是未被发掘的新大陆?
在绝大部分场合下,我们用不到raw_gene_bc_matrices
,而在我们用SoupX
做单细胞数据的背景去除的时候会用到。
library(SoupX)
toc = Seurat::Read10X(file.path(tmpDir,'filtered_gene_bc_matrices','GRCh38'))
tod = Seurat::Read10X(file.path(tmpDir,'raw_gene_bc_matrices','GRCh38'))
sc = SoupChannel(tod,toc)
sc = setContaminationFraction(sc,0.2)
sc = autoEstCont(sc,priorRhoStdDev=0.3)
#https://rdrr.io/cran/SoupX/f/vignettes/pbmcTutorial.Rmd
其实这个曲线可以告诉我们的信息还有很多,特别当我们看到更多类型的数据时,细胞系样本,细胞核样本,肿瘤样本,发育样本,小鼠模型样本,等等,它的形状可能也会大有不同。
细胞系样本的曲线一般会更加的平滑,这里反映的是样本类型,细胞状态。
提到细胞状态,在做单细胞数据过滤的时候,另一个经常被提及的是线粒体基因,它用来表征细胞的应激状态,在以PBMC
为示例的教程里线粒体含量过滤的阈值为>5%
。这一数值经常被不假思索地用到其他组织类型中。
而只要我们稍加思索就会理解,线粒体作为细胞的动力工厂,其基因的表达在不同组织中是不同的。2018年发表在《Nature Communication》上的文章"The effects of death and post-mortem cold ischemia on human tissue transcriptomes"对不同组织中的线粒体的表达情况进行了统计,发现不同的组织中的线粒体含量有着明显的差异,在心脏,肾脏,大脑等组织中线粒体基因表达比较量比较高。
不管是灰色曲线下barcode
还是线粒体含量,抑或是umi
数量,当我们执行subset
过滤单细胞数据时,被过滤掉的那部分细胞,被打入冷宫,没有人问过它们过的怎么样。
每一次用
subset
这种函数去过滤细的时候,理应做好两方面工作,一方面是考虑保留下来这些细胞是什么,有什么规律,有什么样的轨迹,另方面要考被去掉这些细胞有什么样的生物信息,以避免过滤掉一些可能会被忽略的生物信息,以后再想找可能就找不回来了。
我们当然希望用于生物学发现的数据是清洁的、整洁的、不可置疑的,鉴于组织类型的异质性,在每一次执行subset
的时候,我们还是要审慎地对待,避免取之尽锱铢,用之如泥沙的荒唐。
是考题就有喜欢和不喜欢的,我们可以先做喜欢的,而不能忽略不喜欢的,不要忽视你不愿看到的单细胞数据,那里可能蕴含着一篇CNS。