Simon Duerr commited on
Commit
334e3a1
1 Parent(s): d40328c

add test set examples

Browse files
app.py CHANGED
@@ -15,6 +15,10 @@ from rdkit import RDLogger
15
  from rdkit.Chem import MolFromSmiles, AddHs
16
  from torch_geometric.loader import DataLoader
17
  import yaml
 
 
 
 
18
 
19
  print(torch.__version__)
20
  os.makedirs("data/esm2_output", exist_ok=True)
@@ -41,6 +45,8 @@ with open(f"workdir/paper_score_model/model_parameters.yml") as f:
41
  with open(f"workdir/paper_confidence_model/model_parameters.yml") as f:
42
  confidence_args = Namespace(**yaml.full_load(f))
43
 
 
 
44
  t_to_sigma = partial(t_to_sigma_compl, args=score_model_args)
45
 
46
  model = get_model(score_model_args, device, t_to_sigma=t_to_sigma, no_parallel=True)
@@ -66,30 +72,17 @@ state_dict = torch.load(
66
  confidence_model.load_state_dict(state_dict, strict=True)
67
  confidence_model = confidence_model.to(device)
68
  confidence_model.eval()
69
- tr_schedule = get_t_schedule(inference_steps=10)
70
- rot_schedule = tr_schedule
71
- tor_schedule = tr_schedule
72
- print("common t schedule", tr_schedule)
73
- failures, skipped, confidences_list, names_list, run_times, min_self_distances_list = (
74
- 0,
75
- 0,
76
- [],
77
- [],
78
- [],
79
- [],
80
- )
81
- N = 10
82
 
83
 
84
  def get_pdb(pdb_code="", filepath=""):
85
- if pdb_code is None or pdb_code == "":
86
- try:
87
- return filepath.name
88
- except AttributeError as e:
89
  return None
90
- else:
91
- os.system(f"wget -qnc https://files.rcsb.org/view/{pdb_code}.pdb")
92
- return f"{pdb_code}.pdb"
93
 
94
 
95
  def get_ligand(smiles="", filepath=""):
@@ -111,11 +104,23 @@ def read_mol(molpath):
111
  return mol
112
 
113
 
114
- def molecule(input_pdb, ligand_pdb):
115
 
116
  structure = read_mol(input_pdb)
117
  mol = read_mol(ligand_pdb)
118
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  x = (
120
  """<!DOCTYPE html>
121
  <html>
@@ -134,11 +139,27 @@ def molecule(input_pdb, ligand_pdb):
134
  .mol-container select{
135
  background-image:None;
136
  }
 
 
 
 
 
 
 
 
 
 
 
 
137
  </style>
138
  <script src="https://3Dmol.csb.pitt.edu/build/3Dmol-min.js"></script>
139
  </head>
140
  <body>
141
- <button id="startanimation">Replay diffusion process</button>
 
 
 
 
142
  <div id="container" class="mol-container"></div>
143
 
144
  <script>
@@ -147,7 +168,10 @@ def molecule(input_pdb, ligand_pdb):
147
  + """`
148
  let structure = `"""
149
  + structure
150
- + """`
 
 
 
151
 
152
  let viewer = null;
153
 
@@ -163,6 +187,9 @@ def molecule(input_pdb, ligand_pdb):
163
  viewer.animate({loop: "forward",reps: 1});
164
 
165
  viewer.getModel(1).setStyle({stick:{colorscheme:"magentaCarbon"}});
 
 
 
166
  viewer.render();
167
 
168
  })
@@ -189,18 +216,14 @@ def esm(protein_path, out_file):
189
  esm_embedding_prep(out_file, protein_path)
190
  # create args object with defaults
191
  os.environ["HOME"] = "esm/model_weights"
192
- print("calling ", sys.executable)
193
- print("datadir", os.listdir("data"))
194
- print(os.environ)
195
- print(torch.__file__)
196
  subprocess.call(
197
  f"python esm/scripts/extract.py esm2_t33_650M_UR50D {out_file} data/esm2_output --repr_layers 33 --include per_tok",
198
  shell=True,
199
- env=os.environ
200
  )
201
 
202
 
203
- def update(inp, file, ligand_inp, ligand_file):
204
  pdb_path = get_pdb(inp, file)
205
  ligand_path = get_ligand(ligand_inp, ligand_file)
206
 
@@ -208,7 +231,26 @@ def update(inp, file, ligand_inp, ligand_file):
208
  pdb_path,
209
  f"data/{os.path.basename(pdb_path)}_prepared_for_esm.fasta",
210
  )
211
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  protein_path_list = [pdb_path]
213
  ligand_descriptions = [ligand_path]
214
  no_random = False
@@ -320,7 +362,7 @@ def update(inp, file, ligand_inp, ligand_file):
320
  data_list, confidence = sampling(
321
  data_list=data_list,
322
  model=model,
323
- inference_steps=10,
324
  tr_schedule=tr_schedule,
325
  rot_schedule=rot_schedule,
326
  tor_schedule=tor_schedule,
@@ -359,6 +401,7 @@ def update(inp, file, ligand_inp, ligand_file):
359
  f'{out_dir}/index{idx}_{data_list[0]["name"][0].replace("/","-")}'
360
  )
361
  os.makedirs(write_dir, exist_ok=True)
 
362
  for rank, pos in enumerate(ligand_pos):
363
  mol_pred = copy.deepcopy(lig)
364
  if score_model_args.remove_hs:
@@ -367,6 +410,7 @@ def update(inp, file, ligand_inp, ligand_file):
367
  write_mol_with_coords(
368
  mol_pred, pos, os.path.join(write_dir, f"rank{rank+1}.sdf")
369
  )
 
370
  write_mol_with_coords(
371
  mol_pred,
372
  pos,
@@ -404,19 +448,27 @@ def update(inp, file, ligand_inp, ligand_file):
404
  print("Failed on", orig_complex_graph["name"], e)
405
  failures += 1
406
  return None
407
-
408
- labels = [f"rank {i+1}" for i in range(len(filenames))]
 
 
 
 
409
  return (
410
- molecule(pdb_path, filenames[0]),
411
- gr.Dropdown.update(choices=labels, value="rank 1"),
412
  filenames,
413
  pdb_path,
 
414
  )
415
 
416
 
417
- def updateView(out, filenames, pdb):
418
- i = int(out.replace("rank", ""))
419
- return molecule(pdb, filenames[i])
 
 
 
420
 
421
 
422
  demo = gr.Blocks()
@@ -426,7 +478,7 @@ with demo:
426
  gr.Markdown(
427
  ">**DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking**, Corso, Gabriele and Stärk, Hannes and Jing, Bowen and Barzilay, Regina and Jaakkola, Tommi, arXiv:2210.01776 [GitHub](https://github.com/gcorso/diffdock)"
428
  )
429
- gr.Markdown("Runs the diffusion model `10` times with `10` inference steps")
430
  with gr.Box():
431
  with gr.Row():
432
  with gr.Column():
@@ -442,6 +494,9 @@ with demo:
442
  label="SMILES string",
443
  )
444
  ligand_file = gr.File(file_count="single", label="Input Ligand")
 
 
 
445
 
446
  btn = gr.Button("Run predictions")
447
 
@@ -450,23 +505,54 @@ with demo:
450
  filenames = gr.Variable()
451
  out = gr.Dropdown(interactive=True, label="Ranked samples")
452
  mol = gr.HTML()
 
453
  gr.Examples(
454
  [
455
  [
456
- None,
457
- "examples/1a46_protein_processed.pdb",
458
- None,
459
- "examples/1a46_ligand.sdf",
460
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461
  ],
462
- [inp, file, ligand_inp, ligand_file],
463
- [mol, out],
 
464
  # cache_examples=True,
465
  )
466
  btn.click(
467
  fn=update,
468
- inputs=[inp, file, ligand_inp, ligand_file],
469
- outputs=[mol, out, filenames, pdb],
470
  )
471
- out.change(fn=updateView, inputs=[out, filenames, pdb], outputs=mol)
472
  demo.launch()
 
15
  from rdkit.Chem import MolFromSmiles, AddHs
16
  from torch_geometric.loader import DataLoader
17
  import yaml
18
+ import sys
19
+ import csv
20
+
21
+ csv.field_size_limit(sys.maxsize)
22
 
23
  print(torch.__version__)
24
  os.makedirs("data/esm2_output", exist_ok=True)
 
45
  with open(f"workdir/paper_confidence_model/model_parameters.yml") as f:
46
  confidence_args = Namespace(**yaml.full_load(f))
47
 
48
+ import shutil
49
+
50
  t_to_sigma = partial(t_to_sigma_compl, args=score_model_args)
51
 
52
  model = get_model(score_model_args, device, t_to_sigma=t_to_sigma, no_parallel=True)
 
72
  confidence_model.load_state_dict(state_dict, strict=True)
73
  confidence_model = confidence_model.to(device)
74
  confidence_model.eval()
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
 
77
  def get_pdb(pdb_code="", filepath=""):
78
+ try:
79
+ return filepath.name
80
+ except AttributeError as e:
81
+ if pdb_code is None or pdb_code == "":
82
  return None
83
+ else:
84
+ os.system(f"wget -qnc https://files.rcsb.org/view/{pdb_code}.pdb")
85
+ return f"{pdb_code}.pdb"
86
 
87
 
88
  def get_ligand(smiles="", filepath=""):
 
104
  return mol
105
 
106
 
107
+ def molecule(input_pdb, ligand_pdb, original_ligand):
108
 
109
  structure = read_mol(input_pdb)
110
  mol = read_mol(ligand_pdb)
111
 
112
+ try:
113
+ ligand = read_mol(original_ligand.name)
114
+ _, ext = os.path.splitext(original_ligand.name)
115
+ lig_str_1 = """let original_ligand = `""" + ligand + """`"""
116
+ lig_str_2 = f"""
117
+ viewer.addModel( original_ligand, "{ext[1:]}" );
118
+ viewer.getModel(2).setStyle({{stick:{{colorscheme:"greenCarbon"}}}});"""
119
+ except AttributeError as e:
120
+ ligand = None
121
+ lig_str_1 = ""
122
+ lig_str_2 = ""
123
+
124
  x = (
125
  """<!DOCTYPE html>
126
  <html>
 
139
  .mol-container select{
140
  background-image:None;
141
  }
142
+ .green{
143
+ width:20px;
144
+ height:20px;
145
+ background-color:#33ff45;
146
+ display:inline-block;
147
+ }
148
+ .magenta{
149
+ width:20px;
150
+ height:20px;
151
+ background-color:magenta;
152
+ display:inline-block;
153
+ }
154
  </style>
155
  <script src="https://3Dmol.csb.pitt.edu/build/3Dmol-min.js"></script>
156
  </head>
157
  <body>
158
+ <button id="startanimation">Replay diffusion process</button>
159
+ <div>
160
+ <span class="green"></span> Uploaded ligand position
161
+ <span class="magenta"></span> Predicted ligand position
162
+ </div>
163
  <div id="container" class="mol-container"></div>
164
 
165
  <script>
 
168
  + """`
169
  let structure = `"""
170
  + structure
171
+ + """`
172
+ """
173
+ + lig_str_1
174
+ + """
175
 
176
  let viewer = null;
177
 
 
187
  viewer.animate({loop: "forward",reps: 1});
188
 
189
  viewer.getModel(1).setStyle({stick:{colorscheme:"magentaCarbon"}});
190
+ """
191
+ + lig_str_2
192
+ + """
193
  viewer.render();
194
 
195
  })
 
