Skip to main content

JAX-native Riemannian manifold optimization

Project description

🔷 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.

🔗 Links


Built with ❤️ for the JAX and computational geometry communities

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

polytopax-0.0.1.tar.gz (83.4 kB view details)

Uploaded Source

Built Distribution

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

polytopax-0.0.1-py3-none-any.whl (102.3 kB view details)

Uploaded Python 3

File details

Details for the file polytopax-0.0.1.tar.gz.

File metadata

  • Download URL: polytopax-0.0.1.tar.gz
  • Upload date:
  • Size: 83.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for polytopax-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a95f2de5d658d2037be4e2f960804f6329377d8598f7c30fff279d70d925a2fa
MD5 77911684ecd100a34089a905ecd7565d
BLAKE2b-256 b25abb7f6dfea780415c10136f7dfbe74630591a6587cba4f198b12e68a72310

See more details on using hashes here.

Provenance

The following attestation bundles were made for polytopax-0.0.1.tar.gz:

Publisher: release.yml on lv416e/polytopax

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

File details

Details for the file polytopax-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: polytopax-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 102.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for polytopax-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3b0f04a9dcf96743a63e8cabd549cee3a8b60c19320431acdd647581c0f03078
MD5 91807614cde3bf26526b09a7319298c0
BLAKE2b-256 05cbc099d1237ac12068cd58db67615788bcd9872fc67d6667dd93e01118c831

See more details on using hashes here.

Provenance

The following attestation bundles were made for polytopax-0.0.1-py3-none-any.whl:

Publisher: release.yml on lv416e/polytopax

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