ibm
/

marmg commited on
Commit
f462fd4
1 Parent(s): 42e8a61

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +104 -0
README.md CHANGED
@@ -1,3 +1,107 @@
1
  ---
2
  license: mit
 
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
+ inference: false
4
  ---
5
+
6
+ # Otter UBC Classifier Model Card
7
+
8
+
9
+ ## Model details
10
+ Otter models are based on Graph Neural Networks (GNN) that propagates initial embeddings through a set of layers that upgrade input embedding according to the node neighbours.
11
+ The architecture of GNN consists of two main blocks: encoder and decoder.
12
+ - For encoder we first define a projection layer which consists of a set of linear transformations for each node modality and projects nodes into common dimensionality, then we apply several multi-relational graph convolutional layers (R-GCN) which distinguish between different types of edges between source and target nodes by having a set of trainable parameters for each edge type.
13
+ - For decoder we consider link prediction task, which consists of a scoring function that maps each triple of source and target nodes and the corresponding edge and maps that to a scalar number defined over interval [0; 1].
14
+
15
+
16
+ **Model type:**
17
+
18
+ For link prediction, we consider three choices of scoring functions: DistMult, TransE and a Binary Classifier that are commonly used in the literature. The outcomes of scoring of each triple are then compared against actual labels using negative log likelihood loss function.
19
+
20
+ - Flow control: One crucial aspect of pretraining the GNN involves addressing the disparity between the data accessible during pretraining and the data accessible during subsequent tasks. Specifically, during pretraining, there are numerous attributes associated with proteins or drugs, whereas during downstream fine-tuning, only amino acid sequences and SMILES are available. Consequently, during pretraining, we explore two scenarios: one which controls the information propagated to the Drug/Protein entities and one without such control. In our experiments, we present results for both cases to provide an insight on the impact of restricting information flow during pretraining on the subsequent tasks.
21
+ - Noisy Links: An additional significant consideration is the presence of noisy links within the up-stream data and how they affect the downstream tasks. To investigate the potential impact on these tasks, we manually handpick a subset of links from each database that are relevant to drug discovery (see details in the Appendix). We then compare the outcomes when training the GNN using only these restricted links versus using all possible links present in the graphs.
22
+ - Regression: Certain pretraining datasets, like Uniprot, contain numerical data properties. Hence, we incorporate an extra regression objective aimed at minimizing the root mean square error (MSE) of the predicted numerical data properties. In the learning process, we combine the regression objective and the link prediction objective to create a single objective function.
23
+
24
+ | Scoring Type | Noisy Links | Flow Control | Regression |
25
+ |--------------|:-----------:|--------------|------------|
26
+ | Classifier Head | No | Yes | No |
27
+
28
+ **Model training data:**
29
+
30
+ The model was trained over *UBC*. *UBC* is a dataset comprising entities (Proteins/Drugs) from Uniprot (U), BindingDB (B) and. ChemBL (C). It contains 6,207,654 triples.
31
+
32
+ **Model results:**
33
+
34
+ <style type="text/css">
35
+ .tg {border-collapse:collapse;border-spacing:0;}
36
+ .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
37
+ overflow:hidden;padding:10px 5px;word-break:normal;}
38
+ .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px;
39
+ font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;}
40
+ .tg .tg-c3ow{border-color:inherit;text-align:center;vertical-align:top}
41
+ .tg .tg-0pky{border-color:inherit;text-align:center;vertical-align:centr;text-emphasis:bold}
42
+ </style>
43
+ <table class="tg">
44
+ <thead>
45
+ <tr>
46
+ <th class="tg-0pky">Dataset</th>
47
+ <th class="tg-c3ow">DTI DG</th>
48
+ <th class="tg-c3ow" colspan="3">DAVIS</th>
49
+ <th class="tg-c3ow" colspan="3">KIBA</th>
50
+ </tr>
51
+ </thead>
52
+ <tbody>
53
+ <tr>
54
+ <td class="tg-0pky">Splits</td>
55
+ <td class="tg-c3ow">Temporal</td>
56
+ <td class="tg-c3ow">Random</td>
57
+ <td class="tg-c3ow">Target</td>
58
+ <td class="tg-c3ow">Drug</td>
59
+ <td class="tg-c3ow">Random</td>
60
+ <td class="tg-c3ow">Target</td>
61
+ <td class="tg-c3ow">Drug</td>
62
+ </tr>
63
+ <tr>
64
+ <td class="tg-0pky">Results</td>
65
+ <td class="tg-c3ow">0.580</td>
66
+ <td class="tg-c3ow">0.810</td>
67
+ <td class="tg-c3ow">0.573</td>
68
+ <td class="tg-c3ow">0.104</td>
69
+ <td class="tg-c3ow">0.861</td>
70
+ <td class="tg-c3ow">0.631</td>
71
+ <td class="tg-c3ow">0.616</td>
72
+ </tr>
73
+ </tbody>
74
+ </table>
75
+
76
+ **Model date:**
77
+
78
+
79
+ **Paper or resources for more information:**
80
+ - [GitHub Repo](https://github.com/IBM/otter-knowledge)
81
+
82
+ **License:**
83
+
84
+ MIT
85
+
86
+ **Where to send questions or comments about the model:**
87
+ - [GitHub Repo](https://github.com/IBM/otter-knowledge)
88
+
89
+ ## How to use
90
+
91
+ Clone the repo:
92
+ ```sh
93
+ git clone https://github.com/IBM/otter-knowledge.git
94
+ cd otter-knowledge
95
+ ```
96
+ - Run the inference for Proteins:
97
+
98
+ *Replace test_data with the path to a CSV file containing the protein sequences, and name_of_the_column with the name of the column of the protein sequence in the CSV.*
99
+ ```python
100
+ python inference --test test_data --sequence_column name_of_the_column --model_path ibm/otter_ubc_classifier
101
+ ```
102
+ - Run the inference for Drugs:
103
+
104
+ *Replace test_data with the path to a CSV file containing the Drug SMILES, and name_of_the_column with the name of the column of the SMILES in the CSV.*
105
+ ```python
106
+ python inference --test test_data --sequence_column name_of_the_column input_type Drug --relation_name smiles --model_path ibm/otter_ubc_classifier
107
+ ```