Metadata-Version: 2.4
Name: standard_evaluator
Version: 0.3.5
Summary: Project description
Author: Mark Bennett, Micah Goldade, Nathan Pitts, Ben Link, Colt Kirkpatrick, Jeff Poskin, Anjali Prasad, Tyler Smith, Mikel Woo
Author-email: Joerg Gablonsky <joerg.m.gablonsky@boeing.com>
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pydantic>=2
Requires-Dist: annotated-types
Requires-Dist: numpydantic>=1.6.9
Requires-Dist: openpyxl
Requires-Dist: dask
Requires-Dist: networkx
Requires-Dist: openmdao
Requires-Dist: json-numpy
Requires-Dist: h5py
Requires-Dist: h11>=0.16.0
Requires-Dist: urllib3>=2.6.3
Provides-Extra: smt
Requires-Dist: smt>=2.10.1; extra == "smt"
Provides-Extra: aviary
Requires-Dist: aviary; extra == "aviary"
Requires-Dist: dymos; extra == "aviary"
Provides-Extra: excel
Requires-Dist: pywin32; sys_platform == "win32" and extra == "excel"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: hypothesis; extra == "test"
Requires-Dist: numdifftools; extra == "test"
Requires-Dist: nbformat; extra == "test"
Requires-Dist: nbconvert; extra == "test"
Requires-Dist: ipykernel; extra == "test"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: jupyter; extra == "dev"
Provides-Extra: docs
Requires-Dist: pytest; extra == "docs"
Requires-Dist: pytest-cov; extra == "docs"
Requires-Dist: coverage; extra == "docs"
Requires-Dist: black; extra == "docs"
Requires-Dist: flake8; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: jupyter; extra == "docs"
Requires-Dist: jupyterlab>=4.5.7; extra == "docs"
Requires-Dist: autodocsumm; extra == "docs"
Requires-Dist: pytest-cov; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
Requires-Dist: sphinx-rtd-theme; extra == "docs"
Requires-Dist: jupyter_core; extra == "docs"
Requires-Dist: myst-nb; extra == "docs"
Requires-Dist: smt>=2.10.1; extra == "docs"
Requires-Dist: aviary; extra == "docs"
Requires-Dist: dymos; extra == "docs"
Dynamic: license-file

# Standard Evaluator

Standard Evaluator is an open-source Python library (published on PyPI as `standard-evaluator`) that provides a common API for defining, wrapping, and composing analysis codes and surrogate models. It was initially developed under NASA Contract 80GRC023CA045, and has been expanded since then.

**Documentation**: https://boeing.github.io/standard-evaluator/

The library has three main purposes:

1. **Common Evaluator API** — Expose analysis capabilities and surrogate models through a unified interface. End-users interact via Pandas DataFrames; developers can use a simplified NumPy-focused interface (`eval_np`, `eval_list`).

2. **Integration Framework Bridge** — Expose all evaluators to integration frameworks like OpenMDAO. The architecture is designed to support additional integration frameworks in the future.

3. **Assembly Serialization** — Capture the structure of assemblies of analyses in Pydantic classes or JSON files, and rebuild those assemblies from the stored information. Currently supports OpenMDAO; designed for future multi-framework support.

Note that user of the library are responsible for installing the third party open source components and for complying with the terms and conditions of the respective open source licenses governing the third party open source components.

## Documentation

Full documentation with demos and API reference is available at:
https://boeing.github.io/standard-evaluator/

## Installation

`pip install standard-evaluator`

Optional extras:

```bash
pip install standard-evaluator[smt]      # Surrogate Modeling Toolbox models
pip install standard-evaluator[aviary]   # NASA Aviary integration
pip install standard-evaluator[test]     # Testing dependencies
```

Optionally clone the repo and install locally for development:

```bash
git clone <repo-url>
cd standard-evaluator
pip install -e .[test,smt]
```

## Project Structure

- `src/` — Source code of the standard evaluator library
- `docs/` — Documentation source (Sphinx + Jupyter notebooks)
- `tests/` — Unit and property-based tests

## Quick Start

```python
import standard_evaluator as se
from standard_evaluator.evaluators import OpenMDAOEvaluator

# Capture an OpenMDAO assembly interface
info = se.get_interface(prob.model)

# Set variable bounds for surrogate training
se.set_variable_bounds(info, {'x': (0, 10), 'y': (-5, 5)})

# Build an optimization problem and evaluator
opt_problem = se.build_opt_problem(info, prob)
evaluator = OpenMDAOEvaluator(prob, opt_problem=opt_problem)
```