216
  esm_embedding_prep(out_file, protein_path)
217
  # create args object with defaults
218
  os.environ["HOME"] = "esm/model_weights"
 
 
 
 
219
  subprocess.call(
220
  f"python esm/scripts/extract.py esm2_t33_650M_UR50D {out_file} data/esm2_output --repr_layers 33 --include per_tok",
221
  shell=True,
222
+ env=os.environ,
223
  )
224
 
225
 
226
+ def update(inp, file, ligand_inp, ligand_file, n_it):
227
  pdb_path = get_pdb(inp, file)
228
  ligand_path = get_ligand(ligand_inp, ligand_file)
229
 
 
231
  pdb_path,
232
  f"data/{os.path.basename(pdb_path)}_prepared_for_esm.fasta",
233
  )
234
+ tr_schedule = get_t_schedule(inference_steps=n_it)
235
+ rot_schedule = tr_schedule
236
+ tor_schedule = tr_schedule
237
+ print("common t schedule", tr_schedule)
238
+ (
239
+ failures,
240
+ skipped,
241
+ confidences_list,
242
+ names_list,
243
+ run_times,
244
+ min_self_distances_list,
245
+ ) = (
246
+ 0,
247
+ 0,
248
+ [],
249
+ [],
250
+ [],
251
+ [],
252
+ )
253
+ N = 10 # number of samples to generate
254
  protein_path_list = [pdb_path]
