Skip to main content

Petrophysical well log analysis with depth-weighted statistics, hierarchical filtering, and template-driven visualization

Project description

logSuite

Fast, intuitive Python library for petrophysical well log analysis. Load LAS files, filter by zones, compute depth-weighted statistics, and create publication-quality log displays—all in just a few lines.

PyPI version Python CI License Documentation

Key Features

  • Lazy Loading — Parse headers instantly, load data on demand
  • Numpy-Style Operationswell.HC_Volume = well.PHIE * (1 - well.SW)
  • Hierarchical Filtering — Chain filters: well.PHIE.filter('Zone').filter('Facies').sums_avg()
  • Depth-Weighted Statistics — Proper averaging for irregular sampling
  • Multi-Well Analytics — Cross-well statistics: manager.PHIE.filter('Zone').percentile(50)
  • Professional Visualization — Customizable well log displays with templates
  • Interactive Crossplots — Scatter plots with color/size/shape mapping by property
  • Regression Analysis — Linear, polynomial, exponential, logarithmic, and power regression
  • Project Persistence — Save/load entire projects with metadata and templates

Installation

pip install logsuite

Requirements: Python 3.10+, numpy, pandas, scipy, matplotlib

Quick Start

1-Minute Tutorial

from logsuite import WellDataManager

# Load and analyze
manager = WellDataManager()
manager.load_las('well.las')

well = manager.well_12_3_4_A
stats = well.PHIE.filter('Zone').sums_avg()

print(stats['Top_Brent']['mean'])  # → 0.182 (depth-weighted)

Three lines to go from LAS file to zonal statistics.

5-Minute Quick Start

Load data:

from logsuite import WellDataManager
import pandas as pd

manager = WellDataManager()
manager.load_las('well_A.las')
manager.load_las('well_B.las')

# Load formation tops from DataFrame
tops_df = pd.DataFrame({
    'Well': ['12/3-4 A', '12/3-4 A', '12/3-4 B'],
    'Surface': ['Top_Brent', 'Top_Statfjord', 'Top_Brent'],
    'MD': [2850.0, 3100.0, 2900.0]
})
manager.load_tops(tops_df, well_col='Well', discrete_col='Surface', depth_col='MD')

Access wells and properties:

well = manager.well_12_3_4_A

phie = well.PHIE
sw = well.SW

print(well.properties)  # ['PHIE', 'SW', 'PERM', 'Zone', ...]
print(well.sources)     # ['Petrophysics', 'Imported_Tops']

Compute statistics:

# Single filter — group by Zone
stats = well.PHIE.filter('Zone').sums_avg()

# Chain filters — hierarchical grouping
stats = well.PHIE.filter('Zone').filter('Facies').sums_avg()

Create computed properties:

well.HC_Volume = well.PHIE * (1 - well.SW)
well.Reservoir = (well.PHIE > 0.15) & (well.SW < 0.35)

# Apply to all wells at once
manager.PHIE_percent = manager.PHIE * 100

Visualize:

from logsuite import Template

template = Template("basic")
template.add_track(
    track_type="continuous",
    logs=[{"name": "GR", "x_range": [0, 150], "color": "green"}],
    title="Gamma Ray"
)
template.add_track(track_type="depth", width=0.3)

view = well.WellView(depth_range=[2800, 3000], template=template)
view.show()

Save your work:

manager.save('my_project/')
manager = WellDataManager('my_project/')  # Load later

Documentation

For detailed guides, API reference, and examples, visit the full documentation:

logsuite.readthedocs.io

License

MIT — see LICENSE for details.

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.1.tar.gz (220.1 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.1-py3-none-any.whl (156.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: logsuite-0.2.1.tar.gz
  • Upload date:
  • Size: 220.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for logsuite-0.2.1.tar.gz
Algorithm Hash digest
SHA256 bc2c5b01ecb4a305c2a5536422cd1a8fd580ea90395eda0b2703f52624f9dc5c
MD5 ed36bc0e7e3e8bab9b3827215cc8fbd1
BLAKE2b-256 8db344bd4f41df1d8d7179c547fbf47f9132063664a736d0c952af3296a11b35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: logsuite-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 156.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for logsuite-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd1007d94857dc3fe658fb96679313249d1fe64b7402076ae0b1eb00e6a214e4
MD5 3edf98294dde2b3545686efd690954ab
BLAKE2b-256 5a4d050d1e38ecc6dd226a458a4ea09cf41963bd04bc07969d91c3c8ed5b8f2f

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