Update app.py
Browse files
app.py
CHANGED
@@ -4,6 +4,7 @@ import os
|
|
4 |
import random
|
5 |
import base64
|
6 |
import socket
|
|
|
7 |
|
8 |
|
9 |
def read_mol(molpath):
|
@@ -16,13 +17,11 @@ def read_mol(molpath):
|
|
16 |
|
17 |
|
18 |
def molecule(input_pdb, h_seq, l_seq):
|
19 |
-
|
20 |
mol = read_mol(input_pdb)
|
21 |
|
22 |
byte_content = mol.encode('utf-8')
|
23 |
base64_content = base64.b64encode(byte_content).decode('utf-8')
|
24 |
|
25 |
-
|
26 |
x = (
|
27 |
"""<!DOCTYPE html>
|
28 |
<html>
|
@@ -97,13 +96,16 @@ def validate(seq):
|
|
97 |
leftover = set(seq.upper()) - alphabet
|
98 |
return not leftover
|
99 |
|
|
|
|
|
|
|
100 |
def pred_seq(h_seq, l_seq):
|
101 |
-
h_seq = h_seq.upper()
|
102 |
-
l_seq = l_seq.upper()
|
103 |
|
104 |
print("Logs","___"*10)
|
105 |
-
print(h_seq)
|
106 |
-
print(l_seq)
|
107 |
hostname = socket.gethostname()
|
108 |
ip_address = socket.gethostbyname(hostname)
|
109 |
print(f"Hostname: {hostname}")
|
@@ -133,35 +135,47 @@ def pred_seq(h_seq, l_seq):
|
|
133 |
html = molecule(pred_pdb, h_seq, l_seq)
|
134 |
|
135 |
else:
|
136 |
-
html = "<p>ERROR! Not valid sequence</p>"
|
137 |
-
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
|
139 |
with gr.Blocks() as demo:
|
140 |
gr.Markdown('# Antibody Structure Prediction')
|
141 |
gr.Markdown("## Examples")
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
<strong>L-chain: </strong> <tt>EIVLTQSPATLSLSPGERATLSCRASQSVSSYLAWYQQKPGQAPRLLIYDASNRATGIPARFSGSGSGTDFTLTISSLEPEDFAVYYCQQRSNWPITFGQGTKLEIK</tt>
|
159 |
-
</p>
|
160 |
-
"""
|
161 |
-
gr.HTML(value = html)
|
162 |
-
h_text = gr.Textbox(lines=5, label="Heavy chain")
|
163 |
-
l_text = gr.Textbox(lines=5, label="Light chain")
|
164 |
btn = gr.Button(value="Submit")
|
165 |
-
|
|
|
|
|
166 |
if __name__ == "__main__":
|
167 |
-
demo.launch()
|
|
|
4 |
import random
|
5 |
import base64
|
6 |
import socket
|
7 |
+
import re
|
8 |
|
9 |
|
10 |
def read_mol(molpath):
|
|
|
17 |
|
18 |
|
19 |
def molecule(input_pdb, h_seq, l_seq):
|
|
|
20 |
mol = read_mol(input_pdb)
|
21 |
|
22 |
byte_content = mol.encode('utf-8')
|
23 |
base64_content = base64.b64encode(byte_content).decode('utf-8')
|
24 |
|
|
|
25 |
x = (
|
26 |
"""<!DOCTYPE html>
|
27 |
<html>
|
|
|
96 |
leftover = set(seq.upper()) - alphabet
|
97 |
return not leftover
|
98 |
|
99 |
+
def clean_sequence(seq):
|
100 |
+
return re.sub(r'\s+', '', seq)
|
101 |
+
|
102 |
def pred_seq(h_seq, l_seq):
|
103 |
+
h_seq = clean_sequence(h_seq).upper()
|
104 |
+
l_seq = clean_sequence(l_seq).upper()
|
105 |
|
106 |
print("Logs","___"*10)
|
107 |
+
print(f"Heavy chain: {h_seq}")
|
108 |
+
print(f"Light chain: {l_seq}")
|
109 |
hostname = socket.gethostname()
|
110 |
ip_address = socket.gethostbyname(hostname)
|
111 |
print(f"Hostname: {hostname}")
|
|
|
135 |
html = molecule(pred_pdb, h_seq, l_seq)
|
136 |
|
137 |
else:
|
138 |
+
html = "<p>ERROR! Not valid sequence. Please use only standard amino acid letters (ACDEFGHIKLMNPQRSTVWY)</p>"
|
139 |
+
return html
|
140 |
+
|
141 |
+
# Примеры последовательностей
|
142 |
+
examples = [
|
143 |
+
[
|
144 |
+
"QVQLKESGPGLVAPSQSLSITCTVSGFSLSSYGVSWVRQPPGKGLEWLGVIWGDGSTNYHPNLMSRLSISKDISKSQVLFKLNSLQTDDTATYYCVTLDYWGQGTSVTVSS",
|
145 |
+
"DVVMTQTPLSLPVSLGDQASISCRSSQSLVHRNGNTYLHWYLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKISRVEAEDLGLYFCFQTTYVPNTFGGGTKLEIK"
|
146 |
+
],
|
147 |
+
[
|
148 |
+
"EVQLLESGGGLVQPGGSLRLSCAASGFTFSLYWMGWVRQAPGKGLEWVSSISSSGGVTPYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKLGELGWFDPWGQGTLVTVSS",
|
149 |
+
"DIQMTQSPSSLSASVGDRVTITCRASQGISSYLNWYQQKPGKAPKLLIYYASNLQNGVPSRFSGSGSGTDFTLTISSLQPEDFATYYCQQSYSTPLTFGGGTKVEIK"
|
150 |
+
],
|
151 |
+
[
|
152 |
+
"EVQLVQSGPEVKKPGTSVKVSCKASGFTFMSSAVQWVRQARGQRLEWIGWIVIGSGNTNYAQKFQERVTITRDMSTSTAYMELSSLRSEDTAVYYCAAPYCSSISCNDGFDIWGQGTMVTVS",
|
153 |
+
"EIVLTQSPATLSLSPGERATLSCRASQSVSSYLAWYQQKPGQAPRLLIYDASNRATGIPARFSGSGSGTDFTLTISSLEPEDFAVYYCQQRSNWPITFGQGTKLEIK"
|
154 |
+
]
|
155 |
+
]
|
156 |
|
157 |
with gr.Blocks() as demo:
|
158 |
gr.Markdown('# Antibody Structure Prediction')
|
159 |
gr.Markdown("## Examples")
|
160 |
+
|
161 |
+
with gr.Row():
|
162 |
+
h_text = gr.Textbox(lines=5, label="Heavy chain",
|
163 |
+
placeholder="Enter heavy chain sequence (e.g. QVQLKESGP...)")
|
164 |
+
l_text = gr.Textbox(lines=5, label="Light chain",
|
165 |
+
placeholder="Enter light chain sequence (e.g. DVVMTQTPL...)")
|
166 |
+
|
167 |
+
# Создаем примеры с помощью gr.Examples
|
168 |
+
gr.Examples(
|
169 |
+
examples=examples,
|
170 |
+
inputs=[h_text, l_text],
|
171 |
+
label="Click on any example to paste it into the input fields",
|
172 |
+
fn=pred_seq,
|
173 |
+
outputs=gr.HTML()
|
174 |
+
)
|
175 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
btn = gr.Button(value="Submit")
|
177 |
+
output_html = gr.HTML()
|
178 |
+
btn.click(pred_seq, inputs=[h_text, l_text], outputs=output_html)
|
179 |
+
|
180 |
if __name__ == "__main__":
|
181 |
+
demo.launch()
|