用于radex网格计算的python包

ndradex的Python项目详细描述


ndradex

TravisLicense

:zap:python包用于radex网格计算

tl;dr

ndradex是一个python包,可以运行RADEX,非lte分子辐射传输码,具有多个值的参数(即具有网格参数的radex)。 输出将是多维数组,这可能有助于与观测值比较物理条件的参数搜索。

功能

  • grid calculation:ndradex有一个简单的run()函数,其中radex的所有参数都可以网格化(即,它们可以是长度大于1的列表)。
  • built in radex:ndradex在包中提供内置的radex二进制文件,这些文件在包安装期间自动下载和生成。你不需要任何额外的设置。
  • 多处理:ndradex默认支持运行多处理radex。与单次处理相比,至少需要两次加速。
  • handy i/o:ndradex的输出是xarray的数据集、标准多维数据结构以及pandas。您可以用与numpy和pandas相同的方式处理它(即,按元素操作、保存/加载数据、打印等)。

要求

  • python 3.6或3.7
  • gfortran(构建radex所必需的)

安装

您可以使用pip安装ndradex:

$ pip install ndradex

请确保在安装前满足所有要求。

用法

在python中,导入如下包:

>>>importndradex

单Radex运行

ndradex的主要功能是ndradex.run()。 例如,要获得动力学温度为100k、co柱密度为1e15cm^-2、h2密度为1e3cm^-3的co(1-0)的radex结果:

>>>ds=ndradex.run('co','1-0',100,1e15,1e3)

其中,'co'是不带扩展名(.dat)的LAMDA数据文件的名称,'1-0'是转换的名称。 可用值列在List of available LAMDA datafiles and transitions中。 请注意,您不需要下载任何数据文件: ndradex会自动管理这个。

在这种情况下,其他参数(如线宽、背景温度)是函数中定义的默认值。 逃逸概率的几何结构默认是一致的('uni')。 您可以使用自定义配置更改这些值(请参阅下面的自定义设置)。

输出是没有维度的xarray数据集:

>>>print(ds)<xarray.Dataset>Dimensions:()Coordinates:QN_ul<U3'1-0'T_kinint64100N_molfloat641e+15n_H2float641e+03T_bgfloat642.73dvfloat641.0geom<U3'uni'description<U9'LAMDA(CO)'Datavariables:E_ufloat645.5freqfloat64115.3wavelfloat642.601e+03T_exfloat64132.5taufloat640.009966T_rfloat641.278pop_ufloat640.4934pop_lfloat640.1715Ifloat641.36Ffloat642.684e-08

您可以访问每个结果值,如:

>>>flux=ds['F'].values

Grid Radex运行

作为自然扩展,您可以运行Grid Radex计算,如:

>>>ds=ndradex.run('co',['1-0','2-1'],T_kin=[100,200,300],N_mol=1e15,n_H2=[1e3,1e4,1e5,1e6,1e7])

有13个参数可以网格化: QN_ul(转变名),T_kin(动力学温度),N_mol(柱密度),n_H2(氢密度),n_pH2(氢密度),n_oH2(正氢密度),n_e(电子密度),n_H(原子氢密度),n_He(氦密度),n_Hp(电离氢密度),n_H(原子氢密度),n_He(氦密度),n_Hp(电离氢密度),T_bg(背景温度),dv(温度),dv(氢密度),^{是的(线宽)和geom(光子逃逸几何)。

这个例子的输出是一个xarray的数据集,它具有三个维度(QN_ulT_kinn_H2):

>>>print(ds)<xarray.Dataset>Dimensions:(QN_ul:2,T_kin:3,n_H2:5)Coordinates:*QN_ul(QN_ul)<U3'1-0''2-1'*T_kin(T_kin)int64100200300N_molfloat641e+15*n_H2(n_H2)float641e+031e+041e+051e+061e+07T_bgfloat642.73dvfloat641.0geom<U3'uni'description<U9'LAMDA(CO)'Datavariables:E_u(QN_ul,T_kin,n_H2)float645.55.55.55.5...16.616.616.6freq(QN_ul,T_kin,n_H2)float64115.3115.3115.3...230.5230.5wavel(QN_ul,T_kin,n_H2)float642.601e+032.601e+03...1.3e+03T_ex(QN_ul,T_kin,n_H2)float64132.5-86.52127.6...316.6301.6tau(QN_ul,T_kin,n_H2)float640.009966-0.005898...0.0009394T_r(QN_ul,T_kin,n_H2)float641.2780.5333...0.31210.2778pop_u(QN_ul,T_kin,n_H2)float640.49340.201...0.049720.04426pop_l(QN_ul,T_kin,n_H2)float640.17150.06286...0.030890.02755I(QN_ul,T_kin,n_H2)float641.360.5677...0.33220.2957F(QN_ul,T_kin,n_H2)float642.684e-081.12e-08...4.666e-08

有关详细信息,请运行help(rdradex.run)查看docstrings。

保存/加载结果

您可以像这样保存和加载数据集:

# save results to a netCDF file>>>ndradex.save_dataset(ds,'results.nc')# load results from a netCDF file>>>ds=ndradex.load_dataset('results.nc')

定制

第一次导入ndradex时,自定义配置文件创建为~/.config/ndradex/config.toml。 通过编辑,您可以自定义ndradex的以下两个设置。 注意,您可以通过设置环境变量NDRADEX_PATH来更改配置文件的路径。

更改默认值

如上所述,您可以更改run()函数的默认值,如:

# config.toml[grid]T_bg=10# change default background temp to 10 Kgeom="lvg"# change default geometry to LVGtimeout=30n_procs=2

您还可以在这里更改多进程数(n_procs)和超时数(timeout)。 默认情况下,只分配两个进程。 如果你想的话,最好设置一个更大的值加速计算。

设置数据文件别名

有时数据文件名并不直观(例如,cs数据文件名是cs@lique)。 为了方便起见,您可以定义数据文件名的别名,如:

# config.toml[lamda]CO="co"CS="cs@lique"H13CN="https://home.strw.leidenuniv.nl/~moldata/datafiles/h13cn@xpol.dat"

如第三个示例所示,您还可以在右侧指定url或本地文件路径。 自定义之后,可以在run()函数中使用这些别名:

>>>ds=ndradex.run('CS','1-0',...)# equiv to cs@lique

参考文献

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX触控事件未触发Ubuntu 20.04触控笔记本电脑   java如何在AWT中关闭窗口?   java Dagger 2:注入具有构造函数参数的成员   创建对象的Java调用类   对象我想在A.java中添加两个数字,并在B.java中打印结果(如何?)   java如何使用AWS SDK for Android从数字海洋空间下载图像?   java Facebook sdk 4.0.1无法使用Android studio获取某些字段   4分钟后web应用程序(Angular 8和Rest API)中的java自动会话超时   在Eclipse for Java EE developers edition中禁用HTML警告   java按字母顺序排列字符串我错过了什么明显的东西吗?   java在Jshell中println和printf有什么不同