Fitting RHESSI Spectra#

Example of Fitting RHESSI Spectra#

This notebook provides a quick overlook of the fitting code in sunkit-spex and some real examples of fitting RHESSI spectra that can be compared to published works.

Try fitting the spectra presented in [Fletcher2007] an M1.2 flare which occurred on 2002 October 5.

For a more explained demonstration of the general fitting process and capabilities see the NuSTAR fitting example.

import warnings

import matplotlib.pyplot as plt
import numpy as np
from numpy.exceptions import VisibleDeprecationWarning
from parfive import Downloader

from astropy.time import Time

from sunkit_spex.extern.rhessi import RhessiLoader
from sunkit_spex.legacy.fitting.fitter import Fitter

warnings.filterwarnings("ignore", category=RuntimeWarning)
try:
    warnings.filterwarnings("ignore", category=VisibleDeprecationWarning)
except AttributeError:
    warnings.filterwarnings("ignore", category=np.exceptions.VisibleDeprecationWarning)

Download the example data

dl = Downloader()
base_url = "https://homepages.dias.ie/smaloney/sunkit-spex/rhessi/"
file_names = ["20021005_103800_spec.fits", "20021005_103800_srm.fits"]

for fname in file_names:
    dl.enqueue_file(base_url + fname, path="../../rhessi/")
files = dl.download()
Files Downloaded:   0%|          | 0/2 [00:00<?, ?file/s]

20021005_103800_spec.fits:   0%|          | 0.00/536k [00:00<?, ?B/s]


20021005_103800_srm.fits:   0%|          | 0.00/420k [00:00<?, ?B/s]


20021005_103800_srm.fits:   0%|          | 1.02k/420k [00:00<00:41, 10.1kB/s]

20021005_103800_spec.fits:   2%|▏         | 8.85k/536k [00:00<00:11, 45.2kB/s]


20021005_103800_srm.fits:   8%|▊         | 33.9k/420k [00:00<00:01, 197kB/s]

20021005_103800_spec.fits:  18%|█▊        | 96.9k/536k [00:00<00:01, 285kB/s]


20021005_103800_srm.fits:  20%|██        | 85.1k/420k [00:00<00:01, 233kB/s]

20021005_103800_spec.fits:  26%|██▌       | 139k/536k [00:00<00:01, 310kB/s]


20021005_103800_srm.fits:  43%|████▎     | 180k/420k [00:00<00:00, 438kB/s]

20021005_103800_spec.fits:  71%|███████   | 379k/536k [00:00<00:00, 891kB/s]


20021005_103800_srm.fits:  89%|████████▉ | 375k/420k [00:00<00:00, 888kB/s]



Files Downloaded:  50%|█████     | 1/2 [00:01<00:01,  1.05s/file]

20021005_103800_spec.fits:  98%|█████████▊| 525k/536k [00:00<00:00, 1.01MB/s]


Files Downloaded: 100%|██████████| 2/2 [00:01<00:00,  1.74file/s]

Set up some plotting numbers

time_profile_size = (9, 6)
spec_plot_size = (6, 6)
tol = 1e-20
spec_font_size = 18
default_text = 10
xlims, ylims = [3, 100], [5e-4, 1e4]

Load in the data…

rhess_spec = RhessiLoader(
    spectrum_fn="../../rhessi/20021005_103800_spec.fits", srm_fn="../../rhessi/20021005_103800_srm.fits"
)

To see what we have, we can plot the time profile. The whole file time is taken as the event time as default (indicated by purple shaded region).

We do this by accessing the RHESSI spectral loader in the ress_spec.loaded_spec_data dictionary. Since the RHESSI spectrum is the only one loaded it is under the "spectrum1" entry.

Default energy range plotted is all energies but the user can define an energy rangem or ranges. Ranges are inclusive at the bounds and here we see the 5$-$10 keV, 10$-$30 keV, and 25$-$50 keV ranges.

plt.rcParams["font.size"] = spec_font_size
plt.figure(figsize=time_profile_size)

# the line that actually plots
rhess_spec.lightcurve(energy_ranges=[[5, 10], [10, 30], [25, 50]])

plt.show()
plt.rcParams["font.size"] = default_text
RHESSI Lightcurve

Since the default event data is assumed to be the full time, we might want to change this. We also define a background time too and plot again.

Both need to be set, if one is None (default) then no background will be calculated or will be removed

rhess_spec.update_background_times(Time("2002-10-05T10:38:32"), Time("2002-10-05T10:40:32"))

# event time
rhess_spec.update_event_times(Time("2002-10-05T10:41:20"), Time("2002-10-05T10:42:24"))

Plot again

plt.rcParams["font.size"] = spec_font_size
plt.figure(figsize=time_profile_size)
rhess_spec.lightcurve(energy_ranges=[[5, 10], [10, 30], [25, 50]])
plt.show()
plt.rcParams["font.size"] = default_text
RHESSI Lightcurve

We can also see the X-ray evolution via a spectrogram.

# plot spectrogram
plt.rcParams["font.size"] = spec_font_size
plt.figure(figsize=(15, 10))
rhess_spec.spectrogram()
plt.show()
plt.rcParams["font.size"] = default_text
RHESSI Spectrogram [Counts s$^{-1}$]

Now let’s get going with a model and explicitly stating a fit statistic

fitter = Fitter(rhess_spec)

fitter.model = "(f_vth+thick_fn)"
fitter.loglikelihood = "cstat"

See what parameters we have to play with:

fitter.show_params
Table masked=True length=6
ParamStatusValueBoundsError
(min, max)(-, +)
str22str11float64objectobject
T1_spectrum1free1.00e+00(0.0, None)( 0.00e+00, 0.00e+00)
EM1_spectrum1free1.00e+00(0.0, None)( 0.00e+00, 0.00e+00)
total_eflux1_spectrum1free1.00e+00(0.0, None)( 0.00e+00, 0.00e+00)
index1_spectrum1free1.00e+00(0.0, None)( 0.00e+00, 0.00e+00)
e_c1_spectrum1free1.00e+00(0.0, None)( 0.00e+00, 0.00e+00)
Fit Stat.cstat ln(L)0.00e+00----


Looking at the spectrum, define sensible numbers for starting values (maybe some trial and error here).

For this sepctrum, we will fit the thermal and non-thermal model over different energy ranges separately then both over the full range.

We fit the thermal model from 6$-$15 keV and fix the non-thermal model parameters.

fitter.energy_fitting_range = [6, 15]

# sort model parameters
fitter.params["T1_spectrum1"] = {"Value": 50, "Bounds": (15, 99)}
fitter.params["EM1_spectrum1"] = {"Value": 2e1, "Bounds": (1e0, 1e4)}
fitter.params["total_eflux1_spectrum1"] = {"Status": "fix", "Value": 0.9, "Bounds": (1e-1, 1e1)}
fitter.params["index1_spectrum1"] = {"Status": "fix", "Value": 6, "Bounds": (3, 1e1)}
fitter.params["e_c1_spectrum1"] = {"Status": "fix", "Value": 2e1, "Bounds": (1e1, 1e2)}

Now perform the fit.

rhess_spec_fit = fitter.fit(tol=tol)

Fix thermal parameters and free non-thermal parameters and fit over 15$-$45 keV.

fitter.energy_fitting_range = [15, 45]

# sort model parameters
fitter.params["T1_spectrum1"] = "fix"
fitter.params["EM1_spectrum1"] = "fix"
fitter.params["total_eflux1_spectrum1"] = "free"
fitter.params["index1_spectrum1"] = "free"
fitter.params["e_c1_spectrum1"] = "free"

Do the fit

rhess_spec_fit = fitter.fit(tol=tol)

Free all parameters and fit over 6$-$45 keV.

# define energy fitting range
fitter.energy_fitting_range = [6, 45]

# sort model parameters
fitter.params["T1_spectrum1"] = "free"
fitter.params["EM1_spectrum1"] = "free"
fitter.params["total_eflux1_spectrum1"] = "free"
fitter.params["index1_spectrum1"] = "free"
fitter.params["e_c1_spectrum1"] = "free"

Fit

rhess_spec_fit = fitter.fit(tol=tol)

Let’s plot the result. Since a background has been set it will be displayed in grey behind all other models and data.

plt.rcParams["font.size"] = spec_font_size
plt.figure(figsize=spec_plot_size)

# the line that actually plots
axes, res_axes = fitter.plot()

# make plot nicer
for a in axes:
    a.set_xlim(xlims)
    a.set_ylim(ylims)
    a.set_xscale("log")
plt.show()
plt.rcParams["font.size"] = default_text
Spectrum 1

How is the background included when fitting?#

By default the (time scaled) background is added to the model then compared to the event data (i.e., fitting the event data with background+model). This is the recommended approach, especially since we’re dealing with Poisson statistics.

However, this has been difficult in the past in software like OSPEX and so fitting usually been done by subtracting the background from the event time and fitting the model to the result (i.e., fitting the event-background with the model). To replicate this method we make use of the data2data_minus_background setter; we set this to True.

fitter.data.loaded_spec_data["spectrum1"].data2data_minus_background = True
/home/docs/checkouts/readthedocs.org/user_builds/sunkit-spex/checkouts/latest/examples/legacy/fitting_RHESSI_spectra.py:227: UserWarning: Please use the `subtract_background` property instead.
  fitter.data.loaded_spec_data["spectrum1"].data2data_minus_background = True

The data being fitted then becomes event-background and a dictionary key is set to make sure that the background is not included in the fitting process. Fitting continues as normal as though there is not background.

We then reset the parameter starting values, perform the fit, and plot again.

# define energy fitting range
fitter.energy_fitting_range = [6, 15]

# sort model parameters
fitter.params["T1_spectrum1"] = {"Value": 50, "Bounds": (15, 99)}  # 22
fitter.params["EM1_spectrum1"] = {"Value": 2e1, "Bounds": (1e0, 1e2)}  # 20
fitter.params["total_eflux1_spectrum1"] = {"Status": "fix", "Value": 0.9, "Bounds": (1e-1, 1e1)}
fitter.params["index1_spectrum1"] = {"Status": "fix", "Value": 6, "Bounds": (3, 1e1)}
fitter.params["e_c1_spectrum1"] = {"Status": "fix", "Value": 2e1, "Bounds": (1e1, 1e2)}

Fit

fitter.fit(tol=tol)

# define energy fitting range
fitter.energy_fitting_range = [15, 45]

# sort model parameters
fitter.params["T1_spectrum1"] = "fix"
fitter.params["EM1_spectrum1"] = "fix"
fitter.params["total_eflux1_spectrum1"] = "free"
fitter.params["index1_spectrum1"] = "free"
fitter.params["e_c1_spectrum1"] = "free"

# fit
fitter.fit(tol=tol)

# define energy fitting range
fitter.energy_fitting_range = [6, 45]

