Skip to main content

🔷 PolytopAX

GPU-accelerated differentiable convex hull computation powered by JAX

License PyPI Tests Lint Docs Release

PolytopAX brings modern computational geometry to the JAX ecosystem, enabling differentiable convex hull computation with GPU acceleration and automatic differentiation for machine learning applications.

✨ Key Features

  • 🚀 GPU-Accelerated: Leverage JAX/XLA for high-performance computation
  • 🔄 Differentiable: Full compatibility with JAX transformations (jit, grad, vmap)
  • 🎯 ML-Ready: Seamless integration into machine learning pipelines
  • 📦 Easy to Use: Both functional and object-oriented APIs
  • 🔬 Research-Grade: Built for computational geometry research and applications

🚀 Quick Start

Installation

pip install polytopax

Basic Usage

import jax.numpy as jnp
import polytopax as ptx

# Generate random points
points = jax.random.normal(jax.random.PRNGKey(0), (100, 3))

# Compute convex hull
hull_vertices = ptx.convex_hull(points)
print(f"Hull has {len(hull_vertices)} vertices")

# Object-oriented API
hull = ptx.ConvexHull.from_points(points)
print(f"Volume: {hull.volume():.4f}")
print(f"Surface area: {hull.surface_area():.4f}")

# Check point containment
test_point = jnp.array([0.0, 0.0, 0.0])
is_inside = hull.contains(test_point)

Differentiable Optimization

import jax

# Differentiable volume computation
def volume_loss(points):
    hull = ptx.ConvexHull.from_points(points)
    return -hull.volume()  # Maximize volume

# Compute gradients
grad_fn = jax.grad(volume_loss)
gradients = grad_fn(points)

# Batch processing with vmap
batch_points = jnp.stack([points, points + 0.1])
batch_volumes = jax.vmap(lambda p: ptx.ConvexHull.from_points(p).volume())(batch_points)

🔧 API Overview

Core Functions

  • convex_hull(points) - Compute convex hull vertices
  • point_in_convex_hull(point, vertices) - Point containment test
  • convex_hull_volume(vertices) - Volume computation
  • convex_hull_surface_area(vertices) - Surface area computation

ConvexHull Class

  • ConvexHull.from_points(points) - Create from point cloud
  • .volume() - Compute volume
  • .surface_area() - Compute surface area
  • .contains(point) - Test point containment
  • .centroid() - Compute centroid

🎯 Use Cases

  • Robotics: Path planning and obstacle avoidance
  • Machine Learning: Constraint optimization and geometric deep learning
  • Computer Graphics: Collision detection and rendering
  • Computational Physics: Molecular dynamics and simulations
  • Finance: Risk management and portfolio optimization

🏗️ Why PolytopAX?

Feature PolytopAX SciPy Qhull
GPU Acceleration ✅ ❌ ❌
Differentiable ✅ ❌ ❌
JAX Integration ✅ ❌ ❌
Batch Processing ✅ ❌ ❌
ML Pipeline Ready ✅ ❌ ❌

📖 Documentation

🔬 Examples

Explore comprehensive examples in the examples/ directory:

🛣️ Roadmap

  • v0.1.0 ✅ Core differentiable convex hull algorithms
  • v0.5.0 🔄 Exact algorithms (Quickhull, incremental)
  • v0.8.0 📋 Advanced operations (intersections, Minkowski sums)
  • v1.0.0 🎯 Riemannian manifold integration (→ GeomAX)

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines and Development Setup.

📄 License

Licensed under the Apache License, Version 2.0. See LICENSE for details.


Built with ❤️ for the JAX and computational geometry communities

Metadata

Release files for polytopax 0.0.1

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

Source distribution (sdist)

Source distribution for polytopax 0.0.1
File Size Uploaded
polytopax-0.0.1.tar.gz 83.4 kB Details

Built distribution (wheel)

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

Total release size: 185.7 kB

Release files / polytopax-0.0.1.tar.gz

Download URL polytopax-0.0.1.tar.gz
Size 83.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a95f2de5d658d2037be4e2f960804f6329377d8598f7c30fff279d70d925a2fa
BLAKE2b-256 checksum
How to use checksums
b25abb7f6dfea780415c10136f7dfbe74630591a6587cba4f198b12e68a72310
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Jul 5, 2025.

Transparency log

Release files / polytopax-0.0.1-py3-none-any.whl

Download URL polytopax-0.0.1-py3-none-any.whl
Size 102.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b0f04a9dcf96743a63e8cabd549cee3a8b60c19320431acdd647581c0f03078
BLAKE2b-256 checksum
How to use checksums
05cbc099d1237ac12068cd58db67615788bcd9872fc67d6667dd93e01118c831
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

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 Jul 5, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.1 This release

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