Skip to main content

stspeck

The Speck molecule viewer for Streamlit, with the same renderer and settings as the ipyspeck Jupyter widget: ambient occlusion, cartoons, molecular surfaces (optionally transparent), metallic and glossy materials, shadows, fog, outlines, highlighting, trajectories and unit cells.

pip install stspeck      # Python 3.8+, Streamlit 1.20+

ipyspeck 0.8

import streamlit as st
import stspeck

# Any structure as PDB, mmCIF, SDF / MOL or (extended) XYZ text (detected from the content)
stspeck.speck(data=open("1ubq.cif").read(), cartoon=True, surface=True, surfaceOpacity=0.35)
stspeck.speck(**stspeck.read_file("conformers.sdf.gz"), frame=2)

# Loaders return keyword arguments to splat into speck()
stspeck.speck(**stspeck.fetch_alphafold("Q8W3K0"), preset="cover", height=500)
stspeck.speck(**stspeck.fetch_pdb("4HHB"), highlight={"resName": "HEM"}, ghost=0.6)
stspeck.speck(**stspeck.from_ase(atoms), preset="metal")   # also from_rdkit, from_pymatgen
  • Settings: every ipyspeck setting is a keyword argument; see stspeck.SETTINGS for names and defaults, and stspeck.PRESETS for named looks (preset="cover").
  • Toolbar: styles, a looks menu, cartoon / surface / ligand toggles, standard views, auto-rotate, tap to focus (or Alt-click), a depth-of-field toggle, a color menu for cartoon, surface and atoms, and a camera button that downloads a high-resolution PNG (export_width=3000, export_scale=...). Toolbar choices persist across reruns.
  • Studio floor, illustration, cutaway: floor=0.9, floorReflection=0.3; preset="goodsell" (flat colors per chain, outlines between molecules), atomColor="type", palette="colorblind"; cutaway=0.5 slices off the front to show the inside (cutawayAxis="z" fixes the plane on the molecule, cutawayLight=0.6 lights the inside).
  • Colors: colorScheme="jmol" (speck, jmol, rasmol, newcpk) and per-element atomColors={"Au": "#ffcc33"} ('#rrggbb' or [r, g, b] in 0 - 1).
  • Touch and keyboard: one finger rotates, two fingers pinch to zoom and pan; arrows rotate, Shift+arrows pan, + / - zoom, 0 recenters, F focuses at the center.
  • State: with return_state=True the call returns the camera, the current settings and nframes; pass the camera back as camera= to restore a view.
  • Formats: fetch_pdb downloads mmCIF, which also covers entries too large for PDB files (e.g. the 4V6X ribosome); format="pdb" gets the legacy file, and assembly=1 a biological assembly (fetch_pdb("1STM", assembly=1): a complete virus capsid). Bonds listed in the file (CONECT, _struct_conn, SDF / MOL bonds) are always drawn.
  • Trajectories: multi-frame XYZ, multi-model PDB or mmCIF, or SDF conformers; drive frame= with a slider. MD: stspeck.speck(**stspeck.from_mdtraj(traj), frame=f) (or from_mdanalysis); frames go as binary coordinates (trajectory=), and count_frames(data, trajectory) gives the slider range (stspeck.count_frames(data) gives the range).

Run the demo with streamlit run example/app.py.

Rendered with the ipyspeck / stspeck renderer (see example/showcase.ipynb for the settings behind these looks). Click an image to open that scene in the live demo.

Macro photography (depth of field)


Gold nanoparticle, 923 atoms

Copper surface

Heme in hemoglobin (4HHB)

Imatinib in ABL kinase (1IEP)

Nucleosome DNA (1KX5)

AlphaFold RPP7 repeat domain

Proteins and complexes


AlphaFold RPP7, by pLDDT

Hemoglobin, glass surface (4HHB)

SARS-CoV-2 spike (6VXX)

IgG antibody (1IGT)

Green fluorescent protein (1EMA)

GroEL–GroES chaperonin (1AON)

KcsA K⁺ channel (1BL8)

CRISPR-Cas9 with guide RNA (4OO8)

HIV protease + saquinavir (1HXB)

Streptavidin–biotin (1STP)

Myoglobin, toon style (1MBN)

Collagen triple helix (1BKV)

Ubiquitin surface (1UBQ)

Human 80S ribosome, 237,685 atoms (4V6X)

Virus capsid, all 60 copies (1STM)

Bacteriophage MS2 capsid, 180 copies (2MS2)

Nucleic acids


Nucleosome (1KX5)

Transfer RNA (1EHZ)

G-quadruplex with K⁺ (1KF1)

Studio floor, illustration and cutaway


Hemoglobin on the studio floor (4HHB)

Gold–thiolate cluster on the studio floor

Hemoglobin, Goodsell style (4HHB)

Virus capsid, Goodsell style (1STM)

Ribosome large subunit, Goodsell style (1FFK)

Virus capsid, cut open (1STM)

Chemistry and materials


Gold–thiolate cluster

Copper crystal and unit cell

SrTiO₃ perovskite

MoS₂ monolayer

Graphene

Carbon nanotube

C₆₀ buckminsterfullerene

Taxol (paclitaxel)

Chlorophyll a

Caffeine

For Jupyter, use ipyspeck, which has the same settings.

Development

The frontend (frontend/) bundles the viewer shared with ipyspeck (../core). Build it with cd frontend && npm install && npm run build, which also compiles ../core. pip install . runs the same build when stspeck/static is missing.

License

BSD-3-Clause (see LICENSE). stspeck is based on Speck by wwwtyro, which is in the public domain (see LICENSE-SPECK).

Release files for stspeck 0.8.3

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

Source distribution (sdist)

Source distribution for stspeck 0.8.3
File Size Uploaded
stspeck-0.8.3.tar.gz 109.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for stspeck 0.8.3
File Interpreter ABI Platform
stspeck-0.8.3-py3-none-any.whl Python 3 none any Details

Total release size: 197.5 kB

Release files / stspeck-0.8.3.tar.gz

Download URL stspeck-0.8.3.tar.gz
Size 109.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4f96191fc734187e6da4e6e03bfed128dde335de3c01c40684c5ec69c5d05cb1
BLAKE2b-256 checksum
How to use checksums
2c7a63612cff25653d37b3f8066ff850f08fce5ee7ccd145c98081ec80182283
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / stspeck-0.8.3-py3-none-any.whl

Download URL stspeck-0.8.3-py3-none-any.whl
Size 87.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4e730c3e140dfec4fb60e1dfa28744549f0b8a29d3daf1e29551103ec7c217e7
BLAKE2b-256 checksum
How to use checksums
647d973a36902f501301ef6f6eaf512a0e83f0b2705f3409db636b4b49186f9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

0.8.4

2 release files

This release

0.8.3 This release

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

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