# sort model parameters
fitter.params["T1_spectrum1"] = "free"
fitter.params["EM1_spectrum1"] = "free"
fitter.params["total_eflux1_spectrum1"] = "free"
fitter.params["index1_spectrum1"] = "free"
fitter.params["e_c1_spectrum1"] = "free"

# fit
fitter.fit(tol=tol)
[22.114085010088424, 100.0, 0.8727783861379571, 3.564801262970805, 10.0]

Plot again plot

plt.rcParams["font.size"] = spec_font_size
plt.figure(figsize=spec_plot_size)

# the line that actually plots
axes, res_axes = fitter.plot()

# make plot nicer
for a in axes:
    a.set_xlim(xlims)
    a.set_ylim(ylims)
    a.set_xscale("log")
plt.show()
plt.rcParams["font.size"] = default_text
Spectrum 1

As we can see, there is a “Counts=Evt-BG” tag added in the top left corner of the plot along with the BG grey label to indicate that the counts being fitted are calculated from the background subtracted event data.

If the user wishes to undo this and wants to return to using the model+background fitting the event method then set data2data_minus_background back to False like so.

fitter.data.loaded_spec_data["spectrum1"].data2data_minus_background = False
/home/docs/checkouts/readthedocs.org/user_builds/sunkit-spex/checkouts/latest/examples/legacy/fitting_RHESSI_spectra.py:304: UserWarning: Please use the `subtract_background` property instead.
  fitter.data.loaded_spec_data["spectrum1"].data2data_minus_background = False

Any change to the background time and the data2data_minus_background setter will be set back to False. Therefore, if the user changes the background times at all and still wants the event-background method then the data2data_minus_background setter must be set to True again.

Running an MCMC#

Run the MCMC.

