Skip to main content

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.

PyPI version Python CI License Documentation

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 from manager.Facies.colors automatically.
  • 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 as pow(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

logsuite.readthedocs.io

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

logsuite-0.2.4.tar.gz (265.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logsuite-0.2.4-py3-none-any.whl (181.7 kB view details)

Uploaded Python 3

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

Hashes for logsuite-0.2.4.tar.gz
Algorithm Hash digest
SHA256 9baec72586d50dbca5ef0209bed5b4c9faf37d1500e5daf74c0a43d9c6dbef11
MD5 a717427f8e2beb930c61d9946855409b
BLAKE2b-256 686c8e5baf4fd0e43e037dcbbc75712eecf4e87277ac6678c50738cf1ff2cfe6

See more details on using hashes here.

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

Hashes for logsuite-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 75d93535683ee0806f5ca3232993a2d9df9d5411c8e027167409287a63a3d110
MD5 06a8808dfd339835745489e5062c3913
BLAKE2b-256 ce7b5a50f39f09dd3eb6d1c1fe27e696a688eaba034bf6f79c76a1d77a1bee0d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page