libokj commited on
Commit
96e442f
·
1 Parent(s): d4dcbe7

Minor bug fixes

Browse files
Files changed (26) hide show
  1. app/fn.py +2 -10
  2. app/main.py +204 -191
  3. app/static.py +13 -0
  4. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/1xkk.pdb +0 -0
  5. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_0_0-confidence-1.02.sdf +18 -0
  6. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_1_0-confidence0.01.sdf +27 -0
  7. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_2_0-confidence-2.64.sdf +18 -0
  8. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_3_0-confidence-1.00.sdf +13 -0
  9. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_4_0-confidence-0.21.sdf +20 -0
  10. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_5_0-confidence-0.87.sdf +18 -0
  11. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_6_0-confidence-0.98.sdf +18 -0
  12. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_7_0-confidence0.25.sdf +25 -0
  13. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_8_0-confidence-2.04.sdf +15 -0
  14. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_9_0-confidence-1.02.sdf +22 -0
  15. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking_summary.csv +11 -0
  16. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_1_0_0.sdf +43 -0
  17. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_4_0_0.sdf +44 -0
  18. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_7_0_0.sdf +38 -0
  19. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_9_0_0.sdf +66 -0
  20. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_1_0_0.sdf +46 -0
  21. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_3_0_0.sdf +62 -0
  22. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_4_0_0.sdf +49 -0
  23. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_7_0_0.sdf +44 -0
  24. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_9_0_0.sdf +49 -0
  25. results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking_summary.csv +7 -0
  26. results/job_db.json +15 -0
app/fn.py CHANGED
@@ -23,6 +23,7 @@ from rdkit.Chem import Crippen, Descriptors, rdMolDescriptors, Lipinski, rdmolop
23
  import requests
24
 
25
  from app import static
 
26
 
27
  sys.path.append(str(Path(RDConfig.RDContribDir) / 'SA_Score'))
28
  import sascorer
@@ -393,18 +394,9 @@ def read_molecule_file(in_file, allowed_extentions):
393
 
394
  def create_result_table_html(summary_df, result_info, opts=(), progress=gr.Progress(track_tqdm=True)):
395
  html_df = summary_df.copy().drop(columns=['mol'])
396
- column_aliases = {
397
- 'out_path': 'Pose',
398
- 'ligand_conf_path': 'Pose',
399
- 'ID1': 'Compound ID',
400
- 'ID2': 'Target ID',
401
- 'X1': 'Fragment SMILES',
402
- 'X1^': 'Compound SMILES',
403
- 'name': 'Complex Name',
404
- }
405
  output_dir = Path(result_info['output_dir'])
406
  job_type = result_info['type']
407
- html_df.rename(columns=column_aliases, inplace=True)
408
  html_df['Pose'] = html_df['Pose'].apply(lambda x: str(output_dir / job_type / x))
409
  # drop remaining columns ending with '_path'
410
  hidden_cols = [col for col in html_df.columns if col.endswith('_path')]
 
23
  import requests
24
 
25
  from app import static
26
+ from app.main import COL_ALIASES
27
 
28
  sys.path.append(str(Path(RDConfig.RDContribDir) / 'SA_Score'))
29
  import sascorer
 
394
 
395
  def create_result_table_html(summary_df, result_info, opts=(), progress=gr.Progress(track_tqdm=True)):
396
  html_df = summary_df.copy().drop(columns=['mol'])
 
 
 
 
 
 
 
 
 
397
  output_dir = Path(result_info['output_dir'])
398
  job_type = result_info['type']
399
+ html_df.rename(columns=COL_ALIASES, inplace=True)
400
  html_df['Pose'] = html_df['Pose'].apply(lambda x: str(output_dir / job_type / x))
401
  # drop remaining columns ending with '_path'
402
  hidden_cols = [col for col in html_df.columns if col.endswith('_path')]
app/main.py CHANGED
@@ -54,6 +54,15 @@ POCKET_EXTRACT_OPTS = {
54
  }
55
  }
56
 
 
 
 
 
 
 
 
 
 
57
 
58
  def gr_error_wrapper(func):
59
  def wrapper(*args, **kwargs):
@@ -73,7 +82,6 @@ def query_job_status(job_id):
73
  job = job_db.job_lookup(job_id)
74
  if job:
75
  if job['status'] == "RUNNING":
76
- sleep(5)
77
  yield {
78
  pred_lookup_status: f'''
79
  Your job (ID: **{job['id']}**) started at **{job['start_time']}** and is **RUNNING...**
@@ -82,21 +90,17 @@ It might take a few minutes up to a few hours depending on the input size and th
82
  You may keep the page open and wait for job completion, or close the page and revisit later to look up the job status
83
  using the job id. You will also receive an email notification once the job is done.
84
  ''',
85
- pred_lookup_btn: gr.Button(visible=False),
86
- pred_lookup_stop_btn: gr.Button(visible=True)
87
  }
88
  if job['status'] == "COMPLETED":
89
  stop = True
90
- msg = f"Your GenFBDD job (ID: {job['id']}) has been COMPLETED"
91
- msg += f" at {job['end_time']}" if job.get('end_time') else ""
92
- msg += f" and the results will expire by {job['expiry_time']}." if job.get('expiry_time') else "."
93
  msg += f' Redirecting to the Results page...'
94
 
95
  gr.Info(msg)
96
  yield {
97
  pred_lookup_status: msg,
98
- pred_lookup_btn: gr.Button(visible=True),
99
- pred_lookup_stop_btn: gr.Button(visible=False),
100
  tabs: gr.Tabs(selected='result'),
101
  result_state: job
102
  }
@@ -110,7 +114,6 @@ using the job id. You will also receive an email notification once the job is do
110
  pred_lookup_status: msg,
111
  pred_lookup_btn: gr.Button(visible=True),
112
  pred_lookup_stop_btn: gr.Button(visible=False),
113
- tabs: gr.Tabs(selected='job'),
114
  }
115
  else:
116
  stop = (retry > 2)
@@ -120,13 +123,12 @@ using the job id. You will also receive an email notification once the job is do
120
  msg = f'Job ID {job_id} not found after {retry} retries. Please double-check the job ID.'
121
  gr.Info(msg)
122
  retry += 1
123
- sleep(5)
124
  yield {
125
  pred_lookup_status: msg,
126
- pred_lookup_btn: gr.Button(visible=True),
127
- pred_lookup_stop_btn: gr.Button(visible=False),
128
- tabs: gr.Tabs(selected='job'),
129
  }
 
130
 
131
  except Exception as e:
132
  raise gr.Error(f'Failed to retrieve job status due to error: {str(e)}')
