STREAM:一款scRNA-seq拟时分析工具

scRNA-seq数据分析想必大家都比较熟悉了,自2014年nature biotechnology提出单细胞拟时分析或称为轨迹分析(Trajectory)已经有五个年头了。除了经典的Monocle(只不过是一个R包)之外出现了许多应用方便的分析工具与算法,由我带大家认识一款在Linux(命令行版)和Windows(界面版)都可以使用的分析工具——STREAM。
因为最近开始关注scRNA-seq的数据分析,就选择了这个领域,目前主要看的文章其实是关于Monocle的。一个偶然的机会在YouTube看到一个视频介绍STREAM,用示例数据在网页版试了一下还挺好用的。这个视频首先整体介绍了一下拟时分析的基本思想:降维排序。然后主要介绍了他们采用的基于图结构的算法实现。
我的主要工作就是把演讲的PPT一页一页地通过截屏的方式保存下来,以便回顾学习。截屏已经成为我实现学习的基本方法。
轨迹分析通识
我们知道细胞的分化发育是一个有方向的不可逆的过程,这个过程经常被比喻为昆仑山上的一湖水从山顶上奔涌下来,通过不同的支流流到太平洋中去。你可以想象吗?


时间已经来到这个时代,即人类已经可以把生命过程的研究推进到单细胞水平了。那么我们当然想知道一个细胞(或者一个组织的不同细胞)是怎样分化与发育的了。

轨迹分析本质上是一种排序分析。尽管轨迹( trajectories )分析也会被称为拟时( pseudotime )分析,但是二者是有侧重的。可以说拟时轨迹分析的一部分,也可以说轨迹是在拟时序空间中的排布。

我们拿到的基因表达矩阵并没有关于每个细胞在什么状态的标签,只有表达量的不同。要构建这种排序就要借助具体的算法来实现轨迹的推断。

用到的技术路线图:

关于本场讲座有很多PPT会被放出来,但是值得记住的就那么几张,这就是其中一张。因为它讲述了拟时分析的基本要素:
- 一个基因表达矩阵
- 特征选择(关键基因:用来确定拟时序和轨迹分支)
- 降维(所谓的排序就是在低维空间排布高维数据)
- 聚类(哪些细胞可以排布到同一个分支中呢?)
- 结构拟合(轨迹基本形状)
- 路径确定以及细胞排序
- 可视化

如何确定一个模型的好坏?



在红色字体的网址中我得到了如下建议(当然是借助Google翻译了):
- 用于此任务的数据集
- 评估方法的度量标准
- 最先进的方法包括作为基线
-
用于存储和比较不同方法的轨迹和伪时间的最小信息
STREAM
于是作者开始介绍他们开发的工具STREAM (Single-cell Trajectories Reconstruction, Exploration And Mapping) 了,单细胞数据分析的一大有点就是:图很好看。



基本和Monocle的流程一样。最关键的 是最后两步:确定轨迹的形状和在轨迹中对细胞排序。

下面作者逐步介绍了这些算法的细节。牵扯到流行学习的非线性降维,非监督机器学习的聚类分析以及关于图的模型。
降维

大家看到左下角那半个单词了吗?YouTube居然提供实时字幕(当然还有对实时字幕的翻译,虽然翻译还不如你猜的准确)。


轨迹推断
大家还记得 Monocle 的算法--Reversed graph embedding(RGE)吗?而这款软件用的是Elastic Principal Graph EPG。可见图结构在单细胞数据分析中的地位是十分的重啊。
关于这个算法,我只能把砖搬在这了。关于图大家要明白的就是它是由边和节点组成的,而如何定义节点和边,就是区分不同算法的基本要素。




初始结构
因为Monocle 其实也是基于图的,所以他们都用最小生成树(Minimum spanning tree)来获得初始轨迹结构。


可视化













界面分析工具
网址 : http://stream.pinellolab.org/ 打开之后,界面张这样:

里面有一些应用的示例数据,你可以尝试着点一点Run一下看看这些花里胡哨的结果,然后再换成你自己的数据。


当然,他们也提供的命令行版的可供在linux上运行,GitHub在这STREAM。
参考
Single-cell methods comparison platform
The dynamics and regulators of cell fate decisions are revealed by pseudotemporal ordering of single cells
STREAM
[MIA: Luca Pinello, Huidong Chen, Single-cell trajectories from omics; Jonathan Hsu, CRISPR tiling]