lasio について
lasioは、LAS検層ファイルの読み込み、確認、作成、編集を行うPythonライブラリです。LASデータやヘッダーを直接扱い、形式を変換するワークフローに適しています。
主な機能
- 01LASファイルの読み書き
- 02曲線とヘッダーメタデータへのアクセス
- 03検層ファイルの作成と編集
- 04曲線データのDataFrame変換
- 05ヘッダーエラーと欠損値への対応
活用シーン
- 01曲線と検層ヘッダーの確認
- 02分析前の欠損値処理
- 03LAS検層ファイルの作成や編集
- 04LASファイルの一括処理やCSV出力
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ steadfastasart/ geoscience-skills --skill lasioインストール後、Claude Code で/lasioを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/curve_mnemonics.mdfile_structure.mdtroubleshooting.mdscripts/las_to_csv.pymerge_curves.pyvalidate_las.py詳細
lasio - LAS 坑井ログファイル
クイックリファレンス
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')
主なクラス
| クラス | 用途 |
|---|---|
LASFile | メインコンテナー。ヘッダー、カーブ、データを保持します |
CurveItem | ニーモニック、単位、データ配列を持つ単一のカーブ |
HeaderItem | ヘッダー項目(ニーモニック、単位、値、説明) |
基本操作
読み込みと確認
las = lasio.read("well.las")
print(las.curves.keys()) # Available curves
print(las.well) # Well section headers
print(las.version) # LAS version info
カーブデータへのアクセス
# As numpy arrays
gr = las['GR']
depth = las['DEPT']
# With metadata
curve = las.curves['GR']
print(curve.unit, curve.descr) # 'GAPI', 'Gamma Ray'
新しい 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')
既存ファイルの変更
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')
問題のあるファイルの処理
# 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 値の処理
LAS ファイルでは特定の NULL 値(通常は -999.25)が使用されます。必ず確認して処理してください。
import numpy as np
null_val = float(las.well['NULL'].value)
df = las.df().replace(null_val, np.nan)
一括処理
from pathlib import Path
for path in Path('wells/').glob('*.las'):
las = lasio.read(path)
df = las.df()
# Process...
代替ツールとの使い分け
| ツール | 最適な用途 |
|---|---|
| lasio | LAS ファイルの直接的な入出力、ヘッダーの操作、形式変換 |
| welly | より高水準の坑井解析、カーブ処理、複数坑井プロジェクト |
| dlisio | DLIS/RP66 バイナリ形式のファイル(LAS ではありません) |
lasio を使う場面:LAS ファイルの読み書きを細かく制御したい場合、形式が不正なファイルを処理する場合、またはプログラムから LAS ファイルを作成する場合です。
代わりに welly を使う場面:カーブ処理(スパイク除去、正規化)、複数坑井プロジェクトの管理、または地層トップが必要な場合です。Welly は内部で lasio を使用します。
代わりに dlisio を使う場面:データが DLIS 形式の場合です。DLIS ファイルはバイナリ形式で、マルチフレームデータやアレイログをサポートしています。lasio では読み込めません。
一般的なワークフロー
坑井ログデータの読み込み、QC、エクスポート
- [ ] 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
よくある問題
| 問題 | 解決策 |
|---|---|
| エンコーディングエラー | lasio.read(f, encoding='latin-1') |
| カーブの欠落 | まず las.curves.keys() を確認します |
| ヘッダーエラー | ignore_header_errors=True を使用します |
| NULL 値の誤り | las.well['NULL'].value を確認します |
参考資料
- カーブのニーモニック - 標準的なカーブ名と単位
- トラブルシューティング - よくある問題と解決策
- LAS ファイル構造 - 詳細な形式仕様
スクリプト
- scripts/validate_las.py - LAS ファイル形式を検証します
- scripts/las_to_csv.py - LAS を CSV に変換します
- scripts/merge_curves.py - 複数ファイルのカーブを統合します
コメント
Markdown 対応