Metadata-Version: 2.4
Name: cussen-geo
Version: 0.2.0
Summary: Framework Cussen — geospatial indices for marine, volcanic, fire, agricultural, forestry, geology and space mining domains
Author-email: Pablo Cussen Eltit <pablo@cussen.cl>
License: MIT
Project-URL: Homepage, https://github.com/pablocussen/cussen-geo
Project-URL: Documentation, https://cussen-geo.readthedocs.io
Project-URL: Repository, https://github.com/pablocussen/cussen-geo
Project-URL: Issues, https://github.com/pablocussen/cussen-geo/issues
Keywords: remote-sensing,geospatial,lidar,sst,blue-carbon,co2,kelp,framework-cussen,earth-observation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
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: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
Classifier: Topic :: Scientific/Engineering :: Hydrology
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: xarray>=2023.1
Provides-Extra: raster
Requires-Dist: rasterio>=1.3; extra == "raster"
Requires-Dist: rioxarray>=0.15; extra == "raster"
Provides-Extra: vector
Requires-Dist: geopandas>=0.13; extra == "vector"
Requires-Dist: shapely>=2.0; extra == "vector"
Provides-Extra: lidar
Requires-Dist: laspy>=2.5; extra == "lidar"
Provides-Extra: all
Requires-Dist: rasterio>=1.3; extra == "all"
Requires-Dist: rioxarray>=0.15; extra == "all"
Requires-Dist: geopandas>=0.13; extra == "all"
Requires-Dist: shapely>=2.0; extra == "all"
Requires-Dist: laspy>=2.5; extra == "all"
Requires-Dist: matplotlib>=3.7; extra == "all"
Requires-Dist: cartopy>=0.22; extra == "all"
Requires-Dist: netCDF4>=1.6; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.4; extra == "dev"
Requires-Dist: pytest-cov>=4.1; extra == "dev"
Requires-Dist: ruff>=0.1; extra == "dev"
Requires-Dist: mypy>=1.6; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.3; extra == "docs"
Requires-Dist: myst-parser>=2.0; extra == "docs"
Dynamic: license-file

# cussen-geo

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

**Framework Cussen** — Geospatial indices for marine, volcanic, fire, agricultural, forestry, geology and space mining domains.

A reproducible, citable Python implementation of the Framework Cussen (FC), a collection of remote-sensing-based indices designed to quantify environmental processes across seven domains:

| Code | Domain | Indices |
|------|--------|---------|
| **MAR** | Marine / Coastal | CO₂ solubility (K₀), Kelp Habitat Affinity (KHAI), …  |
| **VOL** | Volcanology | thermal anomalies, ash plumes, … |
| **FIR** | Fire | burn severity, smoke detection, … |
| **AGR** | Agriculture | crop water stress, yield estimation, … |
| **FOR** | Forestry | canopy structure, biomass, blue carbon, … |
| **GEO** | Geology / Geomorphology | hazard mapping, kriging, … |
| **SP**  | Space Mining | CLPI, CMPI, CAPI, CASI |

## Status

🚧 **Alpha** — under active development. **v0.2** ships two domain modules:

**MAR** — Marine / Coastal:
- `MAR.01` `k0_weiss` — CO₂ solubility (Weiss 1974)
- `MAR.02` `khai` — Kelp Habitat Affinity Index (proposed)

**SP** — Space Mining / Planetary Prospection:
- **CLPI** (M3 / Moon): `mri`, `hpi`, `opi`
- **CMPI** (CRISM / Mars): `hmi`, `cbi`, `ahi`
- **CAPI** (Sentinel-2 / ASTER analog sites): `mas`, `evi`, `haz`
- **CASI** (NEO VNIR spectroscopy): `vmi`, `mmi`, `mvi`

## Installation

```bash
pip install cussen-geo
```

For raster / vector / lidar workflows:

```bash
pip install "cussen-geo[all]"
```

## Quick start

### Marine (MAR)

```python
import numpy as np
from cussen_geo.mar import k0_weiss, khai

# CO2 solubility at 12 °C, salinity 33 psu
k0 = k0_weiss(12.0, 33.0)
print(f"K0 = {k0:.2f} mmol/(L·atm)")
# K0 = 42.63 mmol/(L·atm)

# Kelp Habitat Affinity Index (triangular, T_opt = 12 °C, ΔT = 4 °C)
sst_grid = np.array([10.0, 12.0, 14.0, 17.0])
habitat = khai(sst_grid)
print(habitat)
# [0.5, 1.0, 0.5, 0.0]
```

### Space mining (SP)

```python
import numpy as np
from cussen_geo.sp import vmi, mvi

# Asteroid VNIR features
hydration = np.array([0.08, 0.01])  # C-type vs S-type
slope     = np.array([-0.1, 0.5])
bd1_depth = np.array([0.0, 0.30])

vmi_scores = vmi(hydration, slope, bd1_depth)
print(vmi_scores.round(2))
# [0.95 0.20]

# Mission viability with delta-v penalty
mvi_scores = mvi(vmi_scores, np.zeros(2), delta_v=np.array([4.5, 4.5]))
print(mvi_scores.round(2))
# [0.95 0.2 ]
```

## Citation

If you use `cussen-geo` in academic work, please cite:

```bibtex
@software{cussen_geo,
  author = {Cussen Eltit, Pablo},
  title  = {cussen-geo: Framework Cussen geospatial indices},
  year   = {2026},
  url    = {https://github.com/pablocussen/cussen-geo},
  note   = {ORCID: 0009-0008-4853-4200}
}
```

## License

[MIT](LICENSE) © 2026 Pablo Cussen Eltit
