引用
使用GAPGOM时,请注明以下内容:
- Ehsani R, Drablos F:TopoICSim:一种新的基于基因本体的语义相似度度量方法。BMC生物信息学2016年,17(1): 296。DOI:https://doi.org/10.1186/s12859-016-1160-0
- Ehsani R, Drablos F:改进长链非编码rna功能预测的共表达方法.BMC生物信息学2018.接受。
简介
GAPGOM(小说G烯一个nnotationP预测和其他去米etrics)是一个R包,包含用于估计基因表达相关性的工具和算法,基因集中丰富的术语,以及基因本体(GO)术语集之间的语义距离。此包用于预测未注释基因的注释,特别是关于GO的注释,并测试此类预测。预测是通过比较查询基因和注释基因库之间的表达模式来完成的,并通过具有相似表达模式的基因集中的丰富术语来注释查询基因(通常被描述为“关联负罪感”)。
对于基因表达的相关性,GAPGOM正在介绍LNCRNA2GOA这是一个新颖的工具。表达式数据的主接口目前是Fantom5数据,使用Bioconductor公司的产品ExpressionSet
类。
对于GO术语的语义相似性(特别是用于测试预测),包正在使用TopoICSim.它利用GO数据通过GOSemSim使用godata ()
接口。
GO由三个主要的本体组成;分子功能(MF)、生物过程(BP)和细胞成分(CC)。
安装
在安装之前,该包在cran和Bioconductor中都有相当多的依赖项。您可以运行下面的代码块(最好是逐行安装,因为有提示)来安装这些程序和包本身。
表达式数据接口
ID的支持
从v0.2.7及更高版本开始,所有AnnotationDbi
应该支持id。但是,我们建议使用EntrezID
这是因为这是这个包和其他包中最广泛支持的ID。如果您发现与ID支持有关的问题,请在包存储库中通知此问题。如果希望(或必须)手动转换id,可以使用BiomaRt
建议打包。但是,将id转换为其他类型是有损耗的,并且并不总是转换得很好。
表达式数据(FANTOM5)
到目前为止,这个包有一个用于表达式数据的主数据集接口;Fantom5数据集。对于其他数据集,使用ExpressionSet
必须手动制作,如本章后面所述。有几个辅助函数可以使这些数据可用。Fantom5数据集仅适用于人类和小鼠基因组。helper函数/接口的例子可以在下面找到;
#下载fantom5数据文件fantom_file < -fantom_download(“。/”,生物=“鼠标”,noprompt =真正的)#保存文件名#加载文件(如果一次性执行所有操作,则使用fantom_file变量)ft5 < -fantom_load_raw(”。/ mm9.cage_peak_phase1and2combined_tpm_ann.osc.txt”,verbose =真正的)#删除fantom5数据的前两行(这是单独的统计数据,#我们只需要表达式值)ft5$df < -ft5$df (3.:nrow(ft5$df),)#将原始fantom表转换为ExpressionSetexpset < -fantom_to_expset(ft5verbose =真正的)
请注意,在转换为ExpressionSet
就这样!
手动指定ExpressionSet
由于现在加载表达式数据有点有限,本段将描述如何将表达式数据转换为ExpressionSet
对象。我们将给出一个随机选择表达式值和id的示例。在某些情况下,如果你想要一些特定的东西,这样定义实际上会更好(对进入对象的额外数据有更多的控制/包之间更好的互操作性)。
最低要求ExpressionSet
;
- 表达式的值
- 特定类型的唯一id。AnnotationDbi键是目前唯一支持的id。
每一行的表达式值都应该有相应的id, ID-type作为列名。
随机表达式值生成;
#选择x个随机idx_entries < -1000go_data < -GAPGOM::set_go_data(“人”,“英国石油公司”,computeIC =假)#>加载所需的包:org.Hs.eg.db#>加载所需的包:AnnotationDbi#>加载所需的包:stats4#>加载所需的包:BiocGenerics#>加载所需的包:并行# >#>附加包:“BiocGenerics”下面的对象从'package:parallel'中屏蔽:# >#> clusterApply, clusterApplyLB, clusterCall, clusterEvalQ#> clusterExport, clusterMap, parApply, parCapply, parApply,#> parapplylb, parRapply, parSapply, parSapplyLB下面的对象将从'package:stats'中屏蔽:# >#> IQR, mad, sd, var, xtabs下面的对象从'package:base'中屏蔽:# >#>过滤器,查找,映射,位置,减少,anyduplication,追加,#> as.data.frame, basename, cbind, colnames, dirname, do.call,#> duplicate, eval, evalq, get, grep, grepl, intersect, is。unsorted,#> lapply, mapply, match, mget, order,粘贴,pmax, pmax.int, pmin,#> pmin.int, rank, rbind, rownames, sapply, setdiff, sort, table#> tapply,联合,唯一,unsplit, which, which。马克斯,which.min#>加载所需的包:Biobase欢迎来到Bioconductor# >#>小插图包含介绍材料;视图与# > ' browseVignettes()”。要引用Bioconductor,请参见#> 'citation("Biobase")',对于软件包'citation("pkgname")'。#>加载所需的包:IRanges#>加载所需的包:S4Vectors# >#>附加包:“S4Vectors”下面的对象从'package:base'中屏蔽:# ># > expand.grid#>准备基因GO映射数据…random_ids < -独特的(样本(go_data@geneAnno$ENTREZID, x_entries))#和只保留#暗金物品#创建通用数据框架。表达式< -data.frame(random_ids)colnames(表达式)< -“ENTREZID”表达式$ID# >零# n表达式值,这取决于当前唯一id的数量expressionvalues < -腹肌(rnorm(长度(random_ids)*6))*x_entries表达式[,2:7) < -expressionvalues头(表达式)#> entrezid v2 v3 v4 v5 v6 v7#> 1 8915 1183.7462 1426.1496 1755.0593 448.31235 1500.9171 757.58789#> 2 51733 900.4911 2212.2052 1659.1253 56.55502 764.4681 168.45268#> 3 4974 106.3874 811.6239 527.8380 1104.52422 2934.8179 79.45184#> 4 51176 1418.0254 988.7687 532.2137 1530.41649 902.5002 343.05335#> 5 80045 229.9467 683.9647 717.5520 1358.10934 367.8914 511.48197#> 6 675 2452.4830 2666.4597 610.4293 316.60428 921.8110 1907.86966
将表达式数据框架转换为表达式集;
expression_matrix < -as.matrix(表达式,2:ncol(表达式)])rownames(expression_matrix) < -表达式$ENTREZIDfeaturedat < -as.data.frame(表达式$ENTREZID)#和除了表达式值之外的所有东西(最好你甚至不需要在这里包含id本身!)rownames(featuredat) < -表达式$ENTREZID#因为它们将是行名。expset < -ExpressionSet(expression_matrixfeatureData =新(“AnnotatedDataFrame”,data =featuredat))#看它是如何结构的;头(expset)#> ExpressionSet (storageMode: lockedEnvironment)#> assayData: 6个特征,6个样本#>元素名称:exprs#> protocolData:无#>表型数据:无# > featureData#> featurename: 8915 51733…675(共6个)#> fvarLabels:表达式$ENTREZID#> fvarMetadata: labelDescription#>实验数据:使用'实验数据(对象)'# >注释:头(assayData(expset) [[“exprs”]])#用于存储表达式值。#> v2 v3 v4 v5 v6 v7#> 8915 1183.7462 1426.1496 1755.0593 448.31235 1500.9171 757.58789#> 51733 900.4911 2212.2052 1659.1253 56.55502 764.4681 168.45268#> 4974 106.3874 811.6239 527.8380 1104.52422 2934.8179 79.45184#> 51176 1418.0254 988.7687 532.2137 1530.41649 902.5002 343.05335#> 80045 229.9467 683.9647 717.5520 1358.10934 367.8914 511.48197#> 675 2452.4830 2666.4597 610.4293 316.60428 921.8110 1907.86966头(pData(featureData(expset)))#存储其他信息的地方。# >表达式ENTREZID美元#> 8915 8915#> 51733 51733#> 4974 4974#> 51176 51176#> 80045 80045#> 675 675
LNCRNA2GOA表达相似度
背景
LNCRNA2GOA(长非编码RNA to GO Annotation)或expression_prediction ()
采用多种方法/措施确定具有相似表达模式的相似基因;皮尔森
,斯皮尔曼
,肯德尔
,水列夫
而且费雪
.这将计算给定查询基因的表达式值集之间的分数。这些分数用于鉴定富集分析的基因,在返回之前将根据显著性进行排序。方法也可以找到类似的表达式模式结合
方法。到目前为止,Sobolev和Fisher度量标准是这个包中唯一的(至少在这种类型的分析上下文中),所有其他的都是R和()
函数。新方法的细节描述如下(引用自论文[1],参考文献编辑)。
水列夫规
在本节中,我们使用[2]中的定义和符号。我们从通常的p内积开始。让\ \ (f),\ (g \)是实值函数(在这种情况下\ \ (f)而且\ (g \)值是两个基因的表达载体\ \ (f)而且\ (g \)):
\ (\ langle f, g \ rangle_ {p} = (\ sum_ {k = 1} ^ {n} \ f_k.g_k中期\ ^中期p) ^ \压裂{1}{p} \)
(2)
由这个符号,索伯列夫内积,范数和度的米\ (k \)分别定义为:
\ (f, g \ langle \ rangle_ {p} ^{年代}= \ langle f, g \ rangle_p +α\ \ langle D ^ kf, D \ rangle_p \ ^公斤)
(3)
f \中期(\ \中\ \ mid_中期{p、k \α}^ S = \√6 {\ langle f, f \ rangle_ {p \α}^年代}\)
(4)
\ (d_ {p、k \α}^年代中期(f, g) = \ \中\ \ mid_中期为f - g, {p、k \α}^ \)
(5)
在哪里\ (D ^ k \)是\ (k \)第Th微分算子。对于特殊情况\ (p = 2 \)而且\(α= 1 \ \)与分析的傅里叶变换有一个有趣的联系;让\(\帽子{f} \)是傅里叶变换\ \ (f)
\(\帽子{f} (\ omega_k) = \ sum_ {j = 1} ^ {N} g_jexp (- i \压裂{2 \πkj} {N}) \)
(6)
在哪里\ (\ omega_k = \压裂{2 \πk} {N} \)而且大概{1}\ (i = \ \).最后,规范可以写成
f \中期(\ \中\ \ mid_中期{2 k 1} ^ S = \√6 {\ sum_ {j = 1} ^ {n} (1 + \ omega_j) ^ k \中\帽子{f} ^ 2}中期(\ omega_j) \ \)
(7)
在此功度量(5)与范数(7)和\ (k = 1 \)是使用。
费舍尔规
在本节中,我们将使用像[3]这样的定义和符号。为了定义Fisher信息度量,我们首先引入n-单纯形\ (P_n \)定义为
\ (P_n = \ {x \ R ^ {n + 1}: \陪我,x_n \ ge0 \ sum_ {i = 1} ^ {n + 1}ξ= 1 \}\)
(8)
的坐标\ \ {x_i \} \ ()描述在一个实验中观察到不同结果的概率(或基因的表达值)我\ \ ()Th细胞类型)。费雪信息度量\ (P_n \)可以定义为
\ (Jij = \ sum_ {k = 1} ^ {n + 1} \压裂{1}{xk} \压裂{\部分xk}{\部分x_i} \压裂{\部分xk}{\部分x_j} \)
(9)
现在,我们将费雪信息的一个著名表示定义为正n球的回拉度量\ (S_n ^ + \)
\ (S_n ^ + = \ {x \ R ^ n; \陪我,x_n \ ge0 \ sum_ {i = 1} ^ {n + 1} x ^ 2 = 1 \} \)
(10)
转换\(T: P_n\to S_n^+\)定义为
\(T(x)=(\√{x_1}, \dots, \√{x_n+1})\)
(11)
将球面上的欧几里得度规拉回多项式单纯形上的费雪信息。实际上,测地线距离\(x,y \in P_n\)在费雪信息度量下,可以通过测量大圆的长度来定义\ (S_n ^ + \)之间的\ (T (x) \)而且\ (T (y) \)
\(d(x,y) = acos(\sum_{i=1}^{n+1}\√{x_iy_i})\)
(12)
LNCRNA2GOA方法也可用于除lncRNAs外的其他新基因。
例子
分数+充实
下面的例子是一个任意的用例。这意味着这只是一个例子,并不(一定)意味着某个问题/现实生活用例。id_select_vector
表示你想用于注释丰富的基因id向量(如果为空,算法将使用ExpressionSet中所有可用的基因id)。
使用默认数据集的示例,请查看数据文档#以充分了解过滤器的制作过程等# ExpressionSet)#保留所有蛋白质编码基因(用于注释)filter_vector < -fData(GAPGOM::expset) ((fData(GAPGOM::expset)$信息熵= =“protein_coding”),)$GeneID#设置gid并运行。gid < -“ENSG00000228630”结果< -GAPGOM::expression_prediction(gid,GAPGOM::expset,“人”,“英国石油公司”,id_translation_df =GAPGOM::id_translation_df,id_select_vector =filter_vector,方法=“结合”,verbose =真正的,filter_pvals =真正的)#>查找GO术语…#>计算时间(秒):# > 0.707721471786499kable(结果)% > %kable_styling()% > %scroll_box(宽度=“100%”,身高=“500 px”)
GOID | 本体 | Pvalue | 罗斯福 | 术语 | used_method |
---|---|---|---|---|---|
去:0006810 | 英国石油公司 | 0.0001042 | 0.0003769 | 运输 | 费雪 |
去:0007165 | 英国石油公司 | 0.0010725 | 0.0070414 | 信号转导 | 肯德尔 |
去:0006355 | 英国石油公司 | 0.0031231 | 0.0095531 | 转录调控,dna模板化 | 皮尔森 |
去:0045893 | 英国石油公司 | 0.0027479 | 0.0097134 | 转录的正向调控,dna模板 | 费雪 |
去:0006366 | 英国石油公司 | 0.0041102 | 0.0122466 | RNA聚合酶II的转录 | 水列夫 |
去:0006468 | 英国石油公司 | 0.0091572 | 0.0443554 | 蛋白质磷酸化 | 斯皮尔曼 |
去:0006351 | 英国石油公司 | 0.0158478 | 0.0475434 | 转录,dna模板 | 皮尔森 |
在这里我们显示结果,你可以看到它有6列;
GOID
描述非常相似的GO术语
本体
描述结果的本体。Pvalue
结果的p值/显著性。罗斯福
bonferoni归一化p值术语
GO术语的描述。used_method
采用记分方法得到结果。
除此之外,还有一个可选参数用于不同的GO标记/注释;id_translation_df
.这个数据框架应该包含以下内容;
- rownames\ (\ \)表达式集的行名
- 第一列\ (\ \)基因ID(如EntrezID)。Gene应该与表达式数据集中的相同。
- 第二个科勒姆\ (\ \)id。
这还可以大大缩短计算时间,因为大部分时间都花在查询这个转换上。
只有分数
还有另一种算法可以让你只计算分数而跳过浓缩;
使用默认数据集的示例,请查看数据文档#以充分了解过滤器的制作过程等# ExpressionSet)#设置一个你想要寻找相似点的任意基因。(第五行#)gid < -“ENSG00000228630”结果< -GAPGOM::expression_semantic_scoring(gid,GAPGOM::expset)kable(结果1:One hundred.,)% > %kable_styling()% > %scroll_box(宽度=“100%”,身高=“500 px”)
original_ids | 分数 | used_method | |
---|---|---|---|
ENSG00000224505 | ENSG00000224505 | 0.2004647 | 皮尔森 |
ENSG00000139144 | ENSG00000139144 | 0.1011604 | 皮尔森 |
ENSG00000265787 | ENSG00000265787 | 0.1247753 | 皮尔森 |
ENSG00000204539 | ENSG00000204539 | 0.1396684 | 皮尔森 |
ENSG00000253563 | ENSG00000253563 | 0.0892708 | 皮尔森 |
ENSG00000188784 | ENSG00000188784 | 0.0863590 | 皮尔森 |
ENSG00000042304 | ENSG00000042304 | 0.0726566 | 皮尔森 |
ENSG00000248787 | ENSG00000248787 | 0.2197304 | 皮尔森 |
ENSG00000269305 | ENSG00000269305 | 0.0561735 | 皮尔森 |
ENSG00000241933 | ENSG00000241933 | 0.0606906 | 皮尔森 |
ENSG00000132640 | ENSG00000132640 | 0.1382561 | 皮尔森 |
ENSG00000137634 | ENSG00000137634 | 0.0981431 | 皮尔森 |
ENSG00000186994 | ENSG00000186994 | 0.1811896 | 皮尔森 |
ENSG00000095906 | ENSG00000095906 | 0.5401186 | 皮尔森 |
ENSG00000187871 | ENSG00000187871 | 0.0167506 | 皮尔森 |
ENSG00000254350 | ENSG00000254350 | 0.0477682 | 皮尔森 |
ENSG00000151247 | ENSG00000151247 | 0.0106081 | 皮尔森 |
ENSG00000109061 | ENSG00000109061 | 0.0682357 | 皮尔森 |
ENSG00000257594 | ENSG00000257594 | 0.0225258 | 皮尔森 |
ENSG00000253720 | ENSG00000253720 | 0.1931214 | 皮尔森 |
ENSG00000180638 | ENSG00000180638 | 0.0566312 | 皮尔森 |
ENSG00000234279 | ENSG00000234279 | 0.1001705 | 皮尔森 |
ENSG00000188032 | ENSG00000188032 | 0.1129793 | 皮尔森 |
ENSG00000171161 | ENSG00000171161 | 0.0709871 | 皮尔森 |
ENSG00000250411 | ENSG00000250411 | 0.0589016 | 皮尔森 |
ENSG00000260244 | ENSG00000260244 | 0.2590438 | 皮尔森 |
ENSG00000063601 | ENSG00000063601 | 0.0637382 | 皮尔森 |
ENSG00000249605 | ENSG00000249605 | 0.0834436 | 皮尔森 |
ENSG00000182368 | ENSG00000182368 | 0.0104575 | 皮尔森 |
ENSG00000224819 | ENSG00000224819 | 0.1137457 | 皮尔森 |
ENSG00000196531 | ENSG00000196531 | 0.0298562 | 皮尔森 |
ENSG00000085377 | ENSG00000085377 | 0.0761354 | 皮尔森 |
ENSG00000129195 | ENSG00000129195 | 0.3678937 | 皮尔森 |
ENSG00000227608 | ENSG00000227608 | 0.1634545 | 皮尔森 |
ENSG00000250043 | ENSG00000250043 | 0.0943256 | 皮尔森 |
ENSG00000269843 | ENSG00000269843 | 0.3473258 | 皮尔森 |
ENSG00000181690 | ENSG00000181690 | 0.4336276 | 皮尔森 |
ENSG00000125246 | ENSG00000125246 | 0.3062198 | 皮尔森 |
ENSG00000262861 | ENSG00000262861 | 0.1053504 | 皮尔森 |
ENSG00000173171 | ENSG00000173171 | 0.1348866 | 皮尔森 |
ENSG00000248455 | ENSG00000248455 | 0.0930772 | 皮尔森 |
ENSG00000265114 | ENSG00000265114 | 0.1114366 | 皮尔森 |
ENSG00000166173 | ENSG00000166173 | 0.2045608 | 皮尔森 |
ENSG00000068489 | ENSG00000068489 | 0.1446615 | 皮尔森 |
ENSG00000183474 | ENSG00000183474 | 0.0317519 | 皮尔森 |
ENSG00000138326 | ENSG00000138326 | 0.1441870 | 皮尔森 |
ENSG00000101096 | ENSG00000101096 | 0.1657225 | 皮尔森 |
ENSG00000235151 | ENSG00000235151 | 0.2721271 | 皮尔森 |
ENSG00000154265 | ENSG00000154265 | 0.1235900 | 皮尔森 |
ENSG00000177946 | ENSG00000177946 | 0.5389089 | 皮尔森 |
ENSG00000225302 | ENSG00000225302 | 0.0224971 | 皮尔森 |
ENSG00000237560 | ENSG00000237560 | 0.1250799 | 皮尔森 |
ENSG00000261195 | ENSG00000261195 | 0.1342620 | 皮尔森 |
ENSG00000235123 | ENSG00000235123 | 0.0486064 | 皮尔森 |
ENSG00000260092 | ENSG00000260092 | 0.1116397 | 皮尔森 |
ENSG00000254431 | ENSG00000254431 | 0.1893861 | 皮尔森 |
ENSG00000118526 | ENSG00000118526 | 0.1717508 | 皮尔森 |
ENSG00000261049 | ENSG00000261049 | 0.0393922 | 皮尔森 |
ENSG00000254489 | ENSG00000254489 | 0.1097308 | 皮尔森 |
ENSG00000176697 | ENSG00000176697 | 0.3079547 | 皮尔森 |
ENSG00000250519 | ENSG00000250519 | 0.0213221 | 皮尔森 |
ENSG00000263821 | ENSG00000263821 | 0.0863590 | 皮尔森 |
ENSG00000065665 | ENSG00000065665 | 0.0021354 | 皮尔森 |
ENSG00000088836 | ENSG00000088836 | 0.0343418 | 皮尔森 |
ENSG00000254514 | ENSG00000254514 | 0.1114366 | 皮尔森 |
ENSG00000149308 | ENSG00000149308 | 0.0458501 | 皮尔森 |
ENSG00000109534 | ENSG00000109534 | 0.0521644 | 皮尔森 |
ENSG00000204187 | ENSG00000204187 | 0.2636256 | 皮尔森 |
ENSG00000102468 | ENSG00000102468 | 0.0711898 | 皮尔森 |
ENSG00000101457 | ENSG00000101457 | 0.1492439 | 皮尔森 |
ENSG00000204837 | ENSG00000204837 | 0.1985665 | 皮尔森 |
ENSGR0000236871 | ENSGR0000236871 | 0.1737215 | 皮尔森 |
ENSG00000113645 | ENSG00000113645 | 0.1680317 | 皮尔森 |
ENSG00000261617 | ENSG00000261617 | 0.0935473 | 皮尔森 |
ENSG00000177947 | ENSG00000177947 | 0.1092690 | 皮尔森 |
ENSG00000233605 | ENSG00000233605 | 0.1114366 | 皮尔森 |
ENSG00000187486 | ENSG00000187486 | 0.0193328 | 皮尔森 |
ENSG00000159593 | ENSG00000159593 | 0.1764208 | 皮尔森 |
ENSG00000230967 | ENSG00000230967 | 0.0863590 | 皮尔森 |
ENSG00000064961 | ENSG00000064961 | 0.3389281 | 皮尔森 |
ENSG00000257922 | ENSG00000257922 | 0.0255902 | 皮尔森 |
ENSG00000241685 | ENSG00000241685 | 0.4240072 | 皮尔森 |
ENSG00000171747 | ENSG00000171747 | 0.0964942 | 皮尔森 |
ENSG00000152749 | ENSG00000152749 | 0.0533820 | 皮尔森 |
ENSG00000183597 | ENSG00000183597 | 0.5322610 | 皮尔森 |
ENSG00000214955 | ENSG00000214955 | 0.1746615 | 皮尔森 |
ENSG00000166710 | ENSG00000166710 | 0.0462278 | 皮尔森 |
ENSG00000149182 | ENSG00000149182 | 0.0432318 | 皮尔森 |
ENSG00000259645 | ENSG00000259645 | 0.8049258 | 皮尔森 |
ENSG00000137561 | ENSG00000137561 | 0.0933173 | 皮尔森 |
ENSG00000175746 | ENSG00000175746 | 0.1013987 | 皮尔森 |
ENSG00000230645 | ENSG00000230645 | 0.0219265 | 皮尔森 |
ENSG00000254438 | ENSG00000254438 | 0.1059758 | 皮尔森 |
ENSG00000233423 | ENSG00000233423 | 0.1607758 | 皮尔森 |
ENSG00000254726 | ENSG00000254726 | 0.0301782 | 皮尔森 |
ENSG00000006128 | ENSG00000006128 | 0.1607405 | 皮尔森 |
ENSG00000259862 | ENSG00000259862 | 0.1016300 | 皮尔森 |
ENSG00000204054 | ENSG00000204054 | 0.0103759 | 皮尔森 |
ENSG00000185608 | ENSG00000185608 | 0.2245409 | 皮尔森 |
ENSG00000163013 | ENSG00000163013 | 0.0495888 | 皮尔森 |
我们可以看到这个函数返回了一个不同的数据框架;
original_ids
基因表达行标识符分数
用其中一种方法计算的相似分/相关性。used_method
所用的方法用来计算分数。
行名也表示基因表达行。只显示前100行,否则表将非常大。在此步骤之后,需要手动完成充实和GO注释/翻译。然而,这应该是相当可行的,从一些帮助GOSemSim
.
原始数据集
最初的出版物使用lncRNA2Function数据[4]来测试结果是否相同,制作了一个小脚本来重现相同的结果,位于下面的包安装目录中脚本
.的脚本
文件夹中还包含算法的两个原始脚本,但不一定包含算法的数据。数据(以及脚本)可以在以下网站上找到:
除此之外,脚本文件夹还包含一个概念验证脚本,用于对未加注释的转录本进行分析(通过找到最接近的基因)。这最终意味着作为一种替代的著名伟大的工具。
TopoICSim
背景
TopoICSim或拓扑信息内容相似性,是一种测量两个GO术语之间相似性的方法,给定GO DAG树的信息内容和拓扑结构。与其他类似的措施不同,它认为两者都是最短的而且两项之间的最长DAG路径,而不仅仅是最长或最短路径。沿着GO DAG树的路径用两个项之间的信息内容进行加权。
对于信息内容,使用以下公式;
\(IC(t) = -log(p(t))\
(1)
在哪里\ \ (t)是(GO)术语。IC由GOSemSim计算,并基于特定go项的频率(\ \ (p (t))).
GO树可以被描述为三元组\ \(λ= (G \σ,R) \),在那里\ (G \)为GO项的集合,σ\ (\ \)是GO术语之间的层次关系集(主要定义为is_a或part_of)[5],和\ (R \)是三连音\((t_i, t_j, \xi)\),在那里G \ \ (t_i、t_j \)而且而且\ (t_i \ xi t_j \).的关系是一种导向的亲子关系。GO rDAG的顶级节点是Root,它是MF、BP和CC节点的直接父节点。这些节点称为特定于方面的根,我们在下文中将它们称为根。一个路径\ (P \)的长度\ (n \)在两项之间\ (t_i、t_j \)可以定义为(23)。
\ \ (P: G乘以G \ \ G \乘以G \点乘以G = G ^ {n + 1}; \ \ P (t_i、t_j) = (t_i、t_j + 1 \点,t_j) \)
(23)
在这里给所有\ \ (\)\ (\),\ (\ s < j \),\(σ\ \ xi_s \存在于\ \),\ \ tau_s存在(\ \ R \),\ (r_s = (t_s t_ {s + 1},识别\ xi_s) \).因为\ (G \)是一个rDAG,两个项之间可能有多条路径,所以我们表示两个项之间的所有路径\ (t_i、t_j \)根据(24)。
\ (\ mathcal{一}(t_i、t_j) = \暗流{P}{} \杯P (t_i、t_j) \)
(24)
我们使用逆信息内容(IIC)值为两个给定项定义最短和最长路径\ (t_i、t_j \)如(25-27)所示。
\ (SP (t_i、t_j) = \暗流中P {\ (t_i、t_j)} {argminIIC (P)} \)
(25)
\ (LP (t_i、t_j) = \暗流中P {\ (t_i、t_j)} {argmaxIIC (P)} \)
(26)
\(IIC(P) = \sum_{t\in P}\frac{1}{IC(t)}\)
(27)
采用标准定义进行计算\ \ (IC (t))如(28)所示
\(IC(t) = -log\frac{G_t}{G_\ mathm {Tot}}\)
(28)
在这里\ (G_t \)基因的数量是由术语标注的吗\ \ (t)而且\ (G_ \ mathrm{合计}\)是基因的总数。的分布集成电路是不是统一在了rDAG,所以有可能有两条不同长度但相同的路径IICs.为了克服这个问题,我们根据路径的长度对路径进行加权,因此(25)和(26)中的定义可以根据(29)和(30)进行更新。
\ (wSP (t_i、t_j) = SP (t_i、t_j) len (P) \ \倍)
(29)
\巨头((t_i t_j) = LP (t_i、t_j) len (P) \ \倍)
(30)
现在我们\ (ComAnc (t_i、t_j) \)是两个给定项的所有公共祖先的集合\ ((t_i、t_j) \).首先,我们将析取共同祖先定义为的子集\ (ComAnc (t_i、t_j) \)如(31)。
\ (DisComAnc (t_i、t_j) = \ {x \ ComAnc中期(t_i、t_j) \ P (x,根)\帽C (x) = \ varnothing \} \)
(31)
在这里\ (P (x,根)\)是路径\ \ (x)而且\(根\)而且\ (C (x) \)所有直系子代的set for\ \ (x).对于每个析取的共同祖先\ \ (x)在\ (DisComAnc (t_i、t_j) \),我们定义了之间的距离\ (t_i、t_j \)为加权最短路径之间的比值\ (t_i、t_j \)从\ \ (x)到两者之间的加权最长路径\ \ (x)而且\(根\),如(32-33)。
\ (D (t_i t_j x) = \压裂{wSP (t_i、t_j x)}{巨头(x,根)}\)
(32)
\(wSP(t_i,t_j,x) = wSP(t_i,x)+wSP(t_j,x)\)
(33)
现在是两项的距离\ (t_i、t_j \)可根据(34)定义。
\ (D (t_i、t_j) = \暗流{x \ DisComAnc (t_i、t_j)}{分钟}D (t_i、t_j x) \)
(34)
转换距离值\ \(压裂{反正切()。}{\π/ 2}\)函数,以及两个GO项的测度\ (t_i \)而且\ (t_j \)可以定义为(35)。
\ (S (t_i、t_j) = 1 - \压裂{Arcatan (D (t_i、t_j))}{\π/ 2}\)
(35)
请注意,\(根\)指的是rDAG中三个第一级中的一个。因此,如果\ (DisComAnc (t_i、t_j) = \{根\}\)然后\ (D (t_i、t_j) = \ infty \)而且\ (S (t_i、t_j) = 0 \).如果\(t_i = t_j\)然后\ (D (t_i、t_j) = 0 \)而且\ (S (t_i、t_j) = 1 \).最后让\ (S = [s_ {ij}] _ {n \乘以m} \)是两个给定栅栏或基因产物的相似矩阵\ (g1, g2 \)GO术语\ (t_{11}识别、t_{12}识别\点,t_ {1 n} \)识别而且\ (t_{21}识别、t_{12}识别\点,t_ {2 m} \)识别在哪里\ (s_ {ij} \)GO术语之间的相似性是什么\ (t_我{1}\识别)而且\ (t_ {2 j} \识别).我们用了rcmax计算相似度的方法\ (g1, g2 \),如(36)所定义。
\(\{对齐}开始TopoICSim (g_1里面,g_2) & = rcmax (S) \ \ & = rcmax \离开(\压裂{\ sum_ {i = 1} ^ n \暗流{j} {maxs_ {ij}}} {n} \压裂{\ sum_ {i = 1} ^ m \暗流{我}{maxs_ {ij}}} {m} \) \{对齐}\结束)
(36)
我们也在相似矩阵上测试了其他方法,特别是平均和BMA,但总的来说\ (rcmax \)TopoICSim的表现最好(数据未显示)。
除此之外,还有一个用于基因集级别的算法,您可以计算(13)和(14)的兴趣集/内部集相似性。或者简单地用R的意思是
在结果矩阵上。
\ (IntraSetSim (S_k) = \压裂{\ sum_ {i = 1} ^ n \ sum_ {j = 1} ^ mSim (g_ {ki}, g_ {kj})} {n ^ 2} \)
(13)
\ (InterSetSim (S_k) = \压裂{\ sum_ {i = 1} ^ n \ sum_ {j = 1} ^ mSim (g_ {ki}, g_ {kj})} {n \乘以m} \)
(14)
(13)在基因集与自身比较的特定情况下等于(14)。
所有公式/解释均引用自论文(参考文献编辑)[6]。
例子
下面的示例使用Pfam氏族基因集测量集内相似性。对于单基因来说,EntrezID
218和501进行比较。
结果< -GAPGOM::topo_ic_sim_genes(“人”,“曼氏金融”,“218”,“501”,progress_bar =假)kable(结果$AllGoPairs)% > %kable_styling()% > %scroll_box(宽度=“100%”,身高=“500 px”)
去:0004028 | 去:0004029 | 去:0004030 | 去:0005515 | 去:0008106 | 去:0018479 | 去:0004043 | 去:0008802 | 去:0043878 | |
---|---|---|---|---|---|---|---|---|---|
去:0004028 | 1.000 | 0.899 | NA | NA | NA | NA | 0.908 | 0.816 | 0.904 |
去:0004029 | 0.899 | 1.000 | 0.898 | NA | 0.117 | 0.805 | 0.903 | 0.808 | 0.898 |
去:0004030 | NA | 0.898 | 1.000 | NA | NA | NA | 0.907 | 0.815 | 0.903 |
去:0005515 | NA | NA | NA | 1 | NA | NA | NA | NA | NA |
去:0008106 | NA | 0.117 | NA | NA | 1.000 | NA | 0.121 | 0.097 | 0.119 |
去:0018479 | NA | 0.805 | NA | NA | NA | 1.000 | 0.818 | 0.939 | 0.812 |
去:0004043 | 0.908 | 0.903 | 0.907 | NA | 0.121 | 0.818 | 1.000 | NA | NA |
去:0008802 | 0.816 | 0.808 | 0.815 | NA | 0.097 | 0.939 | NA | 1.000 | NA |
去:0043878 | 0.904 | 0.898 | 0.903 | NA | 0.119 | 0.812 | NA | NA | 1.000 |
结果$GeneSim#> [1] 0.975# genelist模式list1 < -c(“126133”,“221”,“218”,“216”,“8854”,“220”,“219”,“160428”,“224”,“222”,“8659”,“501”,“64577”,“223”,“217”,“4329”,“10840”,“7915”,“5832”)由于r检查时间限制,只使用了genelist的一部分结果< -GAPGOM::topo_ic_sim_genes(“人”,“曼氏金融”, list1 [1:3.], list1 [1:3.),progress_bar =假)kable(结果$AllGoPairs)% > %kable_styling()% > %scroll_box(宽度=“100%”,身高=“500 px”)
去:0016620 | 去:0004028 | 去:0004030 | 去:0005515 | 去:0018477 | 去:0018479 | 去:0004029 | 去:0008106 | |
---|---|---|---|---|---|---|---|---|
去:0016620 | 1.000 | 0.685 | 0.683 | NA | 0.565 | 0.543 | 0.675 | 0.150 |
去:0004028 | 0.685 | 1.000 | 0.903 | NA | 0.830 | 0.813 | 0.899 | 0.119 |
去:0004030 | 0.683 | 0.903 | 1.000 | NA | 0.828 | 0.811 | 0.898 | 0.119 |
去:0005515 | NA | NA | NA | 1 | NA | NA | NA | NA |
去:0018477 | 0.565 | 0.830 | 0.828 | NA | 1.000 | 0.722 | 0.822 | 0.099 |
去:0018479 | 0.543 | 0.813 | 0.811 | NA | 0.722 | 1.000 | 0.805 | 0.096 |
去:0004029 | 0.675 | 0.899 | 0.898 | NA | 0.822 | 0.805 | 1.000 | 0.117 |
去:0008106 | 0.150 | 0.119 | 0.119 | NA | 0.099 | 0.096 | 0.117 | 1.000 |
126133 | 221 | 218 | |
---|---|---|---|
126133 | 1.000 | 0.828 | 0.828 |
221 | 0.828 | 1.000 | 0.982 |
218 | 0.828 | 0.982 | 1.000 |
在这里我们可以看到TopoICsim的输出,它是一个包含2个项目的列表;
AllGoPairs
的\ (n \乘以m \)GO项的矩阵,包括它们的相似性。有些值可能是NA,因为这些是不出现的对。你可以添加AllGoPairs
在您下次运行TopoICSim时,可以将参数添加到TopoICSim中,以加快计算速度(它们将被用作预先计算的分数,以填充出现的对)。
GeneSim
基因/基因集的相似性取决于你的输入。可以是1个数字,也可以是一个显示所有可能组合的矩阵。\ (\ \)基因集矩阵的平均值显示了内集/兴趣集的相似性。
自定义的基因
除此之外,您还可以为TopoICSim定义自定义基因。它由任意数量的GO项组成。自定义基因必须在命名列表中单独定义。
自定义< -列表(cus1 =c(“去:0016787”,“去:0042802”,“去:0005524”))结果< -GAPGOM::topo_ic_sim_genes(“人”,“曼氏金融”,“218”,“501”,custom_genes1 =自定义,滴=零,verbose =真正的,progress_bar =假)准备topoICSim数据…#>准备术语数据。#>准备基因GO映射数据…#>准备IC数据…#>准备基因/基因集数据…#>开始计算所有go。过滤预计算值…解决共同祖先的问题…# >完成了!解析析取共同祖先…# >完成了!计算短路径…# >完成了!计算长路径…# >完成了!#>合并到all_go_pairs…# >完成了!#>合并基因(集)结果…# >完成了!#>计算时间(秒):# > 11.6093716621399结果# > GeneSim美元# > 501#> cus1 0.293#> 218 0.975# ># > AllGoPairs美元#> go:0004028 go:0004029 go:0004030 go:0005515 go:0008106 go:0018479#> go:0004028 1.000 0.899 na na na na#> go:0004029 0.899 1.000 0.898 na 0.117 0.805#> go:0004030 na 0.898 1.000 na na na#> go:0005515 na na na 1.000 na na#> go:0008106 na 0.117 na 1.000 na#> go:0018479 na 0.805 na na 1.000#> go:0004043 0.908 0.903 0.907 na 0.121 0.818#> go:0008802 0.816 0.808 0.815 na 0.097 0.939#> go:0043878 0.904 0.898 0.903 na 0.119 0.812#> go:0016787 0.046 0.045 0.046 na 0.034 0.036#> go:0042802 na na na 0.101 na na#> go:0005524 na na na 0.121 na na#> go:0004043 go:0008802 go:0043878 go:0016787 go:0042802 go:0005524#> go:0004028 0.908 0.816 0.904 0.046 na na#> go:0004029 0.903 0.808 0.898 0.045 na na#> go:0004030 0.907 0.815 0.903 0.046 na na#> go:0005515 na na na na 0.101 0.121#> go:0008106 0.121 0.097 0.119 0.034 na na#> go:0018479 0.818 0.939 0.812 0.036 na na#> go:0004043 1.000 0.822 0.908 0.046 na na#> go:0008802 0.822 1.000 0.816 0.036 na na#> go:0043878 0.908 0.816 1.000 0.046 na na#> go:0016787 0.046 0.036 0.046 1.000 na na#> go:0042802 na na na 1.000 na#> go:0005524 na na na na 1.000
这里我们用GO术语定义了一个名为“cus1”的自定义基因;”去:0016787”、“去:0042802”、“去:0005524,将其添加到第一个基因载体(218)中。如果你想的话只有有了自定义基因,就可以定义一个空矢量用了吗c ()
对于各自的向量。
其他笔记。
TopoICSim有一个预先计算的分数矩阵,可以打开/关闭。分数可能成为弃用,然而,一旦其中一个org.DB
Packages得到更新。出于这个原因,我们建议不要选择这个选项。您还可以使用自定义基因自己预先计算一些GO。all_go_pairs
可以用作预先计算的分数矩阵,只有交叉/当前GO项将被使用。
并行处理和大数据
目前还不支持并行处理。其他算法还没有并行化,因为算法所依赖的依赖关系的数量和类型存在实现困难。将来可能会支持并行处理。然而,在TopoICSim中(在基因对水平上)划分工作是可能的。它为每一对独特的基因运行,你可以使用隐藏的GAPGOM::: .unique_combos
函数。的All_go_pairs
对象可以与其他结果组合在一起。然而,在试图使这一工作方面不提供任何支持。提示:all_go_pairs
论点topo_ic_sim_genes ()
它不会自动创建一个新的、更大的矩阵,它只使用基于输入基因的分析的重叠或呈现的GO项。
性能和基准测试
此包的性能已在基准装饰图案,其中亦会编制基准。
联系与支持
有关问题,联系或支持,请使用(Bioconductor) git仓库或与我们联系Bioconductor论坛.
SessionInfo
sessionInfo()#> R版本4.0.0 (2020-04-24)#>平台:x86_64-pc-linux-gnu(64位)运行在Ubuntu 18.04.4 LTS下# >矩阵产品:默认值#> BLAS: /home/biocbuild/bbs-3.11-bioc/R/lib/libRblas.so#> LAPACK: /home/biocbuild/bbs-3.11-bioc/R/lib/libRlapack.so . cn# ># >语言环境:#> [1] LC_CTYPE=en_US。utf - 8 LC_NUMERIC = C#> [3] LC_TIME=en_US。utf - 8 LC_COLLATE = C#> [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。utf - 8#> [7] LC_PAPER=en_US。utf - 8 LC_NAME = C#> [9] lc_address = c lc_phone = c#> [11] LC_MEASUREMENT=en_US。utf - 8 LC_IDENTIFICATION = C# >#>附加基础包:#> [1] parallel stats4 stats graphics grDevices utils数据集#>[8]方法基础# >#>其他附加包:#> [1] org.Hs.eg.db_3.10.0 AnnotationDbi_1.50.0 IRanges_2.22.0#> [4] S4Vectors_0.26.0 Biobase_2.48.0 BiocGenerics_0.34.0#> [7] GAPGOM_1.4.0 kableExtra_1.1.0 knitr_1.28# >#>通过命名空间加载(并且没有附加):#> [1] Rcpp_1.0.4.6 lattice_0.20-41 tidyr_1.0.2GO.db_3.10.0 assertthat_0.2.1 digest_0.6.25 . #> [4]#> [7] BiocFileCache_1.12.0 plyr_1.8.6 R6_2.4.1#> [10] org.Mm.eg.db_3.10.0 RSQLite_2.2.0 evaluate_0.14#> [13] highr_0.8 htr_1 .4.1 pillar_1.4.3 . ##> [16] rlang_0.4.5 curl_4.3 rstudioapi_0.11#> [19] data.table_1.12.8 blob_1.2.1 Matrix_1.2-18#> [22] rmarkdown_2.1 webshot_0.5.2 readr_1.3.1#> [25] string_1 .4.0 igraph_1.2.5 bit_1.1-15.2#> [28] munsell_0.5.0 compiler_4.0.0 xfun_0.13#> [31] pkgconfig_2.0.3 htmltools_0.4.0 tidyselect_1.0.0#> [34] tibble_3.0.1 GEOquery_2.56.0 matrixStats_0.56.0#> [37] viridisLite_0.3.0 crayon_1.3.4 dplyr_0.8.5#> [40] dbplyr_1.4.3 rappdirs_0.3.1 grid_4.0.0#> [43] RBGL_1.64.0 lifecycle_0.2.0 DBI_1.1.0#> [46] magrittr_1.5 scales_1.1.0 graph_1.66.0#> [49] stringi_1.4.6 GOSemSim_2.14.0 limma_3.44.0 . ##> [52] xml2_1.3.2 ellipsis_0.3.0 vctrs_0.2.4#> [55] fastmatch_1.1-0 tools_4.0.0 bit64_0.9-7#> [58] glue_1.4.0 purrr_0.3.4 hms_0.5.3#> [61] prettydoc_0.3.1 yaml_1 .2.1 colorspace_1.4-1#> [64] rvest_0.3.5 memoise_1.1.0
参考文献
- [1] Ehsani R, Drablos F:改进长链非编码rna功能预测的共表达方法.BMC生物信息学2018.接受。
- [2]维尔曼T:函数数据学习的索博列夫度量-数学和理论方面.:机器学习报告。作者:Villmann T, Schleif F-M,第1卷。德国莱比锡:莱比锡大学医学院;2007: 1-13。
- 黎巴嫩G:学习黎曼度量。:第19届人工智能不确定性会议论文集;墨西哥阿卡普尔科。Morgan Kaufmann Publishers Inc. 2003: 362-369
- [4] Jian Q:LncRNA2Function:基于RNA-seq数据的人类lncrna功能研究的综合资源。:BMC基因组学2015.DOI:10.1186 / 1471 - 2164 - 16 - s3 - s2
- [5] Benabderrahmane S, small - tabbone, Poch O, Napoli A, Devignes MD。IntelliGO:一种新的基于向量的语义相似度度量方法,包括注释来源。:BMC生物信息学.2010; 11:588。
- [6] Ehsani R, Drablos F:TopoICSim:一种新的基于基因本体的语义相似度度量方法。:BMC生物信息学2016年,17(1): 296。DOI:10.1186 / s12859 - 016 - 1160 - 0