GithubHelp home page GithubHelp logo

sorokinvld / stmol Goto Github PK

View Code? Open in Web Editor NEW

This project forked from napoles-uach/stmol

0.0 1.0 0.0 10.88 MB

This is the repository for the Stmol project, a Streamlit component that uses py3Dmol to render molecules.

Home Page: https://github.com/napoles-uach/stmol

License: MIT License

Python 51.60% TypeScript 43.95% HTML 4.45%

stmol's Introduction

Stmol


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.


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
  • stmol can 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, stmol does not require expertise to interactively navigate.
  • On the developer-end, 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 installation

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

Quickstart

1. Protein visualization using showmol()function
  • Using py3Dmol 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)
  • Using the render_pdb() function

The render_pdb() function accepts any PDB ID and returns a py3Dmol object.

from stmol import *
showmol(render_pdb(id = '1A2C'))

Quickstart-1

2. Labelling protein using render_pdb_resn()function

Inorder 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',]))

Quickstart-2

Refer to the documentation here

Examples

You can find several stmol examples here.

Browser support

  • Chrome, Edge, Firefox - link
  • Safari - link

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

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/btu829

How 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},   
}

stmol's People

Contributors

avrabyt avatar avratanubiswas avatar dependabot[bot] avatar lucandia avatar napoles-uach avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.