本文来源GOsemsim
GOsemsim包中的语义相似性算法
一、Graph-based 方法
这种方法使用的是GO图中的拓扑性来计算语义相似性。形式上,一个GO词条A可以使用
来表示,其中TA代表在DAGA中的GO词条的集合,包括词条A和它在GO图中的所有祖先词条。而EA表示在DAGA中连接GO词条的edges的集合。
GOsemsim中的wang 的方法
为了将GO词条的语义编译成可以用来定量比较的可测量形式,wang等人将词条A的语义值定义为所有在DAGA中的词条对于词条A的语义的总贡献,其中在DAGA中与词条A越近的词条其贡献的值越大。因此,定义一个词条t对于词条A的贡献值为t词条对应A词条的s值,对于DAGA中的任意的t词条,它对应词条A的s值的公式为
其中we代表的是在EA中的连接词条t和它的子词条t‘ 的edge e的词条贡献因子。词条A对它自己的贡献为1.在获得DAGA中的所有的词条的s值后,GO词条A的语义值,SV(A)可以做如下计算
即对所有属于TA的t词条的s值求和。
因此如果给定两个词条A和B,则二者之间的语义相似性可以定义为
这里的SA(t)表示与词条A相关的词条t的S值,而SB(t)代表与词条B相关的词条t的S值。
这个方法确定了基于两词条在GO图中的定位及两词条的祖词条之间的关联做为词条语义相关性的量化依据的方法。
注:这种方法在clusterprofiler中可以使用simplify函数调用。
simplify <- function(enrichResult, cutoff=0.7, by="p.adjust", select_fun=min) {
## GO terms that have semantic similarity higher than `cutoff` are treated as redundant terms
## select one representative term by applying `select_fun` to feature specifying by `by`.
## user can defined their own `select_fun` function.
## return an updated `enrichResult` object.
}
二、基于信息量的方法(Information content-based methods)
共有四种方法:Resnik1, Jiang2, Lin3 and Schlicker4 ,这些方法是依赖于需要比较的两个词条之间的频率以及他们最接近的共同的祖先词条的频率来计算的。一个GO词条的信息量是通过在GO语义库中该词条的可能性的负log值决定的。较少使用的词条包含比较多的信息,词条的频率计算公式如下:
其中的nt’指的是词条t‘的数目,N代表语义库中词条的总数目。
因此上文所述的信息量的计算公式为:
因为GO允许每个概念中存在多个父词条,因此两个词条会在多个path中分享父词条。基于IC的方法计算的两个GO词条的语义相似性是基于两个词条的最相近的公共祖先词条,这个词条也被称为most informative common ancestor (MICA)
Resnik method
公式为:Lin method
Rel method
这是上述两个方法的结合版: