This repository contains source code and datasets for paper "Graph Embedding on Biomedical Networks: Methods, Applications, and Evaluations" (accepted by Bioinformatics). This work aims to systematically evaluate recent advanced graph embedding techniques on biomedical tasks. We compile 5 benchmark datasets for 4 biomedical prediction tasks (see paper for details) and use them to evaluate 11 representative graph embedding methods selected from different categories:
The code can also be applied to graphs in other domains (e.g., social networks, citation networks). More experimental details can be found in Supplementary Materials.
Please kindly cite the paper if you use the code, datasets or any results in this repo or in the paper:
@article{yue2020graph,
title={Graph embedding on biomedical networks: methods, applications and evaluations},
author={Yue, Xiang and Wang, Zhen and Huang, Jingong and Parthasarathy, Srinivasan and Moosavinasab, Soheil and Huang, Yungui and Lin, Simon M and Zhang, Wen and Zhang, Ping and Sun, Huan},
journal={Bioinformatics},
volume={36},
number={4},
pages={1241--1251},
year={2020},
publisher={Oxford University Press}
}
Fig. 1: Pipeline for applying graph embedding methods to biomedical tasks. Low-dimensional node representations are first learned from biomedical networks by graph embedding methods and then used as features to build specific classifiers for different tasks. For (a) matrix factorization-based methods, they use a data matrix (e.g., adjacency matrix) as the input to learn embeddings through matrix factorization. For (b) random walk-based methods, they first generate sequences of nodes through random walks and then feed the sequences into the word2vec model to learn node representations. For (c) neural network-based methods, their architectures and inputs vary from different models.
Datasets used in the paper:
Statistics:
Task Type | Dataset | #nodes | #edges | Density | #labels |
---|---|---|---|---|---|
CTD DDA | 12,765 | 92,813 | 0.11% | - | |
NDFRT DDA | 13,545 | 56,515 | 0.06% | - | |
Link Prediction | DrugBank DDI | 2,191 | 242,027 | 10.08% | - |
STRING PPI | 15,131 | 359,776 | 0.31% | - | |
Clin Term COOC | 48,651 | 1,659,249 | 0.14% | 31 | |
Node Classification | node2vec PPI | 3,890 | 76,584 | 1.01% | 50 |
Mashup PPI | 16,143 | 300,181 | 0.23% | 28 |
We also release the best-performing pre-trained representations of nodes (e.g., drugs, diseases, proteins, UMLS concepts) on each dataset. These pre-trained vectors can be used as:
External representations to complement the biological features. In the paper, we showed that by adding the network embedding feature into an existing computational model for predicting drug-disease associations, the performance is further improved (Section 4.3 in the paper).
Initialized values of the embedding vectors before training. We can initialize the embedding vector for each node on a graph with its pre-trained embedding (e.g., by looking for the corresponding entity in pre-trained vocab look-up table rather than by random initialization, and then continue training various graph embedding methods as before (which is often referred to as “fine-tuning”). We conducted experiment with this "transfer learning" idea on the "CTD DDA" graph and showed the improvement (Section 5 in the paper).
All the pretrained vectors can be downloaded here. The files are formatted as:
node_num, embedding_dimension
index_1, embedding vector 1
index_2, embedding vector 2
...
The corresponding index to node name (or their original ID) can be found in the each dataset directory.
The graph embedding learning for Laplician Eigenmap, Graph Factorization, HOPE, GraRep, DeepWalk, node2vec, LINE, SDNE uses the code from OpenNE The code of struc2vec and GAE is from their authors. To ensure different source code could run successfully in our framework, we modify part of their source code.
Use the following command to install directly from GitHub;
$ pip install git+https://github.com/xiangyue9607/BioNEV.git
Alternatively, use the following commands to install the latest code in development mode (using -e
):
$ git clone https://github.com/xiangyue9607/BioNEV.git
$ cd BioNEV
$ pip install -e .
Matrix Factorization-based methods:
Random Walk-based methods:
Neural Network-based methods:
bionev --input ./data/DrugBank_DDI/DrugBank_DDI.edgelist \
--output ./embeddings/DeepWalk_DrugBank_DDI.txt \
--method DeepWalk \
--task link-prediction \
--eval-result-file eval_result.txt
bionev --input ./data/Clin_Term_COOC/Clin_Term_COOC.edgelist \
--label-file ./data/Clin_Term_COOC/Clin_Term_COOC_labels.txt \
--output ./embeddings/LINE_COOC.txt \
--method LINE \
--task node-classification \
--weighted True
Feel free to contact Xiang Yue