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
AtomicSystemobjects 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:
- Biotite Removal: Direct dependency on
biotitefor parsing has been removed. All parsing is now handled by_proxider. - API Changes:
proxide.io.parsing.biotite->proxide.parse_structureproxide.physics.force_fields->proxide.load_forcefield
- JAX by Default: Most I/O functions now return JAX arrays by default. Use
use_jax=Falseif 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
Proteinresult type returned by the parsers; - parse options:
OutputSpecand its enums (CoordFormat,ErrorMode,HydrogenSource), whichparse_structuretakes; - 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 theproxide.iosubmodule, 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| proxide-0.1.0.tar.gz | 8.5 MB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.