Skip to main content
zenodoopen

A unified DTI prediction framework based on knowledge graph and recommendation system

<p>## A unified DTI prediction framework based on knowledge graph and recommendation system</p> <p>&nbsp;</p> <p># Code and data description</p> <p>## Scripts</p> <p>- `kge_nfm.py`: the complement of the KGE_NFM &amp; NFM methods.</p> <p>- `kge_rf.py`: the complement of the KGE_RF &amp; RF methods.</p> <p>- `deepdit.py`: the complement of the MPNN_CNN &amp; DeepDTI methods.</p> <p>- the complement of DTINet and DTiGEMS is tested based on their source packages (more in Prerequisites)</p> <p><br> &nbsp;</p> <p>## `data/` directory</p> <p>#### `yamanishi_08/` directory</p> <p>- `data_folds/`: 10 folds training set and test set in the three scenarios</p> <p>- `warm_start_1_1/`</p> <p>- `warm_start_1_10/`</p> <p>- `drug_coldstart/`</p> <p>- `protein_coldstart/`</p> <p>- `kg_data/`: supporting knowledge graph data</p> <p>- `dt_all_08.csv`: whole DTI dataset</p> <p>- `791drug_struc.csv`: drugbank id and smiles of drugs</p> <p>- `989proseq.csv`: kegg id and sequences of proteins</p> <p>- `morganfp.txt`: list of drug morgan fingerprints</p> <p>- `pro_ctd.txt`: list of protein descriptors</p> <p>&nbsp;</p> <p>#### `BioKG/` directory</p> <p>- `data_folds/`: 10 folds training set and test set in the three scenarios</p> <p>- `warm_start_1_10/`</p> <p>- `drug_coldstart/`</p> <p>- `protein_coldstart/`</p> <p>- `kg.csv`: supporting knowledge graph data</p> <p>- `dti.csv`: whole DTI dataset</p> <p>- `comp_struc.csv`: drugbank id and smiles of drugs</p> <p>- `pro_seq.csv`: sequences of proteins</p> <p>- `fp_df.csv`: list of drug morgan fingerprints</p> <p>- `prodes_df.csv`: list of protein descriptors</p> <p>&nbsp;</p> <p>#### `hetionet/` directory</p> <p>- `data_folds/`: 10 folds training set and test set in the three scenarios</p> <p>- `warm_start_1_10/`</p> <p>- `drug_coldstart/`</p> <p>- `protein_coldstart/`</p> <p>- `kg.csv`: supporting knowledge graph data</p> <p>- `dti.csv`: whole DTI dataset</p> <p>- `map_drugs_df`: drugbank id and smiles of drugs</p> <p>- `pro_seq.csv`: sequences of proteins</p> <p>- `fp_df.csv`: list of drug morgan fingerprints</p> <p>- `prodes_df.csv`: list of protein descriptors</p> <p>&nbsp;</p> <p>#### `luo&#39;s_dataset/` directory</p> <p>- `data_folds/`: 10 folds training set and test set in the three scenarios</p> <p>- `warm_start_1_1/`</p> <p>- `warm_start_1_10/`</p> <p>- `drug_coldstart/`</p> <p>- `protein_coldstart/`</p> <p>- `mapping/`: related mappings and similarity matrix (https://github.com/luoyunan/DTINet)</p> <p>- `protein.txt`: list of protein names</p> <p>- `disease.txt`: list of disease names</p> <p>- `se.txt`: list of side effect names</p> <p>- `drug_dict_map`: a complete ID mapping between drug names and DrugBank ID</p> <p>- `protein_dict_map`: a complete ID mapping between protein names and UniProt ID</p> <p>- `Similarity_Matrix_Drugs.txt` : Drug similarity scores based on chemical structures of drugs</p> <p>- `Similarity_Matrix_Proteins.txt` : Protein similarity scores based on primary sequences of proteins</p> <p>- `feature/`: related features used in methods</p> <p>- `drug_smiles.csv`: drugbank id and smiles</p> <p>- `seq.txt`: list of protein sequences</p> <p>- `morganfp.txt`: list of drug morgan fingerprints</p> <p>- `pro_ctd.txt`: list of protein descriptors</p> <p>&nbsp;</p> <p>#### `eg_model/` directory</p> <p>We provided a pre-trained kge model for example.</p> <p>- `dismult_400_warm_1_10.pkl`</p> <p><br> &nbsp;</p> <p># Prerequisites</p> <p>#### Operating system: Linux</p> <p>#### Programing language: python</p> <p>#### KGE_NFM &amp; NFM dependencies</p> <p>```</p> <p>- python 3.6</p> <p>- pandas &#39;1.1.5&#39;</p> <p>- numpy &#39;1.18.4&#39;</p> <p>- scikit-learn &#39;0.24.1&#39;</p> <p>- tensorflow &#39;1.15.0&#39;</p> <p>- ampligraph &#39;1.3.2&#39;</p> <p>- deepctr &#39;0.8.4&#39;</p> <p>```</p> <p>#### baseline dependencies</p> <p>- RF &amp; KGE_RF (included in KGE_NFM&amp;NFM dependencies)</p> <p>- MPNN_CNN &amp; DeepDTI:</p> <p>- source: https://github.com/kexinhuang12345/DeepPurpose</p> <p>```</p> <p>- deeppurpose &#39;0.0.9&#39;</p> <p>- torch &#39;1.6.0+cu101&#39;</p> <p>```</p> <p>- DTINet:</p> <p>- source: https://github.com/luoyunan/DTINet</p> <p>- note: in this work, we run the DTINet in a python environment, which need Linux system and python2. Importantly, this method requires the [Inductive Matrix Completion](http://bigdata.ices.utexas.edu/software/inductive-matrix-completion/) (IMC) library. More detailed information about the installation of this method could be found in the source code of the DTINet.</p> <p>- DTiGEMS:</p> <p>- source: https://github.com/MahaThafar/DTiGEMSplus</p> <p>- TriModel:</p> <p>- source: http://drugtargets.insight-centre.org/</p> <p><br> <br> &nbsp;</p> <p># Example (kge_nfm.py)</p> <p>&nbsp;</p> <p>#### A brief presentation of the results:</p> <p>- return average loss when training kge model</p> <p>```</p> <p>Average Loss: 0.475181: 2%|###3 | 1/50 [01:10&lt;57:31, 70.44s/epoch]</p> <p>```</p> <p>- return performance(mrr) on training set of DTI for early stopping (kge_model in `eg_model/`)</p> <p>```</p> <p>In [35]: roc = roc_auc(test_label,test_score)</p> <p>...: pr = pr_auc(test_label,test_score)</p> <p>...: print(roc)</p> <p>...: print(pr)</p> <p>0.8731770833333332</p> <p>0.44079654835037246</p> <p>```</p> <p>&nbsp;</p> <p>- nfm training process (`patience=10`)</p> <p>&nbsp;</p> <p>```</p> <p>In [45]: roc_nfm,pr_nfm,pred_y = train_nfm(feature_columns,train_model_input,train_label,test_model_input,test_label,patience)</p> <p>Train on 44851 samples</p> <p>Epoch 1/2000</p> <p>44851/44851 - 2s - loss: 0.5332 - precision: 0.0976</p> <p>Epoch 2/2000</p> <p>44851/44851 - 1s - loss: 0.4143 - precision: 0.0000e+00</p> <p>Epoch 3/2000</p> <p>44851/44851 - 1s - loss: 0.3456 - precision: 0.0000e+00</p> <p>Epoch 4/2000</p> <p>44851/44851 - 1s - loss: 0.3443 - precision: 0.0000e+00</p> <p>Epoch 5/2000</p> <p>44851/44851 - 1s - loss: 0.3470 - precision: 0.0000e+00</p> <p>Epoch 6/2000</p> <p>44851/44851 - 1s - loss: 0.3382 - precision: 0.0000e+00</p> <p>......</p> <p>Epoch 279/2000</p> <p>44851/44851 - 1s - loss: 0.0758 - precision: 0.9248</p> <p>Epoch 280/2000</p> <p>44851/44851 - 1s - loss: 0.0753 - precision: 0.9327</p> <p>Epoch 281/2000</p> <p>44851/44851 - 1s - loss: 0.0796 - precision: 0.9155</p> <p>Epoch 282/2000</p> <p>44851/44851 - 1s - loss: 0.0764 - precision: 0.9276</p> <p>Epoch 283/2000</p> <p>44851/44851 - 1s - loss: 0.0739 - precision: 0.9127</p> <p>```</p> <p>&nbsp;</p> <p>- reutrn results as type of roc_auc &amp; pr_auc</p> <p>```</p> <p>0.9812476679104477</p> <p>0.8803416284646345</p> <p>```</p>

ShareScore

32/100

Overall dataset sharing score

Score breakdown

These five areas show where the dataset supports — or may limit — practical reuse.

Stewardship
4
Harmonization
4
Access
16
Reuse readiness
8
Engagement
0