Skip to main content

Molecular visualization tools

Project description

COSMol-viewer

A high-performance molecular viewer for Python and Rust, powered by a unified Rust core. It supports both in-notebook visualization and native desktop rendering, with smooth playback for scientific animations.

COSMol-viewer is a compact, cross-platform renderer for molecular and geometric scenes. Unlike purely notebook-bound solutions such as py3Dmol, COSMol-viewer runs everywhere:

  • Native desktop window (Python or Rust) via egui
  • Jupyter / IPython notebook via WASM backend
  • Rust applications

All implementations share the same Rust rendering engine, ensuring consistent performance and visual output.


Quick concepts

  • Scene: container for shapes (molecules, proteins, spheres, etc.).
  • Viewer.render(scene, ...): create an interactive viewer in a native window or notebook canvas.
  • scene.save_image(path, ...) / scene.to_png(...) / scene.display(...): render the scene directly to a static PNG at any requested resolution. This is independent of notebook JavaScript or browser canvas readback.
  • scene.set_camera_view(...) / scene.rotate_camera(...): set the reproducible camera used by both static exports and newly created viewers.
  • viewer.update(scene): push incremental changes after Viewer.render() (real-time / streaming use-cases).
  • Animation: An Animation object containing frames and settings.
  • Animation(interval, loops, interpolate): stores precomputed frames and playback settings.
  • Viewer.play(animation, width, height): recommended for precomputed animations and demonstrations. The viewer takes care of playback timing and looping.

Why prefer play for demos?

  • Single call API (hand off responsibility to the viewer).
  • Built-in timing & loop control.
  • Optional interpolate mode between frames for visually pleasing playback even when input frame rate is low.

Why keep update?

  • update is ideal for real-time simulations, MD runs, or streaming data where frames are not precomputed. It provides strict fidelity (no interpolation) and minimal latency.

Usage

python

See examples in Google Colab.

Install with pip install cosmol-viewer

1. Static molecular rendering

from cosmol_viewer import Molecule, Scene

mol_data = open("molecule.sdf", "r", encoding="utf-8").read()

mol = Molecule.from_sdf(mol_data).centered()

scene = Scene()

scene.set_scale(1.0)

scene.add_shape_with_id("molecule", mol)

scene.set_camera_view(azimuth=35, elevation=20, distance=32, fov=18)
scene.save_image("rendered_scene.png", width=1600, height=1000)

Static exports and native interactive viewers both bootstrap native GL on desktop. save_image / to_png first try the fast in-process offscreen path; on platforms with a headless GL path, this avoids creating a GUI event loop. If the in-process path cannot be created after a native viewer has already run, they automatically retry in an isolated Python subprocess. Set COSMOL_VIEWER_RENDER_ISOLATED=1 to force that isolated path.

For an interactive native window:

from cosmol_viewer import Viewer

viewer = Viewer.render(scene, width=800, height=500)

print("Press Any Key to exit...", end='', flush=True)
_ = input()

In a notebook, use a static PNG display when you do not need interaction:

scene.display(width=1200, height=800)
scene.display(width=1200, height=800, background="transparent")

For an interactive notebook canvas, enable a transparent scene background before rendering:

scene.set_transparent_background()
scene.set_zoom_disabled()
scene.set_auto_rotate()
viewer = Viewer.render(scene, width=800, height=500)

For static exports, omit background to use the scene background, pass a color such as "#ffffff" or [255, 255, 255], or use "transparent" for a PNG with a transparent background.

2. Animation playback with Viewer.play

from cosmol_viewer import Scene, Viewer, Molecule, Animation

anim = Animation(interval=0.05, loops=-1, interpolate=False)
for i in range(1, 10):
    with open(f"frames/frame_{i}.sdf", "r") as f:
        mol = Molecule.from_sdf(f.read())

    scene = Scene()
    scene.add_shape(mol)
    anim.add_frame(scene)

Viewer.play(anim, width=800, height=500)  # loops=-1 for infinite repeat

3. Protein cartoon rendering

from cosmol_viewer import Protein, Scene, Viewer

mmcif_data = open("protein.cif", "r", encoding="utf-8").read()
protein = Protein.from_mmcif(mmcif_data).centered().rainbow_residues()

scene = Scene()
scene.add_shape_with_id("protein", protein)

viewer = Viewer.render(scene, width=800, height=500)

Protein.from_mmcif() and Protein.from_pdb() use COSMolKit's protein reader, then the viewer core assigns secondary structure before rendering a ChimeraX-style cartoon ribbon mesh. Use .rainbow_residues() for ChimeraX-style residue rainbow coloring, or .color("#10ACBF") for a uniform cartoon color.

more examples can be found in the examples folder:

cd cosmol_viewer
python .\examples\render_protein.py

Documentation

Please check out our documentation at here.


Contact

For any questions, issues, or suggestions, please contact wjt@cosmol.org or open an issue in the repository. We will review and address them as promptly as possible.

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

cosmol_viewer-0.2.23.tar.gz (152.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cosmol_viewer-0.2.23-cp39-abi3-win_amd64.whl (7.6 MB view details)

Uploaded CPython 3.9+Windows x86-64

cosmol_viewer-0.2.23-cp39-abi3-win32.whl (7.4 MB view details)

Uploaded CPython 3.9+Windows x86

cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (9.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ i686

cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

cosmol_viewer-0.2.23-cp39-abi3-macosx_11_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

cosmol_viewer-0.2.23-cp39-abi3-macosx_10_12_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file cosmol_viewer-0.2.23.tar.gz.

File metadata

  • Download URL: cosmol_viewer-0.2.23.tar.gz
  • Upload date:
  • Size: 152.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for cosmol_viewer-0.2.23.tar.gz
Algorithm Hash digest
SHA256 ece7a0d62164c251675306254107f7ffa3780b288ef857fbd7a94a6dd77651f9
MD5 3a357fe4030d73bae87725885234397e
BLAKE2b-256 b7d7dd7157286876249cbd24edf54cb7598014002d01e8876ffa1c39afb1607a

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 efa2e701027919487aa9c1c685124a67c1c4dd8a0bc7b42f086855dfd39ec8f7
MD5 2a4db715afa75c9f39480d74e4517f85
BLAKE2b-256 33d26f7c804835198bb2dc86b772bcb8053274593b00ecf67658ae88e856aa78

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-win32.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 8a758fe215fbc34fdcaef41b84a7146bbb212f7cbd4f6ca37e135ea937f4c726
MD5 2b91021704275ba66d3a222014db2099
BLAKE2b-256 2d1cab0dbd4600f02c33953c4118b87c38cb28b0735fe8b85812d38206045cc3

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0d631350955c9b498703ae07acd69572501fe3c59b20b096dfc70857897d32f
MD5 831cc5e95c1946b94bef2983d015385e
BLAKE2b-256 44b2d97f92ef599b2d6b8b2e10f2833cba49632a4c2d0e4e19a49719f24f3963

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 61623c6d2f2c37954dca2df8cd3bf6365e47767b0c0b2cd8a25cf10ebe94ad36
MD5 31d6bdd028d4a5b3fc53f5885c3b7b58
BLAKE2b-256 44b384572d324408e7a455c8062cb81071d02cebbb7617faf76f7090d23af3d3

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9a34ddbb97c75dff0600c1aa19e70cb6e6332743f8ee047bb48b84f42810c92
MD5 7238409a36e6b1e36bc2767d8d422f40
BLAKE2b-256 adfdbaa7ee99903041b61c64be138437bee68fb996ec381f31ef545e510e9aa7

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6724401ffb5567b4a465e65275c8fd5e3dfe5e917b309d5972b7af665d4d32de
MD5 f9615edfca7a21ec389c6a985497aeb7
BLAKE2b-256 e2cbf7954cbca3402e16b8873118a85e18db90b8ad2ad7c27376b78c82eafc5d

See more details on using hashes here.

File details

Details for the file cosmol_viewer-0.2.23-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cosmol_viewer-0.2.23-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 96788ff0860dc188bbc990a00b91b93f5a43bf6be8d1151bdb878d2034c9693e
MD5 740e735e87291ab3be00be00eab32ba2
BLAKE2b-256 18da0e2e2e9047f070dd6c3b2e0186527cc19cdc65847354228a0f33b78c6123

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page