mcpField
W
welly

welly

github.com/steadfastasart数据与数据库7366 次安装6 周前更新
代码仓库

关于 welly

welly 是用于管理和分析测井数据的 Python 工具包,适合处理单井或多井项目。它以井对象组织曲线、层位和元数据,并支持曲线处理与导出。

主要功能

  1. 01将 LAS 文件载入井对象
  2. 02管理曲线、层位和元数据
  3. 03处理并重采样测井曲线
  4. 04在多井项目中管理井
  5. 05导出为 LAS、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 文件 I/O、标头操作、格式错误的文件
petropy岩石物理计算(Vsh、孔隙度、Sw、渗透率)

需要将井作为包含曲线、顶界和元数据的对象进行管理时,使用 welly——尤其适用于通过 Project 进行多井质控和跨井分析。

仅需读取/写入 LAS 文件、处理格式错误的标头,或精细控制 LAS 格式时,改用 lasio。

重点是地层评价计算(泥质含量、孔隙度、含水饱和度),而非数据管理时,改用 petropy。

常见工作流

加载并质控多井项目
- [ ] 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

参考资料

脚本

评论

支持 Markdown