Skip to main content

A python library for nuclear astrophysics

Project description

pynucastro

PyPI Version Conda Version

pytest-all pylint flake8 docs build Docs

License

DOI DOI

Binder

logo

pynucastro is a python library for interactively creating and exploring nuclear reaction networks. It provides interfaces to nuclear reaction rate databases, including the JINA Reaclib nuclear reactions database.

The main features are:

  • Ability to create a reaction network based on a collection of rates, a set of nuclei, or an arbitrary filter applied to a library.

  • Interactive exploration of rates and networks in Jupyter notebooks.

  • Many different ways of visualizing a network.

  • An NSE solver to find the equilibrium abundance of a set of nuclei given a thermodynamic state.

  • Ability to write out python or C++ code needed to integrate the network.

  • Support for tabular weak rates.

  • Rate approximations and the derivation of reverse rates via detailed balance.

  • Easy access to nuclear properties, including T-dependent partition functions, spins, masses, etc.

Documentation

Documentation for pynucastro is available here:

https://pynucastro.github.io/pynucastro/

Examples

The following example reads in the ReacLib rate database and gets the rate for C13(p,g)N14 and evaluates it at a temperature of 1.e9 K and makes a plot of the T dependence:

In [1]: import pynucastro as pyna

In [2]: rl = pyna.ReacLibLibrary()

In [3]: c13pg = rl.get_rate_by_name("c13(p,g)n14")

In [4]: c13pg.eval(1.e9)
Out[4]: 3883.4778216250666

In [5]: fig = c13pg.plot()

In [6]: fig.savefig("c13pg.png")

The resulting figure is:

An extensive demonstration of the capabilities of pynucastro is shown in this notebook:

Binder

pynucastro-examples.ipynb

We can also interactively explore a reaction network. Here's an example of hot-CNO with breakout reactions:

Binder

by increasing the temperature, you can see the transition from CNO to hot-CNO (proton captures on C13 become faster than the beta decay) and then the breakout of hot-CNO when the alpha capture on O14 becomes faster than its decay.

Installation

pynucastro is available on PyPI and can be installed via:

pip install pynucastro

Alternately, to install via source, you can do:

pip install .

for a systemwide install, or

pip install --user .

for a single-user install. This will put the pynucastro modules and library in the default location python searches for packages.

Requirements

pynucastro is supported on Python 3.10 or later and the following libraries:

  • numpy

  • sympy

  • scipy

  • matplotlib

  • networkx

  • ipywidgets

  • numba

To build the documentation or run the unit tests, sphinx and pytest are additionally required along with some supporting packages. See the included requirements.txt file for a list of these packages and versions. To install the packages from the requirements file, do:

pip install -r requirements.txt

Is important to stress out that all the dependencies should be installed before pynucastro, otherwise the installation should be repeated.

Contributing

We welcome contributions from anyone, including posting issues or submitting pull requests to the pynucastro github. For more details on how to contribute to pynucastro, please see CONTRIBUTING.md.

Core Developers

People who make a number of substantive contributions (new features, bug fixes, etc.) will be named "core developers" of pynucastro.

Core developers will be recognized in the following ways:

  • invited to the group's slack team

  • listed in the User's Guide and website as a core developer

  • listed in the author list on the Zenodo DOI for the project (as given in the .zenodo.json file)

  • invited to co-author general code papers / proceedings describing pynucastro. (Note: science papers that use pynucastro will always be left to the science paper lead author to determine authorship).

If a core developer is inactive for 3 years, we may reassess their status as a core developer.

Getting Help

We use our Github Discussions page for requesting help and interacting with the community.

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

pynucastro-2.4.0.tar.gz (36.3 MB view details)

Uploaded Source

Built Distribution

pynucastro-2.4.0-py3-none-any.whl (31.5 MB view details)

Uploaded Python 3

File details

Details for the file pynucastro-2.4.0.tar.gz.

File metadata

  • Download URL: pynucastro-2.4.0.tar.gz
  • Upload date:
  • Size: 36.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pynucastro-2.4.0.tar.gz
Algorithm Hash digest
SHA256 2547f7fbe0b3ab43505fd591af0f5fe9d385d21e5f10e0c6bcc19142ea1d26e8
MD5 82200dae5e67422fed58a0d511d0f7f9
BLAKE2b-256 a0577481e522c99c523674e1b1e4f51fab4fd6e0d295cbb1bba1ffee26ef71cc

See more details on using hashes here.

File details

Details for the file pynucastro-2.4.0-py3-none-any.whl.

File metadata

  • Download URL: pynucastro-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 31.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pynucastro-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1173679f9f05134d3d3b08e8bb24ad7ccd8cbcbfcc38607a80ede63e34b6c6f
MD5 47b9aeccc600b727b254a91aed6f7a42
BLAKE2b-256 3570095af82f66ee07beb561b9e2fd2410583b542b11467ab4fd2ca4da9d89b8

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