Monocle 2 的主要工作是使细胞按照生物过程的进展进行排序。一旦对细胞进行排序后,就可以分析这些细胞,找到随着细胞进展而变化的基因。Monocle 2为每一个细胞分配一个pseudotime的值,它记录了细胞的进展。
为找的找到随着细胞进展而变化的基因,Monocle 2使用R package VGAM将基因的表达水平建模为一个平滑的、非线性吃的pseudotime function

diff_test_res <- differentialGeneTest(cds_subset, fullModelFormulaStr = "~sm.ns(Pseudotime)")

sm.ns指出monocle应该通过基因表达拟合一个natural spline

Branch expression analysis modeling (BEAM) 是一个新的test方法对于分析特殊分支的点,BEAM可以报告分支相关的基因。
在Monocle 2 中将为每个细胞分配:

作者开发了BEAM去test依赖分支的基因表达,通过将问题表述为两个negative binomial GLMs之间的比。
测试的空模型(null model)假设被测试的基因不是分支特异性基因:

expression \sim sm.ns(Pseudotime)

然而,替代模型(alternative model)假设该基因是一个分支特异性基因,表示分支和转换伪时间之间的交互项。

expression \sim sm.ns(Pseudotime)+Branch+sm.ns(Pseudotime):Branch

每个模型都包括一个natural spline(这里有三个自由度) ,描述了作为pseudotime函数的平均expression的平滑变化。null model仅拟合单个曲线,alternative model为每个分支拟合不同的曲线。

在Monocle 2中依赖R package VGAM中的"smart" spline拟合功能,因此使用的是sm.ns()函数,而不是R package splines中的ns()

使用VGAM中的lrtest()函数执行likelihood ratio testing,类似于Monocle中的其它差异表达test。

显著的分支依赖基因(significant branch-dependent genes),意味着这个基因沿着每个分支具有不同的表达动力学dynamics,具有不同形状的平滑曲线。

为了拟合完整的模型,必须将每个cell分配给适当的分支,该分支通过上述模型公式中的factor“Branch”进行编码。

Monocle的test分支的函数接受一个参数,制定比较那些分支。