In [3]:
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline
%matplotlib notebook

from threeML import *

In [2]:
data_dir = os.path.join('gbm','bn080916009')
trigger_number = 'bn080916009'

# Download the data

data_dir_gbm = os.path.join('gbm',trigger_number)
gbm_data = download_GBM_trigger_data(trigger_number,detectors=['n3','b0'],destination_directory=data_dir_gbm,compress_tte=True)



src_selection = "0.-5."


nai3 = FermiGBMTTELike('NAI3',
                         os.path.join(data_dir, "glg_tte_n3_bn080916009_v01.fit.gz"),
                         "-10-0,100-200",
                         src_selection,
                         rsp_file=os.path.join(data_dir, "glg_cspec_n3_bn080916009_v00.rsp2"))

bgo0 = FermiGBMTTELike('BGO0',
                         os.path.join(data_dir, "glg_tte_b0_bn080916009_v01.fit.gz"),
                         "-10-0,100-200",
                         src_selection,
                         rsp_file=os.path.join(data_dir, "glg_cspec_b0_bn080916009_v00.rsp2"))


nai3.set_active_measurements("8.0-30.0", "40.0-950.0")
bgo0.set_active_measurements("250-43000")


Auto-determined polynomial order: 1


WARNING UserWarning: No TLMIN keyword found. This DRM does not follow OGIP standards. Assuming TLMIN=1


WARNING VisibleDeprecationWarning: converting an array with ndim > 0 to an index will result in an error in the future

Auto-probed noise models:
- observation: poisson
- background: gaussian
Auto-determined polynomial order: 1


Auto-probed noise models:
- observation: poisson
- background: gaussian
Range 8.0-30.0 translates to channels 4-21
Range 40.0-950.0 translates to channels 27-125
Now using 117 channels out of 128
Range 250-43000 translates to channels 1-126
Now using 126 channels out of 128

In [4]:
nai3.create_time_bins(start=0,stop=10,dt=2,method='constant')
bgo0.read_bins(nai3)


nai3_intervals = nai3.get_ogip_from_binner()
bgo0_intervals = bgo0.get_ogip_from_binner()


all_data = nai3_intervals + bgo0_intervals

In [5]:
triggerName = 'bn080916009'
ra = 121.8
dec = -61.3




data_list = DataList( *all_data )



band = Band()


GRB = PointSource( triggerName, ra, dec, spectral_shape=band  )

model = Model( GRB )


time = IndependentVariable("time",13.0, unit='s')
model

law = Powerlaw(K=500,index=-1)

#law = Line(a=-0.02,b=-2.0)
model.add_independent_variable(time)
model.link(model.bn080916009.spectrum.main.Band.xp,time,law)

mean_time = [np.mean([x,y]) for x,y in zip(nai3.bins[0],nai3.bins[1])]





ff = step_generator(mean_time,band.alpha)



model.link(model.bn080916009.spectrum.main.Band.alpha,time,ff)


ff = step_generator(mean_time,band.K)



model.link(model.bn080916009.spectrum.main.Band.K,time,ff)


ff = step_generator(mean_time,band.beta)



model.link(model.bn080916009.spectrum.main.Band.beta,time,ff)




for n,b,t in zip(nai3_intervals,bgo0_intervals,mean_time):
    
    
    n.external_property(time,t)
    b.external_property(time,t)

In [6]:
model


Out[6]:
Point sources: bn080916009

Extended sources: (none)

Particle sources: (none)

Free parameters:
namevaluemin_valuemax_valueunitdeltafree
bn080916009.spectrum.main.Band.K.composite.value_10.0001NoneNone1 / (cm2 keV s)0.1True
bn080916009.spectrum.main.Band.K.composite.value_20.0001NoneNone1 / (cm2 keV s)0.1True
bn080916009.spectrum.main.Band.K.composite.value_30.0001NoneNone1 / (cm2 keV s)0.1True
bn080916009.spectrum.main.Band.K.composite.value_40.0001NoneNone1 / (cm2 keV s)0.1True
bn080916009.spectrum.main.Band.K.composite.value_50.0001NoneNone1 / (cm2 keV s)0.1True
bn080916009.spectrum.main.Band.alpha.composite.value_1-1.0-1.53.00.1True
bn080916009.spectrum.main.Band.alpha.composite.value_2-1.0-1.53.00.1True
bn080916009.spectrum.main.Band.alpha.composite.value_3-1.0-1.53.00.1True
bn080916009.spectrum.main.Band.alpha.composite.value_4-1.0-1.53.00.1True
bn080916009.spectrum.main.Band.alpha.composite.value_5-1.0-1.53.00.1True
bn080916009.spectrum.main.Band.xp.Powerlaw.K500.0NoneNonekeV0.1True
bn080916009.spectrum.main.Band.xp.Powerlaw.index-1.0-10.010.00.2True
bn080916009.spectrum.main.Band.beta.composite.value_1-2.0-5.0-1.60.1True
bn080916009.spectrum.main.Band.beta.composite.value_2-2.0-5.0-1.60.1True
bn080916009.spectrum.main.Band.beta.composite.value_3-2.0-5.0-1.60.1True
bn080916009.spectrum.main.Band.beta.composite.value_4-2.0-5.0-1.60.1True
bn080916009.spectrum.main.Band.beta.composite.value_5-2.0-5.0-1.60.1True


