welly について
wellyは、坑井ログデータを管理・分析するPythonツールキットです。単一坑井から複数坑井プロジェクトまで扱い、曲線、層準、メタデータの整理や加工、出力を行えます。
主な機能
- 01LASファイルを坑井オブジェクトとして読み込み
- 02曲線・層準・メタデータの管理
- 03ログ曲線の処理とリサンプリング
- 04複数坑井プロジェクトの管理
- 05LAS・DataFrame・CSVへの出力
活用シーン
- 01坑井プロジェクト内の曲線品質確認
- 02解釈前の曲線クリーニング
- 03共通深度基準での坑井比較
- 04処理済み坑井データの出力
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ steadfastasart/ geoscience-skills --skill wellyインストール後、Claude Code で/wellyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/curve_processing.mdproject_workflows.mdscripts/project_stats.pywell_qc.py詳細
welly - 坑井データ分析
例は welly 0.5.2 で検証されています。このリリースは
pkg_resources をインポートするため、環境には setuptools<81 が必要です。リポジトリの
科学計算用テスト要件には、その他の検証済み依存関係のバージョンが記録されています。
クイックリファレンス
from welly import Well, Project
# Load single well
w = Well.from_las('well.las')
# Access data
df = w.df() # DataFrame
gr = w.data['GR'] # Curve object
values = gr.values # numpy array
depth = gr.basis # depth array
# Well info
print(w.name, w.uwi)
print(w.data.keys()) # Available curves
# Load multiple wells
p = Project.from_las('wells/*.las')
for well in p:
print(well.name)
主なクラス
| クラス | 用途 |
|---|---|
Well | 曲線、位置、層境界を含む単一の坑井 |
Project | 複数坑井のワークフロー向けの坑井コレクション |
Curve | 深度基準、単位、処理メソッドを持つログ曲線 |
基本的な操作
曲線データにアクセスする
gr = w.data['GR']
print(gr.mnemonic, gr.units) # Metadata
print(gr.start, gr.stop, gr.step) # Depth range
曲線を処理する
import numpy as np
gr = w.data['GR']
# Clean and filter
gr_clean = gr.despike(window_length=5, z=2)
gr_smooth = gr_clean.apply(window_length=11, func1d=np.nanmean)
w.data['GR'] = gr_clean # Use the cleaned curve in subsequent well exports.
# Optional dimensionless display array; retain GR's physical API units in w.
values = gr_clean.as_numpy().ravel()
finite = np.isfinite(values)
gr_norm = np.full_like(values, np.nan, dtype=float)
if finite.any() and np.ptp(values[finite]) > 0:
gr_norm[finite] = (values[finite] - values[finite].min()) / np.ptp(values[finite])
gr_resampled = gr_clean.to_basis(step=0.5)
gr_window = gr_clean.to_basis(start=1500, stop=1510) # Outside support is NaN.
despike、apply、to_basis のパラメーターについては、
Curve API を参照してください。処理済み曲線を解釈の入力データとして扱う前に、薄層への影響を確認してください。
地層境界を扱う
w.tops = {
'TopFormationA': 1500.0,
'TopFormationB': 1750.0,
}
for name, depth in w.tops.items():
print(f"{name}: {depth} m")
複数坑井のプロジェクト
from welly import Project
p = Project.from_las('wells/*.las')
print(f"Loaded {len(p)} wells")
# Filter and analyze
for w in p:
if 'GR' in w.data:
print(f"{w.name}: GR mean={w.data['GR'].values.mean():.1f}")
データをエクスポートする
# To DataFrame
df = w.df()
# To LAS file
w.to_las('output.las')
# To CSV
df.to_csv('well_data.csv')
よく使われる曲線の記号
| 記号 | 説明 | 単位 |
|---|---|---|
| GR | ガンマ線 | GAPI |
| NPHI | 中性子孔隙率 | v/v |
| RHOB | かさ密度 | g/cc |
| DT | 音波 | us/ft |
| RT/ILD | 深部比抵抗 | ohm.m |
| CALI | キャリパー | in |
ヒント
- 複数坑井のワークフローでは、個別ファイルを管理するより簡単な Project を使用する
- 単位を確認する — welly は単位を管理します。一貫性を確保してください
- 分析前にスパイクを除去する —
curve.despike()で外れ値を取り除きます - 共通の基準に再サンプリングする — 坑井間の比較には
curve.resample()を使用します - welly は lasio を拡張する — lasio のすべての機能を利用できます
代替ツールとの使い分け
| ツール | 最適な用途 |
|---|---|
| welly | 複数坑井のプロジェクト、曲線処理、地層境界の管理 |
| lasio | 低レベルの LAS ファイル入出力、ヘッダー操作、不正な形式のファイル |
| petropy | 石油物理計算(Vsh、孔隙率、Sw、浸透率) |
welly を使用する場合は、曲線、地層境界、メタデータを持つオブジェクトとして坑井を管理する必要があるときです。特に、Project を使った複数坑井の QC や坑井間分析に適しています。
代わりに lasio を使用する場合は、LAS ファイルの読み書きだけが必要なとき、不正な形式のヘッダーを扱うとき、または LAS の書式を細かく制御する必要があるときです。
代わりに petropy を使用する場合は、データ管理よりも地層評価計算(頁岩含有量、孔隙率、含水率)を主な目的とするときです。
よくあるワークフロー
複数坑井のプロジェクトを読み込み、QC を行う
- [ ] Load wells with `Project.from_las('wells/*.las')`
- [ ] Check well count and names: `len(p)`, iterate wells
- [ ] Verify required curves exist in each well (`'GR' in w.data`)
- [ ] Despike and clean noisy curves: `curve.despike()`
- [ ] Resample to common depth basis for cross-well comparison
- [ ] Compute summary statistics per well (mean, min, max)
- [ ] Export cleaned data to LAS or DataFrame
参考資料
- 曲線の処理 - スパイク除去、平滑化、正規化、再サンプリングの各メソッド
- プロジェクトのワークフロー - 複数坑井分析のパターン
スクリプト
- scripts/well_qc.py - データの欠損や問題について坑井データを QC します
- scripts/project_stats.py - プロジェクト単位の統計情報を計算します
コメント
Markdown 対応