python数据库接口_HAPI——HITRAN数据库python接口
HAPI (HITRAN Application Programming Interface) 是HITRAN数据库提供的一个python包,可以实现对HITRAN online数据库中谱线数据的下载,以及后续谱线的模拟等常用操作。HITRANonline: HAPIhitran.org
要使用HAPI,直接在上述网站下载.py文件,根据手册配置好环境即可,在脚本中import即可。此外,还需要制定数据存放的文件夹,如data文件夹。
from hapi import *
db_begin('data')
数据存放的文件夹中的数据分为一个.data文件和.header文件。除了通过fetch()从HITRAN online自动下载谱线数据外,还可以手动将符合HITRAN数据格式的.par文件(如HITEMP数据)直接存放在该文件夹下。HAPI会自动识别.par数据并为之生成.header。
HAPI常用的方法如下,详见getHelp()命令及手册:帮助
getHelp(name_of_the_function)
可以查看函数,谱线等的帮助。
从HITRAN online下载单一谱线数据到本地(db_begin()指定的文件夹)
fetch(TableName, M, I, numin, numax)
TableName: 本地保存的文件名
M: HITRAN中的分子编号
I: HITRAN中的同位素编号:
numin: 波数下限
numax: 波数上限
例:
fetch('HOH', 1, 1, 4000, 4100)
下载后,可以在db_begin()指定的文件夹中找到HOH.data和HOH.header文件。
建议下载过数据后不再使用该函数,改为直接读取文件夹中的数据。虽然不会重复下载,连接服务器仍需要一定时间。
过滤谱线数据
select(TableName, DestinationTableName='__BUFFER__', ParameterNames=None, Conditions=None, Output=True, File=None)
TableName: 数据文件名
DestinationTableName: 保存的文件名
ParameterNames: 参数列表
Conditions: 过滤条件,详见手册
Output: 文本输出
File: 文件输出
该函数支持表达式控制的复杂过滤条件,并且可以保存过滤到的数据,不过用DestinationTableName参数保存我自己测试不能用,可以用File参数输出成.par格式,也可以被HAPI读取。详见手册。
例:
select('sampletab', File='outtab.par', ParameterNames=(p1,p2), Conditions=(('and', ('>=', 'p1', 1), ('
将sampletab中p1>=1且p1*p2<20的p1,p2保存到outtab.par中。
提取谱线数据
getColumn(TableName, ParameterName)
TableName: 数据文件名
ParameterNames: 参数列表
输出选定数据文件选定参数的列表。
例:
p1 = getColumn('sampletab', 'p1')
可以得到sampletab的p1数据。很实用。
计算线型(以Voigt线型为例)
PROFILE_VOIGT(sg0, GamD, Gam0, sg)
sg0: 线中心位置(cm^-1).
GamD: Doppler HWHM(cm^-1)
Gam0: Speed-averaged line-width(cm^-1)
sg: 供计算的波数(cm^-1)
返回sg给定的波数范围对应的线型。
计算配分函数
partitionSum(M, I, T, step=None)
M: HITRAN中的分子编号
I: HITRAN中的同位素编号
T: 温度(K),可以是数,数组或范围
step: 计算温度的步长。若未指定步长则计算所有T的配分函数,若指定步长则计算T[0]与T[1]间以step为步长的配分函数
输出:
TT: 温度数组,只有当输入T为数组时才输出
PartSum: 与TT对应的配分函数
TIPS-2011提供的配分函数算法。
例:
PartSum = partitionSum(1,1,[296,1000])
TT,PartSum = partitionSum(1,1,[296,1000],step=0.1)
计算吸收系数(以Voigt线型为例)
absorptionCoefficient_Voigt(Components=None, SourceTables=None, partitionFunction=>, Environment=None, OmegaRange=None, OmegaStep=None, OmegaWing=None, IntensityThreshold=0.0, OmegaWingHW=50.0, ParameterBindings={}, EnvironmentDependencyBindings={}, GammaL='gamma_air', Diluent={'air':1.0}, HITRAN_units=True, File=None, Format='%e %e')
Components: [(M,I,D)]的列表,其中
M: HITRAN中的分子编号
I: HITRAN中的同位素编号
D: 丰度(可选)
SourceTables: 计算cross-section的表
partitionFunction: 配分函数指针(默认为TIPS-2011)
Environment: 压强和温度参数的字典(默认{'p':1.,'T' :296.})
'p': 总压强(atm)
'T': 温度(K)
OmegaRange: 波数范围(cm^-1)
OmegaStep: 波数步长(cm^-1)
OmegaWing: 线中心到线强为0之间的距离(cm^-1)
IntensityThreshold: 强度阈值(cm^-1/(molec*cm^-2))
OmegaWingHW : 线中心到线强为0之间的距离的相对值(halfwidths),与OmegaWing取最大
GammaL: 展宽参数('gamma_air'或'self')。建议不要使用这个参数,使用下面的Diluent参数设置各物种浓度。
Diluent: 气体混合物体积比例。默认是{'air':1.0},即纯空气环境,计算展宽系数时相当于\gamma_air。若需要设置其他混合物比例,可以自行设置字典Diluent={'self':A, 'air':B, 'CO_2':C, ...}表示本物种,空气,CO_2的体积比例分别是A,B,C(A+B+C+...=1,但HAPI没有检测,需要自己注意)。注意数据库里只有空气,自身展宽系数,所以实际上其他组分除了浓度外物质种类没有影响。
HITRAN_units: 使用cm^2/molecule (True) 或cm^-1
输出:
Omegas: OmegaRange与OmegaStep给出的波数数组
Xsect: Omegas对应的吸收系数
例:
nu,coef = absorptionCoefficient_Voigt(((2,1),), 'co2', OmegaStep=0.01, HITRAN_units=False)
计算吸收光谱
absorptionSpectrum(Omegas, AbsorptionCoefficient, Environment={'l': 100.0}, File=None, Format='%e %e')
Omegas: 波数数组,一般用absorptionCoefficient_Voigt()输出的Omegas
AbsorptionCoefficient: 吸收系数数组,一般用absorptionCoefficient_Voigt()输出的Xsects
Environment: 吸收光程(cm)的字典,默认为{'l': 100.0}
File: 输出文件名
Format: 文件输出c格式
输出:
Omegas: 波数数组
Xsect: Omegas对应的吸光度
例:
nu,absorp = absorptionSpectrum(nu, coef)
谱线模拟的基本流程
下面简单演示一个基本的谱线模拟的完整过程:
首先是调用模块
from hapi import *
import numpy as np
import matplotlib.pylab as plb
import scipy.constants as C
我们希望用HITRAN数据库模拟
在7178~7192
范围内,296K(HITRAN的参照温度),1atm,吸收光程5cm条件下的吸光度。
选择data文件夹
db_begin('data')
从HITRAN下载谱线数据至data\H2O_7178~7192,并显示数据信息
myTableName = 'H2O_7178~7192'
fetch(myTableName, 1, 1, 7178, 7192)
tableList()
describeTable(myTableName)
绘制线强图
x, y = getStickXY(myTableName)
plb.figure()
plb.plot(x, y)
plb.xlabel('wavenumber($cm^{-1}$)')
plb.ylabel('linestrength($cm^{-1}/(molecule\cdot cm^{-2})$)')
plb.title('$H_2O linestrength @ 296K$')
如图:
用Voigt线型计算吸收系数
并绘图
nu, coef = absorptionCoefficient_Voigt(SourceTables=myTableName, HITRAN_units=False)
plb.figure()
plb.plot(nu, coef)
plb.xlabel('wavenumber($cm^{-1}$)')
plb.ylabel('absorption coefficient($cm^{-1}$)')
plb.title('$H_2O absorption coefficient @ 1atm, 296K$')
如图:
计算吸光度
并绘图
myOpticalL = 5.0
nu, absorp = absorptionSpectrum(nu, coef, Environment={'l':myOpticalL})
plb.figure()
plb.plot(nu, absorp)
plb.xlabel('wavenumber($cm^{-1}$)')
plb.ylabel('absorbance')
plb.title('$H_2O absorbance @ 1atm, 296K$')
plb.show()
如图:
除了HITRAN推出的HAPI外还有其他基于数据库的光谱模拟分析包,如RADIS。有需要的朋友可以自行选用。
python数据库接口_HAPI——HITRAN数据库python接口相关推荐
- Python学习八:数据库编程接口
文章目录 一.数据库编程接口 1.1 连接对象 1.1.1 获取连接对象 1.1.2 连接对象的方法 2.1 游标对象 一.数据库编程接口 1.1 连接对象 1.1.1 获取连接对象 数据库连接对象主 ...
- Python实现一个简单数据库查询接口编写
Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架. Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展 ...
- Python操作三大主流数据库
Python操作三大主流数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库, ...
- python标准数据库接口是_Python 数据库接口模块_python 数据库模块_python 数据库接口...
本条目收集了 Python 中的常用数据库接口模块,包括各种主流关系数据库和一些通用接口 如无特别注明,均实现(或部分实现)了 DB-API 标准. 更广泛的 Python 数据库技术参见 Pytho ...
- python怎么连接mysql数据库_python如何连接mysql数据库
Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix ...
- python 内存数据库下载,Python 文件存储和数据库
Python 中数据存储的方式和其他语言没什么区别,主要分为两个方面:文件存储和数据库存储. 文件存储 文件存储的方法也分为很多种,主要包括:Python 内置方法 NumPy 模块方法 os 模块方 ...
- mysql数据库python基础知识_python学习之Mysql数据库编程基础知识介绍
在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...
- python cgi库_《Python 数据库 GUI CGI编程》
1. 上次写在前面,我们介绍了一篇关于开始使用Python.今天我们将介绍Python数据库,GUI, CGI编程和Python和Python的区别.2.连接到数据库标准Python数据库接口是Pyt ...
- Python学习笔记:使用Python操作数据库
Python学习笔记:使用Python操作数据库 一.数据库编程接口 为了对数据库进行统一的操作,大多数语言都提供了简单的.标准化的数据库接口(API).在Python Database API 2. ...
最新文章
- 陕西打造12项精品体育赛事 加快建设体育强省
- 本app(仿手机支付宝界面)ios源码
- IIS7.5 部署WCF项目问题集锦
- h2o中模型存储与加载
- 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块
- python电脑配置-Python--获取电脑配置信息--设计代码
- 这是我见过Java版的最好的OA系统,拿来即用,非常方便(附项目地址)
- 拓端tecdat|R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
- mysql 查询时间戳(TIMESTAMP)转成常用可读时间格式
- windows启动winload.exe的数字签名错误问题
- 猿创征文 | 国产数据库之南大通用数据库详解安装和使用
- Linux make 报错 pkg-config:not found
- 微信 php收藏功能,怎样使用微信小程序做出添加收藏
- php面向对象常见的专业术语
- idea中整合redis中出现 Error creating bean with name ‘com.sxt.redis.RedisApplicationTests‘:
- 九龙证券|AI重塑半导体基础设施,人工智能发展持续加速
- [转载]海康摄像头_2
- 【Matlab绘图进阶第5弹】Matlab绘制三维散点图
- 电脑速度慢的原因及解决方法
- yum命令下载安装包及依赖包