rhess_spec_mcmc = fitter.run_mcmc()
  0%|          | 0/1200 [00:00<?, ?it/s]
  0%|          | 2/1200 [00:00<01:27, 13.77it/s]
  0%|          | 4/1200 [00:00<01:28, 13.44it/s]
  0%|          | 6/1200 [00:00<01:23, 14.31it/s]
  1%|          | 8/1200 [00:00<01:21, 14.58it/s]
  1%|          | 10/1200 [00:00<01:28, 13.51it/s]
  1%|          | 12/1200 [00:00<01:31, 12.94it/s]
  1%|          | 14/1200 [00:01<01:31, 12.92it/s]
  1%|▏         | 16/1200 [00:01<01:31, 12.88it/s]
  2%|▏         | 18/1200 [00:01<01:31, 12.95it/s]
  2%|▏         | 20/1200 [00:01<01:31, 12.88it/s]
  2%|▏         | 22/1200 [00:01<01:27, 13.50it/s]
  2%|▏         | 24/1200 [00:01<01:30, 12.95it/s]
  2%|▏         | 26/1200 [00:01<01:28, 13.27it/s]
  2%|▏         | 28/1200 [00:02<01:28, 13.23it/s]
  2%|▎         | 30/1200 [00:02<01:30, 12.94it/s]
  3%|▎         | 32/1200 [00:02<01:28, 13.18it/s]
  3%|▎         | 34/1200 [00:02<01:34, 12.36it/s]
  3%|▎         | 36/1200 [00:02<01:38, 11.77it/s]
  3%|▎         | 38/1200 [00:02<01:36, 12.00it/s]
  3%|▎         | 40/1200 [00:03<01:37, 11.90it/s]
  4%|▎         | 42/1200 [00:03<01:39, 11.64it/s]
  4%|▎         | 44/1200 [00:03<01:36, 12.01it/s]
  4%|▍         | 46/1200 [00:03<01:35, 12.12it/s]
  4%|▍         | 48/1200 [00:03<01:38, 11.67it/s]
  4%|▍         | 50/1200 [00:03<01:35, 12.02it/s]
  4%|▍         | 52/1200 [00:04<01:35, 11.97it/s]
  4%|▍         | 54/1200 [00:04<01:35, 12.04it/s]
  5%|▍         | 56/1200 [00:04<01:29, 12.81it/s]
  5%|▍         | 58/1200 [00:04<01:25, 13.41it/s]
  5%|▌         | 60/1200 [00:04<01:27, 12.98it/s]
  5%|▌         | 62/1200 [00:04<01:26, 13.19it/s]
  5%|▌         | 64/1200 [00:05<01:32, 12.30it/s]
  6%|▌         | 66/1200 [00:05<01:30, 12.55it/s]
  6%|▌         | 68/1200 [00:05<01:30, 12.57it/s]
  6%|▌         | 70/1200 [00:05<01:28, 12.83it/s]
  6%|▌         | 72/1200 [00:05<01:31, 12.36it/s]
  6%|▌         | 74/1200 [00:05<01:28, 12.69it/s]
  6%|▋         | 76/1200 [00:05<01:26, 13.01it/s]
  6%|▋         | 78/1200 [00:06<01:29, 12.54it/s]
  7%|▋         | 80/1200 [00:06<01:35, 11.73it/s]
  7%|▋         | 82/1200 [00:06<01:34, 11.85it/s]
  7%|▋         | 84/1200 [00:06<01:37, 11.48it/s]
  7%|▋         | 86/1200 [00:06<01:36, 11.52it/s]
  7%|▋         | 88/1200 [00:07<01:43, 10.78it/s]
  8%|▊         | 90/1200 [00:07<01:44, 10.66it/s]
  8%|▊         | 92/1200 [00:07<01:43, 10.72it/s]
  8%|▊         | 94/1200 [00:07<01:41, 10.90it/s]
  8%|▊         | 96/1200 [00:07<01:38, 11.24it/s]
  8%|▊         | 98/1200 [00:07<01:36, 11.47it/s]
  8%|▊         | 100/1200 [00:08<01:35, 11.54it/s]
  8%|▊         | 102/1200 [00:08<01:34, 11.60it/s]
  9%|▊         | 104/1200 [00:08<01:38, 11.13it/s]
  9%|▉         | 106/1200 [00:08<01:39, 11.04it/s]
  9%|▉         | 108/1200 [00:08<01:40, 10.89it/s]
  9%|▉         | 110/1200 [00:09<01:37, 11.18it/s]
  9%|▉         | 112/1200 [00:09<01:39, 10.92it/s]
 10%|▉         | 114/1200 [00:09<01:41, 10.74it/s]
 10%|▉         | 116/1200 [00:09<01:41, 10.65it/s]
 10%|▉         | 118/1200 [00:09<01:44, 10.33it/s]
 10%|█         | 120/1200 [00:10<01:40, 10.80it/s]
 10%|█         | 122/1200 [00:10<01:35, 11.28it/s]
 10%|█         | 124/1200 [00:10<01:39, 10.81it/s]
 10%|█         | 126/1200 [00:10<01:42, 10.43it/s]
 11%|█         | 128/1200 [00:10<01:42, 10.44it/s]
 11%|█         | 130/1200 [00:10<01:40, 10.69it/s]
 11%|█         | 132/1200 [00:11<01:43, 10.31it/s]
 11%|█         | 134/1200 [00:11<01:45, 10.12it/s]
 11%|█▏        | 136/1200 [00:11<01:46,  9.95it/s]
 12%|█▏        | 138/1200 [00:11<01:45, 10.04it/s]
 12%|█▏        | 140/1200 [00:11<01:44, 10.13it/s]
 12%|█▏        | 142/1200 [00:12<01:42, 10.35it/s]
 12%|█▏        | 144/1200 [00:12<01:39, 10.59it/s]
 12%|█▏        | 146/1200 [00:12<01:40, 10.50it/s]
 12%|█▏        | 148/1200 [00:12<01:38, 10.66it/s]
 12%|█▎        | 150/1200 [00:12<01:38, 10.68it/s]
 13%|█▎        | 152/1200 [00:13<01:36, 10.82it/s]
 13%|█▎        | 154/1200 [00:13<01:38, 10.62it/s]
 13%|█▎        | 156/1200 [00:13<01:38, 10.58it/s]
 13%|█▎        | 158/1200 [00:13<01:38, 10.54it/s]
 13%|█▎        | 160/1200 [00:13<01:40, 10.36it/s]
 14%|█▎        | 162/1200 [00:14<01:43, 10.03it/s]
 14%|█▎        | 164/1200 [00:14<01:42, 10.08it/s]
 14%|█▍        | 166/1200 [00:14<01:45,  9.78it/s]
 14%|█▍        | 168/1200 [00:14<01:45,  9.77it/s]
 14%|█▍        | 170/1200 [00:14<01:44,  9.86it/s]
 14%|█▍        | 171/1200 [00:14<01:44,  9.83it/s]
 14%|█▍        | 172/1200 [00:15<01:44,  9.85it/s]
 14%|█▍        | 173/1200 [00:15<01:47,  9.52it/s]
 15%|█▍        | 175/1200 [00:15<01:44,  9.81it/s]
 15%|█▍        | 176/1200 [00:15<01:46,  9.63it/s]
 15%|█▍        | 178/1200 [00:15<01:40, 10.18it/s]
 15%|█▌        | 180/1200 [00:15<01:36, 10.60it/s]
 15%|█▌        | 182/1200 [00:16<01:32, 11.05it/s]
 15%|█▌        | 184/1200 [00:16<01:30, 11.19it/s]
 16%|█▌        | 186/1200 [00:16<01:33, 10.85it/s]
 16%|█▌        | 188/1200 [00:16<01:34, 10.71it/s]
 16%|█▌        | 190/1200 [00:16<01:33, 10.82it/s]
 16%|█▌        | 192/1200 [00:16<01:34, 10.71it/s]
 16%|█▌        | 194/1200 [00:17<01:41,  9.93it/s]
 16%|█▋        | 196/1200 [00:17<01:43,  9.66it/s]
 16%|█▋        | 198/1200 [00:17<01:41,  9.87it/s]
 17%|█▋        | 199/1200 [00:17<01:41,  9.82it/s]
 17%|█▋        | 200/1200 [00:17<01:42,  9.80it/s]
 17%|█▋        | 201/1200 [00:17<01:42,  9.76it/s]
 17%|█▋        | 203/1200 [00:18<01:42,  9.70it/s]
 17%|█▋        | 205/1200 [00:18<01:37, 10.15it/s]
 17%|█▋        | 207/1200 [00:18<01:35, 10.39it/s]
 17%|█▋        | 209/1200 [00:18<01:36, 10.26it/s]
 18%|█▊        | 211/1200 [00:18<01:34, 10.43it/s]
 18%|█▊        | 213/1200 [00:19<01:32, 10.71it/s]
 18%|█▊        | 215/1200 [00:19<01:34, 10.46it/s]
 18%|█▊        | 217/1200 [00:19<01:37, 10.06it/s]
 18%|█▊        | 219/1200 [00:19<01:38,  9.93it/s]
 18%|█▊        | 221/1200 [00:19<01:36, 10.19it/s]
 19%|█▊        | 223/1200 [00:20<01:33, 10.44it/s]
 19%|█▉        | 225/1200 [00:20<01:33, 10.48it/s]
 19%|█▉        | 227/1200 [00:20<01:33, 10.45it/s]
 19%|█▉        | 229/1200 [00:20<01:33, 10.38it/s]
 19%|█▉        | 231/1200 [00:20<01:33, 10.41it/s]
 19%|█▉        | 233/1200 [00:21<01:36,  9.98it/s]
 20%|█▉        | 235/1200 [00:21<01:37,  9.87it/s]
 20%|█▉        | 236/1200 [00:21<01:37,  9.87it/s]
 20%|█▉        | 238/1200 [00:21<01:34, 10.19it/s]
 20%|██        | 240/1200 [00:21<01:31, 10.44it/s]
 20%|██        | 242/1200 [00:21<01:33, 10.29it/s]
 20%|██        | 244/1200 [00:22<01:29, 10.63it/s]
 20%|██        | 246/1200 [00:22<01:29, 10.70it/s]
 21%|██        | 248/1200 [00:22<01:28, 10.71it/s]
 21%|██        | 250/1200 [00:22<01:26, 10.96it/s]
 21%|██        | 252/1200 [00:22<01:29, 10.63it/s]
 21%|██        | 254/1200 [00:23<01:32, 10.23it/s]
 21%|██▏       | 256/1200 [00:23<01:35,  9.84it/s]
 21%|██▏       | 257/1200 [00:23<01:36,  9.73it/s]
 22%|██▏       | 258/1200 [00:23<01:36,  9.72it/s]
 22%|██▏       | 260/1200 [00:23<01:34,  9.92it/s]
 22%|██▏       | 261/1200 [00:23<01:34,  9.93it/s]
 22%|██▏       | 262/1200 [00:23<01:36,  9.74it/s]
 22%|██▏       | 264/1200 [00:24<01:32, 10.09it/s]
 22%|██▏       | 266/1200 [00:24<01:32, 10.09it/s]
 22%|██▏       | 268/1200 [00:24<01:33,  9.94it/s]
 22%|██▏       | 269/1200 [00:24<01:34,  9.82it/s]
 22%|██▎       | 270/1200 [00:24<01:35,  9.79it/s]
 23%|██▎       | 272/1200 [00:24<01:33,  9.94it/s]
 23%|██▎       | 273/1200 [00:24<01:34,  9.83it/s]
 23%|██▎       | 274/1200 [00:25<01:35,  9.69it/s]
 23%|██▎       | 275/1200 [00:25<01:36,  9.62it/s]
 23%|██▎       | 276/1200 [00:25<01:37,  9.46it/s]
 23%|██▎       | 277/1200 [00:25<01:37,  9.42it/s]
 23%|██▎       | 278/1200 [00:25<01:37,  9.42it/s]
 23%|██▎       | 279/1200 [00:25<01:37,  9.45it/s]
 23%|██▎       | 280/1200 [00:25<01:36,  9.50it/s]
 23%|██▎       | 281/1200 [00:25<01:35,  9.59it/s]
 24%|██▎       | 282/1200 [00:25<01:35,  9.66it/s]
 24%|██▎       | 283/1200 [00:26<01:35,  9.62it/s]
 24%|██▎       | 284/1200 [00:26<01:37,  9.42it/s]
 24%|██▍       | 285/1200 [00:26<01:38,  9.26it/s]
 24%|██▍       | 286/1200 [00:26<01:38,  9.25it/s]
 24%|██▍       | 287/1200 [00:26<01:37,  9.34it/s]
 24%|██▍       | 288/1200 [00:26<01:36,  9.48it/s]
 24%|██▍       | 289/1200 [00:26<01:36,  9.48it/s]
 24%|██▍       | 290/1200 [00:26<01:36,  9.39it/s]
 24%|██▍       | 291/1200 [00:26<01:37,  9.33it/s]
 24%|██▍       | 292/1200 [00:26<01:37,  9.31it/s]
 24%|██▍       | 293/1200 [00:27<01:37,  9.31it/s]
 24%|██▍       | 294/1200 [00:27<01:38,  9.18it/s]
 25%|██▍       | 295/1200 [00:27<01:38,  9.18it/s]
 25%|██▍       | 296/1200 [00:27<01:37,  9.32it/s]
 25%|██▍       | 297/1200 [00:27<01:36,  9.40it/s]
 25%|██▍       | 298/1200 [00:27<01:35,  9.42it/s]
 25%|██▍       | 299/1200 [00:27<01:37,  9.21it/s]
 25%|██▌       | 300/1200 [00:27<01:38,  9.11it/s]
 25%|██▌       | 301/1200 [00:27<01:37,  9.25it/s]
 25%|██▌       | 302/1200 [00:28<01:36,  9.32it/s]
 25%|██▌       | 303/1200 [00:28<01:36,  9.30it/s]
 25%|██▌       | 304/1200 [00:28<01:37,  9.19it/s]
 25%|██▌       | 305/1200 [00:28<01:36,  9.24it/s]
 26%|██▌       | 306/1200 [00:28<01:35,  9.40it/s]
 26%|██▌       | 307/1200 [00:28<01:34,  9.46it/s]
 26%|██▌       | 308/1200 [00:28<01:35,  9.37it/s]
 26%|██▌       | 309/1200 [00:28<01:35,  9.37it/s]
 26%|██▌       | 310/1200 [00:28<01:36,  9.24it/s]
 26%|██▌       | 311/1200 [00:29<01:36,  9.20it/s]
 26%|██▌       | 312/1200 [00:29<01:38,  8.99it/s]
 26%|██▌       | 313/1200 [00:29<01:38,  8.96it/s]
 26%|██▌       | 314/1200 [00:29<01:39,  8.93it/s]
 26%|██▋       | 315/1200 [00:29<01:36,  9.14it/s]
 26%|██▋       | 316/1200 [00:29<01:35,  9.25it/s]
 26%|██▋       | 317/1200 [00:29<01:34,  9.32it/s]
 26%|██▋       | 318/1200 [00:29<01:34,  9.37it/s]
 27%|██▋       | 319/1200 [00:29<01:33,  9.47it/s]
 27%|██▋       | 320/1200 [00:30<01:32,  9.52it/s]
 27%|██▋       | 322/1200 [00:30<01:30,  9.73it/s]
 27%|██▋       | 323/1200 [00:30<01:30,  9.70it/s]
 27%|██▋       | 324/1200 [00:30<01:29,  9.77it/s]
 27%|██▋       | 325/1200 [00:30<01:30,  9.69it/s]
 27%|██▋       | 326/1200 [00:30<01:31,  9.55it/s]
 27%|██▋       | 328/1200 [00:30<01:32,  9.47it/s]
 27%|██▋       | 329/1200 [00:30<01:31,  9.53it/s]
 28%|██▊       | 330/1200 [00:31<01:31,  9.55it/s]
 28%|██▊       | 331/1200 [00:31<01:30,  9.59it/s]
 28%|██▊       | 332/1200 [00:31<01:30,  9.59it/s]
 28%|██▊       | 333/1200 [00:31<01:29,  9.67it/s]
 28%|██▊       | 334/1200 [00:31<01:29,  9.73it/s]
 28%|██▊       | 335/1200 [00:31<01:28,  9.75it/s]
 28%|██▊       | 336/1200 [00:31<01:29,  9.69it/s]
 28%|██▊       | 337/1200 [00:31<01:31,  9.41it/s]
 28%|██▊       | 338/1200 [00:31<01:30,  9.48it/s]
 28%|██▊       | 339/1200 [00:31<01:30,  9.51it/s]
 28%|██▊       | 340/1200 [00:32<01:31,  9.39it/s]
 28%|██▊       | 341/1200 [00:32<01:30,  9.46it/s]
 28%|██▊       | 342/1200 [00:32<01:30,  9.53it/s]
 29%|██▊       | 343/1200 [00:32<01:29,  9.61it/s]
 29%|██▊       | 344/1200 [00:32<01:28,  9.70it/s]
 29%|██▉       | 346/1200 [00:32<01:27,  9.71it/s]
 29%|██▉       | 347/1200 [00:32<01:28,  9.67it/s]
 29%|██▉       | 348/1200 [00:32<01:30,  9.43it/s]
 29%|██▉       | 349/1200 [00:33<01:30,  9.42it/s]
 29%|██▉       | 350/1200 [00:33<01:30,  9.35it/s]
 29%|██▉       | 351/1200 [00:33<01:31,  9.33it/s]
 29%|██▉       | 352/1200 [00:33<01:29,  9.43it/s]
 29%|██▉       | 353/1200 [00:33<01:28,  9.54it/s]
 30%|██▉       | 354/1200 [00:33<01:28,  9.56it/s]
 30%|██▉       | 355/1200 [00:33<01:28,  9.60it/s]
 30%|██▉       | 356/1200 [00:33<01:27,  9.61it/s]
 30%|██▉       | 357/1200 [00:33<01:27,  9.62it/s]
 30%|██▉       | 358/1200 [00:33<01:27,  9.58it/s]
 30%|██▉       | 359/1200 [00:34<01:27,  9.60it/s]
 30%|███       | 360/1200 [00:34<01:27,  9.65it/s]
 30%|███       | 361/1200 [00:34<01:28,  9.50it/s]
 30%|███       | 362/1200 [00:34<01:29,  9.40it/s]
 30%|███       | 363/1200 [00:34<01:28,  9.45it/s]
 30%|███       | 364/1200 [00:34<01:28,  9.45it/s]
 30%|███       | 365/1200 [00:34<01:27,  9.52it/s]
 30%|███       | 366/1200 [00:34<01:26,  9.62it/s]
 31%|███       | 367/1200 [00:34<01:27,  9.56it/s]
 31%|███       | 368/1200 [00:35<01:28,  9.45it/s]
 31%|███       | 369/1200 [00:35<01:29,  9.26it/s]
 31%|███       | 370/1200 [00:35<01:28,  9.33it/s]
 31%|███       | 371/1200 [00:35<01:28,  9.35it/s]
 31%|███       | 372/1200 [00:35<01:28,  9.38it/s]
 31%|███       | 373/1200 [00:35<01:29,  9.25it/s]
 31%|███       | 374/1200 [00:35<01:28,  9.31it/s]
 31%|███▏      | 375/1200 [00:35<01:27,  9.45it/s]
 31%|███▏      | 377/1200 [00:35<01:25,  9.66it/s]
 32%|███▏      | 379/1200 [00:36<01:23,  9.83it/s]
 32%|███▏      | 380/1200 [00:36<01:23,  9.77it/s]
 32%|███▏      | 381/1200 [00:36<01:23,  9.78it/s]
 32%|███▏      | 382/1200 [00:36<01:23,  9.82it/s]
 32%|███▏      | 383/1200 [00:36<01:23,  9.78it/s]
 32%|███▏      | 384/1200 [00:36<01:23,  9.80it/s]
 32%|███▏      | 385/1200 [00:36<01:25,  9.49it/s]
 32%|███▏      | 386/1200 [00:36<01:27,  9.30it/s]
 32%|███▏      | 387/1200 [00:37<01:27,  9.26it/s]
 32%|███▏      | 388/1200 [00:37<01:28,  9.22it/s]
 32%|███▏      | 389/1200 [00:37<01:27,  9.22it/s]
 32%|███▎      | 390/1200 [00:37<01:27,  9.26it/s]
 33%|███▎      | 391/1200 [00:37<01:27,  9.28it/s]
 33%|███▎      | 393/1200 [00:37<01:24,  9.59it/s]
 33%|███▎      | 394/1200 [00:37<01:23,  9.62it/s]
 33%|███▎      | 395/1200 [00:37<01:23,  9.60it/s]
 33%|███▎      | 396/1200 [00:37<01:25,  9.40it/s]
 33%|███▎      | 397/1200 [00:38<01:25,  9.37it/s]
 33%|███▎      | 398/1200 [00:38<01:24,  9.50it/s]
 33%|███▎      | 399/1200 [00:38<01:24,  9.53it/s]
 33%|███▎      | 400/1200 [00:38<01:23,  9.62it/s]
 33%|███▎      | 401/1200 [00:38<01:22,  9.70it/s]
 34%|███▎      | 402/1200 [00:38<01:21,  9.74it/s]
 34%|███▎      | 403/1200 [00:38<01:22,  9.70it/s]
 34%|███▎      | 404/1200 [00:38<01:24,  9.42it/s]
 34%|███▍      | 405/1200 [00:38<01:23,  9.47it/s]
 34%|███▍      | 406/1200 [00:39<01:23,  9.47it/s]
 34%|███▍      | 407/1200 [00:39<01:23,  9.47it/s]
 34%|███▍      | 408/1200 [00:39<01:24,  9.40it/s]
 34%|███▍      | 409/1200 [00:39<01:23,  9.47it/s]
 34%|███▍      | 410/1200 [00:39<01:23,  9.51it/s]
 34%|███▍      | 411/1200 [00:39<01:22,  9.58it/s]
 34%|███▍      | 412/1200 [00:39<01:22,  9.59it/s]
 34%|███▍      | 413/1200 [00:39<01:21,  9.66it/s]
 34%|███▍      | 414/1200 [00:39<01:21,  9.68it/s]
 35%|███▍      | 415/1200 [00:39<01:21,  9.69it/s]
 35%|███▍      | 416/1200 [00:40<01:21,  9.67it/s]
 35%|███▍      | 417/1200 [00:40<01:20,  9.68it/s]
 35%|███▍      | 418/1200 [00:40<01:21,  9.55it/s]
 35%|███▍      | 419/1200 [00:40<01:22,  9.43it/s]
 35%|███▌      | 420/1200 [00:40<01:21,  9.53it/s]
 35%|███▌      | 421/1200 [00:40<01:20,  9.62it/s]
 35%|███▌      | 422/1200 [00:40<01:20,  9.66it/s]
 35%|███▌      | 423/1200 [00:40<01:20,  9.60it/s]
 35%|███▌      | 424/1200 [00:40<01:20,  9.60it/s]
 35%|███▌      | 425/1200 [00:41<01:20,  9.63it/s]
 36%|███▌      | 426/1200 [00:41<01:20,  9.64it/s]
 36%|███▌      | 427/1200 [00:41<01:20,  9.59it/s]
 36%|███▌      | 428/1200 [00:41<01:22,  9.38it/s]
 36%|███▌      | 429/1200 [00:41<01:21,  9.46it/s]
 36%|███▌      | 430/1200 [00:41<01:21,  9.48it/s]
 36%|███▌      | 431/1200 [00:41<01:22,  9.27it/s]
 36%|███▌      | 432/1200 [00:41<01:22,  9.35it/s]
 36%|███▌      | 433/1200 [00:41<01:21,  9.42it/s]
 36%|███▌      | 434/1200 [00:41<01:20,  9.57it/s]
 36%|███▋      | 435/1200 [00:42<01:19,  9.61it/s]
 36%|███▋      | 436/1200 [00:42<01:20,  9.54it/s]
 36%|███▋      | 437/1200 [00:42<01:21,  9.38it/s]
 36%|███▋      | 438/1200 [00:42<01:21,  9.37it/s]
 37%|███▋      | 439/1200 [00:42<01:19,  9.52it/s]
 37%|███▋      | 440/1200 [00:42<01:19,  9.55it/s]
 37%|███▋      | 441/1200 [00:42<01:18,  9.62it/s]
 37%|███▋      | 442/1200 [00:42<01:19,  9.55it/s]
 37%|███▋      | 443/1200 [00:42<01:19,  9.49it/s]
 37%|███▋      | 444/1200 [00:43<01:19,  9.55it/s]
 37%|███▋      | 445/1200 [00:43<01:19,  9.51it/s]
 37%|███▋      | 446/1200 [00:43<01:20,  9.32it/s]
 37%|███▋      | 447/1200 [00:43<01:20,  9.38it/s]
 37%|███▋      | 448/1200 [00:43<01:19,  9.52it/s]
 37%|███▋      | 449/1200 [00:43<01:18,  9.51it/s]
 38%|███▊      | 450/1200 [00:43<01:18,  9.52it/s]
 38%|███▊      | 451/1200 [00:43<01:19,  9.46it/s]
 38%|███▊      | 452/1200 [00:43<01:19,  9.41it/s]
 38%|███▊      | 453/1200 [00:43<01:19,  9.44it/s]
 38%|███▊      | 454/1200 [00:44<01:18,  9.50it/s]
 38%|███▊      | 455/1200 [00:44<01:18,  9.53it/s]
 38%|███▊      | 456/1200 [00:44<01:19,  9.41it/s]
 38%|███▊      | 457/1200 [00:44<01:19,  9.29it/s]
 38%|███▊      | 458/1200 [00:44<01:19,  9.36it/s]
 38%|███▊      | 459/1200 [00:44<01:18,  9.38it/s]
 38%|███▊      | 460/1200 [00:44<01:18,  9.37it/s]
 38%|███▊      | 461/1200 [00:44<01:19,  9.33it/s]
 38%|███▊      | 462/1200 [00:44<01:19,  9.25it/s]
 39%|███▊      | 463/1200 [00:45<01:19,  9.29it/s]
 39%|███▊      | 464/1200 [00:45<01:18,  9.38it/s]
 39%|███▉      | 465/1200 [00:45<01:18,  9.36it/s]
 39%|███▉      | 466/1200 [00:45<01:18,  9.32it/s]
 39%|███▉      | 467/1200 [00:45<01:18,  9.39it/s]
 39%|███▉      | 468/1200 [00:45<01:16,  9.52it/s]
 39%|███▉      | 469/1200 [00:45<01:16,  9.59it/s]
 39%|███▉      | 470/1200 [00:45<01:15,  9.64it/s]
 39%|███▉      | 471/1200 [00:45<01:16,  9.49it/s]
 39%|███▉      | 472/1200 [00:45<01:15,  9.62it/s]
 40%|███▉      | 474/1200 [00:46<01:13,  9.82it/s]
 40%|███▉      | 475/1200 [00:46<01:14,  9.75it/s]
 40%|███▉      | 476/1200 [00:46<01:14,  9.77it/s]
 40%|███▉      | 477/1200 [00:46<01:14,  9.76it/s]
 40%|███▉      | 478/1200 [00:46<01:15,  9.62it/s]
 40%|███▉      | 479/1200 [00:46<01:15,  9.55it/s]
 40%|████      | 480/1200 [00:46<01:15,  9.55it/s]
 40%|████      | 481/1200 [00:46<01:15,  9.54it/s]
 40%|████      | 482/1200 [00:47<01:15,  9.55it/s]
 40%|████      | 483/1200 [00:47<01:15,  9.50it/s]
 40%|████      | 484/1200 [00:47<01:17,  9.23it/s]
 40%|████      | 485/1200 [00:47<01:16,  9.30it/s]
 40%|████      | 486/1200 [00:47<01:15,  9.42it/s]
 41%|████      | 487/1200 [00:47<01:15,  9.48it/s]
 41%|████      | 488/1200 [00:47<01:14,  9.53it/s]
 41%|████      | 489/1200 [00:47<01:14,  9.60it/s]
 41%|████      | 490/1200 [00:47<01:13,  9.62it/s]
 41%|████      | 491/1200 [00:47<01:13,  9.61it/s]
 41%|████      | 492/1200 [00:48<01:14,  9.55it/s]
 41%|████      | 493/1200 [00:48<01:13,  9.62it/s]
 41%|████      | 494/1200 [00:48<01:14,  9.54it/s]
 41%|████▏     | 496/1200 [00:48<01:11,  9.86it/s]
 42%|████▏     | 498/1200 [00:48<01:09, 10.03it/s]
 42%|████▏     | 499/1200 [00:48<01:11,  9.83it/s]
 42%|████▏     | 501/1200 [00:48<01:07, 10.29it/s]
 42%|████▏     | 503/1200 [00:49<01:06, 10.42it/s]
 42%|████▏     | 505/1200 [00:49<01:08, 10.13it/s]
 42%|████▏     | 507/1200 [00:49<01:07, 10.24it/s]
 42%|████▏     | 509/1200 [00:49<01:06, 10.39it/s]
 43%|████▎     | 511/1200 [00:49<01:07, 10.22it/s]
 43%|████▎     | 513/1200 [00:50<01:06, 10.27it/s]
 43%|████▎     | 515/1200 [00:50<01:05, 10.42it/s]
 43%|████▎     | 517/1200 [00:50<01:05, 10.48it/s]
 43%|████▎     | 519/1200 [00:50<01:05, 10.41it/s]
 43%|████▎     | 521/1200 [00:50<01:06, 10.16it/s]
 44%|████▎     | 523/1200 [00:51<01:07,  9.97it/s]
 44%|████▎     | 524/1200 [00:51<01:08,  9.90it/s]
 44%|████▍     | 525/1200 [00:51<01:09,  9.78it/s]
 44%|████▍     | 526/1200 [00:51<01:09,  9.76it/s]
 44%|████▍     | 527/1200 [00:51<01:08,  9.76it/s]
 44%|████▍     | 528/1200 [00:51<01:10,  9.52it/s]
 44%|████▍     | 529/1200 [00:51<01:09,  9.59it/s]
 44%|████▍     | 530/1200 [00:51<01:10,  9.53it/s]
 44%|████▍     | 531/1200 [00:51<01:09,  9.58it/s]
 44%|████▍     | 532/1200 [00:52<01:09,  9.61it/s]
 44%|████▍     | 533/1200 [00:52<01:09,  9.58it/s]
 44%|████▍     | 534/1200 [00:52<01:10,  9.45it/s]
 45%|████▍     | 535/1200 [00:52<01:09,  9.50it/s]
 45%|████▍     | 536/1200 [00:52<01:09,  9.54it/s]
 45%|████▍     | 537/1200 [00:52<01:08,  9.64it/s]
 45%|████▍     | 538/1200 [00:52<01:08,  9.65it/s]
 45%|████▍     | 539/1200 [00:52<01:10,  9.42it/s]
 45%|████▌     | 540/1200 [00:52<01:10,  9.40it/s]
 45%|████▌     | 541/1200 [00:53<01:09,  9.52it/s]
 45%|████▌     | 542/1200 [00:53<01:08,  9.61it/s]
 45%|████▌     | 543/1200 [00:53<01:08,  9.57it/s]
 45%|████▌     | 544/1200 [00:53<01:09,  9.42it/s]
 45%|████▌     | 545/1200 [00:53<01:09,  9.46it/s]
 46%|████▌     | 546/1200 [00:53<01:08,  9.60it/s]
 46%|████▌     | 547/1200 [00:53<01:07,  9.67it/s]
 46%|████▌     | 548/1200 [00:53<01:06,  9.75it/s]
 46%|████▌     | 549/1200 [00:53<01:06,  9.79it/s]
 46%|████▌     | 550/1200 [00:53<01:08,  9.45it/s]
 46%|████▌     | 551/1200 [00:54<01:08,  9.49it/s]
 46%|████▌     | 553/1200 [00:54<01:07,  9.61it/s]
 46%|████▌     | 554/1200 [00:54<01:06,  9.70it/s]
 46%|████▋     | 556/1200 [00:54<01:05,  9.84it/s]
 46%|████▋     | 557/1200 [00:54<01:05,  9.82it/s]
 46%|████▋     | 558/1200 [00:54<01:05,  9.80it/s]
 47%|████▋     | 559/1200 [00:54<01:05,  9.80it/s]
 47%|████▋     | 560/1200 [00:54<01:05,  9.72it/s]
 47%|████▋     | 561/1200 [00:55<01:05,  9.69it/s]
 47%|████▋     | 562/1200 [00:55<01:08,  9.34it/s]
 47%|████▋     | 563/1200 [00:55<01:08,  9.31it/s]
 47%|████▋     | 564/1200 [00:55<01:08,  9.34it/s]
 47%|████▋     | 565/1200 [00:55<01:06,  9.48it/s]
 47%|████▋     | 567/1200 [00:55<01:02, 10.05it/s]
 47%|████▋     | 569/1200 [00:55<01:02, 10.06it/s]
 48%|████▊     | 571/1200 [00:56<01:01, 10.22it/s]
 48%|████▊     | 573/1200 [00:56<01:02,  9.96it/s]
 48%|████▊     | 574/1200 [00:56<01:04,  9.75it/s]
 48%|████▊     | 575/1200 [00:56<01:03,  9.78it/s]
 48%|████▊     | 576/1200 [00:56<01:04,  9.74it/s]
 48%|████▊     | 577/1200 [00:56<01:04,  9.71it/s]
 48%|████▊     | 578/1200 [00:56<01:04,  9.68it/s]
 48%|████▊     | 579/1200 [00:56<01:04,  9.69it/s]
 48%|████▊     | 581/1200 [00:57<01:06,  9.35it/s]
 48%|████▊     | 582/1200 [00:57<01:05,  9.40it/s]
 49%|████▊     | 583/1200 [00:57<01:06,  9.32it/s]
 49%|████▊     | 584/1200 [00:57<01:05,  9.41it/s]
 49%|████▉     | 586/1200 [00:57<01:03,  9.74it/s]
 49%|████▉     | 587/1200 [00:57<01:02,  9.77it/s]
 49%|████▉     | 589/1200 [00:57<01:01,  9.88it/s]
 49%|████▉     | 591/1200 [00:58<01:00, 10.14it/s]
 49%|████▉     | 593/1200 [00:58<00:59, 10.12it/s]
 50%|████▉     | 595/1200 [00:58<00:59, 10.21it/s]
 50%|████▉     | 597/1200 [00:58<00:58, 10.26it/s]
 50%|████▉     | 599/1200 [00:58<00:59, 10.11it/s]
 50%|█████     | 601/1200 [00:59<01:01,  9.79it/s]
 50%|█████     | 603/1200 [00:59<01:00,  9.86it/s]
 50%|█████     | 604/1200 [00:59<01:01,  9.75it/s]
 50%|█████     | 605/1200 [00:59<01:01,  9.69it/s]
 51%|█████     | 607/1200 [00:59<00:59,  9.99it/s]
 51%|█████     | 608/1200 [00:59<00:59,  9.99it/s]
 51%|█████     | 609/1200 [00:59<00:59,  9.98it/s]
 51%|█████     | 611/1200 [01:00<00:58,  9.99it/s]
 51%|█████     | 612/1200 [01:00<00:59,  9.89it/s]
 51%|█████     | 614/1200 [01:00<00:56, 10.28it/s]
 51%|█████▏    | 616/1200 [01:00<00:57, 10.14it/s]
 52%|█████▏    | 618/1200 [01:00<00:57, 10.09it/s]
 52%|█████▏    | 620/1200 [01:01<00:59,  9.80it/s]
 52%|█████▏    | 621/1200 [01:01<00:59,  9.79it/s]
 52%|█████▏    | 622/1200 [01:01<00:59,  9.70it/s]
 52%|█████▏    | 623/1200 [01:01<00:59,  9.74it/s]
 52%|█████▏    | 624/1200 [01:01<00:58,  9.80it/s]
 52%|█████▏    | 625/1200 [01:01<00:58,  9.80it/s]
 52%|█████▏    | 626/1200 [01:01<00:59,  9.68it/s]
 52%|█████▏    | 627/1200 [01:01<00:58,  9.75it/s]
 52%|█████▏    | 628/1200 [01:01<00:58,  9.72it/s]
 52%|█████▎    | 630/1200 [01:02<00:57,  9.93it/s]
 53%|█████▎    | 631/1200 [01:02<00:57,  9.87it/s]
 53%|█████▎    | 632/1200 [01:02<00:58,  9.65it/s]
 53%|█████▎    | 633/1200 [01:02<00:58,  9.64it/s]
 53%|█████▎    | 634/1200 [01:02<00:58,  9.72it/s]
 53%|█████▎    | 635/1200 [01:02<00:59,  9.57it/s]
 53%|█████▎    | 636/1200 [01:02<00:58,  9.57it/s]
 53%|█████▎    | 637/1200 [01:02<00:58,  9.60it/s]
 53%|█████▎    | 638/1200 [01:02<00:59,  9.51it/s]
 53%|█████▎    | 639/1200 [01:03<00:58,  9.53it/s]
 53%|█████▎    | 640/1200 [01:03<00:58,  9.57it/s]
 53%|█████▎    | 641/1200 [01:03<00:58,  9.53it/s]
 54%|█████▎    | 642/1200 [01:03<00:58,  9.57it/s]
 54%|█████▎    | 643/1200 [01:03<00:58,  9.55it/s]
 54%|█████▎    | 644/1200 [01:03<00:57,  9.62it/s]
 54%|█████▍    | 645/1200 [01:03<00:57,  9.68it/s]
 54%|█████▍    | 646/1200 [01:03<00:56,  9.77it/s]
 54%|█████▍    | 647/1200 [01:03<00:56,  9.77it/s]
 54%|█████▍    | 648/1200 [01:03<00:56,  9.76it/s]
 54%|█████▍    | 650/1200 [01:04<00:52, 10.51it/s]
 54%|█████▍    | 652/1200 [01:04<00:51, 10.57it/s]
 55%|█████▍    | 654/1200 [01:04<00:52, 10.36it/s]
 55%|█████▍    | 656/1200 [01:04<00:53, 10.16it/s]
 55%|█████▍    | 658/1200 [01:04<00:53, 10.18it/s]
 55%|█████▌    | 660/1200 [01:05<00:54,  9.96it/s]
 55%|█████▌    | 662/1200 [01:05<00:53, 10.10it/s]
 55%|█████▌    | 664/1200 [01:05<00:52, 10.18it/s]
 56%|█████▌    | 666/1200 [01:05<00:51, 10.29it/s]
 56%|█████▌    | 668/1200 [01:05<00:53, 10.02it/s]
 56%|█████▌    | 670/1200 [01:06<00:53,  9.89it/s]
 56%|█████▌    | 671/1200 [01:06<00:53,  9.88it/s]
 56%|█████▌    | 672/1200 [01:06<00:53,  9.84it/s]
 56%|█████▌    | 673/1200 [01:06<00:53,  9.85it/s]
 56%|█████▋    | 675/1200 [01:06<00:52,  9.91it/s]
 56%|█████▋    | 676/1200 [01:06<00:52,  9.92it/s]
 56%|█████▋    | 677/1200 [01:06<00:53,  9.84it/s]
 56%|█████▋    | 678/1200 [01:06<00:53,  9.75it/s]
 57%|█████▋    | 679/1200 [01:07<00:53,  9.70it/s]
 57%|█████▋    | 680/1200 [01:07<00:54,  9.53it/s]
 57%|█████▋    | 682/1200 [01:07<00:52,  9.95it/s]
 57%|█████▋    | 684/1200 [01:07<00:51, 10.02it/s]
 57%|█████▋    | 685/1200 [01:07<00:51,  9.96it/s]
 57%|█████▋    | 687/1200 [01:07<00:50, 10.13it/s]
 57%|█████▋    | 689/1200 [01:07<00:48, 10.62it/s]
 58%|█████▊    | 691/1200 [01:08<00:47, 10.77it/s]
 58%|█████▊    | 693/1200 [01:08<00:48, 10.50it/s]
 58%|█████▊    | 695/1200 [01:08<00:45, 11.08it/s]
 58%|█████▊    | 697/1200 [01:08<00:47, 10.60it/s]
 58%|█████▊    | 699/1200 [01:08<00:47, 10.52it/s]
 58%|█████▊    | 701/1200 [01:09<00:48, 10.22it/s]
 59%|█████▊    | 703/1200 [01:09<00:49, 10.09it/s]
 59%|█████▉    | 705/1200 [01:09<00:48, 10.14it/s]
 59%|█████▉    | 707/1200 [01:09<00:47, 10.30it/s]
 59%|█████▉    | 709/1200 [01:09<00:47, 10.33it/s]
 59%|█████▉    | 711/1200 [01:10<00:47, 10.35it/s]
 59%|█████▉    | 713/1200 [01:10<00:48, 10.06it/s]
 60%|█████▉    | 715/1200 [01:10<00:48, 10.05it/s]
 60%|█████▉    | 717/1200 [01:10<00:48,  9.92it/s]
 60%|█████▉    | 718/1200 [01:10<00:48,  9.91it/s]
 60%|█████▉    | 719/1200 [01:10<00:48,  9.89it/s]
 60%|██████    | 720/1200 [01:11<00:48,  9.90it/s]
 60%|██████    | 722/1200 [01:11<00:46, 10.23it/s]
 60%|██████    | 724/1200 [01:11<00:46, 10.29it/s]
 60%|██████    | 726/1200 [01:11<00:45, 10.40it/s]
 61%|██████    | 728/1200 [01:11<00:45, 10.47it/s]
 61%|██████    | 730/1200 [01:11<00:43, 10.70it/s]
 61%|██████    | 732/1200 [01:12<00:42, 11.12it/s]
 61%|██████    | 734/1200 [01:12<00:41, 11.16it/s]
 61%|██████▏   | 736/1200 [01:12<00:42, 10.95it/s]
 62%|██████▏   | 738/1200 [01:12<00:42, 10.84it/s]
 62%|██████▏   | 740/1200 [01:12<00:43, 10.58it/s]
 62%|██████▏   | 742/1200 [01:13<00:44, 10.37it/s]
 62%|██████▏   | 744/1200 [01:13<00:43, 10.50it/s]
 62%|██████▏   | 746/1200 [01:13<00:43, 10.53it/s]
 62%|██████▏   | 748/1200 [01:13<00:43, 10.44it/s]
 62%|██████▎   | 750/1200 [01:13<00:42, 10.52it/s]
 63%|██████▎   | 752/1200 [01:14<00:44, 10.17it/s]
 63%|██████▎   | 754/1200 [01:14<00:44,  9.92it/s]
 63%|██████▎   | 755/1200 [01:14<00:44,  9.91it/s]
 63%|██████▎   | 756/1200 [01:14<00:45,  9.80it/s]
 63%|██████▎   | 757/1200 [01:14<00:45,  9.74it/s]
 63%|██████▎   | 758/1200 [01:14<00:45,  9.68it/s]
 63%|██████▎   | 760/1200 [01:14<00:45,  9.74it/s]
 64%|██████▎   | 762/1200 [01:15<00:44,  9.87it/s]
 64%|██████▎   | 763/1200 [01:15<00:44,  9.89it/s]
 64%|██████▎   | 764/1200 [01:15<00:44,  9.72it/s]
 64%|██████▍   | 765/1200 [01:15<00:46,  9.34it/s]
 64%|██████▍   | 767/1200 [01:15<00:45,  9.53it/s]
 64%|██████▍   | 769/1200 [01:15<00:43,  9.80it/s]
 64%|██████▍   | 770/1200 [01:15<00:43,  9.77it/s]
 64%|██████▍   | 771/1200 [01:16<00:44,  9.67it/s]
 64%|██████▍   | 773/1200 [01:16<00:43,  9.92it/s]
 64%|██████▍   | 774/1200 [01:16<00:43,  9.84it/s]
 65%|██████▍   | 776/1200 [01:16<00:42,  9.97it/s]
 65%|██████▍   | 777/1200 [01:16<00:42,  9.89it/s]
 65%|██████▍   | 779/1200 [01:16<00:42,  9.97it/s]
 65%|██████▌   | 781/1200 [01:17<00:40, 10.31it/s]
 65%|██████▌   | 783/1200 [01:17<00:42,  9.92it/s]
 65%|██████▌   | 785/1200 [01:17<00:40, 10.20it/s]
 66%|██████▌   | 787/1200 [01:17<00:40, 10.10it/s]
 66%|██████▌   | 789/1200 [01:17<00:40, 10.25it/s]
 66%|██████▌   | 791/1200 [01:17<00:39, 10.33it/s]
 66%|██████▌   | 793/1200 [01:18<00:39, 10.43it/s]
 66%|██████▋   | 795/1200 [01:18<00:38, 10.50it/s]
 66%|██████▋   | 797/1200 [01:18<00:38, 10.48it/s]
 67%|██████▋   | 799/1200 [01:18<00:38, 10.47it/s]
 67%|██████▋   | 801/1200 [01:18<00:39, 10.17it/s]
 67%|██████▋   | 803/1200 [01:19<00:38, 10.33it/s]
 67%|██████▋   | 805/1200 [01:19<00:37, 10.53it/s]
 67%|██████▋   | 807/1200 [01:19<00:35, 10.96it/s]
 67%|██████▋   | 809/1200 [01:19<00:35, 10.93it/s]
 68%|██████▊   | 811/1200 [01:19<00:34, 11.15it/s]
 68%|██████▊   | 813/1200 [01:20<00:34, 11.17it/s]
 68%|██████▊   | 815/1200 [01:20<00:35, 10.72it/s]
 68%|██████▊   | 817/1200 [01:20<00:35, 10.76it/s]
 68%|██████▊   | 819/1200 [01:20<00:34, 11.19it/s]
 68%|██████▊   | 821/1200 [01:20<00:33, 11.16it/s]
 69%|██████▊   | 823/1200 [01:20<00:32, 11.52it/s]
 69%|██████▉   | 825/1200 [01:21<00:34, 10.78it/s]
 69%|██████▉   | 827/1200 [01:21<00:35, 10.48it/s]
 69%|██████▉   | 829/1200 [01:21<00:34, 10.77it/s]
 69%|██████▉   | 831/1200 [01:21<00:33, 10.89it/s]
 69%|██████▉   | 833/1200 [01:21<00:33, 10.83it/s]
 70%|██████▉   | 835/1200 [01:22<00:34, 10.48it/s]
 70%|██████▉   | 837/1200 [01:22<00:34, 10.43it/s]
 70%|██████▉   | 839/1200 [01:22<00:35, 10.24it/s]
 70%|███████   | 841/1200 [01:22<00:34, 10.52it/s]
 70%|███████   | 843/1200 [01:22<00:33, 10.68it/s]
 70%|███████   | 845/1200 [01:23<00:32, 10.78it/s]
 71%|███████   | 847/1200 [01:23<00:33, 10.40it/s]
 71%|███████   | 849/1200 [01:23<00:35,  9.97it/s]
 71%|███████   | 851/1200 [01:23<00:35,  9.89it/s]
 71%|███████   | 853/1200 [01:23<00:34, 10.19it/s]
 71%|███████▏  | 855/1200 [01:24<00:34, 10.11it/s]
 71%|███████▏  | 857/1200 [01:24<00:33, 10.09it/s]
 72%|███████▏  | 859/1200 [01:24<00:34, 10.02it/s]
 72%|███████▏  | 861/1200 [01:24<00:33,  9.99it/s]
 72%|███████▏  | 863/1200 [01:24<00:33,  9.95it/s]
 72%|███████▏  | 864/1200 [01:24<00:34,  9.79it/s]
 72%|███████▏  | 865/1200 [01:25<00:34,  9.74it/s]
 72%|███████▏  | 866/1200 [01:25<00:34,  9.69it/s]
 72%|███████▏  | 867/1200 [01:25<00:34,  9.57it/s]
 72%|███████▏  | 868/1200 [01:25<00:34,  9.50it/s]
 72%|███████▏  | 869/1200 [01:25<00:34,  9.62it/s]
 72%|███████▎  | 870/1200 [01:25<00:33,  9.71it/s]
 73%|███████▎  | 871/1200 [01:25<00:33,  9.78it/s]
 73%|███████▎  | 872/1200 [01:25<00:33,  9.83it/s]
 73%|███████▎  | 873/1200 [01:25<00:33,  9.74it/s]
 73%|███████▎  | 874/1200 [01:25<00:33,  9.71it/s]
 73%|███████▎  | 875/1200 [01:26<00:33,  9.69it/s]
 73%|███████▎  | 876/1200 [01:26<00:33,  9.78it/s]
 73%|███████▎  | 877/1200 [01:26<00:33,  9.73it/s]
 73%|███████▎  | 878/1200 [01:26<00:32,  9.77it/s]
 73%|███████▎  | 879/1200 [01:26<00:32,  9.80it/s]
 73%|███████▎  | 881/1200 [01:26<00:32,  9.96it/s]
 74%|███████▎  | 882/1200 [01:26<00:31,  9.96it/s]
 74%|███████▎  | 883/1200 [01:26<00:31,  9.95it/s]
 74%|███████▎  | 884/1200 [01:27<00:32,  9.85it/s]
 74%|███████▍  | 885/1200 [01:27<00:32,  9.81it/s]
 74%|███████▍  | 886/1200 [01:27<00:32,  9.77it/s]
 74%|███████▍  | 887/1200 [01:27<00:33,  9.44it/s]
 74%|███████▍  | 888/1200 [01:27<00:32,  9.56it/s]
 74%|███████▍  | 889/1200 [01:27<00:32,  9.59it/s]
 74%|███████▍  | 890/1200 [01:27<00:31,  9.69it/s]
 74%|███████▍  | 892/1200 [01:27<00:31,  9.88it/s]
 74%|███████▍  | 893/1200 [01:27<00:31,  9.88it/s]
 74%|███████▍  | 894/1200 [01:28<00:31,  9.82it/s]
 75%|███████▍  | 895/1200 [01:28<00:31,  9.83it/s]
 75%|███████▍  | 896/1200 [01:28<00:31,  9.77it/s]
 75%|███████▍  | 897/1200 [01:28<00:31,  9.77it/s]
 75%|███████▍  | 899/1200 [01:28<00:30,  9.92it/s]
 75%|███████▌  | 900/1200 [01:28<00:30,  9.86it/s]
 75%|███████▌  | 901/1200 [01:28<00:30,  9.89it/s]
 75%|███████▌  | 902/1200 [01:28<00:30,  9.89it/s]
 75%|███████▌  | 904/1200 [01:29<00:29, 10.01it/s]
 75%|███████▌  | 905/1200 [01:29<00:29,  9.85it/s]
 76%|███████▌  | 906/1200 [01:29<00:30,  9.52it/s]
 76%|███████▌  | 907/1200 [01:29<00:30,  9.50it/s]
 76%|███████▌  | 909/1200 [01:29<00:29,  9.75it/s]
 76%|███████▌  | 910/1200 [01:29<00:29,  9.76it/s]
 76%|███████▌  | 911/1200 [01:29<00:30,  9.57it/s]
 76%|███████▌  | 912/1200 [01:29<00:30,  9.60it/s]
 76%|███████▌  | 913/1200 [01:29<00:30,  9.43it/s]
 76%|███████▋  | 915/1200 [01:30<00:29,  9.72it/s]
 76%|███████▋  | 917/1200 [01:30<00:28,  9.95it/s]
 77%|███████▋  | 919/1200 [01:30<00:27, 10.28it/s]
 77%|███████▋  | 921/1200 [01:30<00:26, 10.61it/s]
 77%|███████▋  | 923/1200 [01:30<00:27, 10.20it/s]
 77%|███████▋  | 925/1200 [01:31<00:27,  9.98it/s]
 77%|███████▋  | 926/1200 [01:31<00:27,  9.90it/s]
 77%|███████▋  | 928/1200 [01:31<00:26, 10.44it/s]
 78%|███████▊  | 930/1200 [01:31<00:25, 10.64it/s]
 78%|███████▊  | 932/1200 [01:31<00:25, 10.55it/s]
 78%|███████▊  | 934/1200 [01:32<00:25, 10.33it/s]
 78%|███████▊  | 936/1200 [01:32<00:25, 10.18it/s]
 78%|███████▊  | 938/1200 [01:32<00:25, 10.32it/s]
 78%|███████▊  | 940/1200 [01:32<00:25, 10.16it/s]
 78%|███████▊  | 942/1200 [01:32<00:25,  9.99it/s]
 79%|███████▊  | 944/1200 [01:33<00:25,  9.89it/s]
 79%|███████▉  | 945/1200 [01:33<00:25,  9.88it/s]
 79%|███████▉  | 946/1200 [01:33<00:25,  9.84it/s]
 79%|███████▉  | 947/1200 [01:33<00:26,  9.62it/s]
 79%|███████▉  | 948/1200 [01:33<00:25,  9.70it/s]
 79%|███████▉  | 950/1200 [01:33<00:25,  9.76it/s]
 79%|███████▉  | 952/1200 [01:33<00:25,  9.91it/s]
 80%|███████▉  | 954/1200 [01:34<00:24,  9.96it/s]
 80%|███████▉  | 956/1200 [01:34<00:24,  9.92it/s]
 80%|███████▉  | 957/1200 [01:34<00:24,  9.89it/s]
 80%|███████▉  | 959/1200 [01:34<00:24,  9.97it/s]
 80%|████████  | 961/1200 [01:34<00:23,  9.98it/s]
 80%|████████  | 963/1200 [01:34<00:24,  9.87it/s]
 80%|████████  | 964/1200 [01:35<00:23,  9.86it/s]
 80%|████████  | 965/1200 [01:35<00:23,  9.85it/s]
 80%|████████  | 966/1200 [01:35<00:23,  9.79it/s]
 81%|████████  | 967/1200 [01:35<00:23,  9.79it/s]
 81%|████████  | 969/1200 [01:35<00:23,  9.87it/s]
 81%|████████  | 970/1200 [01:35<00:23,  9.88it/s]
 81%|████████  | 972/1200 [01:35<00:22,  9.95it/s]
 81%|████████  | 973/1200 [01:35<00:22,  9.89it/s]
 81%|████████▏ | 975/1200 [01:36<00:22,  9.99it/s]
 81%|████████▏ | 976/1200 [01:36<00:22,  9.96it/s]
 81%|████████▏ | 977/1200 [01:36<00:22,  9.89it/s]
 82%|████████▏ | 979/1200 [01:36<00:22, 10.00it/s]
 82%|████████▏ | 981/1200 [01:36<00:21, 10.11it/s]
 82%|████████▏ | 983/1200 [01:36<00:21,  9.95it/s]
 82%|████████▏ | 984/1200 [01:37<00:21,  9.85it/s]
 82%|████████▏ | 985/1200 [01:37<00:22,  9.59it/s]
 82%|████████▏ | 986/1200 [01:37<00:22,  9.37it/s]
 82%|████████▏ | 987/1200 [01:37<00:22,  9.37it/s]
 82%|████████▏ | 988/1200 [01:37<00:22,  9.42it/s]
 82%|████████▏ | 989/1200 [01:37<00:22,  9.58it/s]
 82%|████████▎ | 990/1200 [01:37<00:21,  9.66it/s]
 83%|████████▎ | 991/1200 [01:37<00:21,  9.71it/s]
 83%|████████▎ | 992/1200 [01:37<00:21,  9.75it/s]
 83%|████████▎ | 993/1200 [01:38<00:21,  9.76it/s]
 83%|████████▎ | 994/1200 [01:38<00:21,  9.79it/s]
 83%|████████▎ | 995/1200 [01:38<00:21,  9.72it/s]
 83%|████████▎ | 996/1200 [01:38<00:21,  9.70it/s]
 83%|████████▎ | 997/1200 [01:38<00:20,  9.74it/s]
 83%|████████▎ | 998/1200 [01:38<00:20,  9.78it/s]
 83%|████████▎ | 999/1200 [01:38<00:20,  9.83it/s]
 83%|████████▎ | 1000/1200 [01:38<00:20,  9.57it/s]
 83%|████████▎ | 1001/1200 [01:38<00:20,  9.65it/s]
 84%|████████▎ | 1002/1200 [01:38<00:20,  9.66it/s]
 84%|████████▎ | 1003/1200 [01:39<00:20,  9.67it/s]
 84%|████████▎ | 1004/1200 [01:39<00:20,  9.68it/s]
 84%|████████▍ | 1005/1200 [01:39<00:20,  9.47it/s]
 84%|████████▍ | 1006/1200 [01:39<00:20,  9.51it/s]
 84%|████████▍ | 1007/1200 [01:39<00:20,  9.58it/s]
 84%|████████▍ | 1008/1200 [01:39<00:19,  9.65it/s]
 84%|████████▍ | 1010/1200 [01:39<00:19,  9.83it/s]
 84%|████████▍ | 1011/1200 [01:39<00:19,  9.83it/s]
 84%|████████▍ | 1012/1200 [01:39<00:19,  9.86it/s]
 84%|████████▍ | 1013/1200 [01:40<00:18,  9.88it/s]
 84%|████████▍ | 1014/1200 [01:40<00:18,  9.91it/s]
 85%|████████▍ | 1015/1200 [01:40<00:18,  9.78it/s]
 85%|████████▍ | 1016/1200 [01:40<00:18,  9.73it/s]
 85%|████████▍ | 1017/1200 [01:40<00:18,  9.78it/s]
 85%|████████▍ | 1018/1200 [01:40<00:18,  9.82it/s]
 85%|████████▍ | 1019/1200 [01:40<00:18,  9.84it/s]
 85%|████████▌ | 1020/1200 [01:40<00:18,  9.71it/s]
 85%|████████▌ | 1022/1200 [01:40<00:18,  9.80it/s]
 85%|████████▌ | 1023/1200 [01:41<00:18,  9.78it/s]
 85%|████████▌ | 1024/1200 [01:41<00:18,  9.71it/s]
 85%|████████▌ | 1025/1200 [01:41<00:18,  9.53it/s]
 86%|████████▌ | 1026/1200 [01:41<00:18,  9.52it/s]
 86%|████████▌ | 1027/1200 [01:41<00:18,  9.60it/s]
 86%|████████▌ | 1028/1200 [01:41<00:17,  9.70it/s]
 86%|████████▌ | 1029/1200 [01:41<00:17,  9.74it/s]
 86%|████████▌ | 1030/1200 [01:41<00:17,  9.57it/s]
 86%|████████▌ | 1031/1200 [01:41<00:17,  9.69it/s]
 86%|████████▌ | 1032/1200 [01:42<00:17,  9.75it/s]
 86%|████████▌ | 1034/1200 [01:42<00:16,  9.84it/s]
 86%|████████▋ | 1035/1200 [01:42<00:17,  9.64it/s]
 86%|████████▋ | 1036/1200 [01:42<00:16,  9.73it/s]
 86%|████████▋ | 1038/1200 [01:42<00:16,  9.85it/s]
 87%|████████▋ | 1039/1200 [01:42<00:16,  9.67it/s]
 87%|████████▋ | 1040/1200 [01:42<00:16,  9.74it/s]
 87%|████████▋ | 1041/1200 [01:42<00:16,  9.76it/s]
 87%|████████▋ | 1042/1200 [01:43<00:16,  9.71it/s]
 87%|████████▋ | 1043/1200 [01:43<00:16,  9.66it/s]
 87%|████████▋ | 1044/1200 [01:43<00:16,  9.49it/s]
 87%|████████▋ | 1045/1200 [01:43<00:16,  9.56it/s]
 87%|████████▋ | 1046/1200 [01:43<00:16,  9.60it/s]
 87%|████████▋ | 1047/1200 [01:43<00:16,  9.49it/s]
 87%|████████▋ | 1048/1200 [01:43<00:15,  9.59it/s]
 87%|████████▋ | 1049/1200 [01:43<00:15,  9.69it/s]
 88%|████████▊ | 1050/1200 [01:43<00:15,  9.68it/s]
 88%|████████▊ | 1051/1200 [01:43<00:15,  9.61it/s]
 88%|████████▊ | 1052/1200 [01:44<00:15,  9.63it/s]
 88%|████████▊ | 1053/1200 [01:44<00:15,  9.57it/s]
 88%|████████▊ | 1054/1200 [01:44<00:15,  9.45it/s]
 88%|████████▊ | 1055/1200 [01:44<00:15,  9.37it/s]
 88%|████████▊ | 1056/1200 [01:44<00:15,  9.39it/s]
 88%|████████▊ | 1057/1200 [01:44<00:15,  9.40it/s]
 88%|████████▊ | 1058/1200 [01:44<00:14,  9.56it/s]
 88%|████████▊ | 1059/1200 [01:44<00:14,  9.68it/s]
 88%|████████▊ | 1060/1200 [01:44<00:14,  9.72it/s]
 88%|████████▊ | 1061/1200 [01:45<00:15,  9.17it/s]
 88%|████████▊ | 1062/1200 [01:45<00:15,  9.13it/s]
 89%|████████▊ | 1063/1200 [01:45<00:15,  9.09it/s]
 89%|████████▊ | 1064/1200 [01:45<00:14,  9.14it/s]
 89%|████████▉ | 1065/1200 [01:45<00:14,  9.34it/s]
 89%|████████▉ | 1066/1200 [01:45<00:14,  9.52it/s]
 89%|████████▉ | 1067/1200 [01:45<00:13,  9.54it/s]
 89%|████████▉ | 1069/1200 [01:45<00:13,  9.76it/s]
 89%|████████▉ | 1070/1200 [01:45<00:13,  9.81it/s]
 89%|████████▉ | 1071/1200 [01:46<00:13,  9.63it/s]
 89%|████████▉ | 1073/1200 [01:46<00:13,  9.73it/s]
 90%|████████▉ | 1074/1200 [01:46<00:12,  9.75it/s]
 90%|████████▉ | 1076/1200 [01:46<00:12,  9.88it/s]
 90%|████████▉ | 1077/1200 [01:46<00:12,  9.89it/s]
 90%|████████▉ | 1078/1200 [01:46<00:12,  9.86it/s]
 90%|████████▉ | 1079/1200 [01:46<00:12,  9.88it/s]
 90%|█████████ | 1080/1200 [01:47<00:12,  9.68it/s]
 90%|█████████ | 1081/1200 [01:47<00:12,  9.71it/s]
 90%|█████████ | 1082/1200 [01:47<00:12,  9.71it/s]
 90%|█████████ | 1083/1200 [01:47<00:12,  9.64it/s]
 90%|█████████ | 1084/1200 [01:47<00:12,  9.66it/s]
 90%|█████████ | 1085/1200 [01:47<00:11,  9.74it/s]
 90%|█████████ | 1086/1200 [01:47<00:11,  9.81it/s]
 91%|█████████ | 1087/1200 [01:47<00:11,  9.76it/s]
 91%|█████████ | 1089/1200 [01:47<00:11,  9.91it/s]
 91%|█████████ | 1090/1200 [01:48<00:11,  9.92it/s]
 91%|█████████ | 1092/1200 [01:48<00:10,  9.93it/s]
 91%|█████████ | 1093/1200 [01:48<00:10,  9.88it/s]
 91%|█████████▏| 1095/1200 [01:48<00:10, 10.00it/s]
 91%|█████████▏| 1096/1200 [01:48<00:10, 10.00it/s]
 91%|█████████▏| 1097/1200 [01:48<00:10,  9.96it/s]
 92%|█████████▏| 1098/1200 [01:48<00:10,  9.95it/s]
 92%|█████████▏| 1099/1200 [01:48<00:10,  9.76it/s]
 92%|█████████▏| 1100/1200 [01:49<00:10,  9.62it/s]
 92%|█████████▏| 1101/1200 [01:49<00:10,  9.54it/s]
 92%|█████████▏| 1102/1200 [01:49<00:10,  9.43it/s]
 92%|█████████▏| 1103/1200 [01:49<00:10,  9.40it/s]
 92%|█████████▏| 1104/1200 [01:49<00:10,  9.50it/s]
 92%|█████████▏| 1105/1200 [01:49<00:09,  9.60it/s]
 92%|█████████▏| 1106/1200 [01:49<00:09,  9.69it/s]
 92%|█████████▏| 1108/1200 [01:49<00:09,  9.92it/s]
 92%|█████████▎| 1110/1200 [01:50<00:08, 10.03it/s]
 93%|█████████▎| 1112/1200 [01:50<00:08, 10.03it/s]
 93%|█████████▎| 1113/1200 [01:50<00:08, 10.00it/s]
 93%|█████████▎| 1114/1200 [01:50<00:08,  9.87it/s]
 93%|█████████▎| 1115/1200 [01:50<00:08,  9.69it/s]
 93%|█████████▎| 1116/1200 [01:50<00:08,  9.72it/s]
 93%|█████████▎| 1118/1200 [01:50<00:08,  9.86it/s]
 93%|█████████▎| 1119/1200 [01:51<00:08,  9.69it/s]
 93%|█████████▎| 1120/1200 [01:51<00:08,  9.71it/s]
 93%|█████████▎| 1121/1200 [01:51<00:08,  9.77it/s]
 94%|█████████▎| 1122/1200 [01:51<00:08,  9.74it/s]
 94%|█████████▎| 1124/1200 [01:51<00:07,  9.95it/s]
 94%|█████████▍| 1126/1200 [01:51<00:07,  9.96it/s]
 94%|█████████▍| 1127/1200 [01:51<00:07,  9.91it/s]
 94%|█████████▍| 1129/1200 [01:52<00:07,  9.97it/s]
 94%|█████████▍| 1130/1200 [01:52<00:07,  9.96it/s]
 94%|█████████▍| 1132/1200 [01:52<00:06,  9.94it/s]
 94%|█████████▍| 1134/1200 [01:52<00:06, 10.03it/s]
 95%|█████████▍| 1136/1200 [01:52<00:06, 10.06it/s]
 95%|█████████▍| 1138/1200 [01:52<00:06,  9.74it/s]
 95%|█████████▍| 1139/1200 [01:53<00:06,  9.71it/s]
 95%|█████████▌| 1140/1200 [01:53<00:06,  9.73it/s]
 95%|█████████▌| 1141/1200 [01:53<00:06,  9.72it/s]
 95%|█████████▌| 1142/1200 [01:53<00:06,  9.58it/s]
 95%|█████████▌| 1143/1200 [01:53<00:05,  9.64it/s]
 95%|█████████▌| 1145/1200 [01:53<00:05,  9.78it/s]
 96%|█████████▌| 1146/1200 [01:53<00:05,  9.80it/s]
 96%|█████████▌| 1147/1200 [01:53<00:05,  9.85it/s]
 96%|█████████▌| 1148/1200 [01:53<00:05,  9.80it/s]
 96%|█████████▌| 1149/1200 [01:54<00:05,  9.77it/s]
 96%|█████████▌| 1150/1200 [01:54<00:05,  9.77it/s]
 96%|█████████▌| 1151/1200 [01:54<00:05,  9.74it/s]
 96%|█████████▌| 1152/1200 [01:54<00:04,  9.70it/s]
 96%|█████████▌| 1153/1200 [01:54<00:04,  9.74it/s]
 96%|█████████▌| 1154/1200 [01:54<00:04,  9.80it/s]
 96%|█████████▋| 1155/1200 [01:54<00:04,  9.82it/s]
 96%|█████████▋| 1156/1200 [01:54<00:04,  9.76it/s]
 96%|█████████▋| 1157/1200 [01:54<00:04,  9.80it/s]
 96%|█████████▋| 1158/1200 [01:54<00:04,  9.70it/s]
 97%|█████████▋| 1159/1200 [01:55<00:04,  9.59it/s]
 97%|█████████▋| 1160/1200 [01:55<00:04,  9.56it/s]
 97%|█████████▋| 1161/1200 [01:55<00:04,  9.46it/s]
 97%|█████████▋| 1162/1200 [01:55<00:04,  9.35it/s]
 97%|█████████▋| 1163/1200 [01:55<00:03,  9.51it/s]
 97%|█████████▋| 1164/1200 [01:55<00:03,  9.62it/s]
 97%|█████████▋| 1166/1200 [01:55<00:03,  9.85it/s]
 97%|█████████▋| 1168/1200 [01:56<00:03,  9.88it/s]
 97%|█████████▋| 1169/1200 [01:56<00:03,  9.89it/s]
 98%|█████████▊| 1170/1200 [01:56<00:03,  9.89it/s]
 98%|█████████▊| 1171/1200 [01:56<00:02,  9.84it/s]
 98%|█████████▊| 1172/1200 [01:56<00:02,  9.69it/s]
 98%|█████████▊| 1174/1200 [01:56<00:02,  9.89it/s]
 98%|█████████▊| 1175/1200 [01:56<00:02,  9.91it/s]
 98%|█████████▊| 1177/1200 [01:56<00:02, 10.00it/s]
 98%|█████████▊| 1178/1200 [01:57<00:02,  9.94it/s]
 98%|█████████▊| 1179/1200 [01:57<00:02,  9.79it/s]
 98%|█████████▊| 1180/1200 [01:57<00:02,  9.63it/s]
 98%|█████████▊| 1181/1200 [01:57<00:01,  9.51it/s]
 98%|█████████▊| 1182/1200 [01:57<00:01,  9.54it/s]
 99%|█████████▊| 1184/1200 [01:57<00:01,  9.77it/s]
 99%|█████████▉| 1185/1200 [01:57<00:01,  9.76it/s]
 99%|█████████▉| 1186/1200 [01:57<00:01,  9.76it/s]
 99%|█████████▉| 1187/1200 [01:57<00:01,  9.73it/s]
 99%|█████████▉| 1188/1200 [01:58<00:01,  9.40it/s]
 99%|█████████▉| 1189/1200 [01:58<00:01,  9.47it/s]
 99%|█████████▉| 1190/1200 [01:58<00:01,  9.48it/s]
 99%|█████████▉| 1191/1200 [01:58<00:00,  9.56it/s]
 99%|█████████▉| 1193/1200 [01:58<00:00,  9.79it/s]
