def _create_plc(gamma_grid_size,log_values,normalize,skip_build,emitters_type):

        n_e_plc = EmittersDistribution(name='plc',
                                             spectral_type='plc',
                                             normalize=normalize,
                                             emitters_type=emitters_type,
                                             log_values=log_values,
                                             skip_build=skip_build,
                                             gamma_grid_size=gamma_grid_size)

        a_t, b_t = n_e_plc.set_bounds(1, 1E9, log_val=n_e_plc._log_values)
        n_e_plc.add_par('gamma_cut', par_type='turn-over-energy', val=1E4, vmin=a_t, vmax=b_t,
                              unit='lorentz-factor',log=log_values)
        n_e_plc.add_par('p', par_type='LE_spectral_slope', val=2.0, vmin=-10., vmax=10, unit='')
        n_e_plc.set_distr_func(distr_func_plc)
        return n_e_plc
    def _create_lpep(gamma_grid_size, log_values, normalize, skip_build, emitters_type):

        n_lep = EmittersDistribution(name='lpep',
                                    spectral_type='lp',
                                    normalize=normalize,
                                    emitters_type=emitters_type,
                                    log_values=log_values,
                                    skip_build=skip_build,
                                    gamma_grid_size=gamma_grid_size)

        a_t, b_t = n_lep.set_bounds(1, 1E9, log_val=n_lep._log_values)
        n_lep.add_par('gamma_p', par_type='turn-over-energy', val=1E4, vmin=a_t, vmax=b_t,
                     unit='lorentz-factor',log=log_values)
        n_lep.add_par('r', par_type='spectral_curvature', val=1.0, vmin=-15., vmax=15., unit='')
        n_lep.set_distr_func(distr_func_lep)

        return n_lep
def test_dep_par(plot=False):
    from jetset.jet_emitters import EmittersDistribution
    import numpy as np

    def distr_func_bkn(gamma_break, gamma, s1, s2):
        return np.power(gamma, -s1) * (1. + (gamma / gamma_break)) ** (-(s2 - s1))

    n_e_bkn = EmittersDistribution('bkn', spectral_type='bkn')
    n_e_bkn.add_par('gamma_break', par_type='turn-over-energy', val=1E3, vmin=1., vmax=None, unit='lorentz-factor')
    n_e_bkn.add_par('s1', par_type='LE_spectral_slope', val=2.5, vmin=-10., vmax=10, unit='')
    n_e_bkn.add_par('s2', par_type='LE_spectral_slope', val=3.2, vmin=-10., vmax=10, unit='')
    n_e_bkn.set_distr_func(distr_func_bkn)
    n_e_bkn.parameters.show_pars()
    n_e_bkn.parameters.s1.val = 2.0
    n_e_bkn.parameters.s2.val = 3.5
    n_e_bkn.update()
    n_e_bkn.parameters.show_pars()

    from jetset.jet_model import Jet

    j = Jet(emitters_distribution=n_e_bkn)

    # def par_func(s1):
    #    return s1+1
    j.make_dependent_par(par='s2', depends_on=['s1'], par_expr='s1+1')
    print('here')
    j.parameters.s1.val = 3
    print('done')
    np.testing.assert_allclose(j.parameters.s2.val, j.parameters.s1.val + 1)
    j.save_model('jet.pkl')
    new_jet = Jet.load_model('jet.pkl')
    print('here')
    new_jet.parameters.s1.val = 2
    print('done')

    np.testing.assert_allclose(new_jet.parameters.s2.val, new_jet.parameters.s1.val + 1)
    j.eval()
    new_jet.show_model()
    def _create_pl(gamma_grid_size, log_values, normalize, skip_build, emitters_type):

        n_e_pl = EmittersDistribution(name='pl',
                                       spectral_type='pl',
                                       normalize=normalize,
                                       emitters_type=emitters_type,
                                       log_values=log_values,
                                       skip_build=skip_build,
                                       gamma_grid_size=gamma_grid_size)

        a_t, b_t = n_e_pl.set_bounds(1, 1E9, log_val=n_e_pl._log_values)

        n_e_pl.add_par('p', par_type='LE_spectral_slope', val=2.0, vmin=-10., vmax=10, unit='')
        n_e_pl.set_distr_func(distr_func_pl)

        return n_e_pl
Esempio n. 5
0
def test_custom_emitters(plot=True):
    from jetset.jet_model import Jet

    from jetset.jet_emitters import EmittersDistribution
    import numpy as np

    def distr_func_bkn(gamma_break, gamma, s1, s2):
        return np.power(gamma, -s1) * (1. +
                                       (gamma / gamma_break))**(-(s2 - s1))

    n_e = EmittersDistribution('custom_bkn', spectral_type='bkn')
    n_e.add_par('gamma_break',
                par_type='turn-over-energy',
                val=1E3,
                vmin=1.,
                vmax=None,
                unit='lorentz-factor')
    n_e.add_par('s1',
                par_type='LE_spectral_slope',
                val=2.5,
                vmin=-10.,
                vmax=10,
                unit='')
    n_e.add_par('s2',
                par_type='LE_spectral_slope',
                val=3.2,
                vmin=-10.,
                vmax=10,
                unit='')
    n_e.set_distr_func(distr_func_bkn)
    n_e.parameters.show_pars()
    n_e.parameters.s1.val = 2.0
    n_e.parameters.s2.val = 3.5
    if plot is True:
        n_e.plot()

    my_jet = Jet(emitters_distribution=n_e)
    my_jet.Norm_distr = True
    my_jet.parameters.N.val = 5E4
    my_jet.eval()
    np.testing.assert_allclose(my_jet.emitters_distribution.eval_N(),
                               my_jet.parameters.N.val,
                               rtol=1E-5)
    print(my_jet.emitters_distribution.eval_N(), my_jet.parameters.N.val)
    print(n_e.eval_N(), my_jet.parameters.N.val)
    assert (my_jet.emitters_distribution.emitters_type == 'electrons')
    my_jet.save_model('test_jet_custom_emitters.pkl')
    my_jet = Jet.load_model('test_jet_custom_emitters.pkl')
    my_jet.eval()
def custom_emitters(plot=True):
    from jetset.jet_model import Jet

    from jetset.jet_emitters import EmittersDistribution
    import numpy as np

    def distr_func_bkn(gamma_break, gamma, s1, s2):
        return np.power(gamma, -s1) * (1. +
                                       (gamma / gamma_break))**(-(s2 - s1))

    n_e = EmittersDistribution('bkn')
    n_e.add_par('gamma_break',
                par_type='turn-over-energy',
                val=1E3,
                vmin=1.,
                vmax=None,
                unit='lorentz-factor')
    n_e.add_par('s1',
                par_type='LE_spectral_slope',
                val=2.5,
                vmin=-10.,
                vmax=10,
                unit='')
    n_e.add_par('s2',
                par_type='LE_spectral_slope',
                val=3.2,
                vmin=-10.,
                vmax=10,
                unit='')
    n_e.set_distr_func(distr_func_bkn)
    n_e.parameters.show_pars()
    n_e.parameters.s1.val = 2.0
    n_e.parameters.s2.val = 3.5
    if plot is True:
        n_e.plot()

    my_jet = Jet(electron_distribution=n_e)
    my_jet.Norm_distr = True
    my_jet.parameters.N.val = 5E4
    my_jet.eval()
    diff = np.fabs(
        np.trapz(n_e.n_gamma_e, n_e.gamma_e) - my_jet.parameters.N.val)
    print('diff', diff)
    assert (diff < 1E-3)