This is the repository for the Stmol project, a Streamlit component that uses py3Dmol to render molecules.
Stmol
Note: Due to recent changes in the 3Dmol.js package, it is recomended to install py3DMol in the following way,
pip install py3Dmol==2.0.0.post2
Stmol features
- An easy-to-use component for rendering interactive 3D molecular visualizations of protein and ligand structures within Streamlit web-apps
stmolcan render protein and ligand structures with just a few lines of Python code by utilizing popular visualization libraries, currently Py3DMol and Speck.- On the user-end,
stmoldoes not require expertise to interactively navigate. - On the developer-end,
stmolcan 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 installation
stmol runs with traditional Python stack. To install stmol from pypi, run this command in your terminal:
console
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,
console pip install streamlit Run this command in your terminal to install the latest release of py3Dmol, console pip install py3Dmol A recent addition to stmol project, in a form of static HTML wrapper is the speckplot() 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
Quickstart
1. Protein visualization using showmol()function
- Using
py3Dmol object
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)
- Using the
render_pdb()function
render_pdb() function accepts any PDB ID and returns a py3Dmol object.
from stmol import *
showmol(render_pdb(id = '1A2C'))
2. Labelling protein using renderpdbresn()function
Inorder to mark the residues, we can use the renderpdbresn() function, which in this example marks the Alanine [ALA] residues,
showmol(renderpdbresn(viewer = renderpdb(id = '1A2C'),resnlst = ['ALA',]))
Refer to the documentation here
Examples
You can find severalstmol examples here.
Browser support
Dependencies
Contribution to the project
We appreciate contributions from the community! Every little bit helps, and credit will always be given.- Reporting Bugs - Report bugs at https://github.com/napoles-uach/stmol/issues
- Fix Bugs - Look through the GitHub issues for bugs. Anything tagged with “bug” and “help wanted” is open to whoever wants to help with it.
- Implement Features - Look through the GitHub issues for features. Anything tagged with “enhancement” and “help wanted” is open to whoever wants to implement it.
- Submit Feedback - The best way to send feedback is to file an issue at https://github.com/napoles-uach/stmol/issues
Authors
- J. M. Nápoles-Duarte
- Avratanu Biswas
- Mitchell I. Parker
Aknowledgments
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/btu829How to cite
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}, }