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.
Metadata
Release files for logsuite 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| logsuite-0.2.4.tar.gz | 265.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| logsuite-0.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 447.0 kB
Release files / logsuite-0.2.4.tar.gz
| Download URL | logsuite-0.2.4.tar.gz |
|---|---|
| Size | 265.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9baec72586d50dbca5ef0209bed5b4c9faf37d1500e5daf74c0a43d9c6dbef11
|
|
BLAKE2b-256 checksum How to use checksums |
686c8e5baf4fd0e43e037dcbbc75712eecf4e87277ac6678c50738cf1ff2cfe6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / logsuite-0.2.4-py3-none-any.whl
| Download URL | logsuite-0.2.4-py3-none-any.whl |
|---|---|
| Size | 181.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
75d93535683ee0806f5ca3232993a2d9df9d5411c8e027167409287a63a3d110
|
|
BLAKE2b-256 checksum How to use checksums |
ce7b5a50f39f09dd3eb6d1c1fe27e696a688eaba034bf6f79c76a1d77a1bee0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Security for logsuite 0.2.4
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.