Skip to main content

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.

Full installation, workflow, and Python API documentation is available at https://cosmol-studio.github.io/COSMol-viewer/.

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. Google Colab is detected automatically and uses an isolated software-rendering subprocess, so notebook code does not need to set either this variable or LIBGL_ALWAYS_SOFTWARE.

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.

Metadata

Release files for cosmol-viewer 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cosmol-viewer 0.3.0
File Size Uploaded Provenance Actions
cosmol_viewer-0.3.0.tar.gz 162.0 kB Without provenance Details for cosmol_viewer-0.3.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for cosmol-viewer 0.3.0
File Actions
cosmol_viewer-0.3.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details for cosmol_viewer-0.3.0-cp39-abi3-win_amd64.whl
cosmol_viewer-0.3.0-cp39-abi3-win32.whl CPython 3.9 abi3 Windows x86-32 Details for cosmol_viewer-0.3.0-cp39-abi3-win32.whl
cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details for cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-32 Details for cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details for cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
cosmol_viewer-0.3.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details for cosmol_viewer-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
cosmol_viewer-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details for cosmol_viewer-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl

Total release size: 57.6 MB

Release files / cosmol_viewer-0.3.0.tar.gz

Download URL cosmol_viewer-0.3.0.tar.gz
Size 162.0 kB
Tags Source
SHA-256 checksum
How to use checksums
177adf628a6576aae583b8d000bd66f3dcba94ebbfbbf485cafc1d379d454097
BLAKE2b-256 checksum
How to use checksums
452515b1d1d1888c217aabb8f74c9fc61b778b92b9f573a89fe10ea8cd436464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-win_amd64.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-win_amd64.whl
Size 7.8 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
f7ea043202122964ec3fd24f5c97a17559c1d4be782b319f60faa9637dca44a2
BLAKE2b-256 checksum
How to use checksums
0cc6d43c87853593634880e0901ae7e33842cf34bc5d81ba66e78993346e539b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-win32.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-win32.whl
Size 7.7 MB
Tags CPython 3.9 Windows x86-32 abi3
SHA-256 checksum
How to use checksums
45318fbf3766a5f4580a38003d997196ad19674bf324287f2ba2a3d58c7a34a0
BLAKE2b-256 checksum
How to use checksums
2fcae756a3f01c0171ff31b8d4c4fdaff3603d3d45c74612fd367558ed57613b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.0 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
14a3205d0e1791306949a241c026fddd87e670f727735cf042f57c44bda01781
BLAKE2b-256 checksum
How to use checksums
32e9c8565864da0694fcde08c7805fade6ab28ccbfa8adb122e24f67025c5fcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Size 9.5 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-32 abi3
SHA-256 checksum
How to use checksums
5b627d1f4023d926be0821ed03cf270949a307930292829b5b1dbba0ff2f88ef
BLAKE2b-256 checksum
How to use checksums
8b3b97b27d30cc8172f199845f89db64b2e18e221a470ff35df5bd86e38e989a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.5 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
17ba4ac9ce3f7dc69cd5e72fe39fe737f939fe3f1ca5cc6f3b010d5de6550fa8
BLAKE2b-256 checksum
How to use checksums
f454cef03267f49c8aacf77ccecd5efc2d6c1c019776bdfa2866d6c80ac9f848
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-macosx_11_0_arm64.whl
Size 7.2 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2fee3e3e22936ebb1d904304358850787fd07e062b86c2ba13598459dc515440
BLAKE2b-256 checksum
How to use checksums
3973556aa88adafa9c81a4ae63ecaf5afe8826a7a0b79b51af1f23768bbba121
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / cosmol_viewer-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl

Download URL cosmol_viewer-0.3.0-cp39-abi3-macosx_10_12_x86_64.whl
Size 7.7 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
5cc3f0bd4bc234d0b63317b5663e794b7173bb8b8b5e714d054c2c15174c65a4
BLAKE2b-256 checksum
How to use checksums
21c69efd50d508010fa6a0c8aa29ce3d52fe62cd40d9e6cca01fb05b3e62cc99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Security for cosmol-viewer 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.3.0 This release

8 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page