100%|█████████▉| 1194/1200 [01:58<00:00,  9.76it/s]
100%|█████████▉| 1195/1200 [01:58<00:00,  9.73it/s]
100%|█████████▉| 1196/1200 [01:58<00:00,  9.64it/s]
100%|█████████▉| 1197/1200 [01:58<00:00,  9.57it/s]
100%|█████████▉| 1198/1200 [01:59<00:00,  9.48it/s]
100%|█████████▉| 1199/1200 [01:59<00:00,  9.48it/s]
100%|██████████| 1200/1200 [01:59<00:00,  9.38it/s]
100%|██████████| 1200/1200 [01:59<00:00, 10.06it/s]

Look at the detailed MCMC results.

# burn the run in phase
fitter.burn_mcmc = 250

# look if the log probability chain has settled and decide if the number of samples burned was appropriate
plt.figure()
fitter.plot_log_prob_chain()
plt.ylim([-80, -60])
plt.show()
fitting RHESSI spectra

Produce a corner plot

corner_plot_ress_spec = fitter.corner_mcmc()
T1_spectrum1 = 1.7e+01$^{+1.6e+00}_{-3.1e-01}$, EM1_spectrum1 = 6.1e+01$^{+6.1e+00}_{-2.4e+01}$, total_eflux1_spectrum1 = 1.0e-01$^{+3.4e-03}_{-1.9e-03}$, index1_spectrum1 = 4.4e+00$^{+6.9e-02}_{-5.1e-02}$, e_c1_spectrum1 = 1.9e+01$^{+4.1e-01}_{-3.8e-01}$, logProb = -4.4e+03$^{+1.8e+03}_{-4.7e+02}$

