Skip to main content

A simple python wrapper around the original FORTRAN implementation of the NE2001 Galactic free electron density model

Project description

pyne2001

Build Status License Python versions

A python wrapper around the original FORTRAN implementation of the NE2001 Galactic free electron density model, published in the paper
NE2001.I. A New Model for the Galactic Distribution of Free Electrons and its Fluctuations, by J.M. Cordes and T.J.W. Lazio.

If using pyne2001 contributes to a project that leads to a scientific publication, please cite the article above.

The python functions implemented in pyne2001 simply call the NE2001 executable and parse the resulting text output. This module uses version 1.0 of the FORTRAN code available from http://hosting.astro.cornell.edu/~cordes/NE2001/, with a few minor changes documented below (c.f. section "FORTRAN code changes"). None of the changes affect the numerical results returned by the NE2001 program, they are just minor bugfixes and quality-of-life changes to make the parsing of the text output easier.

Dependencies and Python version

pyne2001 works with both python 2.7 and python 3+, and does not depend on any external python libraries. A FORTRAN compiler must be available on the system prior to installing the module.

Installation

pyne2001 can be installed easily with pip:

pip install pyne2001

To check that all went well, try importing the module and running the unit tests, you should see something like this:

In [1]: import pyne2001

In [2]: pyne2001.test()
..............
----------------------------------------------------------------------
Ran 14 tests in 0.599s

OK

Installation in development mode

If you want to be able to modify the code freely: clone the repository, then in its base folder type make install. This compiles the FORTRAN code and runs pip install in editable mode.

Usage

pyne2001 provides 6 functions, see their docstrings for the full details:

  • get_dist: Calculate the NE2001 distance for the given Galactic coordinates and DM. Returns a tuple (dist_kpc, lim) where lim is a boolean flag that is True if the returned distance value is only a lower limit estimate (i.e. input DM exceeds Galactic contribution).

  • get_dist_full: Same as get_dist, but instead return the full NE2001 output as a dictionary. The keys are parsed from the second output column of the NE2001 program, see table below and original paper for further details.

  • get_dm: Calculate the NE2001 DM for for the given Galactic coordinates and distance.

  • get_dm_full: Same as get_dm, but instead return the full NE2001 output as a dictionary. The keys are parsed from the second output column of the NE2001 program, see table below and original paper for further details.

  • get_galactic_dm: A convenience function to get the Galactic DM contribution for a given line of sight. Simply calls get_dm with dist_kpc = 30.0.

  • test: Run all unit tests

The output keys when returning the full output are:

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 code changes

Bugfixes:
  • Removed extra space between declared common arrays (dmdsm.NE2001.f:68)

  • Replaced hardcoded 1 by 1.0 in a call to max() that needs two arguments of type float (dmdsm.NE2001.f:408)

  • Replaced iargc by iargc_ (NE2001.f:28-29)

  • Replaced obsolete PAUSE statement with a WRITE (density.NE2001.f:697)

Changes:
  • Input files are now all placed in /bin. Removed /input directory.

  • Removed run_NE2001.pl

  • Changed compiler from f77 to gfortran (Makefile)

  • make clean now also deletes libNE2001.a (Makefile)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyne2001-0.1.3.tar.gz (50.0 kB view details)

Uploaded Source

File details

Details for the file pyne2001-0.1.3.tar.gz.

File metadata

  • Download URL: pyne2001-0.1.3.tar.gz
  • Upload date:
  • Size: 50.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for pyne2001-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a566c07e3bd8154b10f849e647f537bcbf52a9558fb8e6734bc2da88830d3433
MD5 5b6777827d280d45f076b6baeb2a1e54
BLAKE2b-256 d8d17a2a2a83091416e73fe43b1413dea1c842ea06438431545b315d7e1cfd76

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page