ne2001银河系自由电子密度模型原始fortran实现的简单python包装器
pyne2001的Python项目详细描述
Pyne2001
本文发表的ne2001银河系自由电子密度模型原始fortran实现的python包装器
NE2001.I. A New Model for the Galactic Distribution of Free Electrons and its Fluctuations,作者j.m.科尔德斯和t.j.w.拉齐奥。
如果使用pyne2001
有助于产生科学出版物的项目,请引用上面的文章。
在pyne2001
中实现的python函数只需调用ne2001可执行文件并解析结果文本输出。此模块使用http://hosting.astro.cornell.edu/~cordes/NE2001/提供的Fortran代码版本1.0,下面记录了一些小的更改(C.F.部分“Fortran代码更改”)。ne2001程序返回的数值结果不会受到任何更改的影响,这些更改只是小错误修复和生命质量更改,使文本输出的解析更容易。
依赖项和python版本
pyne2001
可与python 2.7和python 3+一起使用,并且不依赖于任何外部python库。在安装模块之前,系统上必须有Fortran编译器。
安装
pyne2001
可以使用pip轻松安装:
pip install pyne2001
要检查一切正常,请尝试导入模块并运行单元测试,您应该看到如下内容:
In [1]: import pyne2001 In [2]: pyne2001.test() .............. ---------------------------------------------------------------------- Ran 14 tests in 0.599s OK
以开发模式安装
如果希望能够自由修改代码:克隆存储库,然后在其基本文件夹中键入make install
。这将编译Fortran代码并在editable mode中运行pip install
。
使用量
pyne2001
提供6个函数,有关详细信息,请参阅它们的文档字符串:
get_dist
:计算给定星系坐标和dm的ne2001距离。返回一个元组(dist_kpc, lim)
,其中lim
是一个布尔标志,如果返回的距离值只是一个下限估计值(即,输入dm超过了银河贡献),则为True
。get_dist_full
:与get_dist
相同,但返回完整的ne2001输出作为字典。这些键是从NE2001程序的第二个输出列解析出来的,详见下表和原稿。get_dm
:计算给定星系坐标和距离的ne2001 dm。get_dm_full
:与get_dm
相同,但返回完整的ne2001输出作为字典。这些键是从NE2001程序的第二个输出列解析出来的,详见下表和原稿。get_galactic_dm
:一个方便的函数,用于获取给定视线下的星系dm贡献。只需用dist_kpc = 30.0
调用get_dm
。test
:运行所有单元测试
返回完整输出时的输出键为:
Key Unit Description
------------------------------------------------------------
DIST (kpc) ModelDistance
DM (pc-cm^{-3}) DispersionMeasure
DMz (pc-cm^{-3}) DM_Zcomponent
SM (kpc-m^{-20/3}) ScatteringMeasure
SMtau (kpc-m^{-20/3}) SM_PulseBroadening
SMtheta (kpc-m^{-20/3}) SM_GalAngularBroadening
SMiso (kpc-m^{-20/3}) SM_IsoplanaticAngle
EM (pc-cm^{-6}) EmissionMeasure_from_SM
TAU (ms) PulseBroadening @1GHz
SBW (MHz) ScintBW @1GHz
SCINTIME (s) ScintTime @1GHz @100 km/s
THETA_G (mas) AngBroadeningGal @1GHz
THETA_X (mas) AngBroadeningXgal @1GHz
NU_T (GHz) TransitionFrequency
LOWERLIM If True, ModelDistance is a lower limit only
Fortran代码更改
错误修复:
已移除声明的
common
数组之间的额外空间(dmdsm.NE2001.f:68
)在调用
max()
时,将硬编码1
替换为1.0
,该调用需要两个float类型的参数(dmdsm.NE2001.f:408
)将
iargc
替换为iargc_
(NE2001.f:28-29
)将过时的pause语句替换为write(
density.NE2001.f:697
)
更改:
输入文件现在都放在
/bin
中。已删除/input
目录。删除
run_NE2001.pl
将编译器从f77更改为gfortran(
Makefile
)make clean
现在还删除libNE2001.a
(Makefile
)