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> </p> <p># Code and data description</p> <p>## Scripts</p> <p>- `kge_nfm.py`: the complement of the KGE_NFM & NFM methods.</p> <p>- `kge_rf.py`: the complement of the KGE_RF & RF methods.</p> <p>- `deepdit.py`: the complement of the MPNN_CNN & DeepDTI methods.</p> <p>- the complement of DTINet and DTiGEMS is tested based on their source packages (more in Prerequisites)</p> <p><br> </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> </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> </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> </p> <p>#### `luo'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> </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> </p> <p># Prerequisites</p> <p>#### Operating system: Linux</p> <p>#### Programing language: python</p> <p>#### KGE_NFM & NFM dependencies</p> <p>```</p> <p>- python 3.6</p> <p>- pandas '1.1.5'</p> <p>- numpy '1.18.4'</p> <p>- scikit-learn '0.24.1'</p> <p>- tensorflow '1.15.0'</p> <p>- ampligraph '1.3.2'</p> <p>- deepctr '0.8.4'</p> <p>```</p> <p>#### baseline dependencies</p> <p>- RF & KGE_RF (included in KGE_NFM&NFM dependencies)</p> <p>- MPNN_CNN & DeepDTI:</p> <p>- source: https://github.com/kexinhuang12345/DeepPurpose</p> <p>```</p> <p>- deeppurpose '0.0.9'</p> <p>- torch '1.6.0+cu101'</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> </p> <p># Example (kge_nfm.py)</p> <p> </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<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> </p> <p>- nfm training process (`patience=10`)</p> <p> </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> </p> <p>- reutrn results as type of roc_auc & 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