255
  ligand_descriptions = [ligand_path]
256
  no_random = False
 
362
  data_list, confidence = sampling(
363
  data_list=data_list,
364
  model=model,
365
+ inference_steps=n_it,
366
  tr_schedule=tr_schedule,
367
  rot_schedule=rot_schedule,
368
  tor_schedule=tor_schedule,
 
401
  f'{out_dir}/index{idx}_{data_list[0]["name"][0].replace("/","-")}'
402
  )
403
  os.makedirs(write_dir, exist_ok=True)
404
+ confidences = []
405
  for rank, pos in enumerate(ligand_pos):
406
  mol_pred = copy.deepcopy(lig)
407
  if score_model_args.remove_hs:
 
410
  write_mol_with_coords(
411
  mol_pred, pos, os.path.join(write_dir, f"rank{rank+1}.sdf")
412
  )
413
+ confidences.append(confidence[rank])
414
  write_mol_with_coords(
415
  mol_pred,
416
  pos,
 
448
  print("Failed on", orig_complex_graph["name"], e)
449
  failures += 1
450
  return None
451
+ # zip outputs
452
+ zippath = shutil.make_archive(pdb_path, "zip", write_dir)
453
+ print("Zipped outputs to", zippath)
454
+ labels = [
455
+ f"rank {i+1}, confidence {confidences[i]:.2f}" for i in range(len(filenames))
456
+ ]
457
  return (
458
+ molecule(pdb_path, filenames[0], ligand_file),
459
+ gr.Dropdown.update(choices=labels, value=labels[0]),
460
  filenames,
461
  pdb_path,
462
+ zippath,
463
  )
464
 
465
 
466
+ def updateView(out, filenames, pdb, ligand_file):
467
+ print("updating view")
468
+ i = out # int(out.replace("rank", ""))
469
+ print(i)
470
+ i = int(i.split(",")[0].replace("rank", "")) - 1
471
+ return molecule(pdb, filenames[i], ligand_file)
472
 
473
 
474
  demo = gr.Blocks()
 
478
  gr.Markdown(
479
  ">**DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking**, Corso, Gabriele and Stärk, Hannes and Jing, Bowen and Barzilay, Regina and Jaakkola, Tommi, arXiv:2210.01776 [GitHub](https://github.com/gcorso/diffdock)"
480
  )
481
+ gr.Markdown("")
482
  with gr.Box():
483
  with gr.Row():
484
  with gr.Column():
 
494
  label="SMILES string",
495
  )
496
  ligand_file = gr.File(file_count="single", label="Input Ligand")
497
+ n_it = gr.Slider(
498
+ minimum=10, maximum=40, label="Number of inference steps", step=1
499
+ )
500
 
501
  btn = gr.Button("Run predictions")
502
 
 
505
  filenames = gr.Variable()
506
  out = gr.Dropdown(interactive=True, label="Ranked samples")
507
  mol = gr.HTML()
508
+ output_file = gr.File(file_count="single", label="Output files")
509
  gr.Examples(
510
  [
511
  [
512
+ "6w70",
513
+ "examples/6w70.pdb",
514
+ "COc1ccc(cc1)n2c3c(c(n2)C(=O)N)CCN(C3=O)c4ccc(cc4)N5CCCCC5=O",
515
+ "examples/6w70_ligand.sdf",
516
+ 10,
517
+ ],
518
+ [
519
+ "",
520
+ "examples/6o5u_protein_processed.pdb",
521
+ "",
522
+ "examples/6o5u_ligand.sdf",
523
+ 10,
524
+ ],
525
+ [
526
+ "",
527
+ "examples/6o5u_protein_processed.pdb",
528
+ "[NH3+]C[C@H]1O[C@H](O[C@@H]2[C@@H]([NH3+])C[C@H]([C@@H]([C@H]2O)O[C@H]2O[C@H](CO)[C@H]([C@@H]([C@H]2O)[NH3+])O)[NH3+])[C@@H]([C@H]([C@@H]1O)O)O",
529
+ "examples/6o5u_ligand.sdf",
530
+ 10,
531
+ ],
532
+ [
533
+ "",
534
+ "examples/6o5u_protein_processed.pdb",
535
+ "",
536
+ "examples/6o5u_ligand.sdf",
537
+ 10,
538
+ ],
539
+ [
540
+ "",
541
+ "examples/6ahs_protein_processed.pdb",
542
+ "",
543
+ "examples/6ahs_ligand.sdf",
544
+ 10,
545
+ ],
546
  ],
547
+ [inp, file, ligand_inp, ligand_file, n_it],
548
+ [mol, out, filenames, pdb, output_file],
549
+ # fn=update,
550
  # cache_examples=True,
551
  )
