基于Python 语言的HITRAN 数据库接口可视化工具的开发与应用
2021-03-19王明吉倪子颜李玉爽姚岱男
王明吉 倪子颜 李玉爽 姚岱男 张 政 刘 博
(东北石油大学电子科学学院)
高分辨率传输分子吸收数据库HITRAN 包含用于计算和模拟光在气体中传输与扩散的各种光谱参数[1],对光学研究有很大的参考价值,是光学研究者常用的工具之一。 当前版本HITRAN2016 提供了HITRANonline 交互式互联网应用程序, 用户可以在线查询获取数据。 此外,HITRAN2016 还提供了HITRAN 应用程序编程接口 (The HITRAN Application Programming Interface,HAPI), 用户可以对HITRANonline 提供的功能和数据进行远程访问。 对比HITRANonline,HAPI 扩展了过滤数据、绘制图像、下载用户定义的输出数据、计算吸收和传输以及应用高级线型函数等功能[2],使用起来更加方便、快捷、灵活。HAPI 是基于Python 语言的应用程序,对于不熟悉编程语言的用户来说使用起来极为不便,因此笔者开发HITRAN 数据库接口可视化工具,为无程序语言基础用户的使用提供有利条件。
1 HITRAN 数据库应用程序编程接口
HAPI 是HITRAN 数据库为用户提供的免费的应用程序编程接口,是基于Python 语言的函数集。目前最新版本为HAPI.PY V.1.1.0.9.7,该版本除可对HITRANonline 提供的功能和数据进行远程访问,还提供以下功能[3]:
a. 使用大量第三方Python 库处理数据;
b. HT 线型的Python 实现, 该线型也可以简化为高斯(多普勒)、洛伦等传统的线型;
c. TIPS-2011 的Python 实现;
d. 考虑压力、温度和光路长度的高分辨率光谱模拟;
e. 计算吸收系数、吸收光谱、透射光谱、辐射光谱;
f. 使用许多工具函数模拟实验光谱, 用于光谱计算。
用户在使用过程中需要应用Python 语言编写程序来调用HAPI 中的相应函数, 以实现上述功能, 这就要求使用者有一定的编程语言基础。没有编程语言基础的使用者在应用该数据库的过程中会受到很大限制, 只能在HITRANonline上对数据进行远程获取。
2 图形用户界面
图 形 用 户 界 面 (Graphical User Interface,GUI) 指采用图形方式显示的计算机操作用户界面。 传统的字符界面操作复杂,非专业用户难以理解和操作。 HAPI 就是依靠使用者编写程序调用功能函数实现上述HAPI 的各种功能, 属于传统的字符操作界面。 而在图形用户界面中,使用者不需要学习复杂的代码,可以通过窗口、按键、菜单等图形对象向计算机等电子设备发出指令,设备接收指令后,通过图形反馈操作的结果[4]。
笔者开发的HITRAN 数据库接口可视化工具是将用户通过编程调用HAPI 中的功能函数这一复杂的字符界面操作过程转换成以图形方式表达函数和参数,使用者根据需求选择相应的函数和参数, 本工具根据使用者的选择调用HAPI中的功能函数,以满足使用者的需求。
3 基于Python 语言的HITRAN 数据库接口可视化工具
3.1 开发原理及环境
3.1.1 开发原理
根据使用者的需求并结合HAPI 的内置函数设计人机交互界面。 该人机交互界面通过应用鼠标事件、键盘事件和菜单事件,将使用者选择的功能和参数转换为对HAPI 内置函数的参数并调用函数,实现HAPI 的功能。
3.1.2 开发环境
HAPI 是应用Python 语言开发的应用程序。Python 作为一种面向对象的解释性脚本语言,具有简洁直观、 灵活方便及可移植等特点, 并且Python 语言的使用是免费的[5]。目前,最新版本的HAPI.PY V.1.1.0.9.7 支 持Python2.6 + , 因 为Python3 全新版本与Python2 不完全兼容,所以笔者将Python2.7.14 作为开发语言。除此之外,许多开源的科学计算库都提供了Python 的调用接口并免费使用, 因此本设计的界面框架应用与Python2.7.14 匹配的wxPython 作为辅助工具,开发HITRAN 数据库接口可视化工具。 本设计基于Windows 系统开发验证,但由于Python 的跨平台特征,也可运行于Linux 或MacOS 平台。
3.2 程序实现
本设计应用Python 和开源wxPython 开发HITRAN 数据库接口可视化工具, 本工具通过HAPI 接口在线访问HATRAN 数据库获取数据、筛选数据并保存至本地,还可提供利用数据绘制特定图谱的功能。 系统结构如图1 所示。
图1 系统结构示意图
本设计分为主界面、数据获取模块、数据筛选模块、图形绘制模块与帮助模块5 部分,以面向使用者为理念实现各个模块功能。 主界面介绍HITRAN 数据库;数据获取模块从HITRAN 数据库获取相应条件的数据, 并保存文件至相应目录;数据筛选模块对已获取数据进行相应条件的查看或保存;图形绘制模块对已获取数据进行相应计算并生成曲线图形;帮助模块帮助使用者了解光谱参数, 并可通过该模块访问HITRANonline。 程序流程如图2 所示。
主界面如图3 所示,本设计在wx.Frame()函数创建框架中添加wx.Notebook()函数,用笔记本模式将各个模块在一个窗口显示出来,每一个页面即notebookpage()函数显示一个模块,每一个模块功能的实现都依托HAPI 中相应的功能函数。
3.2.1 数据获取模块
图2 程序流程
图3 主界面
实现数据获取模块功能的核心函数是fetch_by_ids(),调用该函数可以从HITRANonline 服务上逐行下载数据并保存到本地。 从图2 可以看出,使用者需要输入本地目录名、获取数据的波段、获取数据的分子与参数组。 获取后的数据以文件形式保存至使用者定义的目录下。 本设计应用wxTextCtr()函数创建对话框,实现使用者在对话框中输入目录名与获取数据的波段范围;应用wxRadioButton()函数创建选择按钮,列出参数组供使用者选择。HITRAN 数据库目前提供49 种气体分子及其分子种类中最重要的同位素分子光谱参数,因此本设计应用wxComboBox()函数创建下拉框,在MolecularsChoices()函数中列出49种分子,同时在wxNotebook()函数中创建49 个notebookpage()函数,列出每种分子同位素,使MolecularsChoices()函数与notebookpage()函数产生联动,实现使用者快速查找同位素并选择需要查询的分子的功能。 OnButtonClick()函数连接fetch_by_ids()函数,点击按钮触发事件,程序开始执行fetch_by_ids()函数,实现模块功能。 在用户图形界面设计过程中,应用wx.Panel()函数和wx.BoxSizer()函数对界面进行分割,分布上述函数在界面中的位置,如图4 所示。
图4 数据获取模块图形用户界面
3.2.2 数据筛选模块
数据筛选模块的核心函数是select(),对已经下载的数据进行选择或筛选到标准输出或保存到指定文件。使用者可以对数据的波段、参数进行筛选,筛选后的数据以.txt 格式保存。 数据筛选模块的图形用户界面如图5 所示。 由于进行筛选的数据必须为HITRAN 数据库下载的数据, 为避免出错, 选择文件部分应选用wx.FilePickerCtrl()函数访问本地文件,并将获取数据模块中定义的目录默认为选择文件所在的目录。 数据筛选模块其余部分的实现过程与数据获取模块类似,本节不做详细描述。
图5 数据筛选模块图形用户界面
3.2.3 图形绘制模块
图形绘制模块是根据吸收系数计算分子不同线型的吸收、透射率和辐射光谱,由absorption-Coefficient_Lorentz()、absorptionSpectrum()等 多个函数实现这些功能。 图形用户界面布局与上面两个模块类似,将选择吸收线型、设置影响条件、输入文件名和波段、图形绘制这些步骤分模块列出。 因为功能函数较多,该模块采用if 语句对使用者的输入进行判断,进而实现该模块功能。 图形用户界面如图6 所示。
3.2.4 帮助模块
帮助模块可以查看HAPI、 光谱参数信息与访问HITRANonline 网站。 为了使界面简洁,应用wx.MenuBar()函数在界面上方设置菜单栏,下设3个选项,wx.MenuItem()函数分别实现3 个功能。 图形用户界面如图7 所示。
图6 图形绘制模块图形用户界面
图7 帮助模块图形用户界面
3.3 运行结果
为验证基于Python 语言的HITRAN 数据库接口可视化工具的效果, 以H2O 和NH3为例,各个模块的程序运行结果如图8 所示。
图8 运行结果
4 结束语
基于Python 语言的HITRAN 数据库接口可视化工具界面简洁、方便,没有编程语言基础的使用者也可以快速获取所需数据,并可对数据依照需求再筛选、在线查看或保存成文件,方便对数据进行下一步处理,提高工作效率。 此外,本工具还提供了4 种不同线型的吸收系数、 吸收光谱、透射光谱和辐射光谱,对HITRAN 数据库使用者有极大帮助。 在本程序的基础上,可进一步实现更复杂的数据处理,以满足各种不同需求。