remove PIL py3dmol
Browse files- app.py +3 -3
- core/utils/visualize.py +93 -93
- requirements.txt +0 -3
- visualize.py +0 -93
app.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
-
from PIL import Image
|
| 3 |
-
import base64
|
| 4 |
-
import io
|
| 5 |
import glob
|
| 6 |
import numpy as np
|
| 7 |
from gradio_molecule3d import Molecule3D
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
+
# from PIL import Image
|
| 3 |
+
# import base64
|
| 4 |
+
# import io
|
| 5 |
import glob
|
| 6 |
import numpy as np
|
| 7 |
from gradio_molecule3d import Molecule3D
|
core/utils/visualize.py
CHANGED
|
@@ -1,93 +1,93 @@
|
|
| 1 |
-
import os
|
| 2 |
-
import py3Dmol
|
| 3 |
-
from rdkit import Chem
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
def visualize_complex(pdb_block, sdf_block, show_protein_surface=True, show_ligand=True, show_ligand_surface=True):
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
def visualize_data(data, root, show_ligand=True, show_surface=True):
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
def visualize_generated_mol(protein_filename, mol, root, show_surface=False, opacity=0.5):
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
def MolTo3DView(mol, size=(300, 300), style="stick", surface=False, opacity=0.5):
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
|
|
|
| 1 |
+
# import os
|
| 2 |
+
# import py3Dmol
|
| 3 |
+
# from rdkit import Chem
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
# def visualize_complex(pdb_block, sdf_block, show_protein_surface=True, show_ligand=True, show_ligand_surface=True):
|
| 7 |
+
# view = py3Dmol.view()
|
| 8 |
+
|
| 9 |
+
# # Add protein to the canvas
|
| 10 |
+
# view.addModel(pdb_block, 'pdb')
|
| 11 |
+
# if show_protein_surface:
|
| 12 |
+
# view.addSurface(py3Dmol.VDW, {'opacity': 0.7, 'color': 'white'}, {'model': -1})
|
| 13 |
+
# else:
|
| 14 |
+
# view.setStyle({'model': -1}, {'cartoon': {'color': 'spectrum'}, 'line': {}})
|
| 15 |
+
# view.setStyle({'model': -1}, {"cartoon": {"style": "edged", 'opacity': 0}})
|
| 16 |
+
|
| 17 |
+
# # Add ligand to the canvas
|
| 18 |
+
# if show_ligand:
|
| 19 |
+
# view.addModel(sdf_block, 'sdf')
|
| 20 |
+
# view.setStyle({'model': -1}, {'stick': {}})
|
| 21 |
+
# # view.setStyle({'model': -1}, {'cartoon': {'color': 'spectrum'}, 'line': {}})
|
| 22 |
+
# if show_ligand_surface:
|
| 23 |
+
# view.addSurface(py3Dmol.VDW, {'opacity': 0.8}, {'model': -1})
|
| 24 |
+
|
| 25 |
+
# view.zoomTo()
|
| 26 |
+
# return view
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
# def visualize_data(data, root, show_ligand=True, show_surface=True):
|
| 30 |
+
# protein_path = os.path.join(root, data.protein_filename)
|
| 31 |
+
# ligand_path = os.path.join(root, data.ligand_filename)
|
| 32 |
+
# with open(protein_path, 'r') as f:
|
| 33 |
+
# pdb_block = f.read()
|
| 34 |
+
# with open(ligand_path, 'r') as f:
|
| 35 |
+
# sdf_block = f.read()
|
| 36 |
+
# return visualize_complex(pdb_block, sdf_block, show_ligand=show_ligand, show_surface=show_surface)
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
# def visualize_generated_mol(protein_filename, mol, root, show_surface=False, opacity=0.5):
|
| 40 |
+
# protein_path = os.path.join(root, protein_filename)
|
| 41 |
+
# with open(protein_path, 'r') as f:
|
| 42 |
+
# pdb_block = f.read()
|
| 43 |
+
|
| 44 |
+
# view = py3Dmol.view()
|
| 45 |
+
|
| 46 |
+
# # Add protein to the canvas
|
| 47 |
+
# view.addModel(pdb_block, 'pdb')
|
| 48 |
+
# view.setStyle({'model': -1}, {'cartoon': {'color': 'spectrum'}, 'line': {}})
|
| 49 |
+
|
| 50 |
+
# mblock = Chem.MolToMolBlock(mol)
|
| 51 |
+
# view.addModel(mblock, 'mol')
|
| 52 |
+
# view.setStyle({'model': -1}, {'stick': {}, 'sphere': {'radius': 0.35}})
|
| 53 |
+
# if show_surface:
|
| 54 |
+
# view.addSurface(py3Dmol.SAS, {'opacity': opacity}, {'model': -1})
|
| 55 |
+
|
| 56 |
+
# view.zoomTo()
|
| 57 |
+
# return view
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
# def MolTo3DView(mol, size=(300, 300), style="stick", surface=False, opacity=0.5):
|
| 61 |
+
# """Draw molecule in 3D
|
| 62 |
+
|
| 63 |
+
# Args:
|
| 64 |
+
# ----
|
| 65 |
+
# mol: rdMol, molecule to show
|
| 66 |
+
# size: tuple(int, int), canvas size
|
| 67 |
+
# style: str, type of drawing molecule
|
| 68 |
+
# style can be 'line', 'stick', 'sphere', 'carton'
|
| 69 |
+
# surface, bool, display SAS
|
| 70 |
+
# opacity, float, opacity of surface, range 0.0-1.0
|
| 71 |
+
# Return:
|
| 72 |
+
# ----
|
| 73 |
+
# viewer: py3Dmol.view, a class for constructing embedded 3Dmol.js views in ipython notebooks.
|
| 74 |
+
# """
|
| 75 |
+
# assert style in ('line', 'stick', 'sphere', 'carton')
|
| 76 |
+
|
| 77 |
+
# viewer = py3Dmol.view(width=size[0], height=size[1])
|
| 78 |
+
# if isinstance(mol, list):
|
| 79 |
+
# for i, m in enumerate(mol):
|
| 80 |
+
# mblock = Chem.MolToMolBlock(m)
|
| 81 |
+
# viewer.addModel(mblock, 'mol' + str(i))
|
| 82 |
+
# elif len(mol.GetConformers()) > 1:
|
| 83 |
+
# for i in range(len(mol.GetConformers())):
|
| 84 |
+
# mblock = Chem.MolToMolBlock(mol, confId=i)
|
| 85 |
+
# viewer.addModel(mblock, 'mol' + str(i))
|
| 86 |
+
# else:
|
| 87 |
+
# mblock = Chem.MolToMolBlock(mol)
|
| 88 |
+
# viewer.addModel(mblock, 'mol')
|
| 89 |
+
# viewer.setStyle({style: {}})
|
| 90 |
+
# if surface:
|
| 91 |
+
# viewer.addSurface(py3Dmol.SAS, {'opacity': opacity})
|
| 92 |
+
# viewer.zoomTo()
|
| 93 |
+
# return viewer
|
requirements.txt
CHANGED
|
@@ -9,9 +9,6 @@ matplotlib==3.4.3
|
|
| 9 |
numpy==1.23.1
|
| 10 |
openbabel==3.1.1.1
|
| 11 |
overrides==7.7.0
|
| 12 |
-
Pillow==9.2.0
|
| 13 |
-
Pillow==10.3.0
|
| 14 |
-
py3Dmol==2.1.0
|
| 15 |
pytorch_lightning==2.0.8
|
| 16 |
PyYAML==6.0.1
|
| 17 |
PyYAML==6.0.1
|
|
|
|
| 9 |
numpy==1.23.1
|
| 10 |
openbabel==3.1.1.1
|
| 11 |
overrides==7.7.0
|
|
|
|
|
|
|
|
|
|
| 12 |
pytorch_lightning==2.0.8
|
| 13 |
PyYAML==6.0.1
|
| 14 |
PyYAML==6.0.1
|
visualize.py
DELETED
|
@@ -1,93 +0,0 @@
|
|
| 1 |
-
import os
|
| 2 |
-
import py3Dmol
|
| 3 |
-
from rdkit import Chem
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
def visualize_complex(pdb_block, sdf_block, show_protein_surface=True, show_ligand=True, show_ligand_surface=True):
|
| 7 |
-
view = py3Dmol.view()
|
| 8 |
-
|
| 9 |
-
# Add protein to the canvas
|
| 10 |
-
view.addModel(pdb_block, 'pdb')
|
| 11 |
-
if show_protein_surface:
|
| 12 |
-
view.addSurface(py3Dmol.VDW, {'opacity': 0.7, 'color': 'white'}, {'model': -1})
|
| 13 |
-
else:
|
| 14 |
-
view.setStyle({'model': -1}, {'cartoon': {'color': 'spectrum'}, 'line': {}})
|
| 15 |
-
view.setStyle({'model': -1}, {"cartoon": {"style": "edged", 'opacity': 0}})
|
| 16 |
-
|
| 17 |
-
# Add ligand to the canvas
|
| 18 |
-
if show_ligand:
|
| 19 |
-
view.addModel(sdf_block, 'sdf')
|
| 20 |
-
view.setStyle({'model': -1}, {'stick': {}})
|
| 21 |
-
# view.setStyle({'model': -1}, {'cartoon': {'color': 'spectrum'}, 'line': {}})
|
| 22 |
-
if show_ligand_surface:
|
| 23 |
-
view.addSurface(py3Dmol.VDW, {'opacity': 0.8}, {'model': -1})
|
| 24 |
-
|
| 25 |
-
view.zoomTo()
|
| 26 |
-
return view
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
def visualize_data(data, root, show_ligand=True, show_surface=True):
|
| 30 |
-
protein_path = os.path.join(root, data.protein_filename)
|
| 31 |
-
ligand_path = os.path.join(root, data.ligand_filename)
|
| 32 |
-
with open(protein_path, 'r') as f:
|
| 33 |
-
pdb_block = f.read()
|
| 34 |
-
with open(ligand_path, 'r') as f:
|
| 35 |
-
sdf_block = f.read()
|
| 36 |
-
return visualize_complex(pdb_block, sdf_block, show_ligand=show_ligand, show_surface=show_surface)
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
def visualize_generated_mol(protein_filename, mol, root, show_surface=False, opacity=0.5):
|
| 40 |
-
protein_path = os.path.join(root, protein_filename)
|
| 41 |
-
with open(protein_path, 'r') as f:
|
| 42 |
-
pdb_block = f.read()
|
| 43 |
-
|
| 44 |
-
view = py3Dmol.view()
|
| 45 |
-
|
| 46 |
-
# Add protein to the canvas
|
| 47 |
-
view.addModel(pdb_block, 'pdb')
|
| 48 |
-
view.setStyle({'model': -1}, {'cartoon': {'color': 'spectrum'}, 'line': {}})
|
| 49 |
-
|
| 50 |
-
mblock = Chem.MolToMolBlock(mol)
|
| 51 |
-
view.addModel(mblock, 'mol')
|
| 52 |
-
view.setStyle({'model': -1}, {'stick': {}, 'sphere': {'radius': 0.35}})
|
| 53 |
-
if show_surface:
|
| 54 |
-
view.addSurface(py3Dmol.SAS, {'opacity': opacity}, {'model': -1})
|
| 55 |
-
|
| 56 |
-
view.zoomTo()
|
| 57 |
-
return view
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
def MolTo3DView(mol, size=(300, 300), style="stick", surface=False, opacity=0.5):
|
| 61 |
-
"""Draw molecule in 3D
|
| 62 |
-
|
| 63 |
-
Args:
|
| 64 |
-
----
|
| 65 |
-
mol: rdMol, molecule to show
|
| 66 |
-
size: tuple(int, int), canvas size
|
| 67 |
-
style: str, type of drawing molecule
|
| 68 |
-
style can be 'line', 'stick', 'sphere', 'carton'
|
| 69 |
-
surface, bool, display SAS
|
| 70 |
-
opacity, float, opacity of surface, range 0.0-1.0
|
| 71 |
-
Return:
|
| 72 |
-
----
|
| 73 |
-
viewer: py3Dmol.view, a class for constructing embedded 3Dmol.js views in ipython notebooks.
|
| 74 |
-
"""
|
| 75 |
-
assert style in ('line', 'stick', 'sphere', 'carton')
|
| 76 |
-
|
| 77 |
-
viewer = py3Dmol.view(width=size[0], height=size[1])
|
| 78 |
-
if isinstance(mol, list):
|
| 79 |
-
for i, m in enumerate(mol):
|
| 80 |
-
mblock = Chem.MolToMolBlock(m)
|
| 81 |
-
viewer.addModel(mblock, 'mol' + str(i))
|
| 82 |
-
elif len(mol.GetConformers()) > 1:
|
| 83 |
-
for i in range(len(mol.GetConformers())):
|
| 84 |
-
mblock = Chem.MolToMolBlock(mol, confId=i)
|
| 85 |
-
viewer.addModel(mblock, 'mol' + str(i))
|
| 86 |
-
else:
|
| 87 |
-
mblock = Chem.MolToMolBlock(mol)
|
| 88 |
-
viewer.addModel(mblock, 'mol')
|
| 89 |
-
viewer.setStyle({style: {}})
|
| 90 |
-
if surface:
|
| 91 |
-
viewer.addSurface(py3Dmol.SAS, {'opacity': opacity})
|
| 92 |
-
viewer.zoomTo()
|
| 93 |
-
return viewer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|