552
  btn.click(
553
  fn=update,
554
+ inputs=[inp, file, ligand_inp, ligand_file, n_it],
555
+ outputs=[mol, out, filenames, pdb, output_file],
556
  )
557
+ out.change(fn=updateView, inputs=[out, filenames, pdb, ligand_file], outputs=mol)
558
  demo.launch()
esm/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) Facebook, Inc. and its affiliates.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
esm/scripts/extract.py CHANGED
@@ -12,7 +12,7 @@ print("using", sys.executable)
12
  sys.path.insert( 0,"/home/user/.local/lib/python3.8/site-packages")
13
  sys.path.insert( 0,"/home/user/app/esm/")
14
  import os
15
- print(os.environ)
16
  import torch
17
 
18
  from esm import Alphabet, FastaBatchedDataset, ProteinBertModel, pretrained, MSATransformer
 
12
  sys.path.insert( 0,"/home/user/.local/lib/python3.8/site-packages")
13
  sys.path.insert( 0,"/home/user/app/esm/")
14
  import os
15
+
16
  import torch
17
 
18
  from esm import Alphabet, FastaBatchedDataset, ProteinBertModel, pretrained, MSATransformer
examples/6ahs_ligand.sdf ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 6ahs_ligand
2
+ -I-interpret-
3
+
4
+ 44 47 0 0 0 0 0 0 0 0999 V2000
5
+ -12.3770 21.8080 53.5010 C 0 0 0 0 0
6
+ -13.7990 19.8830 53.8470 C 0 0 0 0 0
7
+ -12.7140 27.6870 53.9730 C 0 0 0 0 0
8
+ -14.5790 28.9380 54.4000 C 0 0 0 0 0
9
+ -15.0000 26.1900 58.7440 C 0 0 0 0 0
10
+ -10.5140 22.1070 55.1220 O 0 0 0 0 0
11
+ -11.1780 22.7720 54.0310 S 0 0 0 0 0
12
+ -10.2040 22.9400 53.0000 O 0 0 0 0 0
13
+ -12.7440 20.6930 54.2570 C 0 0 0 0 0
14
+ -13.0670 22.0720 52.3070 C 0 0 0 0 0
15
+ -12.6220 23.4480 51.2580 Cl 0 0 0 0 0
16
+ -14.1300 21.2760 51.9160 C 0 0 0 0 0
17
+ -14.4890 20.1760 52.6790 C 0 0 0 0 0
18
+ -11.7830 24.2640 54.5210 N 0 0 0 0 0
19
+ -11.7700 25.3520 53.7050 C 0 0 0 0 0
20
+ -12.5570 24.4620 55.6400 C 0 0 0 0 0
21
+ -12.9850 23.6850 56.7070 C 0 0 0 0 0
22
+ -13.0050 25.7840 55.5680 C 0 0 0 0 0
23
+ -13.7490 26.3750 56.5810 C 0 0 0 0 0
24
+ -14.1450 25.5950 57.6610 C 0 0 0 0 0
25
+ -13.7760 24.2500 57.7130 C 0 0 0 0 0
26
+ -12.3430 26.3420 54.5030 C 0 0 0 0 0
27
+ -14.1740 27.8640 53.8610 N 0 0 0 0 0
28
+ -12.3600 28.8800 54.9120 C 0 0 0 0 0
29
+ -13.6180 29.6030 54.9940 N 0 0 0 0 0
30
+ -16.0210 29.3400 54.4520 C 0 0 0 0 0
31
+ -14.0838 19.0169 54.4444 H 0 0 0 0 0
32
+ -12.1648 27.7040 53.0316 H 0 0 0 0 0
33
+ -14.4736 27.0274 59.2019 H 0 0 0 0 0
34
+ -15.9379 26.5405 58.3133 H 0 0 0 0 0
35
+ -15.2065 25.4321 59.4997 H 0 0 0 0 0
36
+ -12.2019 20.4558 55.1724 H 0 0 0 0 0
37
+ -14.6845 21.5143 51.0083 H 0 0 0 0 0
38
+ -15.3149 19.5397 52.3611 H 0 0 0 0 0
39
+ -11.4030 25.4307 52.6817 H 0 0 0 0 0
40
+ -12.7045 22.6331 56.7614 H 0 0 0 0 0
41
+ -14.0172 27.4303 56.5300 H 0 0 0 0 0
42
+ -14.1081 23.6324 58.5475 H 0 0 0 0 0
43
+ -11.5409 29.4916 54.5336 H 0 0 0 0 0
44
+ -11.9880 28.5603 55.8854 H 0 0 0 0 0
45
+ -13.7372 30.5065 55.4522 H 0 0 0 0 0
46
+ -16.4083 29.4311 53.4372 H 0 0 0 0 0
47
+ -16.5888 28.5825 54.9924 H 0 0 0 0 0
48
+ -16.1116 30.2979 54.9641 H 0 0 0 0 0
49
+ 7 1 1 0 0 0
50
+ 1 9 4 0 0 0
51
+ 1 10 4 0 0 0
52
+ 9 2 4 0 0 0
53
+ 2 13 4 0 0 0
54
+ 22 3 1 0 0 0
55
+ 3 23 1 0 0 0
56
+ 3 24 1 0 0 0
57
+ 23 4 2 0 0 0
58
+ 4 25 1 0 0 0
59
+ 4 26 1 0 0 0
60
+ 20 5 1 0 0 0
61
+ 7 6 2 0 0 0
62
+ 7 8 2 0 0 0
63
+ 14 7 1 0 0 0
64
+ 10 11 1 0 0 0
65
+ 10 12 4 0 0 0
66
+ 12 13 4 0 0 0
67
+ 15 14 4 0 0 0
68
+ 16 14 4 0 0 0
69
+ 22 15 4 0 0 0
70
+ 16 17 4 0 0 0
71
+ 18 16 4 0 0 0
72
+ 17 21 4 0 0 0
73
+ 19 18 4 0 0 0
74
+ 18 22 4 0 0 0
75
+ 19 20 4 0 0 0
76
+ 20 21 4 0 0 0
77
+ 24 25 1 0 0 0
78
+ 2 27 1 0 0 0
79
+ 3 28 1 0 0 0
80
+ 5 29 1 0 0 0
81
+ 5 30 1 0 0 0
82
+ 5 31 1 0 0 0
83
+ 9 32 1 0 0 0
84
+ 12 33 1 0 0 0
85
+ 13 34 1 0 0 0
86
+ 15 35 1 0 0 0
87
+ 17 36 1 0 0 0
88
+ 19 37 1 0 0 0
89
+ 21 38 1 0 0 0
90
+ 24 39 1 0 0 0
91
+ 24 40 1 0 0 0
92
+ 25 41 1 0 0 0
93
+ 26 42 1 0 0 0
94
+ 26 43 1 0 0 0
95
+ 26 44 1 0 0 0
96
+ M END
97
+ $$$$
examples/6ahs_protein_processed.pdb ADDED
The diff for this file is too large to render. See raw diff
 
