A Molstar-based protein viewer for Jupyter notebooks with py3dmol-compatible API
Project description
MolView
A Molstar-based protein viewer for Jupyter notebooks with a py3dmol-compatible API.
Features
- py3dmol-compatible API - Easy transition from py3dmol
- Powered by Molstar - Advanced molecular visualization engine
- Rich color themes - 7 color modes including rainbow gradients and pLDDT confidence
- Surface rendering - Customizable molecular surfaces
- Illustrative style - Artistic rendering with outlines
- Direct PDB/AlphaFold fetching - Download structures without leaving Python
- Grid layout - Compare multiple structures side-by-side
- Jupyter integration - Native display in notebooks
Installation
pip install -e .
Quick Start
import molview as mv
# Create viewer
v = mv.view(width=800, height=600)
# Load structure
with open('protein.pdb') as f:
v.addModel(f.read(), 'pdb')
# Display
v.show()
Fetching Structures from Databases
MolView can directly fetch structures from RCSB PDB and AlphaFold DB:
Fetch from RCSB PDB
import molview as mv
# Fetch ubiquitin structure (1UBQ)
data = mv.fetch_pdb('1UBQ')
v = mv.view()
v.addModel(data, 'pdb')
v.show()
Fetch mmCIF format
# Fetch in mmCIF format
data = mv.fetch_pdb('7BV2', format='mmcif')
v = mv.view()
v.addModel(data, 'mmcif')
v.show()
Fetch from AlphaFold DB
# Fetch AlphaFold prediction for Human ABL1 kinase
data = mv.fetch_alphafold('P00519')
v = mv.view()
v.addModel(data, 'mmcif')
v.setColorMode('plddt') # Color by confidence
v.show()
Search PDB Database
# Search for structures
pdb_ids = mv.search_pdb('hemoglobin', max_results=5)
print(pdb_ids) # ['1A3N', '1GZX', '2HHB', ...]
# Visualize first result
if pdb_ids:
data = mv.fetch_pdb(pdb_ids[0])
v = mv.view()
v.addModel(data, 'pdb')
v.show()
Color Modes
MolView supports all color modes from the nano protein viewer:
1. Element (by atom type)
v.setColorMode('element')
2. Custom (single color)
v.setColorMode('custom', color='#FF0000') # Red
v.setColorMode('custom', color='#4ECDC4') # Teal (default)
3. Residue (by amino acid)
v.setColorMode('residue')
4. Chain (by chain ID)
# Auto colors
v.setColorMode('chain')
# Custom chain colors
v.setColorMode('chain', custom_colors={
'A': '#FF0000', # Red
'B': '#00FF00', # Green
'C': '#0000FF' # Blue
})
5. Secondary Structure
# Default colors (helix=blue, sheet=green, coil=gray)
v.setColorMode('secondary')
# Custom colors
v.setColorMode('secondary',
helix_color='#FF0000', # Red helices
sheet_color='#00FF00', # Green sheets
coil_color='#0000FF' # Blue coils
)
6. Rainbow (gradient by sequence)
# Available palettes: 'rainbow', 'viridis', 'plasma', 'magma', 'blue-red', 'pastel'
v.setColorMode('rainbow', palette='viridis')
v.setColorMode('rainbow', palette='plasma')
v.setColorMode('rainbow', palette='magma')
7. pLDDT (confidence for predicted structures)
v.setColorMode('plddt')
Grid Viewer (Multiple Structures)
Compare multiple structures side-by-side in a grid layout:
# Create a 2x2 grid
v = mv.view(viewergrid=(2, 2), width=900, height=900)
# Load structures into specific positions
v.addModel(pdb1, 'pdb', viewer=(0, 0)) # Top-left
v.addModel(pdb2, 'pdb', viewer=(0, 1)) # Top-right
v.addModel(pdb3, 'pdb', viewer=(1, 0)) # Bottom-left
v.addModel(pdb4, 'pdb', viewer=(1, 1)) # Bottom-right
# Settings apply to all viewers
v.setColorMode('rainbow', palette='viridis')
v.setSurface(True, opacity=40)
v.show()
Note: In grid mode, the viewer=(row, col) parameter is required for addModel().
See example/grid_examples.ipynb for more grid layout examples.
Advanced Features
Surface Rendering
# Enable surface with default opacity (40%)
v.setSurface(True)
# Custom opacity (0-100)
v.setSurface(True, opacity=60)
# Custom surface color
v.setSurface(True, opacity=40, inherit_color=False, color='#FF0000')
Illustrative Style
# Enable artistic rendering with outlines
v.setIllustrativeStyle(True)
Camera Controls
# Reset camera view
v.zoomTo()
# Enable continuous rotation
v.spin(True)
Background Color
v.setBackgroundColor('#000000') # Black
v.setBackgroundColor('#FFFFFF') # White
Complete Example
import molview as mv
# Create viewer
v = mv.view(width=800, height=600)
# Load structure
with open('protein.pdb') as f:
pdb_data = f.read()
v.addModel(pdb_data, 'pdb')
# Set rainbow coloring with viridis palette
v.setColorMode('rainbow', palette='viridis')
# Add semi-transparent surface
v.setSurface(True, opacity=40)
# Enable illustrative style
v.setIllustrativeStyle(True)
# Set black background
v.setBackgroundColor('#000000')
# Display
v.show()
Comparison with py3dmol
MolView is designed to be a drop-in replacement for py3dmol with additional features:
py3dmol code:
import py3dmol
v = py3dmol.view(width=800, height=600)
v.addModel(pdb_data, 'pdb')
v.setStyle({'cartoon': {'color': 'spectrum'}})
v.show()
Equivalent MolView code:
import molview as mv
v = mv.view(width=800, height=600)
v.addModel(pdb_data, 'pdb')
v.setColorMode('rainbow')
v.show()
Supported Formats
- PDB - Protein Data Bank format
- mmCIF - Macromolecular Crystallographic Information File
- SDF - Structure Data File (coming soon)
API Reference
Viewer Creation
view(width, height, viewergrid)- Create viewer instanceviewergrid=(rows, cols)- Optional grid layout for multiple structures
Model Management
addModel(data, format, viewer)- Load structure dataviewer=(row, col)- Required in grid mode to specify position
clear()- Remove all models
Fetching Structures
fetch_pdb(pdb_id, format='pdb')- Fetch structure from RCSB PDBquery(pdb_id, format='pdb')- Alias for fetch_pdb (py3dmol compatibility)fetch_alphafold(uniprot_id, version=4)- Fetch AlphaFold predictionsearch_pdb(query_text, max_results=10)- Search PDB database
Styling
setColorMode(mode, **kwargs)- Set color themesetStyle(style)- Set representation (cartoon default)setSurface(enabled, opacity, inherit_color, color)- Configure surfacesetIllustrativeStyle(enabled)- Toggle illustrative renderingsetBackgroundColor(color)- Set background
Camera
zoomTo()- Reset camera viewspin(enabled)- Toggle continuous rotation
Display
show()- Render in notebook
Color Palettes
Rainbow Palettes
Available palettes for setColorMode('rainbow', palette='...'):
'rainbow'- Classic rainbow (ROYGBIV)'viridis'- Perceptually uniform (purple to yellow)'plasma'- Bright and vibrant (purple to yellow)'magma'- Dark and moody (black to white)'blue-red'- Simple blue to red gradient'pastel'- Soft pastel colors
Custom Color Palette
Pre-defined colors for setColorMode('custom', color='...'):
- Teal:
#4ECDC4(default) - Red:
#FF6B6B - Blue:
#4DABF7 - Green:
#69DB7C - Yellow:
#FFD93D - Orange:
#FF922B - Purple:
#DA77F2 - Pink:
#FF8CC8 - Cyan:
#15AABF - Gray:
#868E96
Requirements
- Python >=3.7
- IPython >=7.0.0
- Jupyter >=1.0.0
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Repository: github.com/54yyyu/molview
This package uses modern Python packaging with pyproject.toml (PEP 517/518).
Acknowledgments
- Built with Molstar - Modern molecular visualization toolkit
- API inspired by py3dmol - Python interface to 3Dmol.js
- Color palettes from scientific visualization best practices
Roadmap
- Multiple viewer grid support
- Selection and highlighting
- Animation playback
- Label/annotation support
- Export to image/video
- Additional representation styles (stick, sphere, line)
- Measurement tools
- Surface customization options
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file molview-0.1.0.tar.gz.
File metadata
- Download URL: molview-0.1.0.tar.gz
- Upload date:
- Size: 45.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e44c8f51aed44e50cf7b9314bd807d15bdd29291aad4d82e7017a7e0e2ec82c0
|
|
| MD5 |
02e59a2c1c54913fbd0e595981e1dc13
|
|
| BLAKE2b-256 |
17a4ea1fecaf6be2834f6dc48d66ca1294b2ce7c1227c989e0e6981834855381
|
Provenance
The following attestation bundles were made for molview-0.1.0.tar.gz:
Publisher:
publish.yml on 54yyyu/molview
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
molview-0.1.0.tar.gz -
Subject digest:
e44c8f51aed44e50cf7b9314bd807d15bdd29291aad4d82e7017a7e0e2ec82c0 - Sigstore transparency entry: 661786874
- Sigstore integration time:
-
Permalink:
54yyyu/molview@a549b036d3348bef95de735a405d041688d113ae -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/54yyyu
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a549b036d3348bef95de735a405d041688d113ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file molview-0.1.0-py3-none-any.whl.
File metadata
- Download URL: molview-0.1.0-py3-none-any.whl
- Upload date:
- Size: 44.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5217499697f5ac09c85c439f5d3019db63eab1785cd0e68f723561e45e3936b
|
|
| MD5 |
cfdb506f1998e98eeb0eeb47de6d239d
|
|
| BLAKE2b-256 |
3622b6dd7beb2dc78b26e3160d31fb01ad7bee153a62a7cf4793ac31b5f87a91
|
Provenance
The following attestation bundles were made for molview-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on 54yyyu/molview
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
molview-0.1.0-py3-none-any.whl -
Subject digest:
a5217499697f5ac09c85c439f5d3019db63eab1785cd0e68f723561e45e3936b - Sigstore transparency entry: 661786875
- Sigstore integration time:
-
Permalink:
54yyyu/molview@a549b036d3348bef95de735a405d041688d113ae -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/54yyyu
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a549b036d3348bef95de735a405d041688d113ae -
Trigger Event:
release
-
Statement type: