Tonic commited on
Commit
fbb545c
·
unverified ·
1 Parent(s): 9b5ec9d

attempt to fix the visualizer

Browse files
Files changed (1) hide show
  1. app.py +18 -24
app.py CHANGED
@@ -236,17 +236,14 @@ def visualize_after_pred(protein: ESMProtein, aligned: ESMProtein):
236
  if aligned is None:
237
  return None
238
 
239
- viewer = py3Dmol.view(width=800, height=600)
240
- viewer.addModel(protein_to_pdb(protein), "pdb")
241
- viewer.setStyle({"cartoon": {"color": "lightgrey"}})
242
- viewer.addModel(protein_to_pdb(aligned), "pdb")
243
- viewer.setStyle({"model": -1}, {"cartoon": {"color": "lightgreen"}})
244
- viewer.zoomTo()
245
 
246
- return {
247
- "pdb": protein_to_pdb(protein) + protein_to_pdb(aligned),
248
- "style": {"cartoon": {"color": "spectrum"}}
249
- }
250
 
251
  def protein_to_pdb(protein: ESMProtein):
252
  pdb_str = ""
@@ -289,28 +286,25 @@ def run_prediction(pdb_file, num_runs, noise_level, num_frames, progress=gr.Prog
289
  return "Please upload a PDB file.", "No file uploaded", "", ""
290
 
291
  progress(0, desc="Starting prediction")
292
- view_data, crmsd_text = prediction_visualization(pdb_file, num_runs, noise_level, num_frames, progress)
293
  steric_clash_text, norm_steric_clash_text = calculate_clashes_for_pdb(pdb_file)
294
- if view_data is None:
295
  return "No successful predictions were made. Try adjusting the parameters or check the PDB file.", crmsd_text, steric_clash_text, norm_steric_clash_text
296
 
297
  progress(0.9, desc="Rendering visualization")
 
 
 
298
  html_content = f"""
299
- <div style="height: 600px; width: 100%;">
300
- <script src="https://3dmol.csb.pitt.edu/build/3Dmol-min.js"></script>
301
- <div id="container-{id(view_data)}" style="height: 100%; width: 100%; position: relative;"></div>
302
- <script>
303
- var viewer = $3Dmol.createViewer(document.getElementById("container-{id(view_data)}"), {{defaultcolors: $3Dmol.rasmolElementColors}});
304
- viewer.addModel({json.dumps(view_data['pdb'])}, "pdb");
305
- viewer.setStyle({{}}, {json.dumps(view_data['style'])});
306
- viewer.zoomTo();
307
- viewer.render();
308
- </script>
309
- </div>
310
  """
 
311
  progress(1.0, desc="Completed")
312
  return html_content, crmsd_text, steric_clash_text, norm_steric_clash_text
313
-
314
  except Exception as e:
315
  error_message = str(e)
316
  stack_trace = traceback.format_exc()
 
236
  if aligned is None:
237
  return None
238
 
239
+ view = py3Dmol.view(width=800, height=600)
240
+ view.addModel(protein_to_pdb(protein), "pdb")
241
+ view.setStyle({"cartoon": {"color": "lightgrey"}})
242
+ view.addModel(protein_to_pdb(aligned), "pdb")
243
+ view.setStyle({"model": -1}, {"cartoon": {"color": "lightgreen"}})
244
+ view.zoomTo()
245
 
246
+ return view
 
 
 
247
 
248
  def protein_to_pdb(protein: ESMProtein):
249
  pdb_str = ""
 
286
  return "Please upload a PDB file.", "No file uploaded", "", ""
287
 
288
  progress(0, desc="Starting prediction")
289
+ view, crmsd_text = prediction_visualization(pdb_file, num_runs, noise_level, num_frames, progress)
290
  steric_clash_text, norm_steric_clash_text = calculate_clashes_for_pdb(pdb_file)
291
+ if view is None:
292
  return "No successful predictions were made. Try adjusting the parameters or check the PDB file.", crmsd_text, steric_clash_text, norm_steric_clash_text
293
 
294
  progress(0.9, desc="Rendering visualization")
295
+
296
+ # Convert the py3Dmol view to HTML
297
+ view_html = view._make_html().replace("'", '"')
298
  html_content = f"""
299
+ <iframe style="width: 100%; height: 600px;" name="result" allow="midi; geolocation; microphone; camera;
300
+ display-capture; encrypted-media;" sandbox="allow-modals allow-forms
301
+ allow-scripts allow-same-origin allow-popups
302
+ allow-top-navigation-by-user-activation allow-downloads" allowfullscreen=""
303
+ allowpaymentrequest="" frameborder="0" srcdoc='<!DOCTYPE html><html>{view_html}</html>'></iframe>
 
 
 
 
 
 
304
  """
305
+
306
  progress(1.0, desc="Completed")
307
  return html_content, crmsd_text, steric_clash_text, norm_steric_clash_text
 
308
  except Exception as e:
309
  error_message = str(e)
310
  stack_trace = traceback.format_exc()