Skip to main content

Proxide

Pre-release toward 0.1.0. The Stability section is the single source for what is stable and what may change in a minor release.

Proxide is a high-performance library for Protein I/O and Physics bridging in JAX. It combines a flexible Python/JAX frontend with a highly optimized Rust backend (_proxider) to provide fast structure parsing, force field parameterization, and seamless integration with JAX MD.

NOTE: This is a research library in active development.


🚀 Features

  • Hybrid Architecture:
    • Rust Backend: 25x faster parsing (PDB/mmCIF), 50x faster topology generation, and robust force field parameterization.
    • JAX Frontend: Differentiable physics, geometric deep learning utilities, and seamless GPU integration.
  • Robust I/O: Load PDB, mmCIF, and PQR files with automatic error handling and corrections.
  • Molecular Dynamics: Parse OpenMM XML force fields, assign GAFF parameters (experimental), and generate fully parameterized AtomicSystem objects for JAX MD.
  • Trajectory Support: High-performance parsing of XTC, DCD, and TRR trajectories.

📦 Installation

Proxide requires a Rust toolchain to build the backend extension.

Prerequisites

  • Python: 3.11+
  • Rust: 1.75+ (Install via rustup.rs)
  • C++ Compiler: For compiling HDF5/chemfiles dependencies if needed.

From Source

# Clone the repository
git clone https://github.com/maraxen/proxide.git
cd proxide

# Install with uv (recommended) or pip
uv pip install .

# For development (includes test dependencies)
uv pip install -e ".[dev]"

The installation process will automatically compile the Rust _proxider extension using maturin.

Optional: Espaloma Charge (ML partial charges)

Inference uses the JAX/Equinox port expaloma (bundled weights; no PyTorch/DGL at runtime). The [espaloma] extra pulls expaloma from PyPI (and rdkit).

uv pip install -e ".[espaloma]"

For local development against an editable expaloma checkout, use a path override (e.g. uv.sources in your workspace) or:

uv pip install -e ../expaloma
uv pip install -e ".[dev]"

OpenFF toolkit wrapper (legacy upstream espaloma_charge): uv pip install -e ".[espaloma-openff]".

API: proxide.chem.partial_charges (assign_espaloma_charges_rdkit, etc.). Validation uses golden vectors under tests/data/espaloma_golden/; refresh those files when bumping expaloma.

pytest -m espaloma

🛠️ Usage

Loading a Structure

Use the high-level parse_structure function for fast, robust parsing:

from proxide import parse_structure

# Load a PDB file to a unified Protein object
protein = parse_structure("path/to/structure.pdb")

# Access data as JAX arrays
print(protein.coordinates.shape)  # (N_residues, 37, 3)

Force Field Parameterization

Proxide can automatically assign force field parameters (charges, radii, etc.) via the Rust backend:

from proxide import parse_structure, OutputSpec

# Configure parsing options
spec = OutputSpec(
    add_hydrogens=True,             # Add missing geometric hydrogens
    infer_bonds=True,               # Infer connectivity if missing
    parameterize_md=True,           # Compute MD parameters
    force_field="protein.ff14SB.xml" # Use standard AMBER force field
)

# Parse and parameterize in one step
protein = parse_structure("path/to/structure.pdb", spec)

# Access MD parameters
print(protein.charges)  # Partial charges
print(protein.sigma)    # Lennard-Jones sigma

Trajectory Parsing

from proxide import parse_xtc

# Fast Rust-based XTC parsing
traj_data = parse_xtc("path/to/trajectory.xtc")
coords = traj_data["coordinates"]  # (N_frames, N_atoms, 3)

Fast Partial Charges (Espaloma)

Proxide provides access to high-performance Expaloma graph-neural-network inference for charge assignment using native Rust embedded weights:

# Assign charges with the fast Rust backend
proxide charges molecule.sdf --backend rust

⚡ Performance

The migration to a Rust backend has yielded significant performance improvements compared to the pure Python implementation:

Operation Speedup Example Metric
PDB Parsing 25x -
mmCIF Parsing 25x -
Topology Generation 50x -
Force Field Loading 10x -
Espaloma Inference 7.5x 13.6ms (JAX) ➔ 1.8ms (Rust)

🚀 Deployment & CI/CD

Proxide uses Maturin to seamlessly build Python wheels and publish them to PyPI. To publish proxide releases securely without secrets, we utilize PyPI Trusted Publishing (OIDC). Do not configure a PYPI_API_TOKEN GitHub Secret. Instead, create a Trusted Publisher in the PyPI dashboard bound to this repository to allow .github/workflows/publish.yml to authenticate.


⚠️ Migration Notes

If you are migrating from older versions of Proxide:

  1. Biotite Removal: Direct dependency on biotite for parsing has been removed. All parsing is now handled by _proxider.
  2. API Changes:
    • proxide.io.parsing.biotite -> proxide.parse_structure
    • proxide.physics.force_fields -> proxide.load_forcefield
  3. JAX by Default: Most I/O functions now return JAX arrays by default. Use use_jax=False if you specifically need NumPy arrays.

Stability

