ne2001银河系自由电子密度模型原始fortran实现的简单python包装器

pyne2001的Python项目详细描述


Pyne2001

Build StatusLicensePython versions

本文发表的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.aMakefile

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

推荐PyPI第三方库


热门话题
java需要一种简单的方法来创建用于排序的comparator类   java getReadableDatabase和getWriteableDatabase无法解析   查找列表<Long>中与某个元素对应的所有索引的java方法   安卓将视图添加到ViewFlipper会导致java。StackOverflowerr语言   java根据它所包含的长“curTime”类字段将N的列表拆分为24(小时)   Android N中的Java8流API   自动生成Java策略文件的安全性   垃圾收集鼓励Java中的主要GC(但不是STW GC)   java如何检查UDP服务器上侦听的客户端数量   在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机   java如何使用Spring Boot创建部分代理   java是否有一个网站或资源可以完全比较EJB版本   java无需使用第三方库从gradle生成输出   继承由于这个多态性的基本示例中的语法有什么不同吗?(爪哇)   java字符串数组中的空字符串   java为什么CMS中的初始标记阶段是串行的   为什么Lucene有时与InChIKeys不匹配?   安卓通知Java应用程序数据库中的更改   java如何将单个json对象值解析为按钮   java打印堆栈将运行时错误跟踪到文件