examples/6o5u_ligand.sdf ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 6o5u_ligand
2
+ -I-interpret-
3
+
4
+ 73 75 0 0 0 0 0 0 0 0999 V2000
5
+ 108.6730 -18.4700 -7.8360 C 0 0 0 0 0
6
+ 107.3110 -18.9740 -7.3680 C 0 0 0 0 0
7
+ 107.4800 -20.3570 -6.7640 C 0 0 0 0 0
8
+ 108.0820 -21.2810 -7.8150 C 0 0 0 0 0
9
+ 109.3440 -20.6380 -8.3930 C 0 0 0 0 0
10
+ 109.7960 -21.4700 -9.5890 C 0 0 0 0 0
11
+ 112.5990 -15.8100 -5.7750 C 0 0 0 0 0
12
+ 112.1040 -15.6660 -7.2080 C 0 0 0 0 0
13
+ 110.7540 -16.3630 -7.2880 C 0 0 0 0 0
14
+ 110.8240 -17.8460 -6.8990 C 0 0 0 0 0
15
+ 111.5110 -18.0160 -5.5370 C 0 0 0 0 0
16
+ 112.8430 -17.2770 -5.4680 C 0 0 0 0 0
17
+ 112.8110 -13.7240 -8.4160 C 0 0 0 0 0
18
+ 112.9750 -12.2640 -8.0080 C 0 0 0 0 0
19
+ 111.6610 -11.5000 -8.1330 C 0 0 0 0 0
20
+ 111.2120 -11.6530 -9.5690 C 0 0 0 0 0
21
+ 111.1210 -13.1180 -9.9350 C 0 0 0 0 0
22
+ 110.8030 -13.1430 -11.4220 C 0 0 0 0 0
23
+ 110.9760 -20.8510 -10.1750 N 0 3 0 0 0
24
+ 111.7470 -19.4450 -5.3220 N 0 3 0 0 0
25
+ 113.8400 -15.0670 -5.6100 N 0 3 0 0 0
26
+ 111.8410 -10.0810 -7.8770 N 0 3 0 0 0
27
+ 109.1180 -19.3280 -8.8520 O 0 0 0 0 0
28
+ 106.8170 -18.1010 -6.3680 O 0 0 0 0 0
29
+ 106.1940 -20.8240 -6.3760 O 0 0 0 0 0
30
+ 108.4250 -22.5370 -7.2480 O 0 0 0 0 0
31
+ 109.5510 -18.4650 -6.7100 O 0 0 0 0 0
32
+ 110.3630 -16.2700 -8.6430 O 0 0 0 0 0
33
+ 111.9040 -14.2970 -7.4880 O 0 0 0 0 0
34
+ 112.3420 -13.8090 -9.7580 O 0 0 0 0 0
35
+ 113.3340 -12.2190 -6.6510 O 0 0 0 0 0
36
+ 109.9130 -11.0980 -9.7100 O 0 0 0 0 0
37
+ 110.7860 -14.4810 -11.8020 O 0 0 0 0 0
38
+ 108.6303 -17.4570 -8.2362 H 0 0 0 0 0
39
+ 106.6193 -19.0120 -8.2095 H 0 0 0 0 0
40
+ 108.1401 -20.3313 -5.8970 H 0 0 0 0 0
41
+ 107.3417 -21.4380 -8.5994 H 0 0 0 0 0
42
+ 110.0905 -20.6009 -7.5997 H 0 0 0 0 0
43
+ 108.9974 -21.5151 -10.3294 H 0 0 0 0 0
44
+ 110.0340 -22.4829 -9.2644 H 0 0 0 0 0
45
+ 111.8471 -15.4154 -5.0916 H 0 0 0 0 0
46
+ 112.8209 -16.0908 -7.9107 H 0 0 0 0 0
47
+ 110.0567 -15.8930 -6.5945 H 0 0 0 0 0
48
+ 111.3562 -18.3049 -7.7322 H 0 0 0 0 0
49
+ 110.8622 -17.5955 -4.7687 H 0 0 0 0 0
50
+ 113.2743 -17.3813 -4.4724 H 0 0 0 0 0
51
+ 113.5390 -17.6975 -6.1939 H 0 0 0 0 0
52
+ 113.7563 -14.2662 -8.3935 H 0 0 0 0 0
53
+ 113.7270 -11.8166 -8.6580 H 0 0 0 0 0
54
+ 110.9429 -11.8905 -7.4119 H 0 0 0 0 0
55
+ 111.9311 -11.1480 -10.2139 H 0 0 0 0 0
56
+ 110.3778 -13.5999 -9.2998 H 0 0 0 0 0
57
+ 111.5492 -12.5865 -11.9892 H 0 0 0 0 0
58
+ 109.8423 -12.6689 -11.6228 H 0 0 0 0 0
59
+ 111.2850 -21.4016 -10.9761 H 0 0 0 0 0
60
+ 110.7465 -19.9049 -10.4794 H 0 0 0 0 0
61
+ 111.7205 -20.8142 -9.4787 H 0 0 0 0 0
62
+ 112.2040 -19.5810 -4.4203 H 0 0 0 0 0
63
+ 110.8556 -19.9407 -5.3310 H 0 0 0 0 0
64
+ 112.3452 -19.8052 -6.0655 H 0 0 0 0 0
65
+ 114.1687 -15.1655 -4.6495 H 0 0 0 0 0
66
+ 114.5431 -15.4352 -6.2507 H 0 0 0 0 0
67
+ 113.6746 -14.0815 -5.8147 H 0 0 0 0 0
68
+ 110.9443 -9.6037 -7.9692 H 0 0 0 0 0
69
+ 112.2015 -9.9503 -6.9318 H 0 0 0 0 0
70
+ 112.5031 -9.6965 -8.5509 H 0 0 0 0 0
71
+ 106.7059 -17.2223 -6.7383 H 0 0 0 0 0
72
+ 105.8266 -20.2335 -5.7143 H 0 0 0 0 0
73
+ 107.6379 -22.9476 -6.8827 H 0 0 0 0 0
74
+ 109.5104 -16.6957 -8.7588 H 0 0 0 0 0
75
+ 113.4409 -11.3044 -6.3796 H 0 0 0 0 0
76
+ 109.6229 -11.1925 -10.6202 H 0 0 0 0 0
77
+ 110.5878 -14.5438 -12.7392 H 0 0 0 0 0
78
+ 1 2 1 0 0 0
79
+ 1 23 1 0 0 0
80
+ 27 1 1 0 0 0
81
+ 2 3 1 0 0 0
82
+ 2 24 1 0 0 0
83
+ 3 4 1 0 0 0
84
+ 3 25 1 0 0 0
85
+ 5 4 1 0 0 0
86
+ 4 26 1 0 0 0
87
+ 5 6 1 0 0 0
88
+ 23 5 1 0 0 0
89
+ 6 19 1 0 0 0
90
+ 8 7 1 0 0 0
91
+ 7 12 1 0 0 0
92
+ 7 21 1 0 0 0
93
+ 8 9 1 0 0 0
94
+ 29 8 1 0 0 0
95
+ 9 10 1 0 0 0
96
+ 9 28 1 0 0 0
97
+ 10 11 1 0 0 0
98
+ 10 27 1 0 0 0
99
+ 12 11 1 0 0 0
100
+ 11 20 1 0 0 0
101
+ 13 14 1 0 0 0
102
+ 13 29 1 0 0 0
103
+ 13 30 1 0 0 0
104
+ 14 15 1 0 0 0
105
+ 14 31 1 0 0 0
106
+ 15 16 1 0 0 0
107
+ 15 22 1 0 0 0
108
+ 16 17 1 0 0 0
109
+ 16 32 1 0 0 0
110
+ 17 18 1 0 0 0
111
+ 17 30 1 0 0 0
112
+ 18 33 1 0 0 0
113
+ 1 34 1 0 0 0
114
+ 2 35 1 0 0 0
115
+ 3 36 1 0 0 0
116
+ 4 37 1 0 0 0
117
+ 5 38 1 0 0 0
118
+ 6 39 1 0 0 0
119
+ 6 40 1 0 0 0
120
+ 7 41 1 0 0 0
121
+ 8 42 1 0 0 0
122
+ 9 43 1 0 0 0
123
+ 10 44 1 0 0 0
124
+ 11 45 1 0 0 0
125
+ 12 46 1 0 0 0
126
+ 12 47 1 0 0 0
127
+ 13 48 1 0 0 0
128
+ 14 49 1 0 0 0
129
+ 15 50 1 0 0 0
130
+ 16 51 1 0 0 0
131
+ 17 52 1 0 0 0
132
+ 18 53 1 0 0 0
133
+ 18 54 1 0 0 0
134
+ 19 55 1 0 0 0
135
+ 19 56 1 0 0 0
136
+ 19 57 1 0 0 0
137
+ 20 58 1 0 0 0
138
+ 20 59 1 0 0 0
139
+ 20 60 1 0 0 0
140
+ 21 61 1 0 0 0
141
+ 21 62 1 0 0 0
142
+ 21 63 1 0 0 0
143
+ 22 64 1 0 0 0
144
+ 22 65 1 0 0 0
145
+ 22 66 1 0 0 0
146
+ 24 67 1 0 0 0
147
+ 25 68 1 0 0 0
148
+ 26 69 1 0 0 0
149
+ 28 70 1 0 0 0
150
+ 31 71 1 0 0 0
151
+ 32 72 1 0 0 0
152
+ 33 73 1 0 0 0
153
+ M END
154
+ $$$$
examples/6o5u_protein_processed.pdb ADDED
The diff for this file is too large to render. See raw diff
 
examples/6w70.pdb ADDED
The diff for this file is too large to render. See raw diff
 
examples/6w70_ligand.sdf ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GG2
2
+ ModelServer 0.9.9
3
+
4
+ 59 63 0 0 0 0 0 0 0 0 0
5
+ 8.5320 2.5640 9.2510 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 9.4650 2.7080 10.2660 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 9.8540 3.9770 10.6370 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 8.0890 1.3510 8.8580 O 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 9.5960 6.6430 11.6760 N 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 9.8460 9.2980 6.4400 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 10.0780 7.7570 8.2120 C 0 0 0 0 0 0 0 0 0 0 0 0
12
+ 9.7660 7.9380 11.8540 C 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 9.7240 8.5870 13.2020 C 0 0 0 0 0 0 0 0 0 0 0 0
14
+ 10.0020 8.5590 10.5660 C 0 0 0 0 0 0 0 0 0 0 0 0
15
+ 9.8890 7.4660 9.6420 C 0 0 0 0 0 0 0 0 0 0 0 0
16
+ 10.7960 9.3120 4.2300 C 0 0 0 0 0 0 0 0 0 0 0 0
17
+ 8.7040 0.2040 9.4320 C 0 0 0 0 0 0 0 0 0 0 0 0
18
+ 9.6840 9.8710 3.7090 C 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 8.7430 9.5470 1.6160 C 0 0 0 0 0 0 0 0 0 0 0 0
20
+ 10.5460 11.1730 1.8740 C 0 0 0 0 0 0 0 0 0 0 0 0
21
+ 10.3530 11.5920 0.4200 C 0 0 0 0 0 0 0 0 0 0 0 0
22
+ 8.7550 9.8660 5.9000 C 0 0 0 0 0 0 0 0 0 0 0 0
23
+ 9.4480 10.0660 8.7730 C 0 0 0 0 0 0 0 0 0 0 0 0
24
+ 9.4050 5.1120 9.9700 C 0 0 0 0 0 0 0 0 0 0 0 0
25
+ 8.4880 4.8930 8.9450 C 0 0 0 0 0 0 0 0 0 0 0 0
26
+ 8.0710 3.6360 8.5650 C 0 0 0 0 0 0 0 0 0 0 0 0
27
+ 9.7130 6.3620 10.3560 N 0 0 0 0 0 0 0 0 0 0 0 0
28
+ 9.8530 9.0000 7.8320 N 0 0 0 0 0 0 0 0 0 0 0 0
29
+ 10.8940 9.0320 5.6080 C 0 0 0 0 0 0 0 0 0 0 0 0
30
+ 9.6180 10.1750 2.3580 N 0 0 0 0 0 0 0 0 0 0 0 0
31
+ 8.6640 10.1500 4.5380 C 0 0 0 0 0 0 0 0 0 0 0 0
32
+ 10.3590 6.8700 7.5200 O 0 0 0 0 0 0 0 0 0 0 0 0
33
+ 10.1420 10.3580 -0.4200 C 0 0 0 0 0 0 0 0 0 0 0 0
34
+ 7.9090 8.8200 2.0390 O 0 0 0 0 0 0 0 0 0 0 0 0
35
+ 8.8940 9.7380 0.1160 C 0 0 0 0 0 0 0 0 0 0 0 0
36
+ 10.1430 9.7080 13.3960 O 0 0 0 0 0 0 0 0 0 0 0 0
37
+ 9.3030 7.8290 14.1650 N 0 0 0 0 0 0 0 0 0 0 0 0
38
+ 10.2120 9.9570 10.1020 C 0 0 0 0 0 0 0 0 0 0 0 0
39
+ 9.8220 1.9610 10.6890 H 0 0 0 0 0 0 0 0 0 0 0 0
40
+ 10.4350 4.0780 11.3560 H 0 0 0 0 0 0 0 0 0 0 0 0
41
+ 11.5100 9.1080 3.6700 H 0 0 0 0 0 0 0 0 0 0 0 0
42
+ 9.6620 0.2420 9.2830 H 0 0 0 0 0 0 0 0 0 0 0 0
43
+ 8.3440 -0.5970 9.0190 H 0 0 0 0 0 0 0 0 0 0 0 0
44
+ 8.5260 0.1840 10.3850 H 0 0 0 0 0 0 0 0 0 0 0 0
45
+ 11.4450 10.8220 1.9700 H 0 0 0 0 0 0 0 0 0 0 0 0
46
+ 10.4580 11.9630 2.4300 H 0 0 0 0 0 0 0 0 0 0 0 0
47
+ 9.5760 12.1690 0.3490 H 0 0 0 0 0 0 0 0 0 0 0 0
48
+ 11.1420 12.0630 0.1110 H 0 0 0 0 0 0 0 0 0 0 0 0
49
+ 8.0370 10.0770 6.4520 H 0 0 0 0 0 0 0 0 0 0 0 0
50
+ 9.6710 10.9200 8.3700 H 0 0 0 0 0 0 0 0 0 0 0 0
51
+ 8.5030 9.9540 8.9620 H 0 0 0 0 0 0 0 0 0 0 0 0
52
+ 8.1410 5.6300 8.4960 H 0 0 0 0 0 0 0 0 0 0 0 0
53
+ 7.4850 3.5260 7.8520 H 0 0 0 0 0 0 0 0 0 0 0 0
54
+ 11.6760 8.6640 5.9510 H 0 0 0 0 0 0 0 0 0 0 0 0
55
+ 7.8890 10.5370 4.2000 H 0 0 0 0 0 0 0 0 0 0 0 0
56
+ 10.8920 9.7500 -0.3240 H 0 0 0 0 0 0 0 0 0 0 0 0
57
+ 10.0280 10.5980 -1.3530 H 0 0 0 0 0 0 0 0 0 0 0 0
58
+ 8.8120 8.8620 -0.2930 H 0 0 0 0 0 0 0 0 0 0 0 0
59
+ 8.1520 10.2900 -0.1770 H 0 0 0 0 0 0 0 0 0 0 0 0
60
+ 9.2620 8.1830 15.1100 H 0 0 0 0 0 0 0 0 0 0 0 0
61
+ 8.9950 6.8970 13.9610 H 0 0 0 0 0 0 0 0 0 0 0 0
62
+ 11.1570 10.1290 9.9640 H 0 0 0 0 0 0 0 0 0 0 0 0
63
+ 9.8550 10.5850 10.7490 H 0 0 0 0 0 0 0 0 0 0 0 0
64
+ 1 2 1 0 0 0 0
65
+ 1 4 1 0 0 0 0
66
+ 1 22 2 0 0 0 0
67
+ 2 3 2 0 0 0 0
68
+ 2 35 1 0 0 0 0
69
+ 3 20 1 0 0 0 0
70
+ 3 36 1 0 0 0 0
71
+ 4 13 1 0 0 0 0
72
+ 5 23 1 0 0 0 0
73
+ 5 8 2 0 0 0 0
74
+ 6 25 2 0 0 0 0
75
+ 6 18 1 0 0 0 0
76
+ 6 24 1 0 0 0 0
77
+ 7 24 1 0 0 0 0
78
+ 7 28 2 0 0 0 0
79
+ 7 11 1 0 0 0 0
80
+ 8 10 1 0 0 0 0
81
+ 8 9 1 0 0 0 0
82
+ 9 32 2 0 0 0 0
83
+ 9 33 1 0 0 0 0
84
+ 10 34 1 0 0 0 0
85
+ 10 11 2 0 0 0 0
86
+ 11 23 1 0 0 0 0
87
+ 12 14 2 0 0 0 0
88
+ 12 25 1 0 0 0 0
89
+ 12 37 1 0 0 0 0
90
+ 13 38 1 0 0 0 0
91
+ 13 39 1 0 0 0 0
92
+ 13 40 1 0 0 0 0
93
+ 14 26 1 0 0 0 0
94
+ 14 27 1 0 0 0 0
95
+ 15 31 1 0 0 0 0
96
+ 15 30 2 0 0 0 0
97
+ 15 26 1 0 0 0 0
98
+ 16 17 1 0 0 0 0
99
+ 16 26 1 0 0 0 0
100
+ 16 41 1 0 0 0 0
101
+ 16 42 1 0 0 0 0
102
+ 17 29 1 0 0 0 0
103
+ 17 43 1 0 0 0 0
104
+ 17 44 1 0 0 0 0
105
+ 18 27 2 0 0 0 0
106
+ 18 45 1 0 0 0 0
107
+ 19 24 1 0 0 0 0
108
+ 19 34 1 0 0 0 0
109
+ 19 46 1 0 0 0 0
110
+ 19 47 1 0 0 0 0
111
+ 20 23 1 0 0 0 0
112
+ 20 21 2 0 0 0 0
113
+ 21 22 1 0 0 0 0
114
+ 21 48 1 0 0 0 0
115
+ 22 49 1 0 0 0 0
116
+ 25 50 1 0 0 0 0
117
+ 27 51 1 0 0 0 0
118
+ 29 31 1 0 0 0 0
119
+ 29 52 1 0 0 0 0
120
+ 29 53 1 0 0 0 0
121
+ 31 54 1 0 0 0 0
122
+ 31 55 1 0 0 0 0
123
+ 33 56 1 0 0 0 0
124
+ 33 57 1 0 0 0 0
125
+ 34 58 1 0 0 0 0
126
+ 34 59 1 0 0 0 0
127
+ M END
128
+ > <model_server_result.job_id>
129
+ jhYbiAhZngEaKGexZ2WIZQ
130
+
131
+ > <model_server_result.datetime_utc>
132
+ 2022-10-10 01:28:25
133
+
134
+ > <model_server_result.server_version>
135
+ 0.9.9
136
+
137
+ > <model_server_result.query_name>
138
+ ligand
139
+
140
+ > <model_server_result.source_id>
141
+ pdb-bcif
142
+
143
+ > <model_server_result.entry_id>
144
+ 6w70
145
+
146
+ > <model_server_params.name>
147
+ atom_site
148
+
149
+ > <model_server_params.value>
150
+ {"label_asym_id":"E","auth_seq_id":303}
151
+
152
+ > <model_server_stats.io_time_ms>
153
+ 49
154
+
155
+ > <model_server_stats.parse_time_ms>
156
+ 60
157
+
158
+ > <model_server_stats.create_model_time_ms>
159
+ 10
160
+
161
+ > <model_server_stats.query_time_ms>
162
+ 220
163
+
164
+ > <model_server_stats.encode_time_ms>
165
+ 0
166
+
167
+ > <model_server_stats.element_count>
168
+ 59
169
+
170
+ $$$$