Skip to main content

C++ core rewrite of common Xponge workflows with a Python compatibility layer

Project description

XpongeCPP

Preview beta: XpongeCPP is currently a preview release and is under active beta testing.

预览版说明:XpongeCPP 当前仍处于预览阶段,正在进行 Beta 测试。

Docs / 文档入口

XpongeCPP is a new C++ implementation of common Xponge workflows with a thin Python compatibility layer.

The original Xponge repository is used only as a reference implementation and regression baseline. This repository does not share the original Python object model internally.

Installation

PyPI-style installation target

The packaging target is:

pip install XpongeCPP

After installation, both of these should work:

import XpongeCPP
import Xponge

The wheel is configured to include both:

  • src/XpongeCPP
  • src/Xponge

so old Xponge package-name imports can continue to work after installation.

Automatic optional chemistry dependencies

The package now declares a practical default dependency set for pip users:

  • numpy
  • PubChemPy
  • MDAnalysis
  • rdkit
  • pyscf on non-Windows platforms
  • XpongeLib

Windows automatically skips pyscf through environment markers.

XpongeLib is included so legacy gaff.parmchk2_gaff(...) workflows can resolve the XpongeLib bridge automatically after installation.

See:

GitHub Actions packaging matrix

The repository CI currently builds packages on:

  • Linux x64: ubuntu-24.04
  • Linux arm64: ubuntu-24.04-arm
  • macOS Intel: macos-15-intel
  • macOS arm64: macos-15
  • Windows x64: windows-2025

Validation is split into two layers:

  • all platforms run a minimal wheel smoke test with numpy installed
  • Linux x64 additionally runs a full dependency install smoke test

This keeps wheel validation broad across operating systems and CPU architectures without making every matrix job depend on the full optional chemistry stack.

v1 Scope

  • Amber-first force-field workflows.
  • Flat C++ storage with Molecule, Residue, and ResidueType view semantics.
  • Common Python entry points such as load_pdb, load_mol2, Add_Solvent_Box, Set_Box_Padding, Save_SPONGE_Input, and Assign.
  • Numeric equivalence goals for SPONGE input, not byte-for-byte compatibility.

Development Environments

The lightweight development path still uses rtk uv:

rtk uv pip install -e . --force-reinstall --no-cache-dir
rtk uv run pytest -q

Full Assign validation needs optional chemistry backends. Use pixi for a reproducible environment with RDKit, PubChemPy, and PySCF:

pixi run install-dev
pixi run test-assign-full
pixi run test-resp
pixi run test

RESP supports a multi-backend strategy:

  • default backend: PySCF
  • optional backend: Psi4
  • shared dispatch layer: XpongeCPP.qm

Example:

assign.calculate_charge("resp", backend="pyscf")
assign.calculate_charge("resp", backend="psi4")

from XpongeCPP import qm

qm.run_scf(assign, backend="pyscf")
qm.optimize_geometry(assign, backend="pyscf")

For Windows RESP workflows, install Psi4 separately and select it explicitly:

conda install -c conda-forge psi4
pip install XpongeCPP

PubChem network tests remain opt-in through the test environment; default Pixi tests use local mocks or dependency checks and do not require live network access.

Documentation

Packaging roadmap note

The current repository uses a hand-written GitHub Actions workflow plus scripts/build_pypi.py for packaging validation. We are deliberately keeping this simpler workflow for now because it makes the Xponge/XpongeCPP dual package layout and the minimal-vs-full smoke split easy to audit.

cibuildwheel is still a good future option once the wheel matrix and release policy stabilize further, but it is not the current default.

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

xpongecpp-0.1.3.tar.gz (6.6 MB view details)

Uploaded Source

Built Distributions

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

xpongecpp-0.1.3-cp311-cp311-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.11Windows x86-64

xpongecpp-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

xpongecpp-0.1.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

xpongecpp-0.1.3-cp311-cp311-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

xpongecpp-0.1.3-cp311-cp311-macosx_15_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

File details

Details for the file xpongecpp-0.1.3.tar.gz.

File metadata

  • Download URL: xpongecpp-0.1.3.tar.gz
  • Upload date:
  • Size: 6.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xpongecpp-0.1.3.tar.gz
Algorithm Hash digest
SHA256 69189c3207dd6f91e1548ef812a0961584911dc4771c7310cf19396b9bd691ed
MD5 aeb8dad8216fdf232b7ddf00881026c2
BLAKE2b-256 f0290e7f53eefdd328f9c07d82c70fa68c4ab9f17014291307b96972a8779142

See more details on using hashes here.

Provenance

The following attestation bundles were made for xpongecpp-0.1.3.tar.gz:

Publisher: publish-pypi.yml on SPONGEMM/XpongeCPP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xpongecpp-0.1.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: xpongecpp-0.1.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for xpongecpp-0.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c20356a5f4a4a64e55e46d9a8f49e0389f124c9052996dcf065abdba4ac56d8a
MD5 9dafad73609deb746226fc4efedf9eed
BLAKE2b-256 34053daa4f4549dfce43372dab5fb5cd7ffb8b097a857ea2f78ba3c332214476

See more details on using hashes here.

Provenance

The following attestation bundles were made for xpongecpp-0.1.3-cp311-cp311-win_amd64.whl:

Publisher: publish-pypi.yml on SPONGEMM/XpongeCPP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xpongecpp-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for xpongecpp-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8dc3c807eb854bd7030c69297c096c9cd1b56a9478afe1b8112e4e83c73ae3f
MD5 ad2f78f51cde0e549014d5d3c7cc5e4d
BLAKE2b-256 252cdebceb9feaa3b42559448f7946baaf85c3be2d62cacdde3813b275c7d89a

See more details on using hashes here.

Provenance

The following attestation bundles were made for xpongecpp-0.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish-pypi.yml on SPONGEMM/XpongeCPP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xpongecpp-0.1.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for xpongecpp-0.1.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 beb52f3c776513d82e64c378a380160394f8a4fde047d6f9cdea7e548be20860
MD5 46d9be2f441e2bc7d2a1de5afd1fbeb4
BLAKE2b-256 fd160df9179a19b524e2839636da3fe83cec91beaebd2a66e4770014b0cd2aed

See more details on using hashes here.

Provenance

The following attestation bundles were made for xpongecpp-0.1.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: publish-pypi.yml on SPONGEMM/XpongeCPP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xpongecpp-0.1.3-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for xpongecpp-0.1.3-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 8575f2d668ff271be6022ce165a2241d9823406870573bfaa407d7fd128f1771
MD5 aa504fc7d135c5315882c16a650bc2b1
BLAKE2b-256 17857300adbfa7c3e6544e0863065b9b05e896392165c79a81be7833e9479db6

See more details on using hashes here.

Provenance

The following attestation bundles were made for xpongecpp-0.1.3-cp311-cp311-macosx_15_0_x86_64.whl:

Publisher: publish-pypi.yml on SPONGEMM/XpongeCPP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file xpongecpp-0.1.3-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for xpongecpp-0.1.3-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 fe2da8488a1427d0d3ac147cce70f883f69a32026f8ac99eb4701f4a6fe27bca
MD5 cc7617bf77f85e76d044b0173fb9bade
BLAKE2b-256 092c13a3f4f2dd3a2b89e68ededae5a8cc143d58ddeb95908ef1c2f7a0eb0383

See more details on using hashes here.

Provenance

The following attestation bundles were made for xpongecpp-0.1.3-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: publish-pypi.yml on SPONGEMM/XpongeCPP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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