Metadata-Version: 2.4
Name: numpes
Version: 0.0.1a3
Summary: Numerical operations on polytopes, ellipsoids, and subspaces
Author-email: Bart Wolleswinkel <b.wolleswinkel@tudelft.nl>
License-Expression: GPL-3.0
License-File: LICENSE
Keywords: polytope
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Requires-Python: >=3.14
Requires-Dist: numpy
Requires-Dist: pycddlib
Requires-Dist: scipy
Provides-Extra: extra
Requires-Dist: cvxpy; extra == 'extra'
Requires-Dist: matplotlib; extra == 'extra'
Requires-Dist: pulp; extra == 'extra'
Description-Content-Type: text/markdown

# NumPES

<!-- TODO: Maybe add a 'coverage' badge -->
[![PyPI version](https://img.shields.io/pypi/v/numpes?color=blue)](https://pypi.org/project/numpes/)
[![Documentation](https://img.shields.io/badge/docs-Read%20the%20Docs-orange)](https://numpes.readthedocs.io)
![Tests](https://github.com/bwolleswinkel/numpes/actions/workflows/run-package-tests.yml/badge.svg)

NumPES is a control-oriented Python package for performings numerical operations on polytopes, ellipsoids, and subspaces. Its classes are implemented as emulating numeric types, enabling a breadth of operations to be performed and evaluated. A modern scientific computing package implemented in Python, using C/C++ as a backend for efficient computation. 

## Installation

The easiest way to instal NumPES is by running

``` zsh
pip install numpes
```

in your terminal or dedicated virtual environment. Then, import NumPES using

``` py
import numpes as pes
```

at the top of your script to make its functionalities available.

## Quick start

NumPES allows you to construct polytope, ellipsoid, and subspace objects and manipulate these. For example, start by initializing a polytope represented by its half-space representation (H-representation).

``` py
import numpy as np
import numpes as pes

A = np.array([[ 0,  1],
              [-2,  0],
              [ 1,  1],
              [ 0, -1]])
b = np.array([1, 1, 1, 0])

poly = pes.poly(A, b)  # Defines a polytope A x <= b

poly.plot(show=True)
```

## Contribute to NumPES

We wholeheartedly invite collaborators to make contributions to NumPES. The easiest way to contribute is to fork this repository, implement your new functionality/improvement, and then create a pull request to merge this functionality in a new release of NumPES.