https://github.com/bjoernbiltzinger/pynchrotron

Implements synchrotron emission from cooling electrons

https://github.com/bjoernbiltzinger/pynchrotron

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: nature.com, zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.6%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Implements synchrotron emission from cooling electrons

Basic Info
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of grburgess/pynchrotron
Created over 5 years ago · Last pushed over 4 years ago

https://github.com/BjoernBiltzinger/pynchrotron/blob/master/

[![Build Status](https://travis-ci.org/grburgess/pynchrotron.svg?branch=master)](https://travis-ci.org/grburgess/pynchrotron)
[![codecov](https://codecov.io/gh/grburgess/pynchrotron/branch/master/graph/badge.svg)](https://codecov.io/gh/grburgess/pynchrotron)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3544259.svg)](https://doi.org/10.5281/zenodo.3544259)

# pynchrotron
![alt text](https://raw.githubusercontent.com/grburgess/pynchrotron/master/logo.png)

Implements synchrotron emission from cooling electrons. This is the model used in [Burgess et al (2019)](https://www.nature.com/articles/s41550-019-0911-z?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+natastron%2Frss%2Fcurrent+%28Nature+Astronomy%29&utm_content=Google+Feedfetcher). Please cite if you find this code useful for your research.

* This code gets rid of the need for GSL which was originally relied on for a quick computation of the of the synchrotron kernel which is an integral over a  Bessel function. 
* This code has been ported from GSL and written directly in python as well as accelerated with numba
* An astromodels function is also supplied for direct use in 3ML.


## Usage

```python
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline 

import pynchrotron
```

    /Users/jburgess/.environs/pynchro/lib/python3.7/site-packages/astromodels/core/parameter.py:555: UserWarning: We have set the min_value of K to 1e-99 because there was a postive transform
      warnings.warn('We have set the min_value of %s to 1e-99 because there was a postive transform' % self.path)
    /Users/jburgess/.environs/pynchro/lib/python3.7/site-packages/astromodels/core/parameter.py:555: UserWarning: We have set the min_value of xc to 1e-99 because there was a postive transform
      warnings.warn('We have set the min_value of %s to 1e-99 because there was a postive transform' % self.path)


## Create an astromodels model


```python
model = pynchrotron.SynchrotronNumerical()

model


```




  • description: Synchrotron emission from cooling electrions
  • formula: $ $
  • parameters:
    • K:
      • value: 1.0
      • desc: normalization
      • min_value: 0.0
      • max_value: None
      • unit:
      • is_normalization: False
      • delta: 0.1
      • free: True
    • B:
      • value: 100.0
      • desc: energy scaling
      • min_value: 0.01
      • max_value: None
      • unit:
      • is_normalization: False
      • delta: 10.0
      • free: True
    • index:
      • value: 3.5
      • desc: spectral index of electrons
      • min_value: 2.0
      • max_value: 6.0
      • unit:
      • is_normalization: False
      • delta: 0.35000000000000003
      • free: True
    • gamma_min:
      • value: 500000.0
      • desc: minimum electron lorentz factor
      • min_value: 1.0
      • max_value: None
      • unit:
      • is_normalization: False
      • delta: 50000.0
      • free: False
    • gamma_cool:
      • value: 90000000.0
      • desc: cooling time of electrons
      • min_value: None
      • max_value: None
      • unit:
      • is_normalization: False
      • delta: 9000000.0
      • free: True
    • gamma_max:
      • value: 100000000.0
      • desc: minimum electron lorentz factor
      • min_value: 1000000.0
      • max_value: None
      • unit:
      • is_normalization: False
      • delta: 10000000.0
      • free: False
    • bulk_gamma:
      • value: 1.0
      • desc: bulk Lorentz factor
      • min_value: 1.0
      • max_value: None
      • unit:
      • is_normalization: False
      • delta: 0.1
      • free: False
## Plot the model ```python fig, ax = plt.subplots() ene = np.logspace(1,6,400) ax.loglog(ene, ene**2 * model(ene)) ax.set_xlabel('energy') ax.set_ylabel(r'$\nu F_{\nu}$') ``` Text(0, 0.5, '$\\nu F_{\\nu}$') ![png](demo_files/demo_4_1.png) ```python fig, ax = plt.subplots() gamma_min = 500000. gamma_cool = np.linspace(.1 * gamma_min, 5* gamma_min, 10) ene = np.logspace(-1,6,400) for gc in gamma_cool: model.gamma_cool = gc model.gamma_min = gamma_min ax.loglog(ene, ene**2 * model(ene)) ax.set_xlabel('energy') ax.set_ylabel(r'$\nu F_{\nu}$') ``` Text(0, 0.5, '$\\nu F_{\\nu}$') ![png](demo_files/demo_5_1.png)

Owner

  • Name: Björn Biltzinger
  • Login: BjoernBiltzinger
  • Kind: user
  • Location: Munich

PhD Student at MPE in Garching

GitHub Events

Total
Last Year