| name | dlisio |
| description | 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.
|
| version | 1.0.0 |
| author | Geoscience Skills |
| license | MIT |
| tags | ["Well Logs","DLIS","RP66","Data I/O","Dlisio","Petrophysics","LIS","Wireline"] |
| dependencies | ["dlisio>=0.3.0"] |
| complements | ["welly","petropy","striplog"] |
| workflow_role | data-loading |
dlisio - DLIS/LIS File Reader
Quick Reference
import dlisio
with dlisio.dlis.load('well.dlis') as (f, *rest):
frame = f.frames[0]
curves = frame.curves()
depth = curves['DEPTH']
gr = curves['GR']
for origin in f.origins:
print(origin.well_name, origin.field_name)
Key Classes
| Class | Purpose |
|---|
PhysicalFile | Container returned by dlis.load() |
LogicalFile | Independent dataset within physical file |
Frame | Group of channels with common sampling |
Channel | Individual log curve with metadata |
Origin | Well 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, *_):
for origin in f.origins:
print(f"Well: {origin.well_name}, Field: {origin.field_name}")
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, *_):
channels = f.find('CHANNEL', '.*GR.*', regex=True)
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}")
Common Object Types
| Object Type | Description |
|---|
| ORIGIN | File/well metadata |
| FRAME | Channel grouping with index |
| CHANNEL | Log curve definition |
| TOOL | Logging tool info |
| PARAMETER | Constants and settings |
Common Curve Names
| Curve | Description |
|---|
| DEPT, DEPTH, TDEP | Depth curves |
| GR | Gamma ray |
| NPHI | Neutron porosity |
| RHOB | Bulk density |
| DT, DTC | Compressional slowness |
| RT, ILD | Resistivity |
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
| Feature | DLIS | LAS |
|---|
| Format | Binary | ASCII |
| Multi-frame | Yes | No |
| Array data | Yes | Limited |
| Metadata | Rich | Basic |
When to Use vs Alternatives
| Tool | Best For |
|---|
| dlisio | Reading DLIS/RP66 binary files, multi-frame data, image logs |
| lasio | LAS (ASCII) well log files, simpler format, widely supported |
| welly | Higher-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