单细胞下采样
最近做了一些个超大数据集的分析,其中出现了超级大量的问题….除了数据不整洁,找不到直接适用的meta还得自己生成之外,最大的问题,就是数据实在太大了没法跑….有些分析甚至直接能给200G的服务器内存给爆了,总不能什么时候都氪金吧?而且部分方法直接不支持超大量数据或者无法并行的问题。这时候,就需要用到下采样了,理论上如果我们认可自己在细胞聚类和注释这一步中,得到的cluster的纯度,那么,取部分细胞代表整体是很合理的,当然这一步可以用ROGUE工具进行检查,下采样时,除了subset里的downsample参数,和pseudocell聚合间接下采样,或者直接分层抽样,bootstrap抽样等方法之外,还发现了一个专门的工具可以进行下采样: geosketch
这是个python包,但是通过reticulate可以很方便地调用且直接兼容R中的矩阵直接下采样,因而可以在纯R环境下运行:
1 |
#在R中需要调用reticulate使用python环境,py中则可以原生运行 |
从结果上讲,还真是有点东西!即便对于最少的细胞类型,抽样上也并没有忽略掉…而且在全程分析中并没有使用过CellType这个信息,且没有缺少某种类型,证明这个方法的确比较稳健。经过反复多次尝试,确定基本上这个方法能够照顾到极不均衡数据,不至于出现一下采样直接缺少某种细胞类型的问题。
当然,这么方便的工具不会全无问题,关键就在其中的获取转置矩阵那一步,因为这个工具需要行是细胞,列是基因,还不支持稀疏矩阵,所以消耗上在R里有时候仍然会有问题……但这个包原生是为py开发的,python中,特别是scanpy中,表达矩阵的形式直接就是符合要求的….因而不需要任何转置操作,而且内存消耗极小,看上去python环境刻不容缓啊….
那么,不依托于python,有没有其他的工具呢?
也有,那就是metacell类工具,当然,由于metacell坑爹的开发组,这个工具没法在win平台安装,linux和unix平台都能安装,但metacell的接口写的很晦涩,结果展示做的也不怎么样,因此自然就有大佬感觉不爽,去开发新的工具,那就是 Supercell ,当然严格来说这类工具做的是cell aggregating,但是能够实现和下采样类似的效果,极大减少细胞数量,降低计算开销,以及提升某些分析的准确度: