从 Log ASCII 标准 (LAS) 文件读取/写入井数据
项目描述
拉西奥
使用 Python 读写 Log ASCII 标准文件。
这是一个 Python 3.3+ 软件包,用于读取和写入 Log ASCII 标准 (LAS) 文件,用于地球物理、地质或岩石物理测井等钻孔数据。它与加拿大测井协会发布的 LAS 文件规范 1.2 和 2.0 版本兼容。正在研究对LAS 3 的支持 。原则上,它旨在读取尽可能多类型的 LAS 文件,包括包含常见错误或不符合格式的文件。
lasio 主要用于从 LAS 文件读取和写入数据和元数据。lasio 不介意 LAS 文件在读取数据之前是否符合正式规范;看看项目lascheck 做那种事情。如果您专门处理岩性或地层数据,您可能会发现striplog 很有帮助,而如果您专注于在井级工作,请查看welly,它在该领域提供了更多功能。
请注意,这不是用于读取 LiDAR 数据的包(也称为“LAS 文件”);你可能想检查一下laspy。
lasio 于 2020 年 8 月停止 支持 Python 2.7。支持 Python 2.7 的 lasio 最终版本是 0.26 版。
行为守则
请参阅我们的行为准则。
文档
有关完整的 lasio 包文档,请参见此处。
快速开始
对于最低工作要求,您需要安装 numpy。使用以下命令安装 lasio:
$ pip install lasio
为了确保您拥有一切,请使用它来确保也安装了 pandas、cchardet 和 openpyxl:
$ pip install lasio[all]
示例会话:
>>> import lasio
您可以使用文件名、类似文件的对象或 URL 来读取文件:
>>> las = lasio.read("sample_rev.las")
数据可以直接作为 numpy 数组访问
>>> las.keys()
['DEPT', 'DT', 'RHOB', 'NPHI', 'SFLU', 'SFLA', 'ILM', 'ILD']
>>> las['SFLU']
array([ 123.45, 123.45, 123.45, ..., 123.45, 123.45, 123.45])
>>> las['DEPT']
array([ 1670. , 1669.875, 1669.75 , ..., 1669.75 , 1670. ,
1669.875])
并作为CurveItem具有关联元数据的对象:
>>> las.curves
[CurveItem(mnemonic=DEPT, unit=M, value=, descr=1 DEPTH, original_mnemonic=DEPT, data.shape=(29897,)),
CurveItem(mnemonic=DT, unit=US/M, value=, descr=2 SONIC TRANSIT TIME, original_mnemonic=DT, data.shape=(29897,)),
CurveItem(mnemonic=RHOB, unit=K/M3, value=, descr=3 BULK DENSITY, original_mnemonic=RHOB, data.shape=(29897,)),
CurveItem(mnemonic=NPHI, unit=V/V, value=, descr=4 NEUTRON POROSITY, original_mnemonic=NPHI, data.shape=(29897,)),
CurveItem(mnemonic=SFLU, unit=OHMM, value=, descr=5 RXO RESISTIVITY, original_mnemonic=SFLU, data.shape=(29897,)),
CurveItem(mnemonic=SFLA, unit=OHMM, value=, descr=6 SHALLOW RESISTIVITY, original_mnemonic=SFLA, data.shape=(29897,)),
CurveItem(mnemonic=ILM, unit=OHMM, value=, descr=7 MEDIUM RESISTIVITY, original_mnemonic=ILM, data.shape=(29897,)),
CurveItem(mnemonic=ILD, unit=OHMM, value=, descr=8 DEEP RESISTIVITY, original_mnemonic=ILD, data.shape=(29897,))]
标头信息被解析为简单的 HeaderItem 对象,并为标头的每个部分存储在字典中:
>>> las.version
[HeaderItem(mnemonic=VERS, unit=, value=1.2, descr=CWLS LOG ASCII STANDARD -VERSION 1.2, original_mnemonic=VERS),
HeaderItem(mnemonic=WRAP, unit=, value=NO, descr=ONE LINE PER DEPTH STEP, original_mnemonic=WRAP)]
>>> las.well
[HeaderItem(mnemonic=STRT, unit=M, value=1670.0, descr=, original_mnemonic=STRT),
HeaderItem(mnemonic=STOP, unit=M, value=1660.0, descr=, original_mnemonic=STOP),
HeaderItem(mnemonic=STEP, unit=M, value=-0.125, descr=, original_mnemonic=STEP),
HeaderItem(mnemonic=NULL, unit=, value=-999.25, descr=, original_mnemonic=NULL),
HeaderItem(mnemonic=COMP, unit=, value=ANY OIL COMPANY LTD., descr=COMPANY, original_mnemonic=COMP),
HeaderItem(mnemonic=WELL, unit=, value=ANY ET AL OIL WELL #12, descr=WELL, original_mnemonic=WELL),
HeaderItem(mnemonic=FLD, unit=, value=EDAM, descr=FIELD, original_mnemonic=FLD),
HeaderItem(mnemonic=LOC, unit=, value=A9-16-49, descr=LOCATION, original_mnemonic=LOC),
HeaderItem(mnemonic=PROV, unit=, value=SASKATCHEWAN, descr=PROVINCE, original_mnemonic=PROV),
HeaderItem(mnemonic=SRVC, unit=, value=ANY LOGGING COMPANY LTD., descr=SERVICE COMPANY, original_mnemonic=SRVC),
HeaderItem(mnemonic=DATE, unit=, value=25-DEC-1988, descr=LOG DATE, original_mnemonic=DATE),
HeaderItem(mnemonic=UWI, unit=, value=100091604920, descr=UNIQUE WELL ID, original_mnemonic=UWI)]
>>> las.params
[HeaderItem(mnemonic=BHT, unit=DEGC, value=35.5, descr=BOTTOM HOLE TEMPERATURE, original_mnemonic=BHT),
HeaderItem(mnemonic=BS, unit=MM, value=200.0, descr=BIT SIZE, original_mnemonic=BS),
HeaderItem(mnemonic=FD, unit=K/M3, value=1000.0, descr=FLUID DENSITY, original_mnemonic=FD),
HeaderItem(mnemonic=MATR, unit=, value=0.0, descr=NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO), original_mnemonic=MATR),
HeaderItem(mnemonic=MDEN, unit=, value=2710.0, descr=LOGGING MATRIX DENSITY, original_mnemonic=MDEN),
HeaderItem(mnemonic=RMF, unit=OHMM, value=0.216, descr=MUD FILTRATE RESISTIVITY, original_mnemonic=RMF),
HeaderItem(mnemonic=DFD, unit=K/M3, value=1525.0, descr=DRILL FLUID DENSITY, original_mnemonic=DFD)]
数据存储为 2D numpy 数组:
>>> las.data
array([[ 1670. , 123.45 , 2550. , ..., 123.45 , 110.2 , 105.6 ],
[ 1669.875, 123.45 , 2550. , ..., 123.45 , 110.2 , 105.6 ],
[ 1669.75 , 123.45 , 2550. , ..., 123.45 , 110.2 , 105.6 ],
...,
[ 1669.75 , 123.45 , 2550. , ..., 123.45 , 110.2 , 105.6 ],
[ 1670. , 123.45 , 2550. , ..., 123.45 , 110.2 , 105.6 ],
[ 1669.875, 123.45 , 2550. , ..., 123.45 , 110.2 , 105.6 ]])
您还可以将数据作为pandasDataFrame 检索和加载、从头开始构建 LAS 文件、将它们写回磁盘以及导出到 Excel 等等。
有关更多详细信息,请参阅包文档。
贡献
欢迎投稿。
请参阅贡献以了解如何开始。
执照
麻省理工学院