Only core IO is stable at 0.1.0:

  • structure parsers and writers: parse_pdb, parse_mmcif, parse_pqr, parse_structure, parse_parm7, parse_amber_trajectory, write_pdb, write_mmcif, write_npz, write_dcd;
  • the Protein result type returned by the parsers;
  • parse options: OutputSpec and its enums (CoordFormat, ErrorMode, HydrogenSource), which parse_structure takes;
  • trajectory readers: parse_xtc, parse_dcd, parse_trr, read_xtc_lazy, read_xtc_parallel, read_xtc_ca_distogram, frame_count, n_atoms, TrajectoryStream, and the MDTraj and mdCATH HDF5 readers;
  • structure fetching: fetch_rcsb, fetch_afdb, fetch_foldcomp_database, and the proxide.io submodule, except the tensor-bundle helpers below.

OutputSpec is stable, but options that enable experimental features are experimental: parameterize_md, force_field, water_model, strict_parameterization, compute_electrostatics, electrostatics_noise, compute_vdw, compute_rbf, rbf_num_neighbors, relax_hydrogens, relax_max_iterations, auto_terminal_caps, missing_residue_mode and unit_system. The types UnitSystem and MissingResidueMode are experimental too. hydrogen_source is accepted, but no code path reads it yet.

Everything else exported from proxide is experimental and may change in a minor release. That covers GAFF2 typing (assign_gaff_atom_types), force field loading (load_forcefield, parameterize_molecule), atomic masses, GB radii and OBC2 scaling, water models, CMAP parameters, geometry helpers, the Jaccard and TM-align modules, the iterload function (top level only; the io submodule does not export it), and proxide.AtomicSystem. proxide.__experimental__ lists them.

The tensor-bundle helpers in proxide.io (save_tensor_bundle, load_tensor_bundle, flatten_tensor_dict, unflatten_tensor_dict, assert_bundle_keys) are experimental.

confind, rotlib and CCD/fixer are experimental too; they have no top-level Python exports at this version.

🔧 Development

Running Tests

# Run all tests
uv run pytest

# Run fast smoke tests
uv run pytest -m smoke

Building Wheels Locally

Before pushing a release to GitHub, test the wheel build locally to catch platform-specific issues early:

# Test the build locally (validates HDF5 static compilation and workflow config)
bash scripts/test-wheel-build.sh

# This will:
# 1. Check build prerequisites (cargo, rustc, python3)
# 2. Build the Rust extension with static HDF5 compilation
# 3. Verify the GitHub workflow is correctly configured

Note: The Rust extension uses static HDF5 compilation via the hdf5-metno crate with the static feature enabled. This means HDF5 is compiled from source during the build and included in the binary, eliminating platform-specific library dependencies.

Linting and Typing

# Linting
uv run ruff check src/proxide/ --fix

# Type Checking
uv run ty check

Metadata

Release files for proxide 0.1.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 proxide 0.1.0
File Size Uploaded Provenance
proxide-0.1.0.tar.gz 8.5 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for proxide 0.1.0
File
proxide-0.1.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
proxide-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details
proxide-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
proxide-0.1.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
proxide-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 76.2 MB

Release files / proxide-0.1.0.tar.gz

Download URL proxide-0.1.0.tar.gz
Size 8.5 MB
Tags Source
SHA-256 checksum
How to use checksums
0bba021e153d268b7a8518895ad36c3848848a4934ff886281d5244d2f38fe0e
BLAKE2b-256 checksum
How to use checksums
0d651e0d8ade4c8508b6aabbb4dfdd208f90497a36e478118e7400e9ec711504
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / proxide-0.1.0-cp311-abi3-win_amd64.whl

Download URL proxide-0.1.0-cp311-abi3-win_amd64.whl
Size 14.2 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0d23d517e0bf6e8b6966ae7e450b3c6fce2468f97b963b154c9c9708746649fc
BLAKE2b-256 checksum
How to use checksums
f492d1d49c3d3bbc97af51bad1cc2e5eec40dc6bbb4530e3051e79b2a43f1a4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / proxide-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL proxide-0.1.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 13.9 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
8adf2ffb2037ca3ff56acd713ce161be7d4d303ec98f4a153374052050986679
BLAKE2b-256 checksum
How to use checksums
a2ef16e84e9f9e0e13def80ba7ad454216c0f6664ee000e5c2b5299f4e3f1453
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / proxide-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL proxide-0.1.0-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 13.7 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
4633791044fb3afac13517486cd9a34743d69df2e654194da4eab5d8b6f9356a
BLAKE2b-256 checksum
How to use checksums
b17a85fec7ab24e3453d1a43e3d3b3357c263cf4a8ffac3eb517363b4ec23366
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / proxide-0.1.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL proxide-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
Size 12.7 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
44bfb0a91fde9878223c8ab56ce5b100db53a68fcdedd5fb4b8a15ac1fd81121
BLAKE2b-256 checksum
How to use checksums
f7d0989e9d97d105954683719da21b87a80165a88615e81c79b1ce0bc307082d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / proxide-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl

Download URL proxide-0.1.0-cp311-abi3-macosx_10_12_x86_64.whl
Size 13.2 MB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
144e481684136b330ee9fc7db0fa69816a61991aaddb47ef03eab61076a2d548
BLAKE2b-256 checksum
How to use checksums
ac1c48021b5a2defec5b92bf231e9d8bcdc551aaba4d9b3c701d1581f49d3cb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for proxide 0.1.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.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for proxide-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

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.

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