Atomu2014 commited on
Commit
5e5f5c4
·
1 Parent(s): 3b77f6e

remove PIL py3dmol

Browse files
Files changed (4) hide show
  1. app.py +3 -3
  2. core/utils/visualize.py +93 -93
  3. requirements.txt +0 -3
  4. 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
- 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
 
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