Agent skill
dlisio
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.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/dlisio
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
| 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, *_):
# 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 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
- DLIS File Structure - RP66 format specification
- Frames and Channels - Working with frames and channels
Scripts
- scripts/dlis_to_las.py - Convert DLIS to LAS format
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?