阳光石油网|石油技术交流|石油人论坛

 找回密码
 欢迎注册
查看: 387|回复: 8

[开发地质和静态模型] Python lasio 帮助我们实现选择曲线输出

[复制链接]
  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

    发表于 2021-5-14 10:37:03 | 显示全部楼层 |阅读模式

    马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。

    您需要 登录 才可以下载或查看,没有账号?欢迎注册

    x
    本帖最后由 Joseph 于 2021-5-14 10:38 编辑

    早期版本Petrel的一个缺点,是无法实现测井曲线的选择输出。

    Screenshot 2021-05-14 101916.png

    Screenshot 2021-05-14 101937.png

    这样输出的LAS或者类似LAS的ASCII码文件每口井一个文件,LAS里包含了所有的曲线,无法进行特定筛选。这个问题好像一直到v2020才解决。正在使用早期版本的同行可以通过一个Python的LAS模组lasio(目前版本号0.29,文档参考lasio - Log ASCII Standard (LAS) files in Python — lasio 0.29 documentation)来解决这个问题。

    Screenshot 2021-05-14 102729.png

    import lasio
    import os
    import re

    def getLAScurves (path, *curvename):
        for filepath,dirnames,filenames in os.walk(path, topdown=False):
            for filename in filenames:
                if ( ".las" in filename ):
                    fullname = os.path.join(filepath,filename)

                    LASw = lasio.LASFile()
                    print (fullname + ':')

                    LASr = lasio.read(fullname)
                    writeFlag = 0

                    for items in LASr.well:
    ##                    items.mnemonic = re.sub(u"\\<.*?>", "", str(items.mnemonic))
    ##                    items.unit = re.sub(u"\\<.*?>", "", str(items.unit))
                        items.value = re.sub(u"\\<.*?>", "", str(items.value))
    ##                    items.descr = re.sub(u"\\<.*?>", "", str(items.descr))

                        if (len(str(items.value))>90):
                            items.value = ""

                    print ( LASr.well )
                    LASw.well = LASr.well

                    LASw.add_curve ('DEPT', LASr.index, unit='m')
                    for curve in LASr.curves:                                       
                        for curveselect in curvename:
                            if (curve.mnemonic == curveselect):
                                writeFlag = 1
                                print (str(curve.mnemonic))
                                LASw.add_curve (curveselect, LASr[curveselect], curve.unit)

                    if ( writeFlag == 1):
                        LASw.write (fullname.replace(".las","_slct.LAS"), version=2)

    getLAScurves ( "Reservoir_Interpretation_Data20200309", "PORO", "SW" )

    这一段脚本就是需要你在当前工作目录内建立一个文件夹“Reservoir_Interpretation_Data20200309”,然后把你从Petrel输出的LAS文件(目前规定.las为小写)放进这个文件夹,然后按自己需要输人曲线名(不是类型,而是名字),等它运算完成即可。脚本中间有一段蓝色字段是因为Techlog输出的解释数据出现大量表格一样的东西,目前因Petrel对此并不敏感而且lasio模组仍不支持所以进行了粗暴剪切处理。如果las没有这种情况脚本更简短些。
  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2021-8-18 08:10:25 | 显示全部楼层
    tianyingzuonb 发表于 2021-8-17 20:35
    郝老师,您好,我看您最近发了很多Python的帖子,想问一下,在Petrel里如何调用Python,是用您提到的这个Py ...

    Petrel内调用Python我目前看到比较推荐的是一款插件,Python Tool Pro | Cegal

    关于这个插件,这篇有些宣传向的文章也可参考:(5) Bringing Machine Learning and AI to Petrel, with the Blueback Python functionalities. | LinkedIn

    还有涉及地震数据的: (5) How to handle Seismic and Model Properties using the Blueback Python Tool | LinkedIn

    涉及测井曲线的: (5) Blueback Python tool: How does it work? | LinkedIn

    这个Python tool原来是Blueback Toolbox的一部分,后来强化成单独插件,tbx-quick-guide_v18.0.1_web.pdf (cegal.com)的32页对于当时尚属年幼的Python tool有些基本特征的描述。

    目前我只是关注这个插件,并未在Petrel内实际调用,——没有买过Cegal的产品,——编写Python脚本也仅限于数据格式整理一类,尚未入门。不过,Python、R或者JS(或Java)作为目前的主流语言来说具有很强的发展态势,仍然是我们需要关注的一个技术前沿罢。

    评分

    参与人数 1阳光币 +2 收起 理由
    tianyingzuonb + 2 感谢郝老师

    查看全部评分

    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-24 21:23
  • 签到天数: 1554 天

    [LV.Master]伴坛终老

    发表于 2021-5-16 19:30:24 | 显示全部楼层
    谢谢楼主!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-8-17 20:15
  • 签到天数: 164 天

    [LV.7]常住居民III

    发表于 2021-8-17 20:35:11 | 显示全部楼层
    本帖最后由 tianyingzuonb 于 2021-8-17 20:36 编辑

    郝老师,您好,我看您最近发了很多Python的帖子,想问一下,在Petrel里如何调用Python,是用您提到的这个Python lasio插件么?如果我想对网格或者Surface进行编程,请问有什么插件郝老师能够推荐,谢谢您啦!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2021-8-18 08:34:08 | 显示全部楼层
    本帖最后由 Joseph 于 2021-8-18 08:46 编辑

    oh, one more thing....

    很多初创公司或者大学团队在数据分析这个方向更值得关注,例如:https://www.linkedin.com/company/mira-geoscience-ltd./

    正如我此前建议给另一个同行的,Petrel——或者说slb——并不是一个技术前沿,它的商业策略决定了它不可能那么急于把技术提前到那个位置;如果关注技术本身,只能从slb产品线(或hal、BH等等量巨无霸的产品线)之外去关注。
    建模、数模这个方向,我最近也在关注一个新创公司:Tessael - A Geologic Meshing Company

    评分

    参与人数 1阳光币 +2 收起 理由
    tianyingzuonb + 2 感谢郝老师

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 461 天

    [LV.9]以坛为家II

    发表于 2021-8-18 13:01:27 | 显示全部楼层
    学习学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2023-6-12 10:33:36 | 显示全部楼层
    补充:不知道从哪个版本开始,lasio库将原来的add_curve改为append_curve了。如需要运行这个脚本请对应做出更改即可。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2023-6-14 10:48:46 | 显示全部楼层

    修订了一点格式习惯和减少一处循环

    Screenshot 2023-06-14 104736.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2023-6-14 11:17:52 | 显示全部楼层
    还有另一种写法,不需要设置LASw这个变量:


    Screenshot 2023-06-14 111657.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 欢迎注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|阳光石油网 ( 鲁ICP备2021003870号-1 )

    GMT+8, 2024-5-17 17:45 , Processed in 0.075249 second(s), 28 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表