Skip to main content

PyGeomodeling

PyPI version Python 3.9+ License: MIT Tests Documentation Code style: black

Advanced Gaussian Process Regression and Kriging toolkit for SPE9 reservoir modeling. This toolkit provides a comprehensive framework for spatial modeling of reservoir properties using both traditional Gaussian Process models and cutting-edge Deep Gaussian Process architectures.

Key Features

Core Capabilities

  • GRDECL Parser: Load and parse Eclipse GRDECL files with automatic property extraction
  • Unified Toolkit: Single interface supporting both scikit-learn and GPyTorch workflows
  • Advanced Models: Traditional GP (RBF, Matérn, Combined kernels) and Deep GP with neural network features
  • Rich Visualization: Comprehensive plotting utilities for model comparison and spatial analysis

Features (v0.3.0)

  • Error Handling: Comprehensive validation with helpful error messages
  • Model Serialization: Save/load models with versioning and metadata
  • Spatial Cross-Validation: Proper validation for geostatistical data
  • Parallel Processing: 3-4x speedup with multi-core training
  • Hyperparameter Tuning: Optuna integration for optimization
  • Variogram Analysis: Semi-variogram modeling for spatial correlation (NEW!)
  • Tutorial Notebooks: Interactive learning with Jupyter
  • Research-Ready: Built for reproducible scientific research

Installation

Basic Installation (Traditional GP Models)

pip install pygeomodeling

With Advanced Deep GP Features

pip install pygeomodeling[advanced]

Complete Installation (All Features)

pip install pygeomodeling[all]

Development Installation

git clone https://github.com/kylejones200/pygeomodeling.git
cd pygeomodeling
./setup_dev.sh  # Automated setup
# or manually: pip install -e ".[dev,docs,all]"

Quick Start

Basic Usage

from pygeomodeling import GRDECLParser, UnifiedSPE9Toolkit

# Load SPE9 dataset
parser = GRDECLParser('path/to/SPE9.GRDECL')
data = parser.load_data()

# Create toolkit and train model
toolkit = UnifiedSPE9Toolkit()
toolkit.load_spe9_data(data)
X_train, X_test, y_train, y_test = toolkit.create_train_test_split()

# Train traditional GP model
model = toolkit.create_sklearn_model('gpr', kernel_type='combined')
toolkit.train_sklearn_model(model, 'combined_gpr')
results = toolkit.evaluate_model('combined_gpr', X_test, y_test)

print(f"R² Score: {results.r2:.4f}")

Deep GP Experiment

from pygeomodeling import DeepGPExperiment

# Run comprehensive comparison
experiment = DeepGPExperiment()
results = experiment.run_comparison_experiment()

# Results automatically saved to deep_gp_comparison.png
print(f"Best model: {max(results.keys(), key=lambda x: results[x]['metrics']['r2_score'])}")

What's Included

Core Modules

  • grdecl_parser.py: Eclipse GRDECL file parser with SPE9 support
  • unified_toolkit.py: Main toolkit with sklearn and GPyTorch backends
  • model_gp.py: Advanced GPyTorch models (Standard GP, Deep GP)
  • plot.py: Comprehensive visualization utilities
  • deep_gp_experiment.py: Ready-to-run comparison experiments

Example Scripts

  • main.py: Traditional geomodeling workflow
  • package.py: Packaging and distribution helper

Scientific Applications

This toolkit has been designed for:

  • Reservoir Modeling: Spatial interpolation of permeability and porosity
  • Uncertainty Quantification: Gaussian Process uncertainty estimates
  • Model Comparison: Traditional vs Deep GP performance analysis
  • Geostatistical Research: Advanced spatial modeling techniques

Model Performance

Based on SPE9 reservoir dataset analysis:

  • Traditional GP (Combined Kernel): R² = 0.277 (Best)
  • Deep GP (Small): R² = 0.189
  • Training Time: ~1.3-1.8 seconds per model

Traditional Gaussian Process models with combined RBF+Matérn kernels outperform Deep GP models for SPE9 spatial patterns, demonstrating the effectiveness of classical geostatistical approaches for this dataset.

Dependencies

Core Dependencies (Always Installed)

  • numpy >= 1.24.0
  • pandas >= 1.5.0
  • scikit-learn >= 1.3.0
  • matplotlib >= 3.7.0
  • pykrige >= 1.6.0

Optional Dependencies

  • Advanced: torch, gpytorch, botorch, optuna (for Deep GP models)
  • Geospatial: rasterio, geopandas, shapely (for advanced spatial analysis)
  • Performance: numba (for JIT compilation)
  • Visualization: matplotlib, signalplot (for publication-quality plots)

Documentation

Tutorial notebooks are available in the examples/ directory.

Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For questions, issues, or contributions:

Citation

If you use this toolkit in your research, please cite:

@software{jones2025spe9geomodeling,
  title={SPE9 Geomodeling Toolkit: Advanced Gaussian Process Regression for Reservoir Modeling},
  author={Jones, Kyle T.},
  year={2025},
  url={https://github.com/kylejones200/pygeomodeling}
}

Outputs

  • PERMX_GPR.GRDECL: predicted permeability in GRDECL format
  • SIGMA_GPR.GRDECL: standard deviation (uncertainty) of predictions
  • gpr_prediction_slices.png: side-by-side slice visualization

Metadata

Release files for pygeomodeling 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygeomodeling 0.3.2
File Size Uploaded Provenance Actions
pygeomodeling-0.3.2.tar.gz 173.3 kB With provenance Details for pygeomodeling-0.3.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pygeomodeling 0.3.2
File Interpreter ABI Platform Actions
pygeomodeling-0.3.2-py3-none-any.whl Python 3 none any Details for pygeomodeling-0.3.2-py3-none-any.whl

Total release size: 342.5 kB

Release files / pygeomodeling-0.3.2.tar.gz

Download URL pygeomodeling-0.3.2.tar.gz
Size 173.3 kB
Tags Source
SHA-256 checksum
How to use checksums
db3f463a3a2acea1035ea5e6ce271abb32ce6b7d94c395abbe79f5f4dc2e9cb2
BLAKE2b-256 checksum
How to use checksums
80bacd5e6ae2e230c1b4f7c53ee51a899a1cafd7e22436563486d539b192cac0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.

Transparency log

Release files / pygeomodeling-0.3.2-py3-none-any.whl

Download URL pygeomodeling-0.3.2-py3-none-any.whl
Size 169.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2dede6c1464a95bbc98c5f9b7cf08906dbaedb4d4c5a4068811e4b1340ef1e34
BLAKE2b-256 checksum
How to use checksums
1d8629de74adae41ab86dc4bc84bdddb28277a91eb0c2e3af3c8084a69279566
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.

Transparency log

Security for pygeomodeling 0.3.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pygeomodeling-0.3.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page