Petrophysical well log analysis with depth-weighted statistics, hierarchical filtering, and template-driven visualization
Project description
logSuite
Petrophysical well-log analysis in Python. Load LAS files, set a project palette once, fit per-facies regressions, and export deliverable-ready SVGs — without writing matplotlib glue.
Why logSuite
The library aims to stop you from writing the boilerplate that usually surrounds a reservoir-engineering notebook:
- No per-well loops.
manager.PHIE.filter("Facies").data(weighted=True)returns one DataFrame across every well, with depth-interval weights for pooled percentiles. - No monkey-patching.
xplot.add_regression_per("Facies", "exponential")fits one line per facies; the line colours come frommanager.Facies.colorsautomatically. - No matplotlib glue.
xplot.add_table_panel(stats); xplot.save("deliverable.svg")produces the SCAL/DG3 figure as one file. - No equation rewriting.
equation_format="petrel"renders fitted exponentials aspow(10, c1*x + c0)— paste straight into Petrel.
Installation
pip install logsuite
Requires Python 3.10+, numpy, pandas, scipy, matplotlib.
Quick start
from logsuite import Crossplot, WellDataManager, set_quiet
set_quiet(True) # silence broadcast prints
manager = WellDataManager()
manager.load_las("12_3-2_B.las").load_las("12_3-2_C.las")
manager.Facies.colors = {0: "#999999", 1: "#3b82f6", 2: "#10b981"}
xplot = Crossplot(manager, x="PHIE", y="PERM", color="Facies", y_log=True,
equation_format="petrel", decimals=3)
xplot.add_regression_per("Facies", "exponential", legend_loc="upper left")
xplot.save("poroperm.svg")
Seven lines. One regression line per facies in the manager palette, legend equations in Petrel syntax, ready for Word.
What's in the box
| Class | Role |
|---|---|
WellDataManager |
Load and orchestrate wells; the data substrate every consumer reads from. |
ManagerView |
Read-only filtered subset of a manager (manager.filter(wells=, where=)). |
Property, Well |
Domain objects with depth-aligned arithmetic and chained filtering. |
Crossplot |
2D scatter with .add_regression(...), .add_regression_per(...), .add(...), .add_table_panel(...). |
WellView, Template |
Single-well log display configured via a track template. |
RegressionFit, Artifact |
Renderable result objects added to consumers via .add(). Equations available in natural / log10 / Petrel form. |
Common workflows
Each is a runnable script in story_tests/ and a
how-to guide in the docs:
| Task | How-to | Script |
|---|---|---|
| One regression per facies / zone / well | fit-regressions-per-group | story_1_regression_subset.py, story_5_per_group_regressions.py |
| Project palette flowing into every plot | set-discrete-colors | story_2_property_colors.py |
| Pooled raw-data DataFrame across wells | pool-data-across-wells | story_3_pooled_data.py, story_6_pooled_extraction.py |
| Petrel-syntax regression equations | export-petrel-equations | story_4_petrel_equations.py |
| Crossplot + stats table in one SVG | build-scal-deliverable | story_7_scal_deliverable.py |
| Single-well log display | display-well-logs | story_8_log_plot.py |
Documentation
- Quick start
- How-to guides — task-focused recipes
- User guide — topical reference
- API reference
Architecture
The library follows a strict layered-dependency rule documented in
ARCHITECTURE.md. Lower layers do not know consumers
exist; data flows up — never down. The design exists to keep the API
small and predictable as features are added.
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 logsuite-0.2.4.tar.gz.
File metadata
- Download URL: logsuite-0.2.4.tar.gz
- Upload date:
- Size: 265.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9baec72586d50dbca5ef0209bed5b4c9faf37d1500e5daf74c0a43d9c6dbef11
|
|
| MD5 |
a717427f8e2beb930c61d9946855409b
|
|
| BLAKE2b-256 |
686c8e5baf4fd0e43e037dcbbc75712eecf4e87277ac6678c50738cf1ff2cfe6
|
File details
Details for the file logsuite-0.2.4-py3-none-any.whl.
File metadata
- Download URL: logsuite-0.2.4-py3-none-any.whl
- Upload date:
- Size: 181.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75d93535683ee0806f5ca3232993a2d9df9d5411c8e027167409287a63a3d110
|
|
| MD5 |
06a8808dfd339835745489e5062c3913
|
|
| BLAKE2b-256 |
ce7b5a50f39f09dd3eb6d1c1fe27e696a688eaba034bf6f79c76a1d77a1bee0d
|