Linked parameters:
namelinked tofunctioncurrent valueunit
bn080916009.spectrum.main.Band.Ktimecomposite0.01 / (cm2 keV s)
bn080916009.spectrum.main.Band.alphatimecomposite-0.0
bn080916009.spectrum.main.Band.xptimePowerlaw38.4615384615keV
bn080916009.spectrum.main.Band.betatimecomposite-0.0

In [7]:
jl = JointLikelihood( model, data_list, verbose=False )
#jl.set_minimizer("PYOPT","COBYLA")
res = jl.fit()


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [  2.07288868e+01  -9.56086297e+00   1.26117679e+01   9.43338201e-01
  -1.67599809e+01   2.82404089e+00   2.50709106e+00   2.68650639e+00
   2.07442537e+00   2.21922370e+00   1.73282619e+03   9.17849568e+00
  -2.18749440e+00  -2.55957053e+00  -2.10240814e+00  -3.44166489e+00
  -2.37720318e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [  1.05392738e+00  -4.57523085e-01   6.51239620e-01   6.34536296e-02
  -8.27437708e-01  -1.21731856e+00  -1.29755321e+00  -1.35557438e+00
  -1.44526819e+00  -1.42764730e+00   1.72963921e+03   6.84750035e-01
  -2.04505547e+00  -2.35737455e+00  -2.08947092e+00  -3.47622643e+00
  -2.32550319e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [ -2.82817135e+00  -2.05314048e+00   1.29803220e+01  -1.90299372e+01
   4.30323822e+00  -1.00057247e+00   5.55230858e-01   1.26750106e+00
  -1.42396304e+00   2.70912523e+00   1.72343401e+03   9.58714485e+00
  -4.87826628e+00  -4.69566195e+00  -2.65807553e+00  -2.79686173e+00
  -3.41275764e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [ -1.23670218e-01  -8.22550903e-02   6.69822529e-01  -9.35198723e-01
   2.25516501e-01   2.90426858e+00   2.57459749e+00   2.57793752e+00
   2.06559038e+00   2.20890256e+00   1.72916964e+03   8.65349089e+00
  -2.20853537e+00  -2.55094933e+00  -2.11324612e+00  -3.44374038e+00
  -2.37058219e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [ -6.59909608e-02  -8.68012553e-01  -1.09012214e-01   1.08756534e-01
  -5.47762890e-02  -9.68600797e-01   5.25786353e-01   1.18940419e+00
  -1.40112318e+00   2.70530229e+00   1.72338244e+03   9.98396447e+00
  -4.87957265e+00  -4.69341563e+00  -2.68020656e+00  -2.79795492e+00
  -3.41596640e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [  1.43756092e-02  -2.30447445e-02   1.56434599e-02   2.13131712e-02
   7.71105357e-03   2.90425328e+00   2.57340605e+00   2.57306896e+00
   2.07100844e+00   2.21063265e+00   1.72916693e+03   8.59719577e+00
  -2.20848092e+00  -2.55121959e+00  -2.11411062e+00  -3.44378215e+00
  -2.37073828e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [  4.06029094e+00   2.81359191e+00  -3.63037191e+00  -3.08172066e+00
   1.28499792e-01  -9.04728102e-01   4.89818049e-01   1.48580429e+00
  -1.37592566e+00   2.75773982e+00   1.72433547e+03   9.99869893e+00
  -4.87302230e+00  -4.67345243e+00  -2.69687387e+00  -2.80722440e+00
  -3.42772607e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [  2.20488788e-01   1.58923059e-01  -1.60736164e-01  -1.37992080e-01
   1.67186393e-02   2.96439559e+00   2.33013284e+00   2.27599849e+00
   2.28402654e+00   2.41865097e+00   1.72920012e+03   8.82570114e+00
  -2.21780259e+00  -2.56284438e+00  -2.11596644e+00  -3.44263692e+00
  -2.37353485e+00]


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [ -1.94197951e-01  -7.37015394e-02  -1.93840880e-01  -5.23694802e-02
  -1.60519120e-01   2.51526078e+00   1.47656133e+00   1.44536516e+00
   1.47827608e+00  -1.42947135e+00   1.68311473e+03   9.53419613e+00
  -2.54619308e+00  -4.86869243e+00  -4.66276281e+00  -4.59695530e+00
  -4.89763724e+00]


WARNING RuntimeWarning: divide by zero encountered in log


WARNING RuntimeWarning: invalid value encountered in multiply


WARNING NotANumberInLikelihood: These parameters returned a logLike = Nan: [  1.49876960e-02   2.60623101e-02   1.13162692e-02  -8.42084638e-03
   5.76938804e-03   2.99594093e+00  -9.60516173e-01  -2.59358250e-01
  -5.66808639e-01   2.99998971e+00   1.57152559e+03   3.44410950e+00
  -1.79327924e+00  -2.77686589e+00  -2.55335132e+00  -4.97388166e+00
  -4.39701737e+00]

Best fit values:

#NameBest fit valueUnit
0bn080916009.spectrum.main.Band.K.composite.value_10.0183 +/- 0.00061 / (cm2 keV s)
1bn080916009.spectrum.main.Band.K.composite.value_20.0231 +/- 0.00061 / (cm2 keV s)
2bn080916009.spectrum.main.Band.K.composite.value_30.0214 +/- 0.00061 / (cm2 keV s)
3bn080916009.spectrum.main.Band.K.composite.value_40.0158 +/- 0.00051 / (cm2 keV s)
4bn080916009.spectrum.main.Band.K.composite.value_50.0092 +/- 0.00051 / (cm2 keV s)
5bn080916009.spectrum.main.Band.alpha.composite.value_1-1.206 +/- 0.032
6bn080916009.spectrum.main.Band.alpha.composite.value_2-1.266 +/- 0.026
7bn080916009.spectrum.main.Band.alpha.composite.value_3-1.295 +/- 0.027
8bn080916009.spectrum.main.Band.alpha.composite.value_4-1.5000 +/- 0.0014
9bn080916009.spectrum.main.Band.alpha.composite.value_5-1.50000 +/- 0.00006
10bn080916009.spectrum.main.Band.xp.Powerlaw.K1711.4 +/- 1.4keV
11bn080916009.spectrum.main.Band.xp.Powerlaw.index0.36 +/- 0.12
12bn080916009.spectrum.main.Band.beta.composite.value_1-4.8 +/- 1.0
13bn080916009.spectrum.main.Band.beta.composite.value_2-4.7 +/- 1.2
14bn080916009.spectrum.main.Band.beta.composite.value_3-2.00 +/- 0.19
15bn080916009.spectrum.main.Band.beta.composite.value_4-4.7 +/- 1.4
16bn080916009.spectrum.main.Band.beta.composite.value_5-4.3 +/- 1.8
NOTE: errors on parameters are approximate. Use get_errors().


Correlation matrix:

1.000.000.000.000.000.050.000.000.000.00-0.00-0.00-0.000.000.00-0.00-0.00
0.001.000.140.070.060.000.200.090.010.00-0.00-0.420.00-0.000.17-0.00-0.00
0.000.141.000.060.050.000.140.150.010.000.00-0.340.000.00-0.03-0.00-0.00
0.000.070.061.000.030.000.080.040.060.000.00-0.180.000.000.07-0.00-0.00
0.000.060.050.031.000.000.060.030.000.000.00-0.150.000.000.06-0.00-0.00
0.050.000.000.000.001.000.000.000.000.00-0.00-0.00-0.000.000.00-0.00-0.00
0.000.200.140.080.060.001.000.100.010.00-0.00-0.430.00-0.000.18-0.00-0.00
0.000.090.150.040.030.000.101.000.000.000.00-0.220.000.00-0.19-0.00-0.00
0.000.010.010.060.000.000.010.001.000.000.00-0.020.000.000.01-0.00-0.00
0.000.000.000.000.000.000.000.000.001.000.00-0.000.000.000.00-0.00-0.00
-0.00-0.000.000.000.00-0.00-0.000.000.000.001.00-0.00-0.00-0.000.00-0.00-0.00
-0.00-0.42-0.34-0.18-0.15-0.00-0.43-0.22-0.02-0.00-0.001.00-0.00-0.01-0.410.010.00
-0.000.000.000.000.00-0.000.000.000.000.00-0.00-0.001.000.000.00-0.00-0.00
0.00-0.000.000.000.000.00-0.000.000.000.00-0.00-0.010.001.000.00-0.00-0.00
0.000.17-0.030.070.060.000.18-0.190.010.000.00-0.410.000.001.00-0.00-0.00
-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.000.01-0.00-0.00-0.001.000.00
-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.00-0.000.00-0.00-0.00-0.000.001.00
Values of -log(likelihood) at the minimum:

-log(likelihood)
total 6962.245441
NAI3_0 662.168003
NAI3_1 677.478685
NAI3_2 622.243146
NAI3_3 608.365103
NAI3_4 558.358810
BGO0_0 790.470529
BGO0_1 864.558210
BGO0_2 851.910814
BGO0_3 703.998014
BGO0_4 622.694128

In [ ]:
cleanup_downloaded_GBM_data(gbm_data)