Monocle 2 的主要工作是使细胞按照生物过程的进展进行排序。一旦对细胞进行排序后,就可以分析这些细胞,找到随着细胞进展而变化的基因。Monocle 2为每一个细胞分配一个pseudotime的值,它记录了细胞的进展。为找的找到随着细胞进展而变化的基因,Monocle 2使用R package VGAM将基因的表达水平建模为一个平滑的、非线性吃的pseudotime function。
pseudotime
pseudotime function
diff_test_res <- differentialGeneTest(cds_subset, fullModelFormulaStr = "~sm.ns(Pseudotime)")
sm.ns指出monocle应该通过基因表达拟合一个natural spline
sm.ns
natural spline
Branch expression analysis modeling (BEAM) 是一个新的test方法对于分析特殊分支的点,BEAM可以报告分支相关的基因。在Monocle 2 中将为每个细胞分配:
作者开发了BEAM去test依赖分支的基因表达,通过将问题表述为两个negative binomial GLMs之间的比。测试的空模型(null model)假设被测试的基因不是分支特异性基因:
negative binomial GLMs
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为每个分支拟合不同的曲线。
expression
null model
alternative model
在Monocle 2中依赖R package VGAM中的"smart" spline拟合功能,因此使用的是sm.ns()函数,而不是R package splines中的ns()
"smart" spline
sm.ns()
ns()
使用VGAM中的lrtest()函数执行likelihood ratio testing,类似于Monocle中的其它差异表达test。
lrtest()
likelihood ratio testing
显著的分支依赖基因(significant branch-dependent genes),意味着这个基因沿着每个分支具有不同的表达动力学dynamics,具有不同形状的平滑曲线。
dynamics
为了拟合完整的模型,必须将每个cell分配给适当的分支,该分支通过上述模型公式中的factor“Branch”进行编码。
Monocle的test分支的函数接受一个参数,制定比较那些分支。