ivorobyev commited on
Commit
2550c12
·
verified ·
1 Parent(s): 88155b2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -32
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().replace(' ', '')
102
- l_seq = l_seq.upper().replace(' ', '')
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 (html)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
  with gr.Blocks() as demo:
140
  gr.Markdown('# Antibody Structure Prediction')
141
  gr.Markdown("## Examples")
142
- html = """
143
- <p>
144
- <strong>H-chain:</strong> <tt>QVQLKESGPGLVAPSQSLSITCTVSGFSLSSYGVSWVRQPPGKGLEWLGVIWGDGSTNYHPNLMSRLSISKDISKSQVLFKLNSLQTDDTATYYCVTLDYWGQGTSVTVSS</tt>
145
- <br/>
146
- <strong>L-chain: </strong> <tt>DVVMTQTPLSLPVSLGDQASISCRSSQSLVHRNGNTYLHWYLQKPGQSPKLLIYKVSNRFSGVPDRFSGSGSGTDFTLKISRVEAEDLGLYFCFQTTYVPNTFGGGTKLEIK</tt>
147
- </p>
148
-
149
- <p>
150
- <strong>H-chain:</strong> <tt>EVQLLESGGGLVQPGGSLRLSCAASGFTFSLYWMGWVRQAPGKGLEWVSSISSSGGVTPYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAKLGELGWFDPWGQGTLVTVSS</tt>
151
- <br/>
152
- <strong>L-chain: </strong> <tt>DIQMTQSPSSLSASVGDRVTITCRASQGISSYLNWYQQKPGKAPKLLIYYASNLQNGVPSRFSGSGSGTDFTLTISSLQPEDFATYYCQQSYSTPLTFGGGTKVEIK</tt>
153
- </p>
154
-
155
- <p>
156
- <strong>H-chain:</strong> <tt>EVQLVQSGPEVKKPGTSVKVSCKASGFTFMSSAVQWVRQARGQRLEWIGWIVIGSGNTNYAQKFQERVTITRDMSTSTAYMELSSLRSEDTAVYYCAAPYCSSISCNDGFDIWGQGTMVTVS</tt>
157
- <br/>
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
- btn.click(pred_seq, inputs=[h_text, l_text], outputs=gr.HTML())
 
 
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()