Metadata-Version: 2.4
Name: surface-scenarios
Version: 0.3.1
Summary: Standalone synthetic elevation and SDF scenario library extracted from Survi
Author: Survi Team
License: Apache-2.0
Project-URL: Homepage, https://example.com/survi-scenarios
Project-URL: Source, https://example.com/survi-scenarios
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Intended Audience :: Developers
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: pandas>=2.1
Requires-Dist: shapely>=2.0
Provides-Extra: mesh
Requires-Dist: trimesh>=4.0; extra == "mesh"
Provides-Extra: trenchfoot
Requires-Dist: trenchfoot>=0.2.7; extra == "trenchfoot"
Requires-Dist: trimesh>=4.0; extra == "trenchfoot"
Dynamic: license-file

# surface-scenarios

Standalone synthetic elevation and 3D SDF scenario library. Ships procedural generators, bundled manifests, and lightweight loaders that return pandas DataFrames plus analytic truth functions.

## Install
```
pip install surface-scenarios
```
(Python import remains `survi_scenarios` for compatibility.)

## Environment overrides
- `SURVI_SCENARIO_MANIFEST`: custom path for the elevation suite manifest.
- `SURVI_SDF_MANIFEST`: custom path for the SDF manifest.

## Quickstart: elevation
```python
import matplotlib.pyplot as plt
from survi_scenarios import list_elevation_scenarios, load_elevation_scenario

name = list_elevation_scenarios()[0]
ds = load_elevation_scenario(name)
print(ds.summary())

# simple surface plot
grid = ds.samples.pivot(index="y", columns="x", values="z")
plt.imshow(grid.values, origin="lower",
           extent=[grid.columns.min(), grid.columns.max(),
                   grid.index.min(), grid.index.max()])
plt.title(name)
plt.colorbar(label="z (m)")
plt.show()
```

## Quickstart: 3D SDF
```python
from survi_scenarios import load_sdf_scenario
import numpy as np

sdf = load_sdf_scenario("torus_compact", seed=0)
pts = sdf.raw_surface[["x","y","z"]].to_numpy()[:5]
print("phi", sdf.truth_phi(pts))
```

![Plotly panel](docs/plotly_panel.png)

## Tests
```
PYTHONPATH=src pytest tests -q
```

## Install
```
pip install surface-scenarios
```
