Metadata-Version: 2.4
Name: geosmith
Version: 0.1.1
Summary: *Smith for ML models
Author-email: "Kyle T. Jones" <kyletjones@gmail.com>
Maintainer-email: "Kyle T. Jones" <kyletjones@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/kylejones200/geosmith
Project-URL: Documentation, https://geosmith.readthedocs.io/
Project-URL: Repository, https://github.com/kylejones200/geosmith
Project-URL: Bug Tracker, https://github.com/kylejones200/geosmith/issues
Project-URL: Changelog, https://github.com/kylejones200/geosmith/blob/main/CHANGELOG.md
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24.0
Requires-Dist: pandas>=2.0.0
Requires-Dist: timesmith>=0.1.0
Requires-Dist: networkx>=3.0
Provides-Extra: vector
Requires-Dist: geopandas>=0.14.0; extra == "vector"
Requires-Dist: shapely>=2.0.0; extra == "vector"
Requires-Dist: pyproj>=3.6.0; extra == "vector"
Provides-Extra: raster
Requires-Dist: rasterio>=1.3.0; extra == "raster"
Requires-Dist: xarray>=2023.0.0; extra == "raster"
Provides-Extra: viz
Requires-Dist: matplotlib>=3.7.0; extra == "viz"
Provides-Extra: plotsmith
Requires-Dist: plotsmith>=0.1.0; extra == "plotsmith"
Provides-Extra: anomsmith
Requires-Dist: anomsmith>=0.1.0; extra == "anomsmith"
Provides-Extra: ml
Requires-Dist: scikit-learn>=1.3.0; extra == "ml"
Requires-Dist: xgboost>=2.0.0; extra == "ml"
Provides-Extra: genai
Requires-Dist: scikit-learn>=1.3.0; extra == "genai"
Requires-Dist: xgboost>=2.0.0; extra == "genai"
Requires-Dist: lightgbm>=4.0.0; extra == "genai"
Provides-Extra: seismic
Requires-Dist: segyio>=1.9.0; extra == "seismic"
Provides-Extra: stratigraphy
Requires-Dist: ruptures>=1.1.0; extra == "stratigraphy"
Provides-Extra: nlp
Requires-Dist: spacy>=3.7.0; extra == "nlp"
Requires-Dist: transformers>=4.35.0; extra == "nlp"
Requires-Dist: torch>=2.1.0; extra == "nlp"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.5.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=1.20; extra == "docs"
Provides-Extra: examples
Requires-Dist: jupyter>=1.0; extra == "examples"
Requires-Dist: notebook>=7.0; extra == "examples"
Requires-Dist: ipykernel>=6.0; extra == "examples"
Provides-Extra: all
Requires-Dist: geosmith[dev,docs,examples,genai,ml,nlp,raster,seismic,stratigraphy,vector,viz]; extra == "all"
Dynamic: license-file

# GeoSmith

*Smith for geospatial ML models with strict 4-layer architecture.

[![PyPI version](https://badge.fury.io/py/geosmith.svg)](https://badge.fury.io/py/geosmith)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Documentation](https://readthedocs.org/projects/geosmith/badge/?version=latest)](https://geosmith.readthedocs.io/)

## Features

- **4-Layer Architecture**: Clean separation between objects, primitives, tasks, and workflows
- **Optional Integrations**: Works seamlessly with PlotSmith, AnomSmith, and TimeSmith
- **Geostatistics**: Variogram analysis, kriging, IDW interpolation
- **Mining Tools**: Block models, drillhole processing, ore grade estimation
- **I/O Support**: GRDECL, LAS, vector/raster formats
- **No Hard Dependencies**: Core works with just NumPy and Pandas

## Installation

```bash
# Core installation
pip install geosmith

# With optional integrations
pip install geosmith[plotsmith,anomsmith,timesmith]

# Everything
pip install geosmith[all]
```

## Quick Start

```python
from geosmith import PointSet, OrdinaryKriging
from geosmith.primitives.variogram import fit_variogram_model

# Create sample points
points = PointSet(coordinates=sample_coords)

# Fit variogram and kriging
variogram = fit_variogram_model(lags, semi_vars)
kriging = OrdinaryKriging(variogram_model=variogram)
kriging.fit(points, values)

# Predict
result = kriging.predict(query_points)
```

## *Smith Family Integration

GeoSmith works seamlessly with other *Smith libraries:

- **PlotSmith**: Publication-ready plots (optional) - https://github.com/kylejones200/plotsmith
- **AnomSmith**: Spatial anomaly detection (optional) - https://github.com/kylejones200/anomsmith
- **TimeSmith**: Time series compatibility (optional) - https://github.com/kylejones200/timesmith

See [SMITH_FAMILY_INTEGRATION.md](SMITH_FAMILY_INTEGRATION.md) for details.

## Documentation

- [Architecture](ARCHITECTURE.md) - 4-layer architecture overview
- [Migration Guide](MIGRATION_GUIDE.md) - Migrating from GeoSuite
- [Smith Family Integration](SMITH_FAMILY_INTEGRATION.md) - PlotSmith, AnomSmith, TimeSmith integration
- [GeoSuite Migration Assessment](GEOSUITE_MIGRATION_ASSESSMENT.md) - What's been migrated from GeoSuite
