地震资料处理Q补偿作业生成软件开发与应用
2021-09-24吴显凤付喜春王喜平田东升
董 一,吴显凤,付喜春,王喜平,田东升
(东方地球物理勘探公司大庆物探研究院 黑龙江 大庆 163357)
0 引 言
按照油田甲方要求,一些地震资料处理工区在做完去噪处理后还要进行表层Q补偿处理。目前大庆物探院所使用的Omega、Geocluster软件由于软件版本较低,没有Q补偿模块。Geoeast软件中虽然有Q补偿的模块,但甲方要求使用QCompensation_Server软件(以下简称Q补偿软件),因此表层Q补偿工作必须用该软件来完成。
Q补偿软件是一款独立的专门做表层Q补偿的软件。处理软件做完去噪后的数据,用户需要按照Q补偿软件的要求手动编辑和分发作业,再将做完表层Q补偿后的数据用于下一步处理。
Q补偿软件被安装在1套集群系统的28个计算节点上。它是以命令行方式手动分发作业,每次只能提交一个作业,格式如下:
%rsh 主机名 Q补偿命令 补偿因子文件 输入输出参数文件 > 日志文件 &
其中主机名是安装了Q补偿软件的主机IP地址,Q补偿命令和补偿因子文件两个参数同一个工区固定不变,日志文件记录运行作业过程中所产生的信息。输入输出参数文件中存放的是输入数据和输出数据的文件名,每个作业都需要一个输入输出参数文件,一个处理工区一般拆分成几百个去噪后的数据,那就意味着用户要手工编辑几百个参数文件,在命令提示符下发送几百次作业。为了达到负载均衡和批量分发作业的目的[1],用户又必须手工编辑脚本文件,把每个命令行写入脚本,然后一次性执行脚本,这就会耗费大量的人工时间。因此通过编制相关功能软件代替大量的人工操作是非常必要的。
1 技术方法
1.1 Python编程软件简介
Python是一种跨平台计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的程序语言。它的特点是语法简洁、通俗易懂、可扩展性好,还可以编写图形界面的应用程序,主要应用于科学计算和统计、人工智能、软件开发等领域[2]。
1.2 软件开发环境
基于Linux Redhat操作系统,采用Python3来研制Q补偿作业生成软件,通过其中的Qt C++类库来对模块进行图形用户界面(Graphical User Interface,简称 GUI)的设计[3],使用PyQt5进行开发,再通过Qt Designer设计界面,最终开发出专业的Python GUI应用程序[4]。
1.3 Q补偿软件编辑作业与分发原理
由于Q补偿软件针对多个同一类型的数据进行相同的处理,因此在编辑作业时存在着普遍规律性,可以通过软件实现自动批量的编辑和分发作业的目的。根据处理用户的使用习惯,同一工区去噪后的数据文件均保存在一个目录下,文件名的前缀相同,仅末尾的序号以连续且递增的方式命名,同时也为了方便之后的处理工作,用户做完表层Q补偿后的输出文件名序号均与输入文件名相同,仅输出目录和前缀有所改变。根据这个规律性,即可编辑软件自动生成输入输出参数文件。
Q补偿软件分发作业时的命令格式固定,仅在节点名、输入参数文件名、日志文件名有所区别,因此也可以根据一个工区文件名连续的规律,编辑软件实现自动生成分发作业的脚本,再通过软件批量地分发作业。
2 Q补偿作业生成软件的研制
Q补偿作业生成软件设计主要包含三部分:第一部分通过Qt Designer对软件的图形用户界面进行设计;第二部分通过Python语言生成输入输出参数文件;第三部分通过Python语言及算法生成批量提交表层Q补偿作业的shell脚本,同时实现通过软件提交作业的功能。
2.1 Q补偿作业生成软件界面设计
若要想在Python里使用这个窗体,需要使用PyQt5里的工具软件pyuic5将ui文件编译转换为Python语言程序文件。执行以下命令完成转换:
%pyuic5-o Q_creator.py Q_creator.ui
Q_creator.py即为Python语言识别的窗体文件。
Qt Designer实现对Q补偿作业生成软件界面的设计后,还需要实现从界面上读取输入数据,经过算法实现软件功能后再将结果输出保存为文件的功能。界面与算法功能设计方法主要有两种,一种是多继承的方法,另一种是单继承的方法[5],本软件采用多继承的方法对程序进行设计,这种设计可以使界面上的组件都成为窗体业务逻辑类的公共属性,外界可以直接访问组件[6]。Qt界面组件都支持信号与槽的功能,每个类都有一些内建的信号和槽函数,这里使用的“保存”按钮所使用的信号即为“clicked()”信号,在按钮被单击时发送这个信号,程序开始执行,“提交”按钮、“关闭”按钮也使用了“clicked()”信号[7]。
2.2 Q补偿输入输出参数文件的生成
Q补偿作业中必须的输入输出参数文件的生成原理示意如图1所示:
图1 输入输出参数文件生成原理图
从软件图形界面的文本框内,获取Q补偿软件的输入文件、输出文件的物理地址及文件名前缀,例如:/data1/input/sw,/data2/output/sw,同时从文本框中获取去噪后的文件数量N,以及输入输出文件命名时软件需要的文件名前缀。输入文件按照用户的习惯文件序号均从0开始,因此软件定义初始变量i=0,当i的数值小于等于N时,软件按照Q补偿软件的格式要求,将输出、输出文件的路径、文件名前缀,与i的数值相结合,把文件名补齐并写入输入输出参数文件,再通过获取的文件名前缀与i的数值相结合作为输入输出参数文件名保存到“文件存放目录”文本框获得的目录下[8]。生成一个输入输出参数文件后i的值都会加1,直到生成所有的输入输出参数文件后程序结束[9]。
2.3 Q补偿作业执行文件的生成
在指定目录下放置一个hosts文件,文件内容是正常运行Q补偿软件的计算节点的IP地址,软件通过用户输入的相应参数,根据Q补偿软件的要求,生成发送Q补偿作业的命令行,并将命令行循环均匀分配给host文件中的计算节点,生成批量分发Q补偿作业的可执行文件。
定义“提交作业”的函数,在函数中执行分发Q补偿作业的可执行文件,通过图形界面中的“提交”按钮激活函数,实现用户在软件上直接分发Q补偿作业的功能[10]。
3 软件应用效果
Q补偿作业生成软件需要在安装了Python3的工作站或服务器上运行。同时为了能够实现提交作业的功能,工作站需要配置与安装Q补偿软件的28个计算节点rsh互信,且用户需要有读写文件存放目录的权限。
在命令提示符下输入以下命令:%Python Q_creator.py,打开Q补偿作业生成软件,软件界面如图2所示。
图2 Q补偿作业生成软件界面图
用户在“输入文件”文本框填写去噪后数据文件物理地址及文件名前缀,在“输出文件”文本框中填写Q补偿软件完成后文件存放的的物理地址及文件名的前缀。填写需要做Q补偿的数据文件数量,输入输出参数文件名的前缀,所有输入输出参数文件需要存放的目录,Q补偿软件的开发者为每个工区提供的“JOB文件”放置的物理地址,LOG文件的前缀名。点击“保存”按钮后Q补偿作业生成软件即可自动编辑出所有Q补偿软件分发作业时需要的所有文件。点击“提交”按钮后,即可将Q补偿作业负载均衡地分发到节点上进行计算。
4 结束语
Q补偿作业生成软件主要实现了为Q补偿软件自动编辑、分发作业的功能。目前已经成功应用于4个资料处理工区,实现了快速准确地对Q补偿作业进行批量编辑和提交,节省了大量的人工操作时间。原来手工编辑、分发作业需要3 h左右才能完成的工作,使用地震资料Q补偿作业生成软件不到5 min即可全部完成,极大地提高了工作效率。这项技术可推广应用于使用QCompensation_Server软件做补偿的所有工区。