引用
在使用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数据集。对于其他数据集,anExpressionSet
必须手动制作,如本章后面所述。有一些帮助函数可以使这些数据可用。Fantom5数据集仅适用于人类和小鼠基因组。以下是辅助函数/接口的例子;
#下载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类型作为列名。
随机表达式值生成;
#选择x个随机idx_entries < -1000go_data < -GAPGOM::set_go_data(“人”,“英国石油公司”,computeIC =假)#>加载所需包:org.Hs.eg.db#>加载所需的包:AnnotationDbi加载所需的包:stats4#>加载所需的包:BiocGenerics# >#>附加包:BiocGenerics以下对象从“package:stats”中被屏蔽:# >#> IQR, mad, sd, var, xtabs下面的对象从'package:base'中被屏蔽:# >Filter, Find, Map, Position, Reduce, anyduplicate,追加#> as.data.frame, basename, cbind, colnames, dirname, do.call,#> duplicate, eval, evalq, get, grep, grepl, intersect, is.unsorted,lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin,pmin.int, rank, rbind, rownames, sapply, setdiff, sort, table,#> tapply, union, unique, unsplit, which。马克斯,which.min#>加载所需的包:Biobase欢迎来到Bioconductor# >小插图包含介绍材料;视图与# > ' browseVignettes()”。要引用Bioconductor,请参见#> 'citation("Biobase")',对于软件包'citation("pkgname")'。#>加载所需的包:伊朗加载所需的包:S4Vectors# >#>加载包:'S4Vectors'下面的对象从'package:base'中被屏蔽:# >#> I,展开。网格,unname#>准备基因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 56127 1027.1873 497.3245 3461.4253 464.7037 489.6280 44.32688#> 2 3975 540.7969 814.8878 482.1535 705.6733 566.3916 865.47153#> 3 285672 732.5895 324.3727 669.1559 392.7910 743.3972 639.94694#> 4 79871 339.5573 1062.8599 1625.3913 1259.5608 164.5612 1361.73102#> 5 9353 183.6952 1444.1870 1187.6101 716.0709 1598.7571 485.16822#> 6 84527 322.1536 964.9530 1622.6438 1717.0781 1057.2547 44.47758
将表达式数据帧转换为表达式集;
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个样本#>元素名#>协议数据:无#>表型数据:无# > featureData#> featureNames: 56127 3975…84527(共6个)#> fvarLabels:表达式$ENTREZID#> fvarMetadata: labelDescription使用'experimentData(object)'# >注释:头(assayData(expset) [[“exprs”]])存储表达式值的地方。#> v2 v3 v4 v5 v6 v7#> 56127 1027.1873 497.3245 3461.4253 464.7037 489.6280 44.32688#> 3975 540.7969 814.8878 482.1535 705.6733 566.3916 865.47153#> 285672 732.5895 324.3727 669.1559 392.7910 743.3972 639.94694#> 79871 339.5573 1062.8599 1625.3913 1259.5608 164.5612 1361.73102#> 9353 183.6952 1444.1870 1187.6101 716.0709 1598.7571 485.16822#> 84527 322.1536 964.9530 1622.6438 1717.0781 1057.2547 44.47758头(pData(featureData(expset)))#存储其他信息的位置。# >表达式ENTREZID美元#> 56127 56127#> 3975 3975#> 285672 285672#> 79871 79871#> 9353 9353#> 84527 84527
LNCRNA2GOA(表达相似度)
背景
LNCRNA2GOA(长非编码RNA GO注释)或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 \)微分算子。对于特殊情况\ (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)
我们现在将Fisher信息的一个众所周知的表示定义为正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方法也可以用于除lncrna外的其他新基因。
例子
分数+丰富
下面的例子是一个任意的用例。这意味着这只是一个例子,并不(一定)意味着某个问题/现实生活中的用例。id_select_vector
表示用于注释丰富的基因id向量(如果为空,算法将使用ExpressionSet中所有可用的基因id)。
#默认数据集的例子,看一下数据文档#来充分掌握过滤器的制造过程# ExpressionSet)#保留所有蛋白质编码基因(用于注释)filter_vector < -fData(GAPGOM::expset) ((fData(GAPGOM::expset)$信息熵= =“protein_coding”),)$GeneID# set gid并运行。gid < -“ENSG00000228630”结果< -GAPGOM::expression_prediction(gid,GAPGOM::expset,“人”,“英国石油公司”,id_translation_df =GAPGOM::id_translation_df,id_select_vector =filter_vector,方法=“结合”,verbose =真正的,filter_pvals =真正的)#>查找围棋术语…计算时间(秒):# > 0.2059645652771kable(结果)% > %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)。基因应该与表达式数据集中的相同。
- 第二个科勒姆\ (\ \)id。
这也可以大大提高计算时间,因为大部分时间都花在查询这个转换上。
只有分数
还有另一种算法可以让你只计算分数而跳过浓缩;
#默认数据集的例子,看一下数据文档#来充分掌握过滤器的制造过程# ExpressionSet)#设置一个你想要寻找相似点的任意基因。(第5行#)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]来测试结果是否相同,制作了一个小脚本来再现相同的结果,该脚本位于下面的包安装目录中脚本
.的脚本
文件夹中还包含算法的两个原始脚本,但不一定包含算法的数据。这些数据(连同脚本)可以在以下网站上找到:
除此之外,scripts文件夹还包含一个概念验证脚本,用于对未注释的转录本进行分析(通过查找最接近的基因)。这最终是作为一种对著名的替代伟大的工具。
TopoICSim
背景
TopoICSim或拓扑信息内容相似度(TopoICSim),是一种测量给定GO DAG树的信息内容和拓扑结构的两个GO术语之间的相似度的方法。与其他类似的衡量标准不同,它认为两者都是最短的而且两个项之间的最长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的顶层节点是根节点,它是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)
我们使用逆信息内容(Inverse Information Content, 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_\mathrm{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) \)是否设置所有的直接子代\ \ (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]。
例子
下面的示例使用家族基因集测量集内相似度。对于单基因,EntrezID
比较了218和501。
结果< -GAPGOM::topo_ic_sim_genes(“人”,“曼氏金融”,“218”,“501”,progress_bar =假)kable(结果$AllGoPairs)% > %kable_styling()% > %scroll_box(宽度=“100%”,身高=“500 px”)
去:0004029 | 去:0004030 | 去:0005515 | 去:0008106 | 去:0018479 | 去:0004043 | 去:0008802 | 去:0043878 | |
---|---|---|---|---|---|---|---|---|
去:0004029 | 1.000 | 0.793 | NA | 0.095 | 0.870 | 0.808 | 0.865 | 0.802 |
去:0004030 | 0.793 | 1.000 | NA | NA | NA | 0.903 | 0.693 | 0.899 |
去:0005515 | NA | NA | 1 | NA | NA | NA | NA | NA |
去:0008106 | 0.095 | NA | NA | 1.000 | NA | 0.122 | 0.080 | 0.121 |
去:0018479 | 0.870 | NA | NA | NA | 1.000 | 0.718 | 0.954 | 0.711 |
去:0004043 | 0.808 | 0.903 | NA | 0.122 | 0.718 | 1.000 | NA | NA |
去:0008802 | 0.865 | 0.693 | NA | 0.080 | 0.954 | NA | 1.000 | NA |
去:0043878 | 0.802 | 0.899 | NA | 0.121 | 0.711 | 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检查时间的限制,只使用基因列表的一部分结果< -GAPGOM::topo_ic_sim_genes(“人”,“曼氏金融”, list1 [1:3.], list1 [1:3.),progress_bar =假)kable(结果$AllGoPairs)% > %kable_styling()% > %scroll_box(宽度=“100%”,身高=“500 px”)
去:0005515 | 去:0016620 | 去:0004029 | 去:0004030 | 去:0018477 | 去:0018479 | 去:0008106 | |
---|---|---|---|---|---|---|---|
去:0005515 | 1 | NA | NA | NA | NA | NA | NA |
去:0016620 | NA | 1.000 | 0.533 | 0.678 | 0.441 | 0.431 | 0.152 |
去:0004029 | NA | 0.533 | 1.000 | 0.793 | 0.876 | 0.870 | 0.095 |
去:0004030 | NA | 0.678 | 0.793 | 1.000 | 0.710 | 0.699 | 0.118 |
去:0018477 | NA | 0.441 | 0.876 | 0.710 | 1.000 | 0.957 | 0.082 |
去:0018479 | NA | 0.431 | 0.870 | 0.699 | 0.957 | 1.000 | 0.081 |
去:0008106 | NA | 0.152 | 0.095 | 0.118 | 0.082 | 0.081 | 1.000 |
126133 | 221 | 218 | |
---|---|---|---|
126133 | 1.000 | 0.912 | 0.912 |
221 | 0.912 | 1.000 | 0.996 |
218 | 0.912 | 0.996 | 1.000 |
这里我们可以看到TopoICsim的输出,它是一个包含2项的列表;
AllGoPairs
的\ (n \乘以m \)GO项的矩阵,包括它们的相似性。有些值可能是NA,因为这些是不出现的对。你可以添加AllGoPairs
到下次运行TopoICSim时的参数,以便可能加快计算速度(它们将被用作预先计算的分数,以填充发生的对)。
GeneSim
基因/基因集的相似性取决于你的输入。可以是一个数字,也可以是一个显示所有可能组合的矩阵。\ (\ \)基因集矩阵的均值表示了内集/兴趣集的相似性。
自定义的基因
除此之外,您还可以为TopoICSim定义自定义基因。这包含任意数量的GO项。自定义基因必须在命名列表中单独定义。
自定义< -列表(cus1 =c(“去:0016787”,“去:0042802”,“去:0005524”))结果< -GAPGOM::topo_ic_sim_genes(“人”,“曼氏金融”,“218”,“501”,custom_genes1 =自定义,滴=零,verbose =真正的,progress_bar =假)#准备topoICSim数据…#>准备术语数据#>准备基因GO映射数据…#>准备IC数据…准备基因/基因集数据…开始计算所有的围棋。#过滤预计算值…解决共同的祖先…# >完成了!解决分离的共同祖先…# >完成了!计算短路径…# >完成了!计算长路径…# >完成了!#>合并到all_go_pair…# >完成了!合并基因(集)结果…# >完成了!计算时间(秒):# > 9.28031349182129结果# > GeneSim美元# > 501#> cus1 0.261#> 218 0.975# ># > AllGoPairs美元#> go:0004029 go:0004030 go:0005515 go:0008106 go:0018479 go:0004043#> go:0004029 1.000 0.793 na 0.095 0.870 0.808#> go:0004030 0.793 1.000 na na na 0.903#> go:0005515 na na 1.000 na na na#> go:0008106 0.095 na na 1.000 na 0.122#> go:0018479 0.870 na na na 1.000 0.718#> go:0004043 0.808 0.903 na 0.122 0.718 1.000#> go:0008802 0.865 0.693 na 0.080 0.954 0.711#> go:0043878 0.802 0.899 na 0.121 0.711 0.910#> go:0016787 0.036 0.046 na 0.034 0.029 0.047#> go:0042802 na na 0.101 na na na#> go:0005524 na na 0.061 na na na#> go:0008802 go:0043878 go:0016787 go:0042802 go:0005524#> go:0004029 0.865 0.802 0.036 na na#> go:0004030 0.693 0.899 0.046 na na#> go:0005515 na na na 0.101 0.061#> go:0008106 0.080 0.121 0.034 na na#> go:0018479 0.954 0.711 0.029 na na#> go:0004043 0.711 0.910 0.047 na na#> go:0008802 1.000 0.704 0.029 na na#> go:0043878 0.704 1.000 0.047 na na#> go:0016787 0.029 0.047 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
包得到更新。出于这个原因,我们建议禁用这个选项。你也可以使用自定义基因预先计算一些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()开发中(不稳定)(21-10-19 r81077)x86_64-pc-linux-gnu(64位)#>运行在Ubuntu 20.04.3 LTS下# >#>矩阵产品:默认值#> BLAS: /home/biocbuild/bbs-3.15-bio /R/lib/libRblas.so . txt#> LAPACK: /home/biocbuild/bb -3.15-bio /R/lib/libRlapack.so . txt . txt# ># >语言环境:#> [1] LC_CTYPE=en_US。utf - 8 LC_NUMERIC = C#> [3] LC_TIME=en_GB 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_telephone = c#> [11] LC_MEASUREMENT=en_US。utf - 8 LC_IDENTIFICATION = C# >#>附加基础包:#> [1] stats4 stats graphics grDevices utils数据集方法#>[8]基础# >#>其他附件:#> [1] org.Hs.eg.db_3.14.0 AnnotationDbi_1.57.0 IRanges_2.29.0#> [4] S4Vectors_0.33.0 Biobase_2.55.0 BiocGenerics_0.41.0# GAPGOM_1.11.0 kableExtra_1.3.4 knitr_1.36# >#>通过命名空间加载(不附加):#> [1] matrixStats_0.61.0 bitops_1.0-7 bit64_4.0.5#> [4] filelock_1.0.2 webshot_0.5.2 httr_1.4.2# GenomeInfoDb_1.31.0 tools_4.2.0 bslib_0.3.1#> [10] utf8_1.2.2 R6_2.5.1 DBI_1.1.1#> [13] colorspace_2.0-2 tidyselect_1.1.1 bit_4.0.4#> [16] curl_4.3.2 compiler_4.2.0 graph_1.73.0#> [19] rvest_1.0.2 xml2_1.3.2 sass_0.4.0#> [22] scales_1.1.1 readr_2.0.2 RBGL_1.71.0#> [25] rappdirs_0.3.3 systemfonts_1.0.3 string_1 .4.0#> [28] digest_0.6.28 rmarkdown_2.11 svglite_2.0.0#> [31] GEOquery_2.63.0 XVector_0.35.0 pkgconfig_2.0.3#> [34] htmltools_0.5.2 highr_0.9 dbplyr_2.1.1#> [37] fastmap_1.1.0 limma_3.51.0 rlang_0.4.12#> [40] rstudioapi_0.13 RSQLite_2.2.8 prettydoc_0.4.1#> [43] jquerylib_0.1.4 generics_0.1.1 jsonlite_1.7.2#> [46] GOSemSim_2.21.0 dplyr_1.0.7 RCurl_1.98-1.5GO.db_3.14.0 GenomeInfoDbData_1.2.7#> [52] Matrix_1.3-4 Rcpp_1.0.7 munsell_0.5.0#> [55] fansi_0.5.0 lifecycle_1.0.1 stringi_1.7.5#> [58] yaml_2.2.1 zlibbioc_1.41.0 plyr_1.8.6#> [61] BiocFileCache_2.3.0 grid_4.2.0 blob_1.2.2#> [64] crayon_1.4.1 lattice_0.20-45 Biostrings_2.63.0#> [67] hms_1.1.1 KEGGREST_1.35.0 pillar_1.6.4#> [70] igraph_1.2.7 fastmatch_1.1-3 glue_1.4.2#> [73] evaluate_0.14 data.table_1.14.2 png_0.1-7# > [76] vctrs_0.3.8 tzdb_0.1.2 org.Mm.eg.db_3.14.0#> [79] purrr_0.3.4 tidyr_1.1.4 assertthat_0.2.1#> [82] cachem_1.0.6 xfun_0.27 viridisLite_0.4.0#> [85] tibble_3.1.5 memoise_2.0.0 ellipsis_0.3.2
参考文献
- [1] Ehsani R, Drablos F:改进长链非编码rna功能预测的共表达方法.BMC生物信息学2018.接受。
- [2] Villmann T:学习函数数据的Sobolev度量-数学和理论方面.:机器学习报告。编辑:维尔曼T,施莱夫F-M,卷1。德国莱比锡:莱比锡大学医学系;2007: 1-13。
- [3]黎巴嫩G:学习黎曼度量。:第十九届人工智能不确定性会议论文集;墨西哥阿卡普尔科。摩根·考夫曼出版公司2003:362-369
- [4] Jian Q:LncRNA2Function:基于RNA-seq数据的人类lncrna功能研究的综合资源。:BMC基因组学2015.DOI:10.1186 / 1471 - 2164 - 16 - s3 - s2
- [5] Benabderrahmane S, smil - 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