mcpField
W
welly

welly

github.com/steadfastasartデータ・データベース7366 回インストール6 週間前に更新
リポジトリ

welly について

wellyは、坑井ログデータを管理・分析するPythonツールキットです。単一坑井から複数坑井プロジェクトまで扱い、曲線、層準、メタデータの整理や加工、出力を行えます。

主な機能

  1. 01LASファイルを坑井オブジェクトとして読み込み
  2. 02曲線・層準・メタデータの管理
  3. 03ログ曲線の処理とリサンプリング
  4. 04複数坑井プロジェクトの管理
  5. 05LAS・DataFrame・CSVへの出力

活用シーン

  1. 01坑井プロジェクト内の曲線品質確認
  2. 02解釈前の曲線クリーニング
  3. 03共通深度基準での坑井比較
  4. 04処理済み坑井データの出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/steadfastasart/geoscience-skills --skill welly

インストール後、Claude Code で/wellyを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
curve_processing.md
project_workflows.md
scripts/
project_stats.py
well_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

ヒント

  1. 複数坑井のワークフローでは、個別ファイルを管理するより簡単な Project を使用する
  2. 単位を確認する — welly は単位を管理します。一貫性を確保してください
  3. 分析前にスパイクを除去する — curve.despike() で外れ値を取り除きます
  4. 共通の基準に再サンプリングする — 坑井間の比較には curve.resample() を使用します
  5. 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

参考資料

スクリプト

コメント