Skip to content

The implementation of HPOLabeler, which has been published on Bioinformatics (Title: "HPOLabeler: improving prediction of human protein–phenotype associations by learning to rank", DOI: https://doi.org/10.1093/bioinformatics/btaa284). The source codes are for reference only, please do not upload them to other platforms. Due to requirements of my…

liulizhi1996/HPOLabeler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HPOLabeler

如何运行?

注:请在开始下面步骤前,在~/.bashrc文件的最后一行加上:

export PYTHONPATH=${PYTHONPATH}:[HPOLabeler的目录位置]

第一步:预处理(Pre-processing)

  1. http://compbio.charite.de/jenkins/job/hpo.annotations.monthly/下载基因-HPO标注文件ALL_SOURCES_ALL_FREQUENCIES_genes_to_phenotype.txt到目录data/annotation/raw。然后,运行src/preprocessing/extract_gene_id.py以提取文件的第一列(即entrez gene id),并将其写入一个.txt文件。接着,上传该文件内容到Uniprot ID Mapping Tool (http://www.uniprot.org/mapping/),选择选项From: Entrez Gene (Gene ID)To: UniProtKB,然后点击Submit按钮。在新的窗口中,选择左栏的Filter byReviewed Swiss-Prot,并点击页面中间的Download按钮,选择Format: Tab-separated并点击Go下载映射文件。将映射文件放入data/annotation/intermediate中,并更名为gene2uniprot.txt

  2. 运行src/preprocessing/create_annotation.py程序。程序将输出处理好的HPO标注文件。

  3. 重复上述两步,分别处理得到三个标注文件(比如2018-03-09、2019-04-15和2019-11-15)。

  4. https://bioportal.bioontology.org/ontologies/HP下载三个时期相对应的.obo文件,将其放在data/obo目录下。之后运行src/preprocessing/split_dataset.py。我们将得到:

    • 处理好的用于训练基础分类器的标注、用于训练排序学习的标注和用于测试的标注
    • 上面三个标注文件中的蛋白质标识符列表
    • 用来标注蛋白质的HPO term列表
    • 按照频率划分的各个小组内的HPO term列表

第二步:处理特征(Extracting Features)

STRING

  1. 打开https://string-db.org/,然后点击页面左上角的Version,在自动跳转到的新页面中选择合适的版本,并单击Address一栏中的链接。之后,点击新页面上方导栏的Download按钮,点击choose an organism下拉菜单,选择Homo sapiens。现在,点击INTERACTION DATA部分的9606.protein.links.XXX.txt.gz(XXX为版本),下载蛋白质互作数据。最后,点击ACCESSORY DATA部分的mapping_files (download directory),进入ftp页面,点击uniprot_mappings/目录,下载属于人类(可能是开头为9606或者文件名中有human字样)的压缩文件。上述两个文件都下载至data/feature/STRING/raw目录下。

  2. 运行src/feature/STRING/string.py程序,得到在data/feature/STRING/clean目录下的json格式的文件。

GeneMANIA

  1. http://genemania.org/data/current/Homo_sapiens.COMBINED/下载COMBINED.DEFAULT_NETWORKS.BP_COMBINING.txt文件。然后再从http://genemania.org/data/current/Homo_sapiens/中下载identifier_mappings.txt文件。

  2. 运行src/feature/GeneMANIA/genemania.py,得到在data/feature/GeneMANIA/clean下的json格式文件。

BioGRID

  1. https://downloads.thebiogrid.org/BioGRID/Release-Archive中选取合适的版本,并点击链接进入。在新页面中下载BIOGRID-ALL-XXX.tab2.zip(XXX为版本号)。然后在https://downloads.thebiogrid.org/BioGRID/External-Database-Builds/中下载UNIPROT.tab.txt。这两个文件都放到data/feature/BioGRID/raw下。

  2. 运行src/feature/BioGRID/biogrid.py,得到在data/feature/BioGRID/clean下的json文件。

GO Annotation

  1. 首先,在https://www.ebi.ac.uk/GOA/downloads页面的Annotation Sets表格的Human一行中,点击某一个链接(若要下载当前最新数据,点击Current Files,否则点击Archive Files),然后下载合适版本的.gaf文件。

  2. 若要下载最新版的GO的.obo文件,可从http://geneontology.org/docs/download-ontology/中下载;若要下旧版,则可以从https://bioportal.bioontology.org/ontologies/GO下载。

  3. 运行src/feature/GO_annotation/go_annotation.py,得到在data/feature/GO_annotation/clean目录下的数据。

Trigram

  1. data/dataset/protein中的三个蛋白质标识符列表中所有的蛋白质标识符上传至https://www.uniprot.org/mapping/,并且选择FromUniProtKB AC/IDToUniProtKB,再点击Submit。在新页面中,点击页面中间的Download按钮,选择格式为FASTA (canonical),点击Go。将下载得到的fasta序列文件放到data/feature/Trigram/raw中。

  2. 运行src/feature/Trigram/trigram.py,得到在data/feature/Trigram/clean中的输出文件。

InterPro

  1. http://ftp.ebi.ac.uk/pub/software/unix/iprscan/5/选择合适的InterProScan程序包下载。

  2. 进入下载后解压的目录内,以要查询的蛋白质的fasta文件为输入,运行InterProScan,得到程序匹配到的InterPro signatures的xml文件:

    ./interproscan.sh -i /path/to/sequences.fasta -b /path/to/output_file -f XML

  3. 运行src/feature/InterPro/interpro.py程序,处理上一步得到的原始xml文件,获得处理后的InterPro特征文件。

HumanNet

  1. 打开https://www.inetbio.org/humannet/download.php。选择Integrated Networks下的HumanNet-XN下载。将下载到的文件放在data/feature/HumanNet/raw中。

  2. 打开https://www.uniprot.org/uniprot/?query=*&fil=reviewed%3Ayes+AND+organism%3A%22Homo+sapiens+%28Human%29+%5B9606%5D%22。点击页面中部的Columns按钮,在新页面的Columns to be displayed中点击所有的虚线框右上角的叉号。之后在Add more columns栏目中部的Search:搜索框中输入GeneID,点击弹出的联想词。此时,单击最右侧的Save按钮。跳回到原来的页面,这时表格只剩下EntryCross-reference (GeneID)。点击页面中间的Download按钮,选择Format: Tab-separated,再点击Go按钮下载文件。将该文件重命名为entrez2uniprot.txt,放在data/feature/COXPRESdb/raw下。下载完毕后,在刚刚UniProt的页面中,再次点击Columns按钮,在新页面中点击右侧的Reset to default(注意:不要点击default这个单词,而点击Reset),之后再单击Save。这样UniProt界面恢复原来的样子。

  3. 运行src/feature/HumanNet/humannet.py,得到处理后的蛋白质关系网络。

HIPPIE

  1. 打开http://cbdm-01.zdv.uni-mainz.de/~mschaefer/hippie/download.php,并选择HIPPIE tab format下的合适版本进行下载。

  2. 打开https://www.uniprot.org/uniprot/?query=*&fil=reviewed%3Ayes+AND+organism%3A%22Homo+sapiens+%28Human%29+%5B9606%5D%22。点击页面中部的Columns按钮,在新页面的Columns to be displayed中点击除Entry name外所有的虚线框右上角的叉号,再单击最右侧的Save按钮。跳回到原来的页面,此时表格只剩下EntryEntry name两列。点击页面中间的Download按钮,选择Format: Tab-separated,再点击Go按钮下载文件。将该文件重命名为uniprot_name2id.txt,放在data/feature/HIPPIE/raw下。下载完毕后,在刚刚UniProt的页面中,再次点击Columns按钮,在新页面中点击右侧的Reset to default(注意:不要点击default这个单词,而点击Reset),之后再单击Save。这样UniProt界面恢复原来的样子。

  3. 运行src/feature/HIPPIE/hippie.py,获得处理后的HIPPIE的PPI数据。

COXPRESdb

  1. 打开https://coxpresdb.jp/download/,点击> Show previous data。找到Species列为HumanMethod列为R的行,下载这一行Gene correlation table列的.zip文件,将其放入data/feature/COXPRESdb/raw目录下。注意:请不要解压!

  2. 打开https://www.uniprot.org/uniprot/?query=*&fil=reviewed%3Ayes+AND+organism%3A%22Homo+sapiens+%28Human%29+%5B9606%5D%22。点击页面中部的Columns按钮,在新页面的Columns to be displayed中点击所有的虚线框右上角的叉号。之后在Add more columns栏目中部的Search:搜索框中输入GeneID,点击弹出的联想词。此时,单击最右侧的Save按钮。跳回到原来的页面,这时表格只剩下EntryCross-reference (GeneID)。点击页面中间的Download按钮,选择Format: Tab-separated,再点击Go按钮下载文件。将该文件重命名为entrez2uniprot.txt,放在data/feature/COXPRESdb/raw下。下载完毕后,在刚刚UniProt的页面中,再次点击Columns按钮,在新页面中点击右侧的Reset to default(注意:不要点击default这个单词,而点击Reset),之后再单击Save。这样UniProt界面恢复原来的样子。

  3. 运行src/feature/COXPRESdb/coxpresdb.py,获得处理后的共表达数据。

第三步:训练基础分类器(Basic Models)

Naive

  1. 运行src/basic/naive/naive.py,得到data/result/basic/naive内的输出文件。

Neighbor

  1. 注意设置配置文件里“network”一项的“type”,对于STRING和GeneMANIA,其设为“weighted”;对于BioGRID,则要设置为“unweighted”。

  2. 运行src/basic/neighbor/neighbor.py,得到保存在data/result/basic/neighbor中的预测结果。

Flat

  1. 运行src/basic/flat/flat.py,将各种处理得到的特征文件作为输入,训练Logistic Regression分类器,对用于排序学习的训练集和测试集进行预测,得到输出在data/result/basic/flat目录下的一系列预测结果文件。

第四步:排序学习(Learning to Rank)

  1. 将第三步中得到的一系列预测分数作为输入,即配置文件中的"result"部分。注意:请务必保证这一部分的"ltr""test"的列表内的文件顺序是一致的!

  2. 注意合理调节配置文件中"model_param"部分的max_depth值、"fit_param"部分中的num_boost_roundearly_stopping_rounds以及"top"中的取值。

  3. 运行src/ensemble/ltr/ltr.py程序,得到最终的预测结果。

第五步:评估(Evaluation)

  1. 将要评估的预测结果的文件路径添加在配置文件的"result"部分。

  2. 运行src/utils/evaluation.py,程序将会显示各个预测结果在各个子本体上的

    • Fmax:以蛋白质为中心的评估指标
    • AUC:以HPO term为中心的评估指标,即每个HPO term的AUC的平均值
    • AUPR:整体的评估指标,即以一对蛋白质-HPO term为实例进行计算的AUPR
    • 每个按频率划分的HPO term小组内的平均AUC

About

The implementation of HPOLabeler, which has been published on Bioinformatics (Title: "HPOLabeler: improving prediction of human protein–phenotype associations by learning to rank", DOI: https://doi.org/10.1093/bioinformatics/btaa284). The source codes are for reference only, please do not upload them to other platforms. Due to requirements of my…

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages