v0.4.4 · BSD 3-Clause

Molecular visualization, reimagined

An independent, GPU-first molecular viewer for research, scripting, and the web. Accelerated via WebGPU. Memory-safe. Compatible with the PyMOL commands and selections you already know — an entirely new engine underneath.

Molecular complex rendered in Patinae — cartoon representation with transparent surface, colored by chain
99%
PyMOL command compatible
×1000
Surface generation speedup
WebGPU
Desktop & browser first-class citizen

One download, ready in seconds. Python plugin system works out of the box — no extra setup needed.

macOS may block the app on first launch. To fix, run: xattr -cr /Applications/Patinae.app

All releases & source →
One structure, many stories

Every representation is GPU-accelerated with custom shaders. No legacy OpenGL — pure WebGPU pipeline.

1FSD protein in cartoon representation
Cartoon
Secondary structure ribbons — helices, sheets with arrow taper, loops as smooth tubes
1FSD protein in sticks representation
Sticks
Cylinder bonds with sphere caps, double and aromatic bond rendering
1FSD protein in surface representation
Surface
Molecular surfaces via parallelized marching cubes — SAS, SES, VdW
1FSD protein in spheres representation
Spheres
Van der Waals spheres via GPU ray-sphere impostor shading
Built for the next 25 years

Its roots are in PyMOL, but Patinae has grown into an independent engine of its own — built in a language designed for performance and safety.

WebGPU rendering
Modern wgpu backend with GPU impostor shaders for spheres and cylinders, multi-directional shadow mapping, and multi-light Phong shading.
🔒
Memory-safe by design
Rust's ownership model guarantees correctness at compile time. No buffer overflows, no segfaults, no use-after-free.
🐍
Python API via PyO3
The familiar cmd.* interface, custom commands via cmd.extend(), script execution. Drop-in compatibility for existing workflows.
📦
Modular crates
Independent crates for every component. Use just the selection parser, or the file readers, or the full GUI. No monolith.
🗂️
Format support
PDB, mmCIF, bCIF, MOL2, SDF, XYZ, GRO — and PyMOL session files (.pse). Load structures from any source.
🎯
Full selection language
Boolean algebra, distance operators, expansion operators, numeric comparisons, slash-macro syntax. Full PyMOL compatibility.
🧩
Plugin system
Dynamic native Rust plugins (dylib/cdylib), IPC server, and embedded Python via PyO3. Extend the viewer your way.
🔬
Structural analysis
Kabsch alignment, CE structural alignment, symmetry detection, SVD decomposition — built-in, not bolted on.
🖥️
Cross-platform
macOS, Linux, Windows. A native Slint desktop app with docked panels, sequence and movie views, and REPL — that looks native everywhere.
🧪
Molecular mechanics
A dedicated patinae-mm engine: GROMACS force fields (Amber19SB, CHARMM27, OPLS-AA), energy evaluation, minimization, hydrogens, mutations, rotamers, and scoring.
💎
GPU-native ray tracing
The ray command traces renderer-owned GPU artifacts with the BVH built on the GPU. Large scenes stay resident instead of streaming through the CPU.
📊
Renderer memory profiles
Auto, performance, balanced, lite, and manual:<MiB> policies with budget-aware planning — so constrained and integrated GPUs scale down deliberately, not mysteriously.
patinae
# Load a structure from PDB
Patinae> fetch 1alk

# Show cartoon and color by chain
Patinae> show cartoon
Patinae> color chain

# Add transparent surface
Patinae> show surface
Patinae> set transparency, 0.7

# Select active site residues
Patinae> select site, byres near_to 5 of resn ZN
Patinae> show sticks, site
Patinae> set stick_color, atomic, site

# Save the session
Patinae> save my_session.prs

Feels like home

If you know PyMOL, you know Patinae. The same command syntax, the same selection algebra, the same muscle memory — an independent engine that speaks the language you already use.

  • Full PyMOL command set — load, fetch, show, hide, color, select, set, save
  • Selection algebra with boolean, distance, and expansion operators
  • Script execution (.pml files)
  • Python scripting via PyO3
  • Session files (.prs native, .pse import)

Make it yours

Invent your own commands. Change interface. Read and write any file format. Automate entire workflows — or just play at work.

  • Create custom commands that feel native
  • Use any scripting language — Python, Lua, or maybe your own
  • Read and write files in any format you need
  • Add your own GUI panels and controls
  • Connect to external tools and pipelines
  • Yes, we already ran DOOM in it
DOOM running inside Patinae as a plugin demo
Skripkin mode

A unique lighting preset inspired by structural bioinformatics aesthetics. Multi-directional soft illumination that brings out secondary structure detail.

Modular by design

Every component is an independent crate. Use the selection parser in your pipeline, the renderer in your app, or the full GUI.

Application layer
patinae
Native desktop app (Slint)
patinae-cmd
Command parser & executor
patinae-plugin
Plugin SDK & host
patinae-framework
Messaging & core components
Rendering layer
patinae-scene
Viewer, camera, scene graph
patinae-render
WebGPU rendering engine
Domain layer
patinae-mol
Core data: Atom, Bond, Molecule
patinae-io
Format parsers & writers
patinae-session
Sessions save & load
patinae-mm
Molecular-mechanics engine
Foundation
patinae-select
Selection language
patinae-color
Colors, schemes, ramps
patinae-settings
Configuration system
Plugins
raytracer
GPU ray tracing
python
Embedded Python scripting
ipc
Socket control
hello
Minimal example
Warren Lyford DeLano
1972–2009
Patinae exists because Warren DeLano created PyMOL — and made it open-source at a time when publication-quality molecular visualization was largely limited to expensive commercial tools. That decision gave an entire generation of structural biologists a tool they could freely use, modify, and learn from. This project carries that spirit forward: a modern codebase, open by default, built with respect for the working scientist. We owe a great deal to his work.

Ready to try it?

Patinae is free, open-source, and ready for your structures.

By the way — you're already using it. Scroll back up to the Skripkin example and try to rotate or zoom. That's not an image, it's the web version of Patinae running live in your browser.

Get Patinae Docs — Coming soon