Metadata-Version: 2.4
Name: orivex
Version: 0.1.0
Summary: A selective and fast exploratory landscape analysis engine.
Author-email: Wojciech Achtelik <wachtelik@gmail.com>
Maintainer-email: Wojciech Achtelik <wachtelik@gmail.com>
License: MIT
Project-URL: Homepage, https://helix-agh.github.io/orivex/
Project-URL: Documentation, https://helix-agh.github.io/orivex/
Project-URL: Repository, https://github.com/helix-agh/orivex
Project-URL: Issues, https://github.com/helix-agh/orivex/issues
Keywords: exploratory landscape analysis,ela,black-box optimization,benchmarking,bbob,feature extraction,numpy,pytorch
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: numpy>=1.26
Requires-Dist: scipy>=1.11
Provides-Extra: docs
Requires-Dist: mkdocs<2,>=1.6.1; extra == "docs"
Requires-Dist: mkdocs-material<10,>=9.7; extra == "docs"
Requires-Dist: mkdocs-gen-files<0.6,>=0.5; extra == "docs"
Requires-Dist: mkdocstrings[python]<2,>=1.0; extra == "docs"
Requires-Dist: pymdown-extensions<11,>=10.15; extra == "docs"
Requires-Dist: ruff>=0.16.3; extra == "docs"
Provides-Extra: torch
Requires-Dist: torch>=2.3; extra == "torch"
Provides-Extra: test
Requires-Dist: hypothesis>=6.100; extra == "test"
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: pytest-cov>=5; extra == "test"
Provides-Extra: benchmark
Requires-Dist: ioh<0.4,>=0.3.14; extra == "benchmark"
Requires-Dist: matplotlib>=3.8; extra == "benchmark"
Requires-Dist: numdifftools>=0.9.41; extra == "benchmark"
Requires-Dist: pandas>=2.2; extra == "benchmark"
Requires-Dist: pyDOE<0.4,>=0.3.8; extra == "benchmark"
Requires-Dist: SALib<1.5,>=1.4.5; extra == "benchmark"
Requires-Dist: scikit-learn>=1.5; extra == "benchmark"
Requires-Dist: threadpoolctl>=3.6; extra == "benchmark"
Provides-Extra: dev
Requires-Dist: hypothesis>=6.100; extra == "dev"
Requires-Dist: pre-commit>=4.5; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: pytest-cov>=5; extra == "dev"
Requires-Dist: ruff>=0.16.3; extra == "dev"
Requires-Dist: torch>=2.3; extra == "dev"
Requires-Dist: ty>=0.0.74; extra == "dev"
Dynamic: license-file

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/helix-agh/orivex/main/assets/orivex-lockup-dark.png">
    <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/helix-agh/orivex/main/assets/orivex-lockup-light.png">
    <img alt="orivex" src="https://raw.githubusercontent.com/helix-agh/orivex/main/assets/orivex-lockup-light.png" width="440">
  </picture>
</p>

<p align="center">
  <strong>A selective and fast engine for exploratory landscape analysis.</strong>
</p>

<p align="center">
  <a href="https://www.python.org/downloads/"><img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10+-blue.svg"></a>
  <img alt="Status: pre-release" src="https://img.shields.io/badge/status-pre--release-orange.svg">
  <img alt="Backends: NumPy and PyTorch" src="https://img.shields.io/badge/backends-NumPy%20%7C%20PyTorch-informational.svg">
</p>

<p align="center">
  <a href="https://helix-agh.github.io/orivex/">Documentation</a> ·
  <a href="https://helix-agh.github.io/orivex/getting-started/quickstart/">Quick start</a> ·
  <a href="https://helix-agh.github.io/orivex/api/">API reference</a> ·
  <a href="https://helix-agh.github.io/orivex/development/contributing/">Contributing</a>
</p>

**orivex** is a successor to [`pflacco`](https://github.com/Reiyan/pflacco)
for exploratory landscape analysis (ELA). Compute individually selected features from sampled
points and objective values, with shared intermediates, explicit costs, and versioned definitions.
A NumPy/SciPy core is complemented by an optional differentiable PyTorch backend.

## Installation

Python 3.10 or newer is required. Install from PyPI:

```bash
pip install orivex
```

Add the optional differentiable PyTorch backend with `pip install "orivex[torch]"`.

To work from a checkout instead:

```bash
git clone https://github.com/helix-agh/orivex.git
cd orivex
uv sync
```

With pip, run `python -m pip install -e .` (add `".[torch]"` for the PyTorch backend).

## Quick start

```python
import numpy as np

from orivex import LandscapeSample, compute

rng = np.random.default_rng(42)
x = rng.uniform(-5.0, 5.0, size=(200, 2))
y = np.sum(x**2, axis=1)
sample = LandscapeSample(x, y, lower=[-5.0, -5.0], upper=[5.0, 5.0])

result = compute(sample, ["ela_distr.skewness", "nbc.nn_nb.mean_ratio"])
for name, item in result.values.items():
    print(name, item.value, item.status.value)
```

Objective values are min-max normalized by default. Pass `y_normalization=None` to use raw
canonical objectives. Undefined features return an `invalid` status with an explanation.

## Documentation

Read the **[documentation](https://helix-agh.github.io/orivex/)** for installation, feature
selection, normalization, fitness-distance conventions, PyTorch support, and API reference.
The [feature overview](https://helix-agh.github.io/orivex/features/), [contributing guide](https://helix-agh.github.io/orivex/development/contributing/),
and [benchmark guide](https://helix-agh.github.io/orivex/development/benchmarks/) are also available.

Preview the documentation locally:

```bash
uv sync --extra docs
uv run --no-sync mkdocs serve
```

See [documentation development](https://helix-agh.github.io/orivex/development/documentation/) for strict builds and deployment.

## License

orivex is licensed under the [MIT License](https://github.com/helix-agh/orivex/blob/main/LICENSE.txt).
