working local gradio server
Browse files- api_prediction.py +1 -1
- inference.py +23 -19
api_prediction.py
CHANGED
|
@@ -143,7 +143,7 @@ class AptaTransPipeline_Dist(AptaTransPipeline):
|
|
| 143 |
print('Predicting the Aptamer-Protein Interaction')
|
| 144 |
try:
|
| 145 |
print("loading the best model for api!")
|
| 146 |
-
self.model.load_state_dict(torch.load('./models/
|
| 147 |
except:
|
| 148 |
print('there is no best model file.')
|
| 149 |
print('You need to train the model for predicting API!')
|
|
|
|
| 143 |
print('Predicting the Aptamer-Protein Interaction')
|
| 144 |
try:
|
| 145 |
print("loading the best model for api!")
|
| 146 |
+
self.model.load_state_dict(torch.load('./models/model.pt', map_location=self.device))
|
| 147 |
except:
|
| 148 |
print('there is no best model file.')
|
| 149 |
print('You need to train the model for predicting API!')
|
inference.py
CHANGED
|
@@ -1,13 +1,8 @@
|
|
| 1 |
from api_prediction import AptaTransPipeline_Dist
|
| 2 |
import argparse
|
|
|
|
| 3 |
|
| 4 |
def infer(prot, apta):
|
| 5 |
-
|
| 6 |
-
print('Input protein: ', prot)
|
| 7 |
-
print('Input aptamer: ', apta)
|
| 8 |
-
|
| 9 |
-
print('Initializing model.')
|
| 10 |
-
|
| 11 |
pipeline = AptaTransPipeline_Dist(
|
| 12 |
lr=1e-6,
|
| 13 |
weight_decay=None,
|
|
@@ -25,20 +20,29 @@ def infer(prot, apta):
|
|
| 25 |
load_best_pt=True, # already loads the pretrained model using the datasets included in repo -- no need to run the bottom two cells
|
| 26 |
device='cuda',
|
| 27 |
seed=1004)
|
|
|
|
| 28 |
scores = pipeline.inference([apta], [prot], [0])
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
-
|
| 32 |
-
parser = argparse.ArgumentParser(
|
| 33 |
-
prog='API Pipeline Inference',
|
| 34 |
-
description='From a protein and RNA aptamer sequence, predict the binding score.')
|
| 35 |
-
parser.add_argument('-p', '--prot')
|
| 36 |
-
parser.add_argument('-a', '--apta')
|
| 37 |
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
-
|
| 44 |
-
main()
|
|
|
|
| 1 |
from api_prediction import AptaTransPipeline_Dist
|
| 2 |
import argparse
|
| 3 |
+
import gradio as gr
|
| 4 |
|
| 5 |
def infer(prot, apta):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
pipeline = AptaTransPipeline_Dist(
|
| 7 |
lr=1e-6,
|
| 8 |
weight_decay=None,
|
|
|
|
| 20 |
load_best_pt=True, # already loads the pretrained model using the datasets included in repo -- no need to run the bottom two cells
|
| 21 |
device='cuda',
|
| 22 |
seed=1004)
|
| 23 |
+
|
| 24 |
scores = pipeline.inference([apta], [prot], [0])
|
| 25 |
+
return scores[0]
|
| 26 |
+
|
| 27 |
+
def comparison(protein, aptamers):
|
| 28 |
+
aptamers = aptamers.split('\n')
|
| 29 |
+
pairs = [[protein, aptamer] for aptamer in aptamers]
|
| 30 |
+
print(pairs)
|
| 31 |
+
scores = []
|
| 32 |
+
|
| 33 |
+
for pair in pairs:
|
| 34 |
+
score = infer(pair[0], pair[1])
|
| 35 |
+
scores.append(score)
|
| 36 |
|
| 37 |
+
return scores
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
+
iface = gr.Interface(
|
| 40 |
+
fn=comparison,
|
| 41 |
+
inputs=[
|
| 42 |
+
gr.Textbox(lines=2, placeholder="Protein"),
|
| 43 |
+
gr.Textbox(lines=10,placeholder="Aptamers (1 per line)")
|
| 44 |
+
],
|
| 45 |
+
outputs=gr.Textbox()
|
| 46 |
+
)
|
| 47 |
|
| 48 |
+
iface.launch()
|
|
|