Plot final spectral results.

# start plot
plt.rcParams["font.size"] = spec_font_size
plt.figure(figsize=spec_plot_size)

# the line that actually plots
axes, res_axes = fitter.plot()

# make plot nicer
for a in axes:
    a.set_xlim(xlims)
    a.set_ylim(ylims)
    a.set_xscale("log")
plt.show()
plt.rcParams["font.size"] = default_text
Spectrum 1

Save out session#

save_filename = "../sunxspexRhessiSpectralFitting.pickle"
fitter.save(save_filename)

Loading session back in#

The session can be loaded back in using the following code as an example,

Comparisons#

Model Parameter

OSPEX (Flecther et al. 2007) [*]

Recent OSPEX Fit (from Iain Hannah)

This Work (Minimize Soln, evt-bg)

This Work (Minimize Soln)

This Work (MCMC)

Temperature [MK]

24.13

22.45

22.7\(\pm\)0.1

22.9\(\pm\)0.1

\(22.71^{+0.29}_{-0.34}\)

Emission Measure [cm-3]

1.6x1047

2.0\(\times\) 1047

1.92 \(\pm\) 0.05\(\times\)10 47

1.90\(\pm\) 0.04\(\times\)1047

\(1.83^{+0.09}_{-0.08}\times10^{47}\)

Electron Flux [e- s-1]

9.8\(\times\)1034

8.8\(\pm\)0.2\(\times\)1034

8.5\(\pm\)0.2\(\times\)1034

\(8.5^{+1.1}_{-1.2}\times10^{34}\)

Index

5.77

5.70\(\pm\)0.05

5.71\(\pm\)0.05

\(5.65^{+0.06}_{-0.04}\)

Low Energy Cut-off [keV]

19.44

19.8\(\pm\)0.1

19.9\(\pm\)0.1

\(19.8^{+0.6}_{-0.5}\)

Total running time of the script: (2 minutes 41.287 seconds)

Gallery generated by Sphinx-Gallery