petekStatic — the geomodel layer: build a populated static reservoir model and read volumes (OOIP/OGIP) + view bundles from Python (Rust core).
Project description
petekStatic
GEOMODEL layer of the petek subsurface-modelling ecosystem — a Rust library
that turns model-ready inputs into a populated StaticModel and owns the
static-uncertainty stack over it:
- Structural framework — horizons + zones (+ faults, planned).
- Grid construction — the convergent corner-point grid the properties live on.
- Property modelling — priors, property formulas, log upscaling, and the
first
PropertyPipelinelowering path; facies/geostatistics grow from there. - Volumetrics + static uncertainty — GRV / in-place (OOIP/OGIP) off the
model itself, and Monte-Carlo regeneration over static-model realizations
(
StaticModelTemplate::realize(&RealizationDraw)).
→ a populated StaticModel with its own volumes/P-curve surface, which
petekSim (dynamic/engineering simulation + the Python product facade)
consumes across the seam.
Documentation
The canonical docs for the whole petek family live on the petekSuite site — petekStatic's pages there:
- Library guide — the petekStatic guide.
- Tutorial — Static model build (flagship).
- Notebooks — executed examples: stack model from scatter · volumes & bundles.
Where it sits (deps flow one way, downward)
petekIO DATA → model-ready inputs (ModelInputs / .pproj) [upstream]
↓
petekStatic GEOMODEL → populated StaticModel + volumetrics/uncertainty [here]
↓
petekSim SIMULATION → dynamic/engineering + the Python product [downstream]
petekTools TOOLKIT → gridding/kriging/warm-start kernels + units + pproj [horizontal]
Python workflow facade
petekStatic now owns the first Python slice of the canonical static workflow. The facade is deliberately small: declare the grid, assign properties, calculate formulas through petekTools, and run deterministic smoke volumes.
import petekstatic as pst
grid = (
pst.Grid.from_project(project)
.geometry(cell=(50.0, 50.0), orient=0.0, outline="ModelEdge")
.horizons(
[
{
"name": "Top reservoir",
"surface": "Top reservoir input surface",
"well top": "well tops/Top reservoir",
"zone": {
"name": "Reservoir",
"sub-zones": [
{"zone": "Top Reservoir", "type": "constant"},
{"name": "Intra Shale", "well top": "Top Lower Reservoir"},
{"name": "Lower Reservoir", "type": "isochore"},
],
},
},
"Base reservoir",
{"name": "Custom model horizon name", "surface": "input surface"},
],
well_tie={"influence_radius": 800},
)
.layers({"Top Reservoir": pst.Layering(n=2), "Lower Reservoir": pst.Layering(n=2)})
)
p = grid.properties
p.ntg = 0.80 # scalar assignment broadcasts to the grid
p.por = p.ntg * 0.85 # assignment expression via petekTools
p.sw = 0.20
p["PermXY_BC"].set(100.0)
p["PorE_BC"].set(0.25)
p.calc(["RQI = $lambda * sqrt(PermXY_BC / PorE_BC)"], params={"lambda": 0.0314})
result = grid.volumes(ntg="NTG", por="POR", sw="Sw", fluid="oil", fvf=1.30).run(progress=True)
Property recipes use the same facade and lower to the Rust PropertyPipeline
shape:
logs = project.logs
vgm = pst.Var("spherical", major=1500, minor=700, vertical=20, azimuth=35)
p.por = pst.upscale(logs.PHIE(logs.NetSand > 0.50)).sgs(
variogram=vgm,
distribution=pst.distributions.from_logs(),
seed=12,
)
spec = p.pipelines("por") # serialization-ready PropertyPipelineSpec
If the project or source resolves positioned wells, p.execute_pipeline("por")
returns a Rust-backed pst.PropertyPipeline handle:
iso = pst.Var("spherical", major=1500, minor=1500, vertical=1500, azimuth=0)
p.ntg = pst.upscale(logs.NetSand).sgs(
variogram=iso,
distribution=pst.distributions.from_logs(),
seed=11,
)
pipe = p.execute_pipeline("ntg")
smoke_model = pipe.apply_to_flat_model()
Applying that handle to an arbitrary production grid is not exposed yet;
PropertyPipeline.apply_to_flat_model(...) is the current smoke execution path.
Lazy logs, cokriging/trend binding, non-from_logs distributions, and
anisotropic Rust execution are guarded explicitly. Anisotropic pst.Var(...)
specs are still preserved and can be lowered to the petekTools anisotropic
variogram object.
Status — built and green
A single crate, petekstatic (0.1.8), whose modules preserve the historical
layer boundaries and one-directional imports: petekstatic::{error, wireframe, grid, petro, gridder, volumetrics, uncertainty, data, spill, model} — with the
top-of-DAG model surface (the StaticModel aggregate + the ratified
MC-regeneration seam) re-exported at the crate root. Consolidated from the
former ten-crate workspace on 2026-07-05 (owner ruling; the former srs-* and
petekstatic-error package names are retired). The volumetrics/uncertainty code
relocated here from petekSim on 2026-07-03 (the layer-charter re-scope). Design
constitution: SPEC.md; public contract: API.md. Working folders:
dev-docs/README.md, inbox/README.md.
Licensing
petekStatic is licensed under the Business Source License 1.1 — see
LICENSE. Non-production use is freely granted; production use is
permitted by the Additional Use Grant except as a competing commercial
"as-a-service" offering of the Licensed Work's functionality. Each released
version converts to the Change License (Apache-2.0) four years after its
first publication. For alternative licensing, contact kkollsg@gmail.com. (The
{VERSION} / Change Date parameters are filled in at each release cut.)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file petekstatic-0.1.8.tar.gz.
File metadata
- Download URL: petekstatic-0.1.8.tar.gz
- Upload date:
- Size: 392.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d88b466c0c61301ccf574a835ba165f2f493081a5c256e787545947239c7dde
|
|
| MD5 |
88589df97bbdf8529cf24d6077b72b7c
|
|
| BLAKE2b-256 |
7c3f624ac252a1a9fe41ef74aa8edf502cacaf0d2218c4992b33e1fd64bfeab1
|
Provenance
The following attestation bundles were made for petekstatic-0.1.8.tar.gz:
Publisher:
release.yml on kkollsga/petekstatic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
petekstatic-0.1.8.tar.gz -
Subject digest:
6d88b466c0c61301ccf574a835ba165f2f493081a5c256e787545947239c7dde - Sigstore transparency entry: 2112564807
- Sigstore integration time:
-
Permalink:
kkollsga/petekstatic@49153d2e261b41064ee14443268706ed8918af9f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kkollsga
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49153d2e261b41064ee14443268706ed8918af9f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file petekstatic-0.1.8-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: petekstatic-0.1.8-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 562.9 kB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8952d9c99d21096e515a31b1faf627a9ad4cebd9074269fb9cda8496e85274e8
|
|
| MD5 |
9eaf50bea35f4c3cce0d4f99884a922c
|
|
| BLAKE2b-256 |
572a575accbc603e301d58f8bb5b61fed22139316859b9e2b1445f11c7da9ce3
|
Provenance
The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-win_amd64.whl:
Publisher:
release.yml on kkollsga/petekstatic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
petekstatic-0.1.8-cp310-abi3-win_amd64.whl -
Subject digest:
8952d9c99d21096e515a31b1faf627a9ad4cebd9074269fb9cda8496e85274e8 - Sigstore transparency entry: 2112564968
- Sigstore integration time:
-
Permalink:
kkollsga/petekstatic@49153d2e261b41064ee14443268706ed8918af9f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kkollsga
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49153d2e261b41064ee14443268706ed8918af9f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 692.1 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
235436b973d544ac22f0747f06809b98f6204b4f5e2cce35c090813f0b614f53
|
|
| MD5 |
9b7475d227c4be61a974641c8bbc55db
|
|
| BLAKE2b-256 |
446c00886ae5daf1684f084020e5579a1542059d1f71be5a872b69234cd76939
|
Provenance
The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on kkollsga/petekstatic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
petekstatic-0.1.8-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
235436b973d544ac22f0747f06809b98f6204b4f5e2cce35c090813f0b614f53 - Sigstore transparency entry: 2112564887
- Sigstore integration time:
-
Permalink:
kkollsga/petekstatic@49153d2e261b41064ee14443268706ed8918af9f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kkollsga
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49153d2e261b41064ee14443268706ed8918af9f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 653.5 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d4f5720b82432e3a3573bd195806984694b543ab45ce3aa12ce9ae3e06f1f1e
|
|
| MD5 |
cb078476a2557d09316c77cfcc653e24
|
|
| BLAKE2b-256 |
ce61590248a04ba457d84fa5fa89740fa94a68f5e0b01c270fb8c9a49543d887
|
Provenance
The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on kkollsga/petekstatic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
petekstatic-0.1.8-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
5d4f5720b82432e3a3573bd195806984694b543ab45ce3aa12ce9ae3e06f1f1e - Sigstore transparency entry: 2112565332
- Sigstore integration time:
-
Permalink:
kkollsga/petekstatic@49153d2e261b41064ee14443268706ed8918af9f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kkollsga
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49153d2e261b41064ee14443268706ed8918af9f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 631.5 kB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ded8a5294126552bb2a5d89442ede3386d28c1034b3a42610388a065d13d524d
|
|
| MD5 |
554543c5397eee33b50d3957188d505e
|
|
| BLAKE2b-256 |
ba5c64642e2d48d2f27db11301c2aa132c94f18dbbfff33b9f7c7c777ba15cd7
|
Provenance
The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl:
Publisher:
release.yml on kkollsga/petekstatic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
petekstatic-0.1.8-cp310-abi3-macosx_11_0_arm64.whl -
Subject digest:
ded8a5294126552bb2a5d89442ede3386d28c1034b3a42610388a065d13d524d - Sigstore transparency entry: 2112565078
- Sigstore integration time:
-
Permalink:
kkollsga/petekstatic@49153d2e261b41064ee14443268706ed8918af9f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kkollsga
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49153d2e261b41064ee14443268706ed8918af9f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 673.1 kB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09dbb6a6f58d529f82c70a7aa81a5b39e15f591c8d0118cfc31129ecf3860e15
|
|
| MD5 |
de78108b781b28a7b34d6fc10a7ff58a
|
|
| BLAKE2b-256 |
1c9beff6e6d9c013dabe65f668e84776f021c31b60ee542d8a82b1f3a30ef4ee
|
Provenance
The following attestation bundles were made for petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl:
Publisher:
release.yml on kkollsga/petekstatic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
petekstatic-0.1.8-cp310-abi3-macosx_10_12_x86_64.whl -
Subject digest:
09dbb6a6f58d529f82c70a7aa81a5b39e15f591c8d0118cfc31129ecf3860e15 - Sigstore transparency entry: 2112565173
- Sigstore integration time:
-
Permalink:
kkollsga/petekstatic@49153d2e261b41064ee14443268706ed8918af9f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/kkollsga
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49153d2e261b41064ee14443268706ed8918af9f -
Trigger Event:
workflow_dispatch
-
Statement type: