Installation#
opyrability is distributed on PyPI and installs with pip; all required dependencies come with it.
From PyPI (Windows, Linux and macOS):#
The command below installs opyrability and all of its required dependencies on any OS (Windows, Linux and macOS):
pip install opyrability
This includes the default nonlinear-programming solver, Pounce (a pure-Rust port of IPOPT installed from precompiled binaries), so the operability calculations that need a nonlinear programming solver just works out of the box with no extra setup.
Optional IPOPT backend: cyipopt is now optional and only needed if you pass method='ipopt' to the inverse mapping. Install it from conda when you want that backend:
conda install -c conda-forge cyipopt
Optional algebraic, equation-oriented modeling: For Pyomo/OMLT model support, install the extras:
pip install "opyrability[pyomo]"
Optional interactive plots: The dynamic operability funnels render as static matplotlib figures by default. To get interactive 3D funnels (engine='plotly'), install Plotly via the extra:
pip install "opyrability[plotly]"
Using in a Google Colab environment:#
opyrability installs in a Colab session with a single pip command:
!pip install opyrability
Dependencies#
Opyrability can only exist thanks to the following great software libraries that are dependencies:
Numpy - Linear Algebra.
Scipy - Scientific computing in Python.
Polytope - Computational Geometry.
matplotlib - 2D/3D Plots.
tqdm - Fancy progress bars (why not?).
CVXOPT - Linear programming, allowing access to GLPK in Python.
Pounce - The default nonlinear-programming solver (a pure-Rust port of IPOPT with the bundled FERAL linear solver).
JAX - JAX for automatic differentiation!
Optional dependencies (installed only and if you need them):
cyipopt - IPOPT wrapper in Python; the optional
method='ipopt'backend.Pyomo and pyomo-pounce - equation-oriented (Pyomo/OMLT) model support, via
pip install "opyrability[pyomo]".Plotly - interactive 3D operability funnels (
engine='plotly'), viapip install "opyrability[plotly]".