Install
$ agentstack add skill-steadfastasart-geoscience-skills-scikit-gstat ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
SciKit-GStat - Geostatistics
Quick Reference
import skgstat as skg
import numpy as np
# Create variogram
V = skg.Variogram(coordinates=coords, values=values, n_lags=15)
# Fit model
V.model = 'spherical'
print(f"Range: {V.parameters[0]:.2f}, Sill: {V.parameters[1]:.2f}")
# Kriging interpolation
ok = skg.OrdinaryKriging(V)
predictions = ok.transform(grid_coords)
Key Classes
| Class | Purpose | |-------|---------| | Variogram | Empirical and theoretical variograms | | OrdinaryKriging | Interpolation with spatial correlation | | DirectionalVariogram | Anisotropic variograms | | SpaceTimeVariogram | Spatio-temporal analysis |
Essential Operations
Create and Fit Variogram
import skgstat as skg
V = skg.Variogram(
coordinates=coords, # (n, 2) array of x, y
values=values, # (n,) array of measurements
n_lags=15,
maxlag='median' # or specific distance
)
# Fit model: 'spherical', 'exponential', 'gaussian', 'matern', 'stable'
V.model = 'spherical'
# Get parameters
print(f"Range: {V.parameters[0]:.2f}")
print(f"Sill: {V.parameters[1]:.2f}")
print(f"Nugget: {V.parameters[2]:.2f}")
print(f"RMSE: {V.rmse:.4f}")
Ordinary Kriging
import skgstat as skg
import numpy as np
V = skg.Variogram(coords, values, model='spherical')
ok = skg.OrdinaryKriging(V)
# Create prediction grid
x = np.linspace(0, 100, 50)
y = np.linspace(0, 100, 50)
xx, yy = np.meshgrid(x, y)
grid_coords = np.column_stack([xx.ravel(), yy.ravel()])
# Predict
predictions = ok.transform(grid_coords)
Z = predictions.reshape(xx.shape)
# Get variance
ok.return_variance = True
predictions, variance = ok.transform(grid_coords)
Directional Variogram
import skgstat as skg
DV = skg.DirectionalVariogram(
coordinates=coords,
values=values,
azimuth=45, # Direction in degrees
tolerance=22.5, # Angular tolerance
bandwidth='q33' # Perpendicular bandwidth
)
# Check anisotropy
for az in [0, 45, 90, 135]:
DV.azimuth = az
print(f"Azimuth {az}: Range = {DV.parameters[0]:.2f}")
Cross-Validation
import skgstat as skg
from sklearn.model_selection import cross_val_score
V = skg.Variogram(coords, values, model='spherical')
ok = skg.OrdinaryKriging(V)
scores = cross_val_score(ok, coords, values, cv=5, scoring='neg_mean_squared_error')
print(f"CV RMSE: {np.sqrt(-scores.mean()):.4f}")
Robust Estimators
import skgstat as skg
# Use robust estimator for noisy data
V = skg.Variogram(
coords, values,
estimator='cressie' # 'matheron', 'cressie', 'dowd', 'genton'
)
Quick Model Reference
| Model | Behavior | |-------|----------| | spherical | Most common, linear near origin | | exponential | Never reaches sill, gradual approach | | gaussian | Parabolic near origin, smooth | | matern | Flexible smoothness control |
When to Use vs Alternatives
| Use Case | Tool | Why | |----------|------|-----| | Variogram analysis + kriging | scikit-gstat | Modern API, sklearn-compatible | | GSLIB-style simulation (SGSIM) | GeostatsPy | Full GSLIB simulation engine | | Kriging with trend/drift | pykrige | Universal kriging, regression kriging | | Random field generation | gstools | Flexible covariance, SRF generation | | Spatio-temporal variograms | scikit-gstat | Built-in SpaceTimeVariogram | | Production geomodelling | SGeMS / Petrel | GUI, large-scale 3D models | | Robust variogram estimation | scikit-gstat | Cressie, Dowd, Genton estimators | | ML pipeline integration | scikit-gstat | sklearn fit/transform interface |
Choose scikit-gstat when: You want a Pythonic, scikit-learn-compatible API for variogram fitting and kriging. Best for exploratory geostatistical analysis with cross-validation and integration into ML pipelines.
Choose GeostatsPy when: You need GSLIB-compatible simulation workflows (SGSIM, SISIM) or are working with traditional geostatistical conventions.
Choose pykrige when: You need universal kriging with external drift variables or regression kriging combining geostatistics with machine learning predictions.
Common Workflows
Variogram Fitting and Ordinary Kriging
- [ ] Load spatial data as numpy arrays (coordinates and values)
- [ ] Create
Variogramobject with appropriaten_lagsandmaxlag - [ ] Test estimators: matheron (default) vs cressie (robust) for noisy data
- [ ] Fit multiple models (spherical, exponential, gaussian) and compare RMSE
- [ ] Check anisotropy with
DirectionalVariogramat 0, 45, 90, 135 degrees - [ ] Select best model based on RMSE and visual fit
- [ ] Create
OrdinaryKrigingobject from fitted variogram - [ ] Define prediction grid and run
ok.transform(grid_coords) - [ ] Set
ok.return_variance = Trueto get kriging variance - [ ] Cross-validate with
cross_val_score()to assess prediction quality - [ ] Map predictions and kriging variance
Common Issues
| Issue | Solution | |-------|----------| | Variogram flat or erratic | Adjust n_lags and maxlag (try maxlag='median') | | Poor model fit (high RMSE) | Try different model types or nested structures | | Kriging too slow | Reduce number of conditioning points or grid resolution | | Nugget too large | May indicate measurement error; try robust estimators | | Anisotropy unclear | Use smaller angular tolerance in DirectionalVariogram |
Tips
- Maxlag should be ~50% of study area diagonal
- Use robust estimators (cressie, dowd) with noisy data
- Test multiple models and compare RMSE
- Check anisotropy with directional variograms before kriging
References
- [Variogram Models](references/variogram_models.md) - Model equations and parameters
- [Kriging Methods](references/kriging_methods.md) - Kriging types and configuration
Scripts
- [scripts/variogramanalysis.py](scripts/variogramanalysis.py) - Complete variogram analysis workflow
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: SteadfastAsArt
- Source: SteadfastAsArt/geoscience-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.