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.3.tar.gz (260.8 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.3-py3-none-any.whl (179.2 kB view details)

Uploaded Python 3

File details

Details for the file logsuite-0.2.3.tar.gz.

File metadata

  • Download URL: logsuite-0.2.3.tar.gz
  • Upload date:
  • Size: 260.8 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.3.tar.gz
Algorithm Hash digest
SHA256 677119dee9fe0d2efae4483c5ac1425913e4d51f1fe80b3bd1231720aa28e143
MD5 72c620672ce94feb7e9f441c7068d7c4
BLAKE2b-256 690a383cb3166867e79f3962b27a8fe449c8eaaf1b688dc820ba4eac6f38e758

See more details on using hashes here.

File details

Details for the file logsuite-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: logsuite-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 179.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1eff760d577085c832b5da653f8758aed988c275ab6f94d912a3748b8f8d2e60
MD5 70aab812181c004c593896bedc8e4a37
BLAKE2b-256 034e3ec23a1e53166039fe009ae508562924f4ca37c30bc18ea5c8e215b5e906

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