Code Monkey home page Code Monkey logo

pynucastro's Introduction

pynucastro

pytest-all pylint flake8 docs build

Docs

License

DOI DOI

Binder

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

This package requires Python 3 (release 3.6 or later) and the following Python packages:

  • 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.

pynucastro's People

Contributors

abigailbishop avatar adam-m-jcbs avatar biboyd avatar caolyra avatar chrisdegrendele avatar dependabot[bot] avatar dwillcox avatar hansbdein avatar jschwab avatar kiraneiden avatar maxpkatz avatar mrsunshine91 avatar parker-t-johnson avatar xinlongsbu avatar yut23 avatar zhichen3 avatar zingale avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.