Welcome to Naima¶
Naima is a Python package for computation of non-thermal radiation from relativistic particle populations. It includes tools to perform MCMC fitting of radiative models to X-ray, GeV, and TeV spectra using emcee, an affine-invariant ensemble sampler for Markov Chain Monte Carlo. Naima is an Astropy affiliated package.
There are two main components of the package: a set of nonthermal Radiative Models, and a set of utility functions that make it easier to fit a given model to observed spectral data (see Model fitting).
Nonthermal radiative models are available for Synchrotron, inverse Compton, Bremsstrahlung, and neutral pion decay processes. All of the models allow the use of an arbitrary shape of the particle energy distribution, and several functional models are also available to be used as particle distribution functions. See Radiative Models for a detailed explanation of these.
Use the sidebar on the left to access the documentation.
License & Attribution¶
Naima is released under a 3-clause BSD style license - see the LICENSE.rst for details.
If you find Naima useful in your research, you can cite Zabalza (2015) (arXiv, ADS) to acknowledge its use. The BibTeX entry for the paper is:
@ARTICLE{naima,
author = {{Zabalza}, V.},
title = {naima: a Python package for inference of relativistic particle
energy distributions from observed nonthermal spectra},
year = 2015,
journal = {Proc.~of International Cosmic Ray Conference 2015},
pages = "922",
eprint = {1509.03319},
adsurl = {http://adsabs.harvard.edu/abs/2015arXiv150903319Z},
}
Contributing¶
Please report any issues with the package here.
All development of Naima is done through the github repository, and contributions to the code are welcome. The development model is similar to that of astropy, so you can check the astropy Developer Documentation if you need information on how to make a code contribution.
Changelog¶
0.10.2 (2025-01-17)¶
Fix bug when Eemin and Eemax where set too close. Fixes #225.
0.10.1 (2025-01-17)¶
Dropped support for Python 3.9, updated to numpy v2, updated packaging.
0.10.0 (2021-11-02)¶
Updated emcee dependency to version 3. The interface to access the chain, log-probability, and blobs has changed accordingly, see emcee’s documentation.
0.9.1 (2020-01-31)¶
Fix exceptions thrown by
np.array_equal
for some combinations of model and blob outputs.
0.9.0 (2019-11-08)¶
Dropped Python 2 support. If you need to use naima in Python 2, please use version 0.8.4.
0.8.4 (2019-08-27)¶
Updated deprecated uses of numpy and astropy.Quantity logic
Updated tests for latest versions of dependencies
0.8.3 (2018-11-27)¶
Bug fixes¶
Fixed plotting scalar blobs with units.
Fixed plotting vector blobs with same length as data but incompatible units.
0.8.2 (2018-11-26)¶
Formatted source code with black.
Bug fixes¶
Fixed deprecated use of np.all and normed argument to matplotlib’s hist.
0.8.1 (2017-09-27)¶
Bug fixes¶
Fixed deprecated negative signs on numpy booleans.
Fixed wrong sign in delta functional approximation of Kelner PionDecay.
0.8 (2016-12-21)¶
Added a
threads
parameter toplot_fit
andplot_samples
that set the number of cores to use in computing model samples for plotting.Added a new model for EBL absorption based on the tables of Dominguez et al. 2011.
Bug fixes¶
Updated to use new
emcee
autocorrelation API in version 2.2.Fixed sherpa models string representation.
0.7.1 (2016-02-04)¶
Packaging bugfix
0.7 (2016-02-04)¶
The
InverseCompton
class can now compute IC on arbitrary seed photon fields passed as arrays.plot_fit
andplot_data
have new options (errorbar_opts
andulim_opts
) to control the properties of spectral flux points and upper-limits.There is a new table model class in
naima.models.TableModel
.Added
corner
(formertriangle_plot
) as a dependency.
0.6.1 (2015-10-29)¶
Performance improvements to the memoize logic that result in 10% or higher improvement in model execution time.
0.6 (2015-09-10)¶
Medians and associated errors are now shown with a precision corresponding to a single significant digit in the errors (except when the leading digit is 1, when two significant digits are shown). Note that they are still saved with full precision to the result tables.
There is a new GUI tool for interactive model fitting:
InteractiveModelFitter
, which can be accessed directly or through theinteractive
argument ofget_sampler
prior to a sampling run.Sampling run results can be saved and retrieved for later analysis or archival with the new functions
naima.save_run
andnaima.read_run
.The individual contributions to the total Inverse Compton spectrum of the different seed photon fields can now be accessed through the
seed
argument of theInverseCompton.flux
andInverseCompton.sed
functions.
Bug Fixes¶
save_diagnostic_plots
now turns matplotlib interactivity off, so the plots are only saved and not shown.The
group
column is now preserved if a data table is validated more than once.
0.5 (2015-08-05)¶
save_results_table
now saves the maximum log likelihood and ML parameters of the sample.Update
astropy_helpers
to 1.0.2 and require astropy >= 1.0.2 to ensure pickleable Tables.Internal data is a QTable instead of a dict.
When multiple input spectra are used, they are now plotted with different colors and markers.
Now doing the prefit with a minimizer that allows for relative tolerance termination: in general prefit will be faster.
Add
e_range
ande_npoints
parameters toplot_fit
to allow computing the model samples for a wider energy range that the observed spectrum (or at energies between data sets, such as X-ray and gamma-ray)Added
plot_corner
as a thin wrapper aroundtriangle.corner
with ML parameter plotting.
0.4 (2015-03-19)¶
All models have a cache of length 10 so that the output is not computed when the parameters have not changed. It can be turned off through the
_memoize
attribute of the models.
Bug Fixes¶
Fixed concatenation of UL and CL in
validate_data_table
.
0.3 (2015-02-19)¶
Added an option to save the distribution properties of scalar blobs when saving results table: option
include_blobs
ofsave_results_table
.A new method for radiative classes allows to renormalize the particle distributions to a given energy content in particles. See
set_We
andset_Wp
in leptonic and hadronic classes, respectively.The default FIR and NIR photon fields for
naima.InverseCompton
have been set to the GALPROP values at a galactic radius of 6.5 kpc.Require astropy >= 1.0.
Bug Fixes¶
Fixed sed conversion of residuals [#69]
Fixed
plot_data
so it can take lists of data_tables.
API Changes¶
The name of the
table_format
parameter ofsave_results_table
has been changed toformat
for consistency withastropy.io.ascii
.
0.2 (2015-02-10)¶
Refactored sherpa models to use parent SherpaModelECPL class [#62]
Added a data_sed flag to get_sampler to select whether to convert all data tables to SED or choose format of first data tables when providing multiple data tables.
Added support for a
flux_ul
column in input data tables.Added a method to estimate magnetic field:
naima.estimate_B
.Added the option to perform an optimization of the parameters before the MCMC run: see option
prefit
innaima.get_sampler
.Convert between SED and differential fluxes automatically if the model and data physical types do not match.
Add blob_labels parameter to save_diagnostic_plots.
Bug Fixes¶
Fix sherpa models guess() for integrated datasets.
Only complain about CL when there are ULs at a different CL.
Fix parsing of string upper limit columns in Python 3.
Use old energy unit when plotting a new data set onto a figure [#64]
Show ordinate units when plotting blobs without spectral data.
API Changes¶
module sherpamod is now sherpa_modules.
0.1 (2015-02-02)¶
Initial release