Skip to main content

Python SDK for the Volt scientific computing platform

Project description

voltsdk

Python SDK for the Volt scientific computing platform.

Installation

pip install voltsdk

pip will select the platform wheel that matches the host operating system and architecture. VoltSDK wheels bundle the native Volt runtime under voltsdk/native/{bin,lib,share}, so users do not need to install the shipped TBB, hwloc, and related shared libraries manually for the bundled binaries.

Supported wheel targets published by CI:

  • linux_x86_64 built on ubuntu-24.04
  • macosx_14_0_arm64
  • win_amd64

Linux wheels target the Ubuntu 24.04 build baseline. Older glibc releases are not supported; document that requirement in downstream READMEs when you ship Linux-native workflows.

Optional extras:

pip install "voltsdk[visualization]"
pip install "voltsdk[notebook]"

Authenticated client

from voltsdk import VoltClient

client = VoltClient(
    secret_key="your-secret-key",
    base_url="https://api.example.com",
)

Open In Volt

Use the Volt web canvas as the viewer for local GLBs, GLB sequences, or existing Volt resources:

from voltsdk import open_in_volt

open_in_volt('out/frame.glb')
open_in_volt({
    0: 'out/frame-0000.glb',
    5000: 'out/frame-5000.glb',
    10000: 'out/frame-10000.glb',
})

Resource helpers open the exact canvas route:

trajectory.open_in_volt(timestep=5000)
frame.open_in_volt()
analysis.open_in_volt(timestep=5000)
exposure.open_in_volt(5000)
run['dislocations'].open_in_volt()

For plugin artifacts, open_in_volt(...) auto-assembles supported .json and .msgpack exporter payloads into a sibling .glb when needed.

For local files, VoltSDK serves them directly to /canvas/glb without creating fake analyses. In a Volt notebook it uses the Jupyter proxy; on a local machine it starts a tiny background file server. The browser still needs an authenticated Volt session. By default the viewer opens against https://app.voltcloud.dev; override it with volt_url=... or VOLT_APP_URL if needed.

SpatialAssembler

Volt exporter payloads can also be rendered locally from Python:

from voltsdk import SpatialAssembler, open_in_volt

assembler = SpatialAssembler()
glb_path = assembler.dislocations_glb(
    'output/ptm-dxa_dislocations.json',
    output_path='output/ptm-dxa_dislocations.glb',
)

open_in_volt(glb_path)

The Python API accepts either the full artifact file (.json or .msgpack) or the raw nested payload from export.AtomisticExporter, export.MeshExporter, or export.DislocationExporter.

You can also let a PluginRun do the conversion directly:

viewer_url = dxa_run['dislocations'].open_in_volt(open_browser=False)
mesh_glb = dxa_run['defect_mesh'].glb()

Plugin hub

VoltSDK 3.0 talks to the new Volt-Registry API (/packages/:scope/:name, /-/search) instead of the legacy hierarchical index.json. Bundles are downloaded and cached on first use:

from voltsdk import PluginHub

hub = PluginHub(default_publisher="voltlabs")
print(hub.list())                          # publisher-qualified marketplace listing

ptm = hub.get("polyhedral-template-matching")
result = ptm(
    "frame.dump",
    output_dir="out",
    crystal_structure="FCC",
    rmsd=0.1,
)
print(result["annotated.dump"].path)

The same hub is exposed on an authenticated client via client.plugins.

When a plugin subprocess is launched, VoltSDK also prepends its bundled native runtime directories to PATH, LD_LIBRARY_PATH, and DYLD_LIBRARY_PATH. This lets downloaded plugin bundles reuse the libraries installed with the wheel.

Configuration

Variable Purpose Default
VOLT_PLUGIN_REGISTRY Volt-Registry base URL https://registry.voltcloud.dev
VOLT_CACHE_DIR Local plugin cache $XDG_CACHE_HOME/volt
VOLT_REGISTRY_TOKEN Optional Bearer JWT/PAT for authenticated reads unset

Pinning versions

Plugin identifiers accept both the canonical npm-style form (@scope/name) and the legacy publisher@name form. Versions may be exact, the literal latest, or a semver range:

hub.get("@voltlabs/opendxa", "1.0.0")  # canonical, explicit version
hub.get("voltlabs@opendxa", "^1.0.0")  # legacy form + semver range
hub["voltlabs@opendxa"]                # shorthand for the latest version
hub.install("@voltlabs/opendxa")       # pre-download the latest bundle
hub.uninstall("@voltlabs/opendxa")     # drop every cached version

Registry endpoints

The Volt-Registry API endpoints VoltSDK consumes:

GET <registry>/packages/:scope/:name              -> Packument
GET <registry>/packages/:scope/:name/:version     -> VersionMetadata
GET <registry>/packages/:scope/:name/:version/-/:platform.tgz  -> 307 to signed tarball
GET <registry>/-/search?kind=engine&page=...      -> Search results

Each bundle is a tar+gzip archive containing bin/<binary> and optional lib/, scripts/, and share/ directories. The registry returns a 307 redirect to a signed RustFS URL for the actual tarball download.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

voltsdk-3.1.1.tar.gz (54.4 kB view details)

Uploaded Source

Built Distribution

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

voltsdk-3.1.1-py3-none-any.whl (59.1 kB view details)

Uploaded Python 3

File details

Details for the file voltsdk-3.1.1.tar.gz.

File metadata

  • Download URL: voltsdk-3.1.1.tar.gz
  • Upload date:
  • Size: 54.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for voltsdk-3.1.1.tar.gz
Algorithm Hash digest
SHA256 aefe436bf1183b9933686a20f7082eb2cc0405fb23269c01eccce0672f13b136
MD5 12dff6b8d5c823065e6d6dda97bc1870
BLAKE2b-256 b9a68fb0680550483f2f96148e21f293297f647b8b0220e2ce00082d9e679f4a

See more details on using hashes here.

File details

Details for the file voltsdk-3.1.1-py3-none-any.whl.

File metadata

  • Download URL: voltsdk-3.1.1-py3-none-any.whl
  • Upload date:
  • Size: 59.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for voltsdk-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a93b0c137ee9b2d474edb3c0c49fd3794b7f5663e7c024653bcde048142fa5b6
MD5 4659b332d9dc2d66926dbeb371954cd5
BLAKE2b-256 fea8962c3a173eb846d2e93fdc84415fa8e1dab15dee2b242015434d8c31b166

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