DOSE
DOSE copied to clipboard
update doid-doid data and doid-gene data
老师,我先把DOSE数据更新的一些东西做个PR,对gson的修改我将在另外的PR中进行。此次PR共涉及三个包:分别是DOSE、DOyulab.db 和 GOSemSim。
每个包更新的内容:
DOyulab.db包:用于取代DO.db。
包含如下数据:
> ls("package:DOyulab.db")
[1] "DO" "DO_dbconn" "DO_dbfile" "DO_dbInfo" "DO_dbschema" "DOALIAS" "DOANCESTOR" "DOCHILDREN" "DOMAPCOUNTS" "DOOFFSPRING" "DOPARENTS" "DOSYNONYM" "DOTERM"
我使用DO.db自带的Human.obo进行处理后生成DOyulab.db,将它与DO.db进行对比,DO id的数目以及DO id的祖先节点信息都完全相同,富集分析和语义相似性分析也完全相同,证明DOyulab.db的处理方式是正确的,除了更新数据外没有产生副作用。
与DO.db的区别: (1)DOTERM数据,DO.db是多列,前两列是do id(完全一样),第三列是Term, 第四列和第五列是同义词/别名,并且第四列包含了第五列。
> head(toTable(DO.db::DOTERM))
do_id do_id Term Synonym Secondary
1 DOID:0001816 DOID:0001816 angiosarcoma "hemangiosarcoma" EXACT []
2 DOID:0001816 DOID:0001816 angiosarcoma DOID:267 DOID:267
3 DOID:0001816 DOID:0001816 angiosarcoma DOID:4508 DOID:4508
4 DOID:0002116 DOID:0002116 pterygium <NA> <NA>
5 DOID:0014667 DOID:0014667 disease of metabolism "metabolic disease " EXACT [SNOMEDCT_2005_07_31:75934005]
6 DOID:0050004 DOID:0050004 seminal vesicle acute gonorrhea <NA> <NA>
我感觉这样弄转成data.frame后信息有些冗余,因此只保留了do_id和Term两列。其他信息分别放在了DOALIAS(别名)和DOSYNONYM(同义词)中。这样每个数据转成data.frame后都是两列,便于后续处理。
(2)DOOFFSPRING数据,DO.db在转成list之后list的name与DOANCESTOR保持一致,而实际上有祖先节点的节点比有子孙节点的多得多,因此DOOFFSPRING就会有很多NA。在DOyulab.db里我去除了全为NA的DOid。不过在实际使用中是否去除NA是没有任何影响的。
与DO.db的数据差异: (1)比较节点数目:新增4518个,删除85个。剩下6485保持不变。 (2)比较父子关系对数目:新增5173对,删除1057对。剩下5860对保持不变。 (3)# 比较祖先关系对数目:新增29253对,删除4816对。剩下37515对保持不变。
GOSemSim包
将使用DO.db改为使用DOyulab.db
DOSE包
主要更新以下几点: (1)由依赖DO.db改为依赖DOyulab.db。代码基本都不需要修改,只有一处:
prepare_relation_df <- function() {
gtb <- toTable(DOTERM)
# gtb <- gtb[,2, drop=FALSE]
gtb <- gtb[,1, drop=FALSE]
DO.db::DOTERM转为data.frame后前两列都是doid(完全一样),您这里取的是第二列。DOyulab.db::DOTERM的第一列是doid,第二列是name,因此我这里将2改成了1。
(2)对parse-obo.R做了一些修改,增加了对同义词和别名信息的提取。
(3)修改computeIC()
。之前对docount计算的是同义词+ 别名的数量,这里改成计算注释到的基因数量,与GO的语义相似性计算保持一致。
# doids <- toTable(DOTERM)
# doterms <- doids$do_id
# docount <- table(doterms)
if (!exists(".DOSEEnv")) {
.initial()
}
DOSEEnv <- get(".DOSEEnv", envir = .GlobalEnv)
if (!exists("DO2EG", envir=DOSEEnv)) {
tryCatch(utils::data(list="DO2EG", package="DOSE"))
assign("DO2EG", DO2EG, envir = DOSEEnv)
DO2EG <- get("DO2EG")
rm(DO2EG, envir = .GlobalEnv)
}
DO2EG <- get("DO2EG", envir = DOSEEnv)
docount <- unlist(lapply(DO2EG, length))
(4)更新DOid-gene关联信息。 在更新数据后,有26836新增,41451删除。5126不变。考虑到新旧数据差异太大,并且来源不同,并不是普通的迭代更新,因此我将两者进行了合并。
更新使用的数据来源:
HumanDO.obo
来源与DO官网的推荐地址:https://github.com/DiseaseOntology/HumanDiseaseOntology/tree/main/src/ontology。
更新频率较高,最近一次更新是 2022/07/06。
doid-gene关联信息来源于https://fms.alliancegenome.org/download/DISEASE-ALLIANCE_COMBINED.tsv.gz。
这套数据是整合了多个物种的疾病-基因关联信息,应该是把从别的生物获取的疾病-基因关联信息也作为人类的关联信息。更新频率也很高,最近一次更新是2022-06-15 16:38,版本是5.2.1。这套数据中每一个doid-gene对都提供了来源:
The founding database members of the Alliance are Flybase, Mouse Genome Database (MGI), Rat Genome Database (RGD), Saccharomyces Genome Database (SGD), WormBase, and the Zebrafish Information Network (ZFIN).
- parse_obo放到HDO.db包里。
- 等HDO.db包进入cran/bioc之后,再更新DOSE和GOSemSim.
好的,老师。
老师, DOSE
已完成HDO.db
的适配,功能测试均正常。