This is the repository for the Stmol project, a Streamlit component that uses py3Dmol to render molecules.
A component for building interactive molecular visualizations within Streamlit web-applications. It is designed to provide a state of the art visualizing and rendering 3D molecular structures for researchers, in a user-friendly manner.
pip install py3Dmol==2.0.0.post2
stmol
can render protein and ligand structures with just a few lines of Python code by utilizing popular visualization libraries, currently Py3DMol and Speck.stmol
does not require expertise to interactively navigate.stmol
can be easily integrated within structural bioinformatic and cheminformatic pipelines to provide a simple means for user-end researchers to advance biological studies and drug discovery efforts.stmol
runs with traditional Python stack.
To install stmol
from pypi, run this command in your terminal:
pip install stmol==0.0.9
Since the end goal of stmol
plugin, is to enable easy rendering of molecular structure within the streamlit applicaton, libraries such as
streamlit and py3Dmol are crucial to work with.
Run this command in your terminal to install the latest release of Streamlit,
pip install streamlit
Run this command in your terminal to install the latest release of py3Dmol,
pip install py3Dmol
A recent addition to stmol
project, in a form of static HTML wrapper is the speck_plot()
function, which helps in rendering Speck structures within the Streamlit web-application, is dependent on the following libraries,
ipyspeck(==0.6.1)
ipywidgets(==7.6.3)
ipython_genutils
showmol()
functionpy3Dmol object
To visualize any protein structure, all we need is the PDB ID of the protein.
from stmol import showmol
import py3Dmol
# 1A2C
# Structure of thrombin inhibited by AERUGINOSIN298-A from a BLUE-GREEN ALGA
xyzview = py3Dmol.view(query='pdb:1A2C')
xyzview.setStyle({'cartoon':{'color':'spectrum'}})
showmol(xyzview, height = 500,width=800)
render_pdb()
function
The render_pdb()
function accepts any PDB ID and returns a py3Dmol object.
from stmol import *
showmol(render_pdb(id = '1A2C'))
render_pdb_resn()
functionInorder to mark the residues, we can use the render_pdb_resn()
function, which in this example marks the Alanine [ALA] residues,
showmol(render_pdb_resn(viewer = render_pdb(id = '1A2C'),resn_lst = ['ALA',]))
You can find several stmol
examples here.
We appreciate contributions from the community! Every little bit helps, and credit will always be given.
We thank the authors of 3dmol.js and py3Dmol. Nicholas Rego, David Koes, 3Dmol.js: molecular visualization with WebGL, Bioinformatics, Volume 31, Issue 8, 15 April 2015, Pages 1322–1324, https://doi.org/10.1093/bioinformatics/btu829
Please include this citation if Stmol is used in an academic study:
Nápoles-Duarte JM, Biswas A, Parker MI, Palomares-Baez JP, Chávez-Rojo MA and Rodríguez-Valdez LM (2022) Stmol: A component for building interactive molecular visualizations within streamlit web-applications. Front. Mol. Biosci. 9:990846. doi: 10.3389/fmolb.2022.990846
Or use the following bibtex format,
@ARTICLE{stmol,
AUTHOR={Nápoles-Duarte, J.M. and Biswas, Avratanu and Parker, Mitchell I. and Palomares-Baez, J.P. and Chávez-Rojo, M. A. and Rodríguez-Valdez, L. M.},
TITLE={Stmol: A component for building interactive molecular visualizations within streamlit web-applications},
JOURNAL={Frontiers in Molecular Biosciences},
VOLUME={9},
YEAR={2022},
URL={https://www.frontiersin.org/articles/10.3389/fmolb.2022.990846},
DOI={10.3389/fmolb.2022.990846},
ISSN={2296-889X},
}