@@ -211,8 +213,8 @@ def dock_link(
211
  config = OmegaConf.load('configs/gen_fbdd_v1.yaml')
212
  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
213
  print(f'Using device: {device}')
214
- date_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S.%f")
215
- out_dir = f'results/{date_time}'
216
  frag_lib['X2'] = prot
217
  frag_lib['ID2'] = Path(prot).stem
218
 
@@ -333,189 +335,184 @@ with gr.Blocks(theme=THEME, title='GenFBDD', css=static.CSS, delete_cache=(3600,
333
  run_state = gr.State(value={})
334
  session_state = gr.State(value={})
335
 
336
- # script_init_frame = gr.HTML(static.PROTEIN_VIEW_IFRAME)
337
  with gr.Tabs() as tabs:
338
  with gr.Tab(label='Start', id='start'):
339
- gr.Markdown('''
340
- # GenFBDD - A Fragment-Based Drug Design Protocol Based on SOTA Molecular Generative Models
341
-
342
- Given a fragment library and a target protein, GenFBDD blindly docks the fragments to the
343
- protein and generates linkers connecting the selected fragments, generating novel scaffolds
344
- or drug-like molecules with desirable binding conformations.
345
- ''')
346
- with gr.Row():
347
- with gr.Column(variant='panel'):
348
- gr.Markdown('## Chemical Fragment Library')
349
- # Fragment settings
350
- frag_lib_dropdown = gr.Dropdown(
351
- label='Select a Preset Fragment Library',
352
- choices=list(FRAG_LIBS.keys()),
353
- value='',
354
- )
355
- # with gr.Row():
356
- # gr.File(label='Example SDF fragment library',
357
- # value='data/examples/fragment_library.sdf', interactive=False)
358
- # gr.File(label='Example CSV fragment library',
359
- # value='data/examples/fragment_library.csv', interactive=False)
360
- frag_lib_upload_btn = gr.UploadButton(
361
- label='OR Upload Your Own Library', variant='primary', interactive=True,
362
- )
363
-
364
- frag_lib_file = gr.File(
365
- value=None, label='Fragment Library File (Original)',
366
- file_count='single', file_types=['.sdf', '.csv'],
367
- interactive=False, visible=False
368
- )
369
- frag_lib_orig_df = gr.State(value=pd.DataFrame(columns=['X1', 'ID1', 'mol']))
370
- frag_lib_mod_df = gr.State(value=pd.DataFrame(columns=['X1', 'ID1', 'mol']))
371
- # TODO: Tabulator with gr.HTML() for fragment library preview
372
- frag_lib_view = gr.DataFrame(
373
- value=pd.DataFrame(columns=['X1', 'ID1']), elem_id='frag_lib_view',
374
- visible=True, interactive=False,
375
- )
376
-
377
- with gr.Group():
378
- frag_lib_process_opts = gr.CheckboxGroup(
379
- label='Fragment Preparation Options',
380
- info='1) All fragments consisting of multiple fragments will be split into individual '
381
- 'fragments. 2) All fragments consisting of a single heavy atom will be discarded. '
382
- '3) All fragments will then be processed in the order of the selected options. '
383
- '4) Finally, fragments will be deduplicated based on their SMILES.',
384
- choices=list(FRAG_LIB_PROCESS_OPTS.keys()),
385
- value=['Dehalogenate Fragments', 'Discard Inorganic Fragments'],
386
- interactive=True,
387
- )
388
- frag_lib_process_btn = gr.Button(
389
- value='Process Fragments', variant='primary', interactive=True,
390
- )
391
- # Fragment library preview
392
-
393
- with gr.Column(variant='panel'):
394
- gr.Markdown('## Target Protein Structure')
395
- # Protein settings
396
- with gr.Row(equal_height=True):
397
- prot_query_dropdown = gr.Dropdown(
398
- label='Select a Protein Structure Query Strategy',
399
- choices=[
400
- 'PDB ID',
401
- 'UniProt ID',
402
- 'FASTA Sequence',
403
- ],
404
- interactive=True,
405
- scale=4
406
  )
407
- prot_query_input = gr.Textbox(
408
- show_label=False, placeholder='Enter the protein query here',
409
- scale=3, interactive=True
410
  )
411
 
412
- with gr.Row():
413
- prot_query_btn = gr.Button(
414
- value='Query', variant='primary',
415
- scale=1, interactive=True
416
  )
417
- prot_upload_btn = gr.UploadButton(
418
- label='OR Upload Your PDB/FASTA File', variant='primary',
419
- file_types=['.pdb', '.fasta'],
420
- scale=2, interactive=True,
 
 
421
  )
422
 
423
- input_prot_file = gr.File(
424
- value=None, label='Protein Structure File (Original)',
425
- interactive=False, visible=False, file_count='single',
426
- )
427
- input_prot_view = gr.HTML(value='<div id="input_protein_view" class="mol-container"></div>')
428
-
429
- with gr.Group():
430
- pocket_extract_dropdown = gr.Dropdown(
431
- label='Select a Pocket Extraction Method',
432
- choices=list(POCKET_EXTRACT_OPTS.keys()),
433
- info=POCKET_EXTRACT_OPTS[list(POCKET_EXTRACT_OPTS.keys())[0]]['info'],
434
- value=list(POCKET_EXTRACT_OPTS.keys())[0],
435
- interactive=True,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
436
  )
437
- selected_pocket = gr.Textbox(visible=False)
438
- selected_ligand = gr.Textbox(visible=False)
439
- pocket_files = gr.Files(visible=False)
440
- pocket_extract_btn = gr.Button(
441
- value='Extract Pocket', variant='primary', interactive=True
442
- )
443
- # Target protein preview
444
- with gr.Row():
445
- with gr.Column(variant='panel'):
446
- gr.Markdown('## Dock Phase Settings')
447
- dock_n_poses = gr.Slider(
448
- value=5, minimum=1, maximum=20, step=1,
449
- label="Number of conformers to generate per fragment",
450
- interactive=True
451
- )
452
- dock_confidence_cutoff = gr.Slider(
453
- value=-1.0, minimum=-2.0, maximum=0, step=0.1,
454
- label="Confidence cutoff for filtering conformers of docked fragments (>0: high, <=-1.5: low)",
455
- interactive=True
456
- )
457
- with gr.Accordion(label='Advanced Options', open=False):
458
- dock_model = gr.Dropdown(
459
- label='Select a Fragment Docking Model',
460
- choices=['DiffDock-L'],
461
- interactive=True,
462
  )
463
- dock_steps = gr.Slider(
464
- minimum=20, maximum=40, step=1,
465
- label="Number of Denoising Steps for Docking Fragments",
466
  interactive=True
467
  )
468
- with gr.Column(variant='panel'):
469
- gr.Markdown('## Link Phase Settings')
470
- link_frag_pose_strategy = gr.Radio(
471
- label='Select a Fragment-Conformer Linking Strategy',
472
- choices=[
473
- 'Link Pairs of Fragment-Conformers Contacting the Pocket',
474
- # 'Link Maximal Fragment-Conformers Spanning the Entire Pocket',
475
- ],
476
- value='Link Pairs of Fragment-Conformers Contacting the Pocket',
477
- )
478
- link_frag_dist_range = RangeSlider(
479
- value=[2, 8], minimum=1, maximum=10, step=1,
480
- label="Fragment-Conformer Distance Range ) Eligible for Linking",
481
- interactive=True
482
- )
483
- link_n_mols = gr.Slider(
484
- value=10, minimum=1, maximum=20, step=1,
485
- label="Number of molecules to generate per fragment conformer combination",
486
- interactive=True
487
- )
488
- with gr.Accordion(label='Advanced Options', open=False):
489
- link_model = gr.Dropdown(
490
- label='Select a Linker Generation Model',
491
- choices=['DiffLinker'],
492
- interactive=True,
493
  )
494
- link_linker_size = gr.Slider(
495
- minimum=0, maximum=20, step=1,
496
- label="Linker Size",
497
- info="0: automatically predicted; >=1: fixed size",
498
  interactive=True
499
  )
500
- link_steps = gr.Slider(
501
- minimum=100, maximum=500, step=10,
502
- label="Number of Denoising Steps for Generating Linkers",
503
  interactive=True
504
  )
505
- with gr.Row(equal_height=True):
506
- email_input =gr.Textbox(
507
- label='Email Address (Optional)',
508
- info="Your email address will be used to notify you of the status of your job. "
509
- "If you cannot receive the email, please check your spam/junk folder.",
510
- type='email'
511
- )
512
- with gr.Column():
513
- start_clr_btn = gr.ClearButton(
514
- value='Reset Inputs', interactive=True,
515
- )
516
- run_btn = gr.Button(
517
- value='Run GenFBDD', variant='primary', interactive=True,
 
 
 
 
 
 
 
 
 
 
518
  )
 
 
 
 
 
 
 
519
  with gr.Tab(label='Results', id='result'):
520
  # Results
521
  result_state = gr.State(value={})
@@ -554,9 +551,10 @@ with gr.Blocks(theme=THEME, title='GenFBDD', css=static.CSS, delete_cache=(3600,
554
  label='Input Your Job ID', placeholder='e.g., e9dfd149-3f5c-48a6-b797-c27d027611ac',
555
  info="Your job ID is a UUID4 string that you receive after submitting a job on the "
556
  "page or in the email notification.")
 
557
  pred_lookup_btn = gr.Button(value='Lookup the Job Status', variant='primary', visible=True)
558
  pred_lookup_stop_btn = gr.Button(value='Stop Tracking', variant='stop', visible=False)
559
- pred_lookup_status = gr.Markdown()
560
 
561
  # Event handlers
562
  ## Start tab
@@ -755,30 +753,32 @@ with gr.Blocks(theme=THEME, title='GenFBDD', css=static.CSS, delete_cache=(3600,
755
  )
756
 
757
  ### Job Status
758
- user_job_lookup = pred_lookup_btn.click(
759
  fn=lambda: '<div class="loader"></ div>',
760
  outputs=loader_html,
761
- ).success(
 
762
  fn=query_job_status,
763
  inputs=[pred_lookup_id],
764
- outputs=[pred_lookup_status, pred_lookup_btn, pred_lookup_stop_btn, tabs, result_state],
765
  show_progress='minimal',
766
  ).success(
767
  lambda: '<div class="loader first-frame"></ div>',
768
  outputs=loader_html,
769
  )
770
 
771
- auto_job_lookup =job_valid.success(
772
  fn=lambda job: [job['id'], gr.Tabs(selected='job')],
773
  inputs=[run_state],
774
  outputs=[pred_lookup_id, tabs],
775
  ).success(
776
  lambda: '<div class="loader"></ div>',
777
  outputs=loader_html,
778
- ).success(
 
779
  fn=query_job_status,
780
  inputs=pred_lookup_id,
781
- outputs=[pred_lookup_status, pred_lookup_btn, pred_lookup_stop_btn, tabs, result_state],
782
  show_progress='minimal',
783
  cancels=[user_job_lookup],
784
  ).success(
@@ -790,12 +790,22 @@ with gr.Blocks(theme=THEME, title='GenFBDD', css=static.CSS, delete_cache=(3600,
790
  fn=lambda: [gr.Button(visible=True), gr.Button(visible=False)],
791
  outputs=[pred_lookup_btn, pred_lookup_stop_btn],
792
  cancels=[user_job_lookup, auto_job_lookup],
793
- concurrency_limit=None,
794
  ).success(
795
  lambda: '<div class="loader first-frame"></ div>',
796
  outputs=loader_html,
797
  )
798
 
 
 
 
 
 
 
 
 
 
 
 
799
  ### Results
800
  def update_results(result_info):
801
  result_dir = Path(result_info['output_dir'])
@@ -882,17 +892,20 @@ with gr.Blocks(theme=THEME, title='GenFBDD', css=static.CSS, delete_cache=(3600,
882
 
883
  def generate_result_zip(result_info, compound_mod_df, protein_file):
884
  result_path = Path(result_info['output_dir'])
885
- zip_path = result_path.with_suffix('.zip')
 
886
  cols_to_drop = ['mol', 'Compound', 'protein_path']
887
  compound_mod_df.drop(columns=[col for col in cols_to_drop if col in compound_mod_df.columns], inplace=True)
 
888
  compound_mod_df.to_csv(result_path / f'{result_info["type"]}_summary.csv', index=False)
889
 
890
  with zipfile.ZipFile(zip_path, 'w') as zip_file:
891
  for file in result_path.rglob('*'):
892
- if file.is_file(): # Skip directories
893
  archive_path = file.relative_to(result_path)
894
  zip_file.write(file, arcname=archive_path)
895
- zip_file.write(Path(protein_file), arcname=Path(protein_file).name)
 
896
 
897
  return gr.File(str(zip_path), visible=True)
898
 
 
54
  }
55
  }
56
 
57
+ COL_ALIASES = {
58
+ 'out_path': 'Pose',
59
+ 'ligand_conf_path': 'Pose',
60
+ 'ID1': 'Compound ID',
61
+ 'ID2': 'Target ID',
62
+ 'X1': 'Fragment SMILES',
63
+ 'X1^': 'Compound SMILES',
64
+ 'name': 'Complex Name',
65
+ }
66
 
67
  def gr_error_wrapper(func):
68
  def wrapper(*args, **kwargs):
 
82
  job = job_db.job_lookup(job_id)
83
  if job:
84
  if job['status'] == "RUNNING":
 
85
  yield {
86
  pred_lookup_status: f'''
87
  Your job (ID: **{job['id']}**) started at **{job['start_time']}** and is **RUNNING...**
 
90
  You may keep the page open and wait for job completion, or close the page and revisit later to look up the job status
91
  using the job id. You will also receive an email notification once the job is done.
92
  ''',
 
 
93
  }
94
  if job['status'] == "COMPLETED":
95
  stop = True
96
+ msg = f"Your GenFBDD job (ID: {job['id']}) has been **COMPLETED**"
97
+ msg += f" at **{job['end_time']}**" if job.get('end_time') else ""
98
+ msg += f" and the results will **EXPIRE** by **{job['expiry_time']}**." if job.get('expiry_time') else "."
99
  msg += f' Redirecting to the Results page...'
100
 
101
  gr.Info(msg)
102
  yield {
103
  pred_lookup_status: msg,
 
 
104
  tabs: gr.Tabs(selected='result'),
105
  result_state: job
106
  }
 
114
  pred_lookup_status: msg,
115
  pred_lookup_btn: gr.Button(visible=True),
116
  pred_lookup_stop_btn: gr.Button(visible=False),
 
117
  }
118
  else:
119
  stop = (retry > 2)
 
123
  msg = f'Job ID {job_id} not found after {retry} retries. Please double-check the job ID.'
124
  gr.Info(msg)
125
  retry += 1
 
126
  yield {
127
  pred_lookup_status: msg,
128
+ pred_lookup_btn: gr.Button(visible=stop),
129
+ pred_lookup_stop_btn: gr.Button(visible=stop),
 
130
  }
131
+ sleep(5)
132
 
133
  except Exception as e:
134
  raise gr.Error(f'Failed to retrieve job status due to error: {str(e)}')
 
213
  config = OmegaConf.load('configs/gen_fbdd_v1.yaml')
214
  device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
215
  print(f'Using device: {device}')
216
+ date_time = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
217
+ out_dir = f'results/{date_time}_{job_id}'
218
  frag_lib['X2'] = prot
219
  frag_lib['ID2'] = Path(prot).stem
220
 
 
335
  run_state = gr.State(value={})
336
  session_state = gr.State(value={})
337
 
 
338
  with gr.Tabs() as tabs:
339
  with gr.Tab(label='Start', id='start'):
340
+ with gr.Column(variant='panel'):
341
+ gr.Markdown('''
342
+ # GenFBDD - A Fragment-Based Drug Design Protocol Based on SOTA Molecular Generative Models
343
+
344
+ Given a fragment library and a target protein, GenFBDD blindly docks the fragments to the
345
+ protein and generates linkers connecting the selected fragments, generating novel scaffolds
346
+ or drug-like molecules with desirable binding conformations.
347
+ ''')
348
+ with gr.Row():
349
+ with gr.Column(variant='panel'):
350
+ gr.Markdown('## Chemical Fragment Library')
351
+ # Fragment settings
352
+ frag_lib_dropdown = gr.Dropdown(
353
+ label='Select a Preset Fragment Library',
354
+ choices=list(FRAG_LIBS.keys()),
355
+ value='',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
356
  )
357
+ frag_lib_upload_btn = gr.UploadButton(
358
+ label='OR Upload Your Own Library', variant='primary', interactive=True,
 
359
  )
360
 
361
+ frag_lib_file = gr.File(
362
+ value=None, label='Fragment Library File (Original)',
363
+ file_count='single', file_types=['.sdf', '.csv'],
364
+ interactive=False, visible=False
365
  )
366
+ frag_lib_orig_df = gr.State(value=pd.DataFrame(columns=['X1', 'ID1', 'mol']))
367
+ frag_lib_mod_df = gr.State(value=pd.DataFrame(columns=['X1', 'ID1', 'mol']))
368
+ # TODO: Tabulator with gr.HTML() for fragment library preview
369
+ frag_lib_view = gr.DataFrame(
370
+ value=pd.DataFrame(columns=['X1', 'ID1']), elem_id='frag_lib_view',
371
+ visible=True, interactive=False,
372
  )
373
 
374
+ with gr.Group():
375
+ frag_lib_process_opts = gr.CheckboxGroup(
376
+ label='Fragment Preparation Options',
377
+ info='1) All fragments consisting of multiple fragments will be split into individual '
378
+ 'fragments. 2) All fragments consisting of a single heavy atom will be discarded. '
379
+ '3) All fragments will then be processed in the order of the selected options. '
380
+ '4) Finally, fragments will be deduplicated based on their SMILES.',
381
+ choices=list(FRAG_LIB_PROCESS_OPTS.keys()),
382
+ value=['Dehalogenate Fragments', 'Discard Inorganic Fragments'],
383
+ interactive=True,
384
+ )
385
+ frag_lib_process_btn = gr.Button(
386
+ value='Process Fragments', variant='primary', interactive=True,
387
+ )
388
+ # Fragment library preview
389
+
390
+ with gr.Column(variant='panel'):
391
+ gr.Markdown('## Target Protein Structure')
392
+ # Protein settings
393
+ with gr.Row(equal_height=True):
394
+ prot_query_dropdown = gr.Dropdown(
395
+ label='Select a Protein Structure Query Strategy',
396
+ choices=[
397
+ 'PDB ID',
398
+ 'UniProt ID',
399
+ 'FASTA Sequence',
400
+ ],
401
+ interactive=True,
402
+ scale=4
403
+ )
404
+ prot_query_input = gr.Textbox(
405
+ show_label=False, placeholder='Enter the protein query here',
406
+ scale=3, interactive=True
407
+ )
408
+
409
+ with gr.Row():
410
+ prot_query_btn = gr.Button(
411
+ value='Query', variant='primary',
412
+ scale=1, interactive=True
413
+ )
414
+ prot_upload_btn = gr.UploadButton(
415
+ label='OR Upload Your PDB/FASTA File', variant='primary',
416
+ file_types=['.pdb', '.fasta'],
417
+ scale=2, interactive=True,
418
+ )
419
+
420
+ input_prot_file = gr.File(
421
+ value=None, label='Protein Structure File (Original)',
422
+ interactive=False, visible=False, file_count='single',
423
  )
424
+ input_prot_view = gr.HTML(value='<div id="input_protein_view" class="mol-container"></div>')
425
+
426
+ with gr.Group():
427
+ pocket_extract_dropdown = gr.Dropdown(
428
+ label='Select a Pocket Extraction Method',
429
+ choices=list(POCKET_EXTRACT_OPTS.keys()),
430
+ info=POCKET_EXTRACT_OPTS[list(POCKET_EXTRACT_OPTS.keys())[0]]['info'],
431
+ value=list(POCKET_EXTRACT_OPTS.keys())[0],
432
+ interactive=True,
433
+ )
434
+ selected_pocket = gr.Textbox(visible=False)
435
+ selected_ligand = gr.Textbox(visible=False)
436
+ pocket_files = gr.Files(visible=False)
437
+ pocket_extract_btn = gr.Button(
438
+ value='Extract Pocket', variant='primary', interactive=True
439
+ )
440
+ # Target protein preview
441
+ with gr.Row():
442
+ with gr.Column(variant='panel'):
443
+ gr.Markdown('## Dock Phase Settings')
444
+ dock_n_poses = gr.Slider(
445
+ value=5, minimum=1, maximum=20, step=1,
446
+ label="Number of conformers to generate per fragment",
447
+ interactive=True
 
448
  )
449
+ dock_confidence_cutoff = gr.Slider(
450
+ value=-1.0, minimum=-2.0, maximum=0, step=0.1,
451
+ label="Confidence cutoff for filtering conformers of docked fragments (>0: high, <=-1.5: low)",
452
  interactive=True
453
  )
454
+ with gr.Accordion(label='Advanced Options', open=False):
455
+ dock_model = gr.Dropdown(
456
+ label='Select a Fragment Docking Model',
457
+ choices=['DiffDock-L'],
458
+ interactive=True,
459
+ )
460
+ dock_steps = gr.Slider(
461
+ minimum=20, maximum=40, step=1,
462
+ label="Number of Denoising Steps for Docking Fragments",
463
+ interactive=True
464
+ )
465
+ with gr.Column(variant='panel'):
466
+ gr.Markdown('## Link Phase Settings')
467
+ link_frag_pose_strategy = gr.Radio(
468
+ label='Select a Fragment-Conformer Linking Strategy',
469
+ choices=[
470
+ 'Link Pairs of Fragment-Conformers Contacting the Pocket',
471
+ # 'Link Maximal Fragment-Conformers Spanning the Entire Pocket',
472
+ ],
473
+ value='Link Pairs of Fragment-Conformers Contacting the Pocket',
 
 
 
 
 
474
  )
475
+ link_frag_dist_range = RangeSlider(
476
+ value=[2, 8], minimum=1, maximum=10, step=1,
477
+ label="Fragment-Conformer Distance Range (Å) Eligible for Linking",
 
478
  interactive=True
479
  )
480
+ link_n_mols = gr.Slider(
481
+ value=10, minimum=1, maximum=20, step=1,
482
+ label="Number of molecules to generate per fragment conformer combination",
483
  interactive=True
484
  )
485
+ with gr.Accordion(label='Advanced Options', open=False):
486
+ link_model = gr.Dropdown(
487
+ label='Select a Linker Generation Model',
488
+ choices=['DiffLinker'],
489
+ interactive=True,
490
+ )
491
+ link_linker_size = gr.Slider(
492
+ minimum=0, maximum=20, step=1,
493
+ label="Linker Size",
494
+ info="0: automatically predicted; >=1: fixed size",
495
+ interactive=True
496
+ )
497
+ link_steps = gr.Slider(
498
+ minimum=100, maximum=500, step=10,
499
+ label="Number of Denoising Steps for Generating Linkers",
500
+ interactive=True
501
+ )
502
+ with gr.Row(equal_height=True):
503
+ email_input =gr.Textbox(
504
+ label='Email Address (Optional)',
505
+ info="Your email address will be used to notify you of the status of your job. "
506
+ "If you cannot receive the email, please check your spam/junk folder.",
507
+ type='email'
508
  )
509
+ with gr.Column():
510
+ start_clr_btn = gr.ClearButton(
511
+ value='Reset Inputs', interactive=True,
512
+ )
513
+ run_btn = gr.Button(
514
+ value='Run GenFBDD', variant='primary', interactive=True,
515
+ )
516
  with gr.Tab(label='Results', id='result'):
517
  # Results
518
  result_state = gr.State(value={})
 
551
  label='Input Your Job ID', placeholder='e.g., e9dfd149-3f5c-48a6-b797-c27d027611ac',
552
  info="Your job ID is a UUID4 string that you receive after submitting a job on the "
553
  "page or in the email notification.")
554
+ pred_lookup_example = gr.Button('Example', elem_classes=['example'], scale=1)
555
  pred_lookup_btn = gr.Button(value='Lookup the Job Status', variant='primary', visible=True)
556
  pred_lookup_stop_btn = gr.Button(value='Stop Tracking', variant='stop', visible=False)
557
+ pred_lookup_status = gr.Markdown("**Job Status**", container=True)
558
 
559
  # Event handlers
560
  ## Start tab
 
753
  )
754
 
755
  ### Job Status
756
+ pred_lookup_btn.click(
757
  fn=lambda: '<div class="loader"></ div>',
758
  outputs=loader_html,
759
+ )
760
+ user_job_lookup = pred_lookup_btn.click(
761
  fn=query_job_status,
762
  inputs=[pred_lookup_id],
763
+ outputs=[pred_lookup_status, tabs, result_state, pred_lookup_btn, pred_lookup_stop_btn],
764
  show_progress='minimal',
765
  ).success(
766
  lambda: '<div class="loader first-frame"></ div>',
767
  outputs=loader_html,
768
  )
769
 
770
+ job_valid.success(
771
  fn=lambda job: [job['id'], gr.Tabs(selected='job')],
772
  inputs=[run_state],
773
  outputs=[pred_lookup_id, tabs],
774
  ).success(
775
  lambda: '<div class="loader"></ div>',
776
  outputs=loader_html,
777
+ )
778
+ auto_job_lookup = job_valid.success(
779
  fn=query_job_status,
780
  inputs=pred_lookup_id,
781
+ outputs=[pred_lookup_status, tabs, result_state, pred_lookup_btn, pred_lookup_stop_btn],
782
  show_progress='minimal',
783
  cancels=[user_job_lookup],
784
  ).success(
 
790
  fn=lambda: [gr.Button(visible=True), gr.Button(visible=False)],
791
  outputs=[pred_lookup_btn, pred_lookup_stop_btn],
792
  cancels=[user_job_lookup, auto_job_lookup],
 
793
  ).success(
794
  lambda: '<div class="loader first-frame"></ div>',
795
  outputs=loader_html,
796
  )
797
 
798
+ pred_lookup_example.click(
799
+ fn=lambda: '80cf2658-7a1c-48d6-8372-61b978177fe6',
800
+ outputs=[pred_lookup_id],
801
+ ).success(
802
+ fn=query_job_status,
803
+ inputs=pred_lookup_id,
804
+ outputs=[pred_lookup_status, tabs, result_state],
805
+ show_progress='minimal',
806
+ cancels=[user_job_lookup, auto_job_lookup],
807
+ )
808
+
809
  ### Results
810
  def update_results(result_info):
811
  result_dir = Path(result_info['output_dir'])
 
892
 
893
  def generate_result_zip(result_info, compound_mod_df, protein_file):
894
  result_path = Path(result_info['output_dir'])
895
+ filename = f'GenFBDD_{result_path.name}.zip'
896
+ zip_path = result_path / filename
897
  cols_to_drop = ['mol', 'Compound', 'protein_path']
898
  compound_mod_df.drop(columns=[col for col in cols_to_drop if col in compound_mod_df.columns], inplace=True)
899
+ compound_mod_df.rename(columns=COL_ALIASES, inplace=True)
900
  compound_mod_df.to_csv(result_path / f'{result_info["type"]}_summary.csv', index=False)
901
 
902
  with zipfile.ZipFile(zip_path, 'w') as zip_file:
903
  for file in result_path.rglob('*'):
904
+ if file.is_file() and file != zip_path: # Skip directories and the zip file itself
905
  archive_path = file.relative_to(result_path)
906
  zip_file.write(file, arcname=archive_path)
907
+ if Path(protein_file).name not in zip_file.namelist():
908
+ zip_file.write(Path(protein_file), arcname=Path(protein_file).name)
909
 
910
  return gr.File(str(zip_path), visible=True)
911
 
app/static.py CHANGED
@@ -32,6 +32,19 @@ CSS = """
32
  100% {transform: translateY(-20px)}
33
  }
34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  .help-tip {
36
  position: absolute;
37
  display: inline-block;
 
32
  100% {transform: translateY(-20px)}
33
  }
34
 
35
+ .loader.first-frame {
36
+ animation: none; /* Stop the main animation */
37
+ }
38
+
39
+ .loader.first-frame:before {
40
+ transform: rotate(0deg); /* Explicitly set the rotation to the first frame */
41
+ }
42
+
43
+ .loader.first-frame:after {
44
+ animation: none; /* Stop the after animation */
45
+ transform: translateY(0px); /*reset the translate Y*/
46
+ }
47
+
48
  .help-tip {
49
  position: absolute;
50
  display: inline-block;
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/1xkk.pdb ADDED
The diff for this file is too large to render. See raw diff
 
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_0_0-confidence-1.02.sdf ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 6 6 0 0 0 0 0 0 0 0999 V2000
5
+ 26.2622 42.5449 56.1505 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 27.1354 43.1784 55.2905 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 28.4363 42.7134 55.2411 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 28.8292 41.6522 56.0312 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 27.9789 41.0046 56.8954 C 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 26.6689 41.4757 56.9427 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 1 2 2 0
12
+ 2 3 1 0
13
+ 3 4 2 0
14
+ 4 5 1 0
15
+ 5 6 2 0
16
+ 6 1 1 0
17
+ M END
18
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_1_0-confidence0.01.sdf ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 10 11 0 0 0 0 0 0 0 0999 V2000
5
+ 16.2668 34.0732 40.2359 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 17.1893 33.6174 39.3135 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 16.8190 33.1721 38.0602 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 15.4885 33.1712 37.6893 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 15.1263 32.7313 36.4520 N 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 13.8133 32.7391 36.1083 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 12.8631 33.1755 36.9728 N 0 0 0 0 0 0 0 0 0 0 0 0
12
+ 13.2229 33.6106 38.1967 C 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 14.5461 33.6226 38.5944 C 0 0 0 0 0 0 0 0 0 0 0 0
14
+ 14.9311 34.0680 39.8521 C 0 0 0 0 0 0 0 0 0 0 0 0
15
+ 1 2 2 0
16
+ 2 3 1 0
17
+ 3 4 2 0
18
+ 4 5 1 0
19
+ 5 6 2 0
20
+ 6 7 1 0
21
+ 7 8 2 0
22
+ 8 9 1 0
23
+ 9 10 2 0
24
+ 10 1 1 0
25
+ 9 4 1 0
26
+ M END
27
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_2_0-confidence-2.64.sdf ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 6 6 0 0 0 0 0 0 0 0999 V2000
5
+ 20.9568 33.4893 32.6574 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 21.2282 32.5448 33.6503 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 20.2187 31.7858 34.0602 N 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 18.9740 31.9144 33.5433 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 18.7058 32.8340 32.5753 N 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 19.7009 33.6417 32.1141 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 1 2 2 0
12
+ 2 3 1 0
13
+ 3 4 2 0
14
+ 4 5 1 0
15
+ 5 6 2 0
16
+ 6 1 1 0
17
+ M END
18
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_3_0-confidence-1.00.sdf ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 4 3 0 0 0 0 0 0 0 0999 V2000
5
+ 23.6319 36.0653 39.6398 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 23.6554 37.1918 40.3718 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 23.4153 37.1532 41.8222 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 22.7765 38.1036 42.3816 O 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 1 2 2 0
10
+ 2 3 1 0
11
+ 3 4 2 0
12
+ M END
13
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_4_0-confidence-0.21.sdf ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 7 7 0 0 0 0 0 0 0 0999 V2000
5
+ 17.2665 32.7344 35.2760 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 16.2547 32.0615 36.0235 N 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 15.1769 31.6076 35.2358 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 14.0819 32.6551 35.2550 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 13.6160 32.7305 36.6158 N 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 14.6282 33.1443 37.5436 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 15.9759 32.5381 37.3164 C 0 0 0 0 0 0 0 0 0 0 0 0
12
+ 1 2 1 0
13
+ 2 3 1 0
14
+ 3 4 1 0
15
+ 4 5 1 0
16
+ 5 6 1 0
17
+ 6 7 1 0
18
+ 7 2 1 0
19
+ M END
20
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_5_0-confidence-0.87.sdf ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 6 6 0 0 0 0 0 0 0 0999 V2000
5
+ 36.5702 41.8594 49.2727 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 35.1323 42.1045 49.7242 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 34.4564 42.5006 48.5574 O 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 34.2725 41.3236 47.8234 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 35.5872 40.7310 47.3646 C 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 36.6280 40.8492 48.2949 N 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 1 2 1 0
12
+ 2 3 1 0
13
+ 3 4 1 0
14
+ 4 5 1 0
15
+ 5 6 1 0
16
+ 6 1 1 0
17
+ M END
18
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_6_0-confidence-0.98.sdf ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 6 6 0 0 0 0 0 0 0 0999 V2000
5
+ 17.0738 34.4358 36.4989 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 17.3789 33.0388 37.0151 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 18.7434 32.6889 36.5261 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 19.6063 33.7306 36.1612 N 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 19.3834 35.0538 36.5357 C 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 18.0716 35.2842 37.2889 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 1 2 1 0
12
+ 2 3 1 0
13
+ 3 4 1 0
14
+ 4 5 1 0
15
+ 5 6 1 0
16
+ 6 1 1 0
17
+ M END
18
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_7_0-confidence0.25.sdf ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 9 10 0 0 0 0 0 0 0 0999 V2000
5
+ 13.7292 32.7591 36.0010 C 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 12.8332 33.1961 36.9363 N 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 13.2567 33.6225 38.1465 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 14.6200 33.5956 38.3887 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 15.3454 33.9624 39.5126 C 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 16.6770 33.7359 39.2265 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 16.7767 33.2491 37.9785 N 0 0 0 0 0 0 0 0 0 0 0 0
12
+ 15.5396 33.1587 37.4589 C 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 15.0625 32.7459 36.2719 N 0 0 0 0 0 0 0 0 0 0 0 0
14
+ 1 2 2 0
15
+ 2 3 1 0
16
+ 3 4 2 0
17
+ 4 5 1 0
18
+ 5 6 2 0
19
+ 6 7 1 0
20
+ 7 8 1 0
21
+ 8 9 2 0
22
+ 9 1 1 0
23
+ 8 4 1 0
24
+ M END
25
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_8_0-confidence-2.04.sdf ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 5 4 0 0 0 0 0 0 0 0999 V2000
5
+ 18.6411 27.9625 28.3005 N 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 17.6342 27.9901 27.7010 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 16.3420 28.0158 26.9607 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 16.6860 28.2824 25.5126 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 15.8377 28.6319 24.7305 O 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 1 2 3 0
11
+ 2 3 1 0
12
+ 3 4 1 0
13
+ 4 5 2 0
14
+ M END
15
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking/1xkk-frag_9_0-confidence-1.02.sdf ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ RDKit 3D
3
+
4
+ 8 8 0 0 0 0 0 0 0 0999 V2000
5
+ 15.2472 32.9988 34.0231 O 0 0 0 0 0 0 0 0 0 0 0 0
6
+ 15.4648 32.3371 35.2379 C 0 0 0 0 0 0 0 0 0 0 0 0
7
+ 14.5600 32.4269 36.2695 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 14.7978 31.7573 37.4750 C 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 15.9340 30.9933 37.6681 C 0 0 0 0 0 0 0 0 0 0 0 0
10
+ 16.8279 30.9188 36.6163 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 16.6064 31.5795 35.4089 C 0 0 0 0 0 0 0 0 0 0 0 0
12
+ 17.5175 31.4942 34.3585 O 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 1 2 1 0
14
+ 2 3 2 0
15
+ 3 4 1 0
16
+ 4 5 2 0
17
+ 5 6 1 0
18
+ 6 7 2 0
19
+ 7 8 1 0
20
+ 7 2 1 0
21
+ M END
22
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/docking_summary.csv ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name,ID2,protein_path,ID1,X1,confidence,ligand_conf_path
2
+ 1xkk-frag_0,1xkk,/tmp/gradio/1xkk.pdb,frag_0_0,c1ccccc1,-1.0169598,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_0_0-confidence-1.02.sdf
3
+ 1xkk-frag_1,1xkk,/tmp/gradio/1xkk.pdb,frag_1_0,c1ccc2ncncc2c1,0.011155255,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_1_0-confidence0.01.sdf
4
+ 1xkk-frag_2,1xkk,/tmp/gradio/1xkk.pdb,frag_2_0,c1cncnc1,-2.6432655,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_2_0-confidence-2.64.sdf
5
+ 1xkk-frag_3,1xkk,/tmp/gradio/1xkk.pdb,frag_3_0,C=CC=O,-1.0013701,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_3_0-confidence-1.00.sdf
6
+ 1xkk-frag_4,1xkk,/tmp/gradio/1xkk.pdb,frag_4_0,CN1CCNCC1,-0.21079868,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_4_0-confidence-0.21.sdf
7
+ 1xkk-frag_5,1xkk,/tmp/gradio/1xkk.pdb,frag_5_0,C1COCCN1,-0.8726358,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_5_0-confidence-0.87.sdf
8
+ 1xkk-frag_6,1xkk,/tmp/gradio/1xkk.pdb,frag_6_0,C1CCNCC1,-0.9784176,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_6_0-confidence-0.98.sdf
9
+ 1xkk-frag_7,1xkk,/tmp/gradio/1xkk.pdb,frag_7_0,c1ncc2cc[nH]c2n1,0.24687979,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_7_0-confidence0.25.sdf
10
+ 1xkk-frag_8,1xkk,/tmp/gradio/1xkk.pdb,frag_8_0,N#CCC=O,-2.0430398,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_8_0-confidence-2.04.sdf
11
+ 1xkk-frag_9,1xkk,/tmp/gradio/1xkk.pdb,frag_9_0,Oc1ccccc1O,-1.0192447,results/2025-01-05_11-14-29.222981/docking/1xkk-frag_9_0-confidence-1.02.sdf
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_1_0_0.sdf ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 18 19 0 0 0 0 0 0 0 0999 V2000
5
+ 23.6319 36.0653 39.6398 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 23.6554 37.1918 40.3718 C 0 0 0 0 0 2 0 0 0 0 0 0
7
+ 23.4153 37.1532 41.8222 C 0 0 0 0 0 3 0 0 0 0 0 0
8
+ 22.7765 38.1036 42.3816 O 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 16.2668 34.0732 40.2359 C 0 0 0 0 0 3 0 0 0 0 0 0
10
+ 17.1893 33.6174 39.3135 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 16.8190 33.1721 38.0602 C 0 0 0 0 0 3 0 0 0 0 0 0
12
+ 15.4885 33.1712 37.6893 C 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 15.1263 32.7313 36.4520 N 0 0 0 0 0 0 0 0 0 0 0 0
14
+ 13.8133 32.7391 36.1083 C 0 0 0 0 0 3 0 0 0 0 0 0
15
+ 12.8631 33.1755 36.9728 N 0 0 0 0 0 0 0 0 0 0 0 0
16
+ 13.2229 33.6106 38.1967 C 0 0 0 0 0 3 0 0 0 0 0 0
17
+ 14.5461 33.6226 38.5944 C 0 0 0 0 0 0 0 0 0 0 0 0
18
+ 14.9311 34.0680 39.8521 C 0 0 0 0 0 3 0 0 0 0 0 0
19
+ 19.6225 34.4958 39.5858 C 0 0 0 0 0 2 0 0 0 0 0 0
20
+ 18.6554 33.6203 39.6490 C 0 0 0 0 0 2 0 0 0 0 0 0
21
+ 22.2517 35.3488 39.5080 C 0 0 0 0 0 0 0 0 0 0 0 0
22
+ 21.0064 34.9649 39.5816 C 0 0 0 0 0 0 0 0 0 0 0 0
23
+ 1 2 1 0 0 0 0
24
+ 2 3 1 0 0 0 0
25
+ 3 4 2 0 0 0 0
26
+ 6 16 1 0 0 0 0
27
+ 6 5 2 0 0 0 0
28
+ 7 6 1 0 0 0 0
29
+ 8 7 2 0 0 0 0
30
+ 8 13 1 0 0 0 0
31
+ 9 8 1 0 0 0 0
32
+ 10 9 2 0 0 0 0
33
+ 10 11 1 0 0 0 0
34
+ 11 12 2 0 0 0 0
35
+ 12 13 1 0 0 0 0
36
+ 13 14 2 0 0 0 0
37
+ 14 5 1 0 0 0 0
38
+ 15 16 1 0 0 0 0
39
+ 17 18 3 0 0 0 0
40
+ 17 1 1 0 0 0 0
41
+ 18 15 1 0 0 0 0
42
+ M END
43
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_4_0_0.sdf ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 19 19 0 0 1 0 0 0 0 0999 V2000
5
+ 23.6319 36.0653 39.6398 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 23.6554 37.1918 40.3718 C 0 0 0 0 0 3 0 0 0 0 0 0
7
+ 23.4153 37.1532 41.8222 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 22.7765 38.1036 42.3816 O 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 17.2665 32.7344 35.2760 C 0 0 0 0 0 1 0 0 0 0 0 0
10
+ 16.2547 32.0615 36.0235 N 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 15.1769 31.6076 35.2358 C 0 0 0 0 0 2 0 0 0 0 0 0
12
+ 14.0819 32.6551 35.2550 C 0 0 0 0 0 2 0 0 0 0 0 0
13
+ 13.6160 32.7305 36.6158 N 0 0 0 0 0 2 0 0 0 0 0 0
14
+ 14.6282 33.1443 37.5436 C 0 0 0 0 0 2 0 0 0 0 0 0
15
+ 15.9759 32.5381 37.3164 C 0 0 2 0 0 3 0 0 0 0 0 0
16
+ 16.9998 32.9982 38.1165 C 0 0 0 0 0 2 0 0 0 0 0 0
17
+ 23.3889 35.8292 42.4730 C 0 0 0 0 0 3 0 0 0 0 0 0
18
+ 20.0087 34.5577 41.3507 C 0 0 0 0 0 3 0 0 0 0 0 0
19
+ 19.3154 35.0261 40.2106 C 0 0 0 0 0 3 0 0 0 0 0 0
20
+ 17.7012 33.7529 38.8723 C 0 0 0 0 0 0 0 0 0 0 0 0
21
+ 20.9645 35.4012 41.8838 C 0 0 0 0 0 2 0 0 0 0 0 0
22
+ 22.2321 35.0624 42.3623 C 0 0 0 0 0 3 0 0 0 0 0 0
23
+ 18.4738 34.2265 39.6307 C 0 0 0 0 0 0 0 0 0 0 0 0
24
+ 1 2 2 0 0 0 0
25
+ 2 3 1 0 0 0 0
26
+ 3 4 2 0 0 0 0
27
+ 3 13 1 0 0 0 0
28
+ 5 6 1 0 0 0 0
29
+ 6 11 1 0 0 0 0
30
+ 7 8 1 0 0 0 0
31
+ 7 6 1 0 0 0 0
32
+ 8 9 1 0 0 0 0
33
+ 9 10 1 0 0 0 0
34
+ 11 10 1 0 0 0 0
35
+ 11 12 1 6 0 0 0
36
+ 12 16 1 0 0 0 0
37
+ 14 17 1 0 0 0 0
38
+ 15 14 2 0 0 0 0
39
+ 16 19 3 0 0 0 0
40
+ 17 18 1 0 0 0 0
41
+ 18 13 2 0 0 0 0
42
+ 19 15 1 0 0 0 0
43
+ M END
44
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_7_0_0.sdf ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 16 16 0 0 1 0 0 0 0 0999 V2000
5
+ 23.6319 36.0653 39.6398 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 23.6554 37.1918 40.3718 C 0 0 0 0 0 2 0 0 0 0 0 0
7
+ 23.4153 37.1532 41.8222 C 0 0 0 0 0 3 0 0 0 0 0 0
8
+ 22.7765 38.1036 42.3816 O 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 13.7292 32.7591 36.0010 C 0 0 0 0 0 3 0 0 0 0 0 0
10
+ 12.8332 33.1961 36.9363 N 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 13.2567 33.6225 38.1465 C 0 0 0 0 0 3 0 0 0 0 0 0
12
+ 14.6200 33.5956 38.3887 C 0 0 2 0 0 3 0 0 0 0 0 0
13
+ 15.3454 33.9624 39.5126 C 0 0 0 0 0 3 0 0 0 0 0 0
14
+ 16.6770 33.7359 39.2265 C 0 0 0 0 0 3 0 0 0 0 0 0
15
+ 16.7767 33.2491 37.9785 N 0 0 0 0 0 0 0 0 0 0 0 0
16
+ 15.5396 33.1587 37.4589 C 0 0 0 0 0 0 0 0 0 0 0 0
17
+ 15.0625 32.7459 36.2719 N 0 0 0 0 0 0 0 0 0 0 0 0
18
+ 20.0922 34.6588 39.4569 C 0 0 0 0 0 1 0 0 0 0 0 0
19
+ 22.5256 35.3420 39.5149 C 0 0 0 0 0 0 0 0 0 0 0 0
20
+ 21.4541 35.0084 39.4530 C 0 0 0 0 0 0 0 0 0 0 0 0
21
+ 1 2 1 0 0 0 0
22
+ 2 3 1 0 0 0 0
23
+ 3 4 2 0 0 0 0
24
+ 5 13 2 0 0 0 0
25
+ 5 6 1 0 0 0 0
26
+ 6 7 2 0 0 0 0
27
+ 8 7 1 6 0 0 0
28
+ 8 9 1 0 0 0 0
29
+ 10 9 2 0 0 0 0
30
+ 11 10 1 0 0 0 0
31
+ 12 11 2 0 0 0 0
32
+ 12 8 1 0 0 0 0
33
+ 13 12 1 0 0 0 0
34
+ 15 1 1 0 0 0 0
35
+ 16 14 1 0 0 0 0
36
+ 16 15 3 0 0 0 0
37
+ M END
38
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_3_0-frag_9_0_0.sdf ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 29 31 0 0 1 0 0 0 0 0999 V2000
5
+ 23.6319 36.0653 39.6398 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 23.6554 37.1918 40.3718 C 0 0 0 0 0 3 0 0 0 0 0 0
7
+ 23.4153 37.1532 41.8222 C 0 0 0 0 0 0 0 0 0 0 0 0
8
+ 22.7765 38.1036 42.3816 O 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 15.2472 32.9988 34.0231 O 0 0 0 0 0 1 0 0 0 0 0 0
10
+ 15.4648 32.3371 35.2379 C 0 0 0 0 0 0 0 0 0 0 0 0
11
+ 14.5600 32.4269 36.2695 C 0 0 0 0 0 3 0 0 0 0 0 0
12
+ 14.7978 31.7573 37.4750 C 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 15.9340 30.9933 37.6681 C 0 0 0 0 0 3 0 0 0 0 0 0
14
+ 16.8279 30.9188 36.6163 C 0 0 0 0 0 3 0 0 0 0 0 0
15
+ 16.6064 31.5795 35.4089 C 0 0 0 0 0 0 0 0 0 0 0 0
16
+ 17.5175 31.4942 34.3585 O 0 0 0 0 0 1 0 0 0 0 0 0
17
+ 13.8029 31.8441 38.4415 N 0 0 0 0 0 2 0 0 0 0 0 0
18
+ 17.9295 33.8256 41.1470 C 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 13.9696 31.7635 39.8334 C 0 0 0 0 0 0 0 0 0 0 0 0
20
+ 19.7742 35.0234 43.1484 C 0 0 0 0 0 2 0 0 0 0 0 0
21
+ 17.8598 34.0774 39.8150 N 0 0 0 0 0 0 0 0 0 0 0 0
22
+ 21.7755 35.5473 42.0665 N 0 0 0 0 0 0 0 0 0 0 0 0
23
+ 19.9072 34.7998 40.7391 O 0 0 0 0 0 0 0 0 0 0 0 0
24
+ 12.9941 31.5573 40.5673 O 0 0 0 0 0 0 0 0 0 0 0 0
25
+ 23.7128 35.7920 44.0012 C 0 0 0 0 0 1 0 0 0 0 0 0
26
+ 20.7938 35.8588 41.0702 C 0 0 0 0 0 2 0 0 0 0 0 0
27
+ 19.0970 34.4520 41.8707 C 0 0 2 0 0 3 0 0 0 0 0 0
28
+ 16.7891 33.4750 39.3526 C 0 0 0 0 0 3 0 0 0 0 0 0
29
+ 16.9106 33.0342 41.5738 C 0 0 0 0 0 2 0 0 0 0 0 0
30
+ 23.4828 35.8431 42.5132 C 0 0 2 0 0 3 0 0 0 0 0 0
31
+ 16.1604 32.7492 40.3907 C 0 0 0 0 0 0 0 0 0 0 0 0
32
+ 21.2845 34.8221 43.1573 C 0 0 0 0 0 2 0 0 0 0 0 0
33
+ 15.1573 31.8629 40.3610 N 0 0 0 0 0 2 0 0 0 0 0 0
34
+ 1 2 2 0 0 0 0
35
+ 2 3 1 0 0 0 0
36
+ 3 4 2 0 0 0 0
37
+ 3 26 1 0 0 0 0
38
+ 5 6 1 0 0 0 0
39
+ 6 11 2 0 0 0 0
40
+ 6 7 1 0 0 0 0
41
+ 7 8 2 0 0 0 0
42
+ 8 9 1 0 0 0 0
43
+ 8 13 1 0 0 0 0
44
+ 10 9 2 0 0 0 0
45
+ 11 10 1 0 0 0 0
46
+ 12 11 1 0 0 0 0
47
+ 13 15 1 0 0 0 0
48
+ 14 25 1 0 0 0 0
49
+ 15 29 1 0 0 0 0
50
+ 15 20 2 0 0 0 0
51
+ 16 28 1 0 0 0 0
52
+ 17 14 2 0 0 0 0
53
+ 18 26 1 0 0 0 0
54
+ 18 28 1 0 0 0 0
55
+ 19 22 1 0 0 0 0
56
+ 19 23 1 0 0 0 0
57
+ 22 18 1 0 0 0 0
58
+ 23 14 1 6 0 0 0
59
+ 23 16 1 0 0 0 0
60
+ 24 17 1 0 0 0 0
61
+ 24 27 2 0 0 0 0
62
+ 26 21 1 1 0 0 0
63
+ 27 25 1 0 0 0 0
64
+ 29 27 1 0 0 0 0
65
+ M END
66
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_1_0_0.sdf ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 19 21 0 0 1 0 0 0 0 0999 V2000
5
+ 17.0738 34.4358 36.4989 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 17.3789 33.0388 37.0151 C 0 0 1 0 0 3 0 0 0 0 0 0
7
+ 18.7434 32.6889 36.5261 C 0 0 0 0 0 2 0 0 0 0 0 0
8
+ 19.6063 33.7306 36.1612 N 0 0 0 0 0 2 0 0 0 0 0 0
9
+ 19.3834 35.0538 36.5357 C 0 0 0 0 0 2 0 0 0 0 0 0
10
+ 18.0716 35.2842 37.2889 C 0 0 0 0 0 2 0 0 0 0 0 0
11
+ 16.2668 34.0732 40.2359 C 0 0 0 0 0 3 0 0 0 0 0 0
12
+ 17.1893 33.6174 39.3135 C 0 0 0 0 0 3 0 0 0 0 0 0
13
+ 16.8190 33.1721 38.0602 C 0 0 0 0 0 0 0 0 0 0 0 0
14
+ 15.4885 33.1712 37.6893 C 0 0 0 0 0 0 0 0 0 0 0 0
15
+ 15.1263 32.7313 36.4520 N 0 0 0 0 0 0 0 0 0 0 0 0
16
+ 13.8133 32.7391 36.1083 C 0 0 0 0 0 0 0 0 0 0 0 0
17
+ 12.8631 33.1755 36.9728 N 0 0 0 0 0 0 0 0 0 0 0 0
18
+ 13.2229 33.6106 38.1967 C 0 0 0 0 0 3 0 0 0 0 0 0
19
+ 14.5461 33.6226 38.5944 C 0 0 0 0 0 0 0 0 0 0 0 0
20
+ 14.9311 34.0680 39.8521 C 0 0 0 0 0 3 0 0 0 0 0 0
21
+ 15.5366 32.0719 33.7144 O 0 0 0 0 0 1 0 0 0 0 0 0
22
+ 13.3826 32.4791 34.7418 C 0 0 0 0 0 2 0 0 0 0 0 0
23
+ 14.4022 32.9100 33.6879 C 0 0 0 0 0 2 0 0 0 0 0 0
24
+ 1 2 1 0 0 0 0
25
+ 1 6 1 0 0 0 0
26
+ 2 9 1 1 0 0 0
27
+ 3 2 1 0 0 0 0
28
+ 4 3 1 0 0 0 0
29
+ 4 5 1 0 0 0 0
30
+ 5 6 1 0 0 0 0
31
+ 8 7 2 0 0 0 0
32
+ 9 8 1 0 0 0 0
33
+ 10 9 2 0 0 0 0
34
+ 10 15 1 0 0 0 0
35
+ 11 10 1 0 0 0 0
36
+ 12 11 2 0 0 0 0
37
+ 12 13 1 0 0 0 0
38
+ 13 14 2 0 0 0 0
39
+ 14 15 1 0 0 0 0
40
+ 15 16 2 0 0 0 0
41
+ 16 7 1 0 0 0 0
42
+ 18 12 1 0 0 0 0
43
+ 19 17 1 0 0 0 0
44
+ 19 18 1 0 0 0 0
45
+ M END
46
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_3_0_0.sdf ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 27 29 0 0 1 0 0 0 0 0999 V2000
5
+ 17.0738 34.4358 36.4989 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 17.3789 33.0388 37.0151 C 0 0 0 0 0 2 0 0 0 0 0 0
7
+ 18.7434 32.6889 36.5261 C 0 0 0 0 0 2 0 0 0 0 0 0
8
+ 19.6063 33.7306 36.1612 N 0 0 0 0 0 2 0 0 0 0 0 0
9
+ 19.3834 35.0538 36.5357 C 0 0 1 0 0 3 0 0 0 0 0 0
10
+ 18.0716 35.2842 37.2889 C 0 0 0 0 0 2 0 0 0 0 0 0
11
+ 23.6319 36.0653 39.6398 C 0 0 0 0 0 2 0 0 0 0 0 0
12
+ 23.6554 37.1918 40.3718 C 0 0 0 0 0 2 0 0 0 0 0 0
13
+ 23.4153 37.1532 41.8222 C 0 0 0 0 0 0 0 0 0 0 0 0
14
+ 22.7765 38.1036 42.3816 O 0 0 0 0 0 0 0 0 0 0 0 0
15
+ 23.8225 34.7206 39.7082 C 0 0 0 0 0 0 0 0 0 0 0 0
16
+ 25.0201 35.3915 42.5852 C 0 0 0 0 0 3 0 0 0 0 0 0
17
+ 20.4424 35.7240 39.3376 C 0 0 0 0 0 2 0 0 0 0 0 0
18
+ 24.1880 36.3272 42.4615 N 0 0 0 0 0 2 0 0 0 0 0 0
19
+ 20.3290 36.2648 42.9198 C 0 0 0 0 0 3 0 0 0 0 0 0
20
+ 20.7786 35.5004 41.8433 C 0 0 0 0 0 3 0 0 0 0 0 0
21
+ 26.7307 33.7112 41.7559 C 0 0 0 0 0 3 0 0 0 0 0 0
22
+ 25.5643 34.4655 41.6153 C 0 0 0 0 0 0 0 0 0 0 0 0
23
+ 21.0562 35.4635 38.3099 N 0 0 0 0 0 2 0 0 0 0 0 0
24
+ 19.4870 37.2710 42.4408 C 0 0 0 0 0 2 0 0 0 0 0 0
25
+ 26.0034 33.4037 39.6462 C 0 0 0 0 0 3 0 0 0 0 0 0
26
+ 20.5324 35.8566 37.0189 C 0 0 0 0 0 2 0 0 0 0 0 0
27
+ 25.0812 34.2399 40.3120 C 0 0 0 0 0 0 0 0 0 0 0 0
28
+ 22.8405 33.7225 38.9221 S 0 0 0 0 0 0 0 0 0 0 0 0
29
+ 26.9955 33.0667 40.5446 C 0 0 0 0 0 3 0 0 0 0 0 0
30
+ 20.2216 36.0776 40.6807 C 0 0 0 0 0 0 0 0 0 0 0 0
31
+ 19.3932 37.1576 41.0659 C 0 0 0 0 0 3 0 0 0 0 0 0
32
+ 1 2 1 0 0 0 0
33
+ 1 6 1 0 0 0 0
34
+ 3 2 1 0 0 0 0
35
+ 4 3 1 0 0 0 0
36
+ 4 5 1 0 0 0 0
37
+ 5 22 1 1 0 0 0
38
+ 5 6 1 0 0 0 0
39
+ 7 11 1 0 0 0 0
40
+ 7 8 1 0 0 0 0
41
+ 8 9 1 0 0 0 0
42
+ 9 10 2 0 0 0 0
43
+ 9 14 1 0 0 0 0
44
+ 11 23 1 0 0 0 0
45
+ 13 26 1 0 0 0 0
46
+ 14 12 1 0 0 0 0
47
+ 16 15 2 0 0 0 0
48
+ 18 17 1 0 0 0 0
49
+ 18 12 2 0 0 0 0
50
+ 19 13 1 0 0 0 0
51
+ 20 15 1 0 0 0 0
52
+ 21 23 2 0 0 0 0
53
+ 21 25 1 0 0 0 0
54
+ 22 19 1 0 0 0 0
55
+ 23 18 1 0 0 0 0
56
+ 24 11 2 0 0 0 0
57
+ 25 17 2 0 0 0 0
58
+ 26 27 2 0 0 0 0
59
+ 26 16 1 0 0 0 0
60
+ 27 20 1 0 0 0 0
61
+ M END
62
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_4_0_0.sdf ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 19 24 0 0 1 0 0 0 0 0999 V2000
5
+ 17.0738 34.4358 36.4989 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 17.3789 33.0388 37.0151 C 0 0 2 0 0 0 0 0 0 0 0 0
7
+ 18.7434 32.6889 36.5261 C 0 0 2 0 0 0 0 0 0 0 0 0
8
+ 19.6063 33.7306 36.1612 N 0 0 2 0 0 0 0 0 0 0 0 0
9
+ 19.3834 35.0538 36.5357 C 0 0 0 0 0 2 0 0 0 0 0 0
10
+ 18.0716 35.2842 37.2889 C 0 0 0 0 0 2 0 0 0 0 0 0
11
+ 17.2665 32.7344 35.2760 C 0 0 1 0 0 0 0 0 0 0 0 0
12
+ 16.2547 32.0615 36.0235 N 0 0 2 0 0 0 0 0 0 0 0 0
13
+ 15.1769 31.6076 35.2358 C 0 0 0 0 0 2 0 0 0 0 0 0
14
+ 14.0819 32.6551 35.2550 C 0 0 0 0 0 2 0 0 0 0 0 0
15
+ 13.6160 32.7305 36.6158 N 0 0 0 0 0 2 0 0 0 0 0 0
16
+ 14.6282 33.1443 37.5436 C 0 0 0 0 0 2 0 0 0 0 0 0
17
+ 15.9759 32.5381 37.3164 C 0 0 2 0 0 3 0 0 0 0 0 0
18
+ 18.7729 33.1150 35.0914 C 0 0 2 0 0 0 0 0 0 0 0 0
19
+ 19.0503 28.8886 35.0817 C 0 0 0 0 0 2 0 0 0 0 0 0
20
+ 18.4659 29.9438 35.9468 C 0 0 0 0 0 2 0 0 0 0 0 0
21
+ 19.8794 30.0770 35.4293 C 0 0 0 0 0 2 0 0 0 0 0 0
22
+ 18.8653 34.1173 34.0178 C 0 0 0 0 0 0 0 0 0 0 0 0
23
+ 19.0693 34.8988 33.2156 N 0 0 0 0 0 0 0 0 0 0 0 0
24
+ 1 6 1 0 0 0 0
25
+ 2 1 1 1 0 0 0
26
+ 2 13 1 0 0 0 0
27
+ 3 2 1 0 0 0 0
28
+ 4 3 1 0 0 0 0
29
+ 4 5 1 0 0 0 0
30
+ 5 6 1 0 0 0 0
31
+ 7 8 1 0 0 0 0
32
+ 7 3 1 0 0 0 0
33
+ 7 2 1 0 0 0 0
34
+ 8 13 1 0 0 0 0
35
+ 9 10 1 0 0 0 0
36
+ 9 8 1 0 0 0 0
37
+ 10 11 1 0 0 0 0
38
+ 11 12 1 0 0 0 0
39
+ 13 12 1 0 0 0 0
40
+ 14 7 1 0 0 0 0
41
+ 14 4 1 0 0 0 0
42
+ 14 3 1 0 0 0 0
43
+ 15 17 1 0 0 0 0
44
+ 15 16 1 0 0 0 0
45
+ 17 16 1 0 0 0 0
46
+ 18 14 1 0 0 0 0
47
+ 19 18 3 0 0 0 0
48
+ M END
49
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_7_0_0.sdf ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 18 20 0 0 1 0 0 0 0 0999 V2000
5
+ 17.0738 34.4358 36.4989 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 17.3789 33.0388 37.0151 C 0 0 1 0 0 3 0 0 0 0 0 0
7
+ 18.7434 32.6889 36.5261 C 0 0 0 0 0 2 0 0 0 0 0 0
8
+ 19.6063 33.7306 36.1612 N 0 0 0 0 0 2 0 0 0 0 0 0
9
+ 19.3834 35.0538 36.5357 C 0 0 0 0 0 2 0 0 0 0 0 0
10
+ 18.0716 35.2842 37.2889 C 0 0 0 0 0 2 0 0 0 0 0 0
11
+ 13.7292 32.7591 36.0010 C 0 0 0 0 0 0 0 0 0 0 0 0
12
+ 12.8332 33.1961 36.9363 N 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 13.2567 33.6225 38.1465 C 0 0 0 0 0 2 0 0 0 0 0 0
14
+ 14.6200 33.5956 38.3887 C 0 0 0 0 0 0 0 0 0 0 0 0
15
+ 15.3454 33.9624 39.5126 C 0 0 0 0 0 3 0 0 0 0 0 0
16
+ 16.6770 33.7359 39.2265 C 0 0 0 0 0 3 0 0 0 0 0 0
17
+ 16.7767 33.2491 37.9785 N 0 0 0 0 0 0 0 0 0 0 0 0
18
+ 15.5396 33.1587 37.4589 C 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 15.0625 32.7459 36.2719 N 0 0 0 0 0 2 0 0 0 0 0 0
20
+ 13.3021 32.3378 34.6672 C 0 0 0 0 0 2 0 0 0 0 0 0
21
+ 13.2782 34.7143 33.8299 C 0 0 0 0 0 1 0 0 0 0 0 0
22
+ 13.8699 33.3178 33.6224 C 0 0 0 0 0 2 0 0 0 0 0 0
23
+ 1 6 1 0 0 0 0
24
+ 2 1 1 6 0 0 0
25
+ 2 13 1 0 0 0 0
26
+ 3 2 1 0 0 0 0
27
+ 4 3 1 0 0 0 0
28
+ 4 5 1 0 0 0 0
29
+ 5 6 1 0 0 0 0
30
+ 7 15 1 0 0 0 0
31
+ 7 8 2 0 0 0 0
32
+ 8 9 1 0 0 0 0
33
+ 9 10 1 0 0 0 0
34
+ 10 11 1 0 0 0 0
35
+ 12 11 2 0 0 0 0
36
+ 13 12 1 0 0 0 0
37
+ 14 13 1 0 0 0 0
38
+ 14 10 2 0 0 0 0
39
+ 15 14 1 0 0 0 0
40
+ 16 7 1 0 0 0 0
41
+ 18 17 1 0 0 0 0
42
+ 18 16 1 0 0 0 0
43
+ M END
44
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking/1xkk-frag_6_0-frag_9_0_0.sdf ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ OpenBabel01052512113D
3
+
4
+ 21 22 0 0 1 0 0 0 0 0999 V2000
5
+ 17.0738 34.4358 36.4989 C 0 0 0 0 0 2 0 0 0 0 0 0
6
+ 17.3789 33.0388 37.0151 C 0 0 0 0 0 2 0 0 0 0 0 0
7
+ 18.7434 32.6889 36.5261 C 0 0 0 0 0 2 0 0 0 0 0 0
8
+ 19.6063 33.7306 36.1612 N 0 0 0 0 0 0 0 0 0 0 0 0
9
+ 19.3834 35.0538 36.5357 C 0 0 0 0 0 2 0 0 0 0 0 0
10
+ 18.0716 35.2842 37.2889 C 0 0 0 0 0 2 0 0 0 0 0 0
11
+ 15.2472 32.9988 34.0231 O 0 0 0 0 0 1 0 0 0 0 0 0
12
+ 15.4648 32.3371 35.2379 C 0 0 0 0 0 0 0 0 0 0 0 0
13
+ 14.5600 32.4269 36.2695 C 0 0 0 0 0 3 0 0 0 0 0 0
14
+ 14.7978 31.7573 37.4750 C 0 0 0 0 0 3 0 0 0 0 0 0
15
+ 15.9340 30.9933 37.6681 C 0 0 0 0 0 3 0 0 0 0 0 0
16
+ 16.8279 30.9188 36.6163 C 0 0 0 0 0 3 0 0 0 0 0 0
17
+ 16.6064 31.5795 35.4089 C 0 0 0 0 0 0 0 0 0 0 0 0
18
+ 17.5175 31.4942 34.3585 O 0 0 0 0 0 0 0 0 0 0 0 0
19
+ 17.9775 30.9644 32.0475 C 0 0 0 0 0 1 0 0 0 0 0 0
20
+ 18.4760 33.1867 33.2194 C 0 0 0 0 0 0 0 0 0 0 0 0
21
+ 20.7208 33.7271 33.9372 C 0 0 0 0 0 2 0 0 0 0 0 0
22
+ 17.5118 32.0121 33.0543 C 0 0 2 0 0 3 0 0 0 0 0 0
23
+ 18.0312 34.3106 33.4089 O 0 0 0 0 0 0 0 0 0 0 0 0
24
+ 19.7669 32.8674 33.2778 N 0 0 0 0 0 2 0 0 0 0 0 0
25
+ 20.8215 33.4047 35.4326 C 0 0 0 0 0 2 0 0 0 0 0 0
26
+ 1 2 1 0 0 0 0
27
+ 1 6 1 0 0 0 0
28
+ 3 2 1 0 0 0 0
29
+ 4 3 1 0 0 0 0
30
+ 4 5 1 0 0 0 0
31
+ 5 6 1 0 0 0 0
32
+ 7 8 1 0 0 0 0
33
+ 8 13 2 0 0 0 0
34
+ 8 9 1 0 0 0 0
35
+ 9 10 2 0 0 0 0
36
+ 10 11 1 0 0 0 0
37
+ 12 11 2 0 0 0 0
38
+ 13 12 1 0 0 0 0
39
+ 14 13 1 0 0 0 0
40
+ 16 20 1 0 0 0 0
41
+ 16 19 2 0 0 0 0
42
+ 17 21 1 0 0 0 0
43
+ 18 15 1 6 0 0 0
44
+ 18 16 1 0 0 0 0
45
+ 18 14 1 0 0 0 0
46
+ 20 17 1 0 0 0 0
47
+ 21 4 1 0 0 0 0
48
+ M END
49
+ $$$$
results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/linking_summary.csv ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ name,fragment_path,X1,X1^,out_path
2
+ 1xkk-frag_6_0-frag_9_0,"[PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_6_0-confidence-0.98.sdf'), PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_9_0-confidence-1.02.sdf')]",C1CCNCC1.Oc1ccccc1O,[C][C](Oc1[c][c][c][c]c1[O])C(=O)[N][C][C]N1[C][C][C][C][C]1,1xkk-frag_6_0-frag_9_0_0.sdf
3
+ 1xkk-frag_6_0-frag_1_0,"[PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_6_0-confidence-0.98.sdf'), PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_1_0-confidence0.01.sdf')]",C1CCNCC1.c1ccc2ncncc2c1,[O][C][C]c1n[c]c2[c][c][c]c([C]3[C][C][C][N][C]3)c2n1,1xkk-frag_6_0-frag_1_0_0.sdf
4
+ 1xkk-frag_6_0-frag_7_0,"[PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_6_0-confidence-0.98.sdf'), PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_7_0-confidence0.25.sdf')]",C1CCNCC1.c1ncc2cc[nH]c2n1,[C][C][C]C1=N[C]c2[c][c]n([C]3[C][C][C][N][C]3)c2[N]1,1xkk-frag_6_0-frag_7_0_0.sdf
5
+ 1xkk-frag_3_0-frag_4_0,"[PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_3_0-confidence-1.00.sdf'), PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_4_0-confidence-0.21.sdf')]",C=CC=O.CN1CCNCC1,[C]N1[C][C][N][C][C]1[C]C#C/[C]=[C]/[C]/[C]=[C]\C(=O)[C]=[C],1xkk-frag_3_0-frag_4_0_0.sdf
6
+ 1xkk-frag_3_0-frag_9_0,"[PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_3_0-confidence-1.00.sdf'), PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_9_0-confidence-1.02.sdf')]",C=CC=O.Oc1ccccc1O,[C][C](C(=O)[C]=[C])N1[C][C][C](C2=N[C]=C([N]C(=O)[N]c3[c][c]c([O])c([O])[c]3)[C]2)O[C]1,1xkk-frag_3_0-frag_9_0_0.sdf
7
+ 1xkk-frag_3_0-frag_1_0,"[PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_3_0-confidence-1.00.sdf'), PosixPath('results/2025-01-05_11-14-29.222981/docking/1xkk-frag_1_0-confidence0.01.sdf')]",C=CC=O.c1ccc2ncncc2c1,O=[C][C][C]C#C[C][C]c1[c][c]c2[c]n[c]nc2[c]1,1xkk-frag_3_0-frag_1_0_0.sdf
results/job_db.json CHANGED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_default": {
3
+ "1": {
4
+ "id": "80cf2658-7a1c-48d6-8372-61b978177fe6",
5
+ "type": "linking",
6
+ "status": "COMPLETED",
7
+ "output_dir": "results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6",
8
+ "protein_structure_file": "results/2025-01-01_01-01-01_80cf2658-7a1c-48d6-8372-61b978177fe6/1xkk.pdb",
9
+ "start_time": 1735693261,
10
+ "end_time": 1735693321,
11
+ "expiry_time": 1893459721,
12
+ "ip": "1.1.1.1"
13
+ }
14
+ }
15
+ }