第八讲:单细胞轨迹推断分析
视频地址:https://www.youtube.com/watch?v=XmHDexCtjyw&list=PLjiXAZO27elC_xnk7gVNM85I2IQl5BEJN&index=10
练习地址:https://github.com/NBISweden/excelerate-scRNAseq/blob/master/session-trajectories/session-trajectories.md
轨迹推断分析可以帮助我们理解细胞状态的改变的过程,尤其是在细胞分化方面。
上图眼熟吧?是单细胞分析的一个经典的流程。做完聚类后,如果需要你可以做轨迹分析,通过轨迹分析你可以做差异基因的分析,从而得到细胞在分化过程中不同状态下的基因表达差异。当然中间的流程是经典流程,你也可以根据你的需要从不同的步骤跳到轨迹分析。
那么实验时间点的这个"time",和发育的“time”有什么不一样。前者就是我们平时说的“时间”,而后者说的是一种“拟时间”(pseudotime)。细胞按照拟时间的顺序来进行分化。上图中的坐标举的例子是,横坐标你用一种外界刺激使得细胞进行分化,那么纵坐标就是细胞分化的进程。需要注意的是,即便你在每一步都是homogenous的细胞群,你的所有细胞的分化速度都是不一样的。比如上图的9h,尽管很多细胞已经完全的分化了,但是仍然有少数细胞处在中间态,和完全没有分化的状态。这也就是“非同步化”。所以,在任何一个节点,你的所有的细胞个体都代表“这个瞬间”的分化状态。
那是每个人都需要进行轨迹推断分析吗?当然不是。你需要确认的是你的dataset里是否涉及分化过程,或者你的细胞是否有“中间态”。比如:骨髓里的细胞,里面有很多“progenitor cells”,你就需要进行轨迹分析。再比如说你的样品来自血液,血液里都是已经分化成熟的细胞了,基本上不用进行轨迹分析了。需要注意的是:有时候轨迹分析的结果在生物学上并没有意义!所以最好是你已知一部分的分化轨迹,或者知道细胞在某一状态的时候会表达什么基因。
现在有很多种方法可以进行轨迹分析。请注意,不同的轨迹分析软件所对应的降维方法是不一样的。如上图所示。上图没有列出所有的降维方法,只是举一些例子。
在讲解轨迹分析方法之前,主讲人想先介绍两个之前没提到过的降维方法:第一种,ICA:
如果你用monocle v1的话,就是ICA的方法。这种方法与PCA非常相似。区别是:ICA是分解你的data,PCA则是把highest variation分配到highest component里。
现在来详细的看一下ICA到底是干什么的。上图所示,在你的样品里,包含有很多种生物signal,可能有受体信号、可能有细胞活化和增殖的信号、可能有细胞发育期间的Marker。但是当你把这些信号都combine的时候,就像右图。ICA做的事就是分解你的data,使得你可以看到原始的生物信号。
ICA是怎么工作的呢?上图左边是PCA的图,PCA是把highest variation找出来。作为第一主成分。而ICA是从你的data里找出最独立的成分。但是ICA也有缺点:ICA假设它所找出来的生物信号都是相互独立的。另一个就是每个信号的来源都是非高斯分布。这里不好理解,举个例子:在教室里放4个麦克风,然后所有人在说话的时候,我们需要区分出究竟谁在说话。ICA可以分解出每一个人的声音。这些声音就是非高斯分布的。而在生物信号里,大部分的情况下,信号来源都是高斯分布的。即便是对于单个细胞来说,你也很难说是高斯分布,还是非高斯分布。
ICA是一个线性降维方法。可以分解你data里的不同生物信号来源,这种降维方法对后面的轨迹分析比较有利,它可以分辨出哪个信号先出现,哪个信号后出现。但是这种方法有时候在分析单细胞数据的时候得到的结果并不真实。而且ICA默认的是所有的信号来源是同等重要的,但事实并不是。
下一个主讲人想讲的是另一种之前没提到的降维方法,diffusion maps。
diffusion maps是一种非线性降维方法。它是基于计算“probability”进行工作的。举个例子:从点1到点6,你可以选择一条路径1>2>6。这就是2步。你也可以选择3步,比如1>4>5>6和1>4>7>6。它计算的是“可能性”。
简单的来说:为了把可能性转化成距离,DM计算B到C的可能性,再计算A到C的可能性,根据公式,如果两种可能性差不多大,那么它们的差值就趋近于0。说明A到B的过程可以通过C来很好的连接起来。
在了解了两种降维方式之后,我们可以来看如何建立细胞之间的关系。从而我们可以知道我们应该从哪里开始建立轨迹,又在哪里结束。一种方法叫做“MST”(翻译过来叫:最小生成树)。
先来举个简单的例子,上图里有很多个点,每一个点之间的距离你都可以量的出来。或者你用上面提到的diffusion map可以计算出每个点之间的“可能性”。然后你可以把每一个点连线,黑色的粗线就是最小生成树。怎么理解呢?为什么说是最小生成树呢?这个“最小”怎么理解?我们要找到一个“把所有的点连在一起时,相加的数最小”的方式。(把这句加粗的句子多读几遍,就理解了)另外加一句,如果你分析前就知道你的发育起始点,或者例如干细胞,那就会相对容易很多。
需要注意的是:MST没有循环!所以如果你研究的生物过程是细胞增殖(周期),那你就不能用这个方法。
第二个方法建立细胞轨迹,这个方法就是现在monocle 2使用的方法。叫做反向图嵌入。
为什么使用这个方法呢?上图,A比如说是一个最小生成树得到的轨迹推断。如果你把其中一个点的位置稍稍挪一下,像B图那样,你会发现细胞轨迹完全就改变了!因为最小生成图非常依赖于每一个点。所以这个RGE的方法是像C图一样,先把你的细胞或者样品做cluster,根据这些细胞的平均值来画轨迹图。
上图显示的是RGE的一个工作原理图。从左上角的红点那个图看起,你有很多个点在多维的空间里。然后你用各种方法做了降维(第一行中间图)。之后根据一些clustering来假设一个轨迹。接下来(第二行右图)RGE所做的事就是:由于有些点离这个假设的轨迹比较远,它就把每一个点分配到离点最近的轨迹的部分上。然后更新中心点,将二维的轨迹投影到多维空间里,比较是否和原始的数据相吻合,如果不是,它会再回到降维后的那一步,循环这个过程。这个过程实际上很像前面讲降维里的tSNE和UMAP的循环。直到这个细胞轨迹与原始data非常符合。这时你可以选择这个轨迹的root,这样你就可以定义你的“拟时间”或者是“发育轨迹”了。另外根据你的轨迹图里的“分叉”,你还可以定义你的cell fate。
根据RGE的idea,这两年又发展不少新的方法。你不需要掌握这么多方法,会一个,会用就行了。
这是Monocle v3的一个工作流程。首先拿到你的dataset> 标准化你的data > 降维> 聚类 > 建立你的tree(拟时间)> 差异基因分析。
现在介绍一个新的模型:RNA velocity。有道翻译:RNA速度。这个模型是基于生物学概念的一个模型。是一个基因表达的轨迹推断模型。
学生物的都知道,mRNA刚转录出来的时候,是没有经过剪切的。里面有内含子。剪切后,你会得到spliced mRNA。这是编码蛋白的。你同时还会有一些mRNA降解。这个模型可以看什么?上图右边的6张图,每一个点是一个细胞,你可以比较在拟时间线上的一个瞬时的点,“经过剪切的mRNA”和“未经剪切的mRNA”哪一个要更提前。
来看一个更为直接的例子:上图红色代表未剪切的mRNA,蓝色代表剪切的mRNA,两个群分别代表你所有的细胞的两个基因的表达情况。根据生物学概念来推断,你的这些细胞的状态应该是从左往右的。所以这样一来,你就知道你的轨迹应该是从哪里开始了。这个模型可以让你定义你的轨迹的“起点”、“终点”和“分支”。
这个模型的好处还有一个:它可以建立一个循环的轨迹。
下面总结一下:
在实际的实验中,多维空间里的距离常常反映了细胞群之间的基因表达差异,而不是真正意义上的“时间”。所以才把这一个概念称为“拟时间”。你的样品里需要包含一个连续的细胞状态。如果你的细胞群是完全独立的、完全不同的,有可能你会得到错误的结果,或者得到一个不太好的轨迹图。第三,如果你是研究细胞分化过程,最好设计多个实验取材的时间点。