Agent skill
lasio
Read, write, and manipulate LAS (Log ASCII Standard) well log files for borehole geophysical and petrophysical data. Use when Claude needs to: (1) Read/parse LAS 1.2 or 2.0 files, (2) Extract well headers or curve data, (3) Convert LAS to DataFrame/CSV/Excel, (4) Create new LAS files from arrays, (5) Modify existing LAS files, (6) Handle problematic or malformed LAS files, (7) Batch process multiple well files.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/lasio
SKILL.md
lasio - LAS Well Log Files
Quick Reference
import lasio
# Read
las = lasio.read("well.las")
# Access data
df = las.df() # DataFrame (depth as index)
gr = las['GR'] # Single curve as numpy array
depth = las['DEPT']
# Well info
well_name = las.well['WELL'].value
uwi = las.well['UWI'].value
# Write
las.write('output.las')
Key Classes
| Class | Purpose |
|---|---|
LASFile |
Main container - holds headers, curves, data |
CurveItem |
Single curve with mnemonic, unit, data array |
HeaderItem |
Header entry (mnemonic, unit, value, descr) |
Essential Operations
Read and Inspect
las = lasio.read("well.las")
print(las.curves.keys()) # Available curves
print(las.well) # Well section headers
print(las.version) # LAS version info
Access Curve Data
# As numpy arrays
gr = las['GR']
depth = las['DEPT']
# With metadata
curve = las.curves['GR']
print(curve.unit, curve.descr) # 'GAPI', 'Gamma Ray'
Create New LAS
import numpy as np
las = lasio.LASFile()
las.well['WELL'] = lasio.HeaderItem('WELL', value='Test-1')
las.well['UWI'] = lasio.HeaderItem('UWI', value='12345678901234')
depth = np.arange(1000, 2000, 0.5)
las.append_curve('DEPT', depth, unit='M', descr='Depth')
las.append_curve('GR', gr_data, unit='GAPI', descr='Gamma Ray')
las.write('output.las')
Modify Existing
las = lasio.read("well.las")
las.append_curve('GR_NORM', las['GR'] / 150, unit='V/V')
del las.curves['BAD_CURVE']
las.well['WELL'].value = 'New Name'
las.write('modified.las')
Handle Problematic Files
# Ignore header errors
las = lasio.read("messy.las", ignore_header_errors=True)
# Check null value
null_val = las.well['NULL'].value # Usually -999.25
Null Value Handling
LAS files use a specific null value (typically -999.25). Always check and handle:
import numpy as np
null_val = float(las.well['NULL'].value)
df = las.df().replace(null_val, np.nan)
Batch Processing
from pathlib import Path
for path in Path('wells/').glob('*.las'):
las = lasio.read(path)
df = las.df()
# Process...
When to Use vs Alternatives
| Tool | Best For |
|---|---|
| lasio | Direct LAS file I/O, header manipulation, format conversion |
| welly | Higher-level well analysis, curve processing, multi-well projects |
| dlisio | DLIS/RP66 binary format files (not LAS) |
Use lasio when you need low-level control over LAS file reading/writing, need to handle malformed files, or want to programmatically build LAS files.
Use welly instead when you need curve processing (despike, normalize), multi-well project management, or formation tops. Welly uses lasio internally.
Use dlisio instead when your data is in DLIS format. DLIS files are binary, support multi-frame data and array logs -- lasio cannot read them.
Common Workflows
Read, QC, and export well log data
- [ ] Read LAS file with `lasio.read()`, handle encoding if needed
- [ ] Inspect curves: `las.curves.keys()` and well headers
- [ ] Replace null values: `df.replace(null_val, np.nan)`
- [ ] Validate depth range and sample interval
- [ ] Check for missing curves or anomalous values
- [ ] Export to DataFrame with `las.df()` or write cleaned LAS
Common Issues
| Issue | Solution |
|---|---|
| Encoding errors | lasio.read(f, encoding='latin-1') |
| Missing curves | Check las.curves.keys() first |
| Header errors | Use ignore_header_errors=True |
| Wrong null value | Check las.well['NULL'].value |
References
- Curve Mnemonics - Standard curve names and units
- Troubleshooting - Common problems and solutions
- LAS File Structure - Detailed format specification
Scripts
- scripts/validate_las.py - Validate LAS file format
- scripts/las_to_csv.py - Convert LAS to CSV
- scripts/merge_curves.py - Merge curves from multiple files
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?