askill
dlisio

dlisioSafety --Repository

Read and parse DLIS (Digital Log Interchange Standard) and LIS (Log Information Standard) well log files. Use when Claude needs to: (1) Read/parse DLIS or LIS files, (2) Extract well log curves as numpy arrays, (3) Access file metadata and origin information, (4) Handle multi-frame or multi-file DLIS, (5) Convert DLIS to LAS or DataFrame, (6) Work with RP66 format well logs, (7) Process array or image log data.

7 stars
1.2k downloads
Updated 2/3/2026

Package Files

Loading files...
SKILL.md

dlisio - DLIS/LIS File Reader

Quick Reference

import dlisio

# Open DLIS file (returns generator of logical files)
with dlisio.dlis.load('well.dlis') as (f, *rest):
    frame = f.frames[0]
    curves = frame.curves()

    # Access by channel name
    depth = curves['DEPTH']
    gr = curves['GR']

    # File metadata
    for origin in f.origins:
        print(origin.well_name, origin.field_name)

Key Classes

ClassPurpose
PhysicalFileContainer returned by dlis.load()
LogicalFileIndependent dataset within physical file
FrameGroup of channels with common sampling
ChannelIndividual log curve with metadata
OriginWell and file metadata

Essential Operations

Read Curves to DataFrame

import pandas as pd

with dlisio.dlis.load('well.dlis') as (f, *_):
    frame = f.frames[0]
    curves = frame.curves()
    df = pd.DataFrame(curves)
    df.set_index('DEPTH', inplace=True)

Access Channel and Origin Metadata

with dlisio.dlis.load('well.dlis') as (f, *_):
    # Origin metadata
    for origin in f.origins:
        print(f"Well: {origin.well_name}, Field: {origin.field_name}")

    # Channel properties
    for ch in f.frames[0].channels:
        print(f"{ch.name}: {ch.units}, dim={ch.dimension}")

Find Channels Across Frames

with dlisio.dlis.load('well.dlis') as (f, *_):
    # By exact name or regex
    channels = f.find('CHANNEL', '.*GR.*', regex=True)

    # Find frame containing specific channel
    for frame in f.frames:
        if 'GR' in [ch.name for ch in frame.channels]:
            curves = frame.curves()
            break

Handle Array Channels

with dlisio.dlis.load('well.dlis') as (f, *_):
    curves = f.frames[0].curves()
    for name, data in curves.items():
        if data.ndim > 1:
            print(f"{name}: shape = {data.shape}")  # Image/waveform

Common Object Types

Object TypeDescription
ORIGINFile/well metadata
FRAMEChannel grouping with index
CHANNELLog curve definition
TOOLLogging tool info
PARAMETERConstants and settings

Common Curve Names

CurveDescription
DEPT, DEPTH, TDEPDepth curves
GRGamma ray
NPHINeutron porosity
RHOBBulk density
DT, DTCCompressional slowness
RT, ILDResistivity

Error Handling

dlisio.dlis.set_encodings(['utf-8', 'latin-1'])

try:
    with dlisio.dlis.load('file.dlis') as files:
        for f in files:
            curves = f.frames[0].curves()
except Exception as e:
    print(f"Error: {e}")

DLIS vs LAS Comparison

FeatureDLISLAS
FormatBinaryASCII
Multi-frameYesNo
Array dataYesLimited
MetadataRichBasic

When to Use vs Alternatives

ToolBest For
dlisioReading DLIS/RP66 binary files, multi-frame data, image logs
lasioLAS (ASCII) well log files, simpler format, widely supported
wellyHigher-level well data management, curve processing, projects

Use dlisio when your data is in DLIS (RP66) format. DLIS files are common from modern logging tools and contain multi-frame, array, and image data that LAS cannot represent.

Use lasio instead when your data is in LAS format. LAS is ASCII-based, simpler, and more widely supported. Convert DLIS to LAS when downstream tools require it.

Use welly instead when you need well-level data management with curve processing, formation tops, and multi-well projects after initial file loading.

Common Workflows

Read and convert DLIS to DataFrame

- [ ] Load file with `dlisio.dlis.load()`, handle encoding if needed
- [ ] List logical files and frames to understand file structure
- [ ] Inspect channels: names, units, dimensions per frame
- [ ] Extract curves from target frame with `frame.curves()`
- [ ] Handle array/image channels separately (ndim > 1)
- [ ] Convert scalar curves to DataFrame with `pd.DataFrame(curves)`
- [ ] Export to CSV or convert to LAS format

References

Scripts

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

AI review pending.

Metadata

Licenseunknown
Version1.0.0
Updated2/3/2026
PublisherSteadfastAsArt

Tags

apiobservability