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.2.tar.gz (224.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.2-py3-none-any.whl (156.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: logsuite-0.2.2.tar.gz
  • Upload date:
  • Size: 224.8 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.2.tar.gz
Algorithm Hash digest
SHA256 30a47d2077e3136dfe3f5ecd31db35111473f408004d97b39c9af924f54f2477
MD5 7c476680b3f2f9fbc9e6d9548ad20936
BLAKE2b-256 1899ad87966cbc41d25d693edaccc76def9549f5db5824538ab5a66c15d28b50

See more details on using hashes here.

File details

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

File metadata

  • Download URL: logsuite-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 156.3 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c5aea8ef5f411f2ba6cbca2f14ed7628ad25cbe94ec5d138b47413a60060a3c
MD5 d0167defa82ac0f0f8fdc54693b75c09
BLAKE2b-256 36d49addc2452a0eae35a532d966461db63bf846eddd37aba9344c54a48b2404

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