import pymc3 as pm
import numpy as np
import theano

from theano.compile.ops import as_op
def background_rate_f(b, T, n):
    """
    
    """
    out = 0
    #n = int(n)
    for i in range(n+1):
        out += ((b*T)**i * np.exp(- b*T)) / np.math.factorial(i)
    return out

def log_background_rate(b, T, n):
    return np.log(background_rate_f(b, T, n))

def signal_rate_part(s, n, b, T):
    top_a = T * ((s + b) * T)**n 
    top_b = np.exp(-(s + b)*T)
    p = (top_a * top_b) / np.math.factorial(n)
    return theano.tensor.switch(theano.tensor.le(s, 0), 0, p)

#@as_op(itypes=[T.dscalar, T.dscalar, T.dscalar, T.dscalar], otypes=[T.dscalar])
def log_signal_rate(s,n,b,T):
    #if theano.tensor.lt(0, s): return np.array([[0.0]])
    p = -log_background_rate(b,T,n) + np.log(signal_rate_part(s,n,b,T))
    
    return p
def number_mweg(horizon):
    return 4./3 * np.pi * horizon**3 *(2.26)**-3* (0.0116) #* horizon**3
import theano.tensor as T
from pymc3 import DensityDist, Uniform, Normal
from pymc3 import Model
from pymc3 import distributions

def grb_model(number_events, background_rate, 
              observation_time, horizon, grb_rate,
             efficiency_prior = "uniform"):
    with Model() as model:
        signal_rate = pm.DensityDist('signal_rate', 
                            logp=lambda value: log_signal_rate(value, number_events, background_rate, observation_time),
                           testval=50)

        n_galaxy = number_mweg(horizon)

        cbc_rate = pm.Deterministic('cbc_rate', signal_rate * n_galaxy)

        # Allow the efficiency prior to be switched-out
        if efficiency_prior == "uniform":
            efficiency = pm.Uniform('efficiency', 0,1)
        elif efficiency_prior == "jeffreys":
            efficiency = pm.Beta('efficiency', 0.5, 0.5)
        elif isinstance(efficiency_prior, float):
            efficiency = efficiency_prior

        costheta = pm.Deterministic('cos_angle', 1.0 - ((grb_rate/(cbc_rate*efficiency))))

        angle = pm.Deterministic("angle", theano.tensor.arccos(costheta))
        
        return model
priors = ["uniform", "jeffreys", 1.0, 0.5]
# O1 Scenarios
number_events = 0 # There were no BNS detections in O1
background_rate = 0.01 # We take the FAR to be 1/100 yr
observation_time = 46.1/365. # The number of days of analysis conducted by gstLAL
horizon = 73.2  # The O1 BNS horizon distance in O1 BNS paper
grb_rate = 10.0
o1_models = []
for prior in priors:
    o1_models.append( grb_model(number_events, background_rate, observation_time, horizon, grb_rate, prior))
# O2 Scenarios
number_events = 1 # Assume O2 will see one BNS observation
background_rate = 0.01 # We take the FAR to be 1/100 yr
observation_time = 0.5 # The number of days of analysis conducted by gstLAL
duty_cycle = 0.4
observation_time *= duty_cycle
horizon = 80.0  # The O1 BNS horizon distance in O1 BNS paper
grb_rate = 10.0
o2_models = []
for prior in priors:
    o2_models.append( grb_model(number_events, background_rate, observation_time, horizon, grb_rate, prior))
samples = 1000000
o1_traces = []
for model in o1_models:
    with model:
        step = pm.Metropolis()
        o1_traces.append(pm.sample(samples, step))
    
o2_traces = []    
for model in o2_models:
    with model:
        step = pm.Metropolis()
        o2_traces.append(pm.sample(samples, step))
 100%|██████████| 1000000/1000000 [02:34<00:00, 6484.51it/s]
100%|██████████| 1000000/1000000 [02:53<00:00, 5763.92it/s]
100%|██████████| 1000000/1000000 [01:24<00:00, 11857.83it/s]
100%|██████████| 1000000/1000000 [01:30<00:00, 11008.81it/s]
100%|██████████| 1000000/1000000 [02:49<00:00, 5889.14it/s]
100%|██████████| 1000000/1000000 [02:39<00:00, 6258.90it/s]
100%|██████████| 1000000/1000000 [01:18<00:00, 12707.29it/s]
100%|██████████| 1000000/1000000 [01:19<00:00, 12609.63it/s]

import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("/home/daniel/papers/thesis/thesis-style.mpl")
priors = ["U(0,1)", "jeffreys", "$\delta(1)$", "$\delta(0.5)$"]
f, ax = plt.subplots(4,len(priors), figsize = (6, 8))
for i in range(len(priors)):

    o1_trace = o1_traces[i]
    o2_trace = o2_traces[i]

    ax[0,i].hist(o1_trace[2000:]['signal_rate'], histtype="step", label="O1 Signal Rate",
                 lw=2, normed=True, bins=100);
    ax[0,i].hist(o2_trace[2000:]['signal_rate'], histtype="step", label="O2 Signal Rate",
                 lw=2, normed=True, bins=100);
    #ax[0,0].vlines(np.percentile(trace['signal_rate'][2000:], 90), 0, 0.085,
    #              label = "90% lower limit");
    ax[0,i].set_title("$\epsilon \sim$ {}".format(priors[i]));
    ax[0,i].set_xlabel("$s$ /yr")
    if i==3:ax[0,i].legend()

    ax[1,i].hist(o1_trace[2000:]['cbc_rate'], histtype="step", lw=2, bins=100,
                 normed=True, label="O1 CBC Rate");
    ax[1,i].hist(o2_trace[2000:]['cbc_rate'], histtype="step", lw=2, bins=100,
                 normed=True, label="O2 CBC Rate");
    ax[1,i].set_xlabel(u"$s \mathrm{/Gpc}^3\mathrm{/yr}$");
    #ax[1,0].vlines(np.percentile(o1_trace['cbc_rate'][2000:], 90), 0, 5e-5,
    #              label = "90% lower limit, O1");
    #ax[1,0].vlines(np.percentile(o2_trace['cbc_rate'][2000:], 90), 0, 5e-5,
    #              label = "90% lower limit, O2", color="orange");
    if i==3:ax[1,i].legend()
    try:
        ax[2,i].hist(o1_trace[2000:]['efficiency'], histtype="step", lw=2, label="O1 Efficiency");
        ax[2,i].hist(o2_trace[2000:]['efficiency'], histtype="step", lw=2, label="O2 Efficiency");
        #ax[1,0].set_xlabel(u"$s$ /Gpc³/yr")
        if i==0: ax[2,i].legend()
        ax[2,i].set_ylim(0,2.5e5)
    except KeyError:
            ax[2,i].spines['top'].set_visible(False)
            ax[2,i].spines['bottom'].set_visible(False)
            ax[2,i].spines['left'].set_visible(False)
            ax[2,i].spines['right'].set_visible(False)
            ax[2,i].grid(False)
            ax[2,i].set_yticklabels([])
            ax[2,i].set_xticklabels([])
            ax[2,i].yaxis.set_ticks_position('none')
            ax[2,i].xaxis.set_ticks_position('none')

    ax[3,i].hist(np.rad2deg(o1_trace[2000:]['angle'][np.isfinite(o1_trace[2000:]['angle'])]),
               histtype="step", lw=2, label="O1 Angle", log=True);
    ax[3,i].hist(np.rad2deg(o2_trace[2000:]['angle'][np.isfinite(o2_trace[2000:]['angle'])]),
               histtype="step", lw=2, label="O2 Angle", log=True);
    #ax[3,i].vlines(np.percentile(np.rad2deg(o1_trace[2000:]['angle'][np.isfinite(o1_trace[2000:]['angle'])]), 90), 0, 3e5,
    #              label = "90\% lower limit, O1");
    #ax[3,i].vlines(np.percentile(np.rad2deg(o2_trace[2000:]['angle'][np.isfinite(o2_trace[2000:]['angle'])]), 90), 0, 3e5,
    #              label = "90\% lower limit, O2");
    #ax[1,0].set_xlabel(u"$s$ /Gpc³/yr")
    if i==3: ax[3,i].legend()
    if i > 0: 
        ax[3,i].set_yticklabels([]), ax[2,i].set_yticklabels([])
        ax[0,i].set_yticklabels([]), ax[1,i].set_yticklabels([])
    ax[3,i].set_xlabel("Beaming angle [deg]")    
f.subplots_adjust(0.07, 0.05, .99, .95, wspace=0.05)
f.savefig("/home/daniel/papers/thesis/figures/grbbeamingpymc.pdf")
png

O1 Trace Summaries

from pymc3 import summary

for i, trace in enumerate(o1_traces):
    print "# {}".format(priors[i])
    print summary(trace, varnames=['angle'])
 # U(0,1)

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  nan              nan              nan              [0.029, nan]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.026          0.048          0.075          0.134          0.608

None
# jeffreys

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  nan              nan              nan              [0.025, nan]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.025          0.048          0.082          0.172          2.104

None
# $\delta(1)$

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  nan              nan              nan              [0.022, nan]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.020          0.033          0.047          0.073          0.244

None
# $\delta(0.5)$

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  nan              nan              nan              [0.032, nan]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.029          0.047          0.066          0.103          0.356

None

O2 Trace Summaries

from pymc3 import summary

for i, trace in enumerate(o2_traces):
    print "# {}".format(priors[i])
    summary(trace, varnames=['angle'])
 # U(0,1)

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  nan              nan              nan              [0.025, nan]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.022          0.037          0.052          0.080          0.267

# jeffreys

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  nan              nan              nan              [0.023, nan]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.022          0.036          0.054          0.103          1.026

# $\delta(1)$

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  0.038            0.020            0.000            [0.015, 0.073]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.018          0.026          0.033          0.044          0.088

# $\delta(0.5)$

angle:

  Mean             SD               MC Error         95% HPD interval
  -------------------------------------------------------------------
  
  0.054            0.029            0.000            [0.021, 0.104]

  Posterior quantiles:
  2.5            25             50             75             97.5
  |--------------|==============|==============|--------------|
  
  0.026          0.037          0.047          0.062          0.124


In order to get an idea of what how the estimate of the opening angle changes with respect to increasing horizon distance and an increasing number of detections we can make a plot of the median value of the probability distribution for each of the different priors with respect to both these quantities.

# make a plot of the beaming angle as a function of observation volume against number of detections
# O1 Scenarios
scenarios = []
for events in range(10):
    for horizon in np.arange(10, 400, 20):
        number_events = events # There were no BNS detections in O1
        background_rate = 0.01 # We take the FAR to be 1/100 yr
        observation_time = 1. # The number of days of analysis conducted by gstLAL
        horizon = horizon  # The O1 BNS horizon distance in O1 BNS paper
        grb_rate = 10.0
        prior = 1.0
        o1_models = []
        for prior in priors:
            scenarios.append( grb_model(number_events, background_rate, observation_time, horizon, grb_rate, ))
traces = []
samples = 10000
for model in scenarios:
    with model:
        step = pm.Metropolis()
        traces.append(pm.sample(samples, step))
 100%|██████████| 10000/10000 [00:01<00:00, 7259.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7348.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7106.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7332.88it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7332.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7253.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6350.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6518.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5442.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6847.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5681.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6195.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7000.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6357.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6651.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7467.64it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6181.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5979.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7257.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7552.37it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7263.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7456.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7361.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7512.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6805.09it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4878.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6401.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6512.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6107.38it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4469.77it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4671.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6775.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6353.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6491.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6387.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6888.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6288.77it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7542.53it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7437.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7189.34it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6836.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7482.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7548.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7285.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7157.19it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7333.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7195.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6694.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6819.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7420.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7334.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7409.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6829.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7188.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7357.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5184.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6556.17it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5085.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7242.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7440.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6986.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6482.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6611.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7448.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7087.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7352.52it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7319.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7501.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7335.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7567.59it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7499.14it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7589.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7100.94it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7410.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6987.77it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5513.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7056.80it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7481.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7521.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7198.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6662.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6930.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6752.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5682.59it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4449.09it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4528.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5053.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6784.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6483.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5718.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5986.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7081.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7279.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6564.90it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6491.45it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7438.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7519.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7426.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7516.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7422.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7564.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7372.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7071.32it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7476.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6274.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7533.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6346.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5106.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5978.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5906.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6938.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7322.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6755.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7400.37it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7577.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6634.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7584.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7550.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7644.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7555.58it/s]
100%|██████████| 10000/10000 [00:03<00:00, 3026.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7449.34it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7265.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6801.81it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7165.11it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7124.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6893.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6781.56it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6964.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6759.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6700.90it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6734.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6898.59it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6777.39it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7000.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6526.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5948.28it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6870.80it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6802.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6739.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6361.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7476.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7592.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7306.78it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7112.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7097.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7371.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7152.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6733.62it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7093.23it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6939.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7404.29it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7110.34it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5863.64it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5374.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5633.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7348.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7226.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7310.34it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7330.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7237.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7482.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7391.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7408.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7447.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7415.37it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7424.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7539.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7478.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7429.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6743.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7312.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7558.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7357.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7467.64it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7434.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7407.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7399.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7170.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7017.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6301.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7092.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6434.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7051.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7505.14it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7627.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7598.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7473.50it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7628.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7477.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7304.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7158.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7147.63it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7253.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7315.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7304.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7161.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6291.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7289.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7340.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7138.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7290.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5168.91it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6820.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5226.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6169.91it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6883.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7295.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6369.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5980.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7013.80it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5822.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7108.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6070.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6518.77it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7161.92it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6753.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6907.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7367.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7376.34it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6749.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7100.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6607.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6419.88it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7527.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7390.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7208.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6661.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6850.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7101.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7265.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7404.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7513.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7573.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5992.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7260.21it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7295.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7317.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7128.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7273.23it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7402.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7382.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6816.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7217.91it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7232.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7059.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6527.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7289.77it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6900.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7332.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6998.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7284.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6738.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7234.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6949.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7490.62it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7392.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7407.28it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7398.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7247.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7275.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7322.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5145.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5515.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5838.33it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4934.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5934.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6288.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6368.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7027.53it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7261.50it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6581.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7005.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6823.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7314.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6872.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7248.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7409.17it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7474.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7301.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7348.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6580.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7371.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7102.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7334.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7028.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7172.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6895.28it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7226.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7385.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7381.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7146.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7260.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7109.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7398.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7156.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7323.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7218.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7173.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7219.28it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7065.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7167.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6944.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6430.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7223.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7272.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7258.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6349.78it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6552.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7295.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7293.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6783.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6378.46it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6098.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5678.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7144.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7291.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7292.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6238.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6534.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7364.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6904.59it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7597.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7417.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7189.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7028.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7321.14it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7313.21it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7411.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7542.23it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7228.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6984.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7145.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6927.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7637.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6160.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6770.14it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7347.29it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7074.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7307.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7293.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7029.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7105.62it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7039.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6469.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6955.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6997.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7183.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7147.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7211.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7200.46it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7380.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7395.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7262.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7186.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7410.46it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6863.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7022.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7037.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6697.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6867.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5217.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6162.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7438.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6815.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6847.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5609.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7178.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7441.64it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7036.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6993.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6591.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7536.88it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7208.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7020.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7245.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5743.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6855.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6510.19it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5689.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6362.92it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5795.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5136.67it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5135.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6942.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7216.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5941.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6608.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7127.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7100.29it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7319.19it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7248.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7275.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7150.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7289.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7423.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7094.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7363.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7137.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7451.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7323.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6821.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7173.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7340.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7390.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7354.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7072.45it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7591.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7533.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7670.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7489.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7494.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7430.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7515.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7134.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7446.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7297.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7231.14it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7349.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7247.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7272.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7156.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7350.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7291.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7289.81it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7276.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7391.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7258.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6844.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7205.14it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7324.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6901.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7169.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5966.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6152.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7384.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6772.11it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6803.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6858.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6194.78it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7220.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7434.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7560.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7561.23it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7580.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7532.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7374.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7462.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7540.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7011.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7236.17it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6741.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6420.23it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7362.52it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7323.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7226.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7109.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7174.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6655.32it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7265.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6854.50it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6926.29it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6913.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5935.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6331.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6186.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7152.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6249.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7246.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7262.37it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6984.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7024.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7243.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7354.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7541.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7230.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7399.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6640.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5970.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6769.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6893.78it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7392.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7429.56it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7338.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5901.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7142.59it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6657.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6267.17it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7530.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6580.67it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7486.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7554.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7527.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7577.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7636.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7762.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6970.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6877.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6385.39it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5817.16it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6578.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6487.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7327.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7179.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7142.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7346.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6962.11it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7446.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7233.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7483.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7025.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6733.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6748.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6424.77it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6841.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6692.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6301.11it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7001.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7245.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6841.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6287.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7382.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7643.21it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7517.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6781.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7557.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7375.53it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7430.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7588.64it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5708.52it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7163.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7217.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7339.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7024.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7329.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7610.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7163.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7647.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7200.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7289.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6898.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7214.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5061.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6971.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6548.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7249.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7412.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7370.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7498.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7305.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7443.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6884.81it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7355.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7209.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6655.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6095.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6611.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7311.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7466.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7354.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6400.91it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7348.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6699.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7389.21it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7473.29it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7393.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6751.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6655.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6700.91it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6975.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6382.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6803.56it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6830.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5820.94it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5741.97it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4934.03it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5694.27it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4253.90it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5526.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6428.45it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6530.80it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5104.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5546.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5550.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5508.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7033.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6302.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6732.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7307.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7209.19it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6224.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6212.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7140.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7224.90it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6467.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7238.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7174.97it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5752.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6682.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7327.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7139.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7289.82it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7251.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7357.59it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6880.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6279.08it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6108.37it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6684.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6494.70it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6041.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5736.49it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6058.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6489.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6294.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6326.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7298.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7612.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6494.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6832.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7099.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7379.92it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6558.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7101.63it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7105.55it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7393.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6424.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7522.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7401.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7235.86it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7165.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7358.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7218.46it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7322.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7324.96it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7367.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7346.63it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7227.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7365.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7483.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7609.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7539.37it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7351.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7297.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6903.07it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7193.54it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6542.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7150.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6331.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7210.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6002.90it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7004.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6756.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7521.58it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7287.20it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7180.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7190.62it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6887.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6378.28it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7292.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7490.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7387.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7251.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7585.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7533.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7547.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7323.35it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6781.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6305.99it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6243.23it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6534.91it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6780.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6692.94it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6706.85it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6145.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7134.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6570.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7358.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7309.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7355.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7305.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7236.40it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7048.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7216.80it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7183.25it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7169.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7159.53it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7199.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7200.01it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7033.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7133.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6989.41it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7260.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7234.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7211.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6773.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6753.94it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6805.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7463.34it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7262.92it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7576.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7472.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7523.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7493.24it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7439.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7564.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7437.63it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7469.33it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7522.84it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7517.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7602.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7547.10it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7538.52it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7257.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6998.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7489.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7157.13it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7276.12it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7553.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7464.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7307.78it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7199.88it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7440.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6999.46it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6602.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5088.66it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6201.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5423.52it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5717.45it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5986.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7288.89it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7233.69it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7177.59it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7116.72it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7516.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7530.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7407.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6878.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6493.51it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7303.36it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7423.11it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7390.79it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7563.75it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7291.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7494.22it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7361.60it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7522.17it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7356.09it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7116.19it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7507.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7006.74it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7423.98it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6178.65it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7385.19it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7562.17it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7333.38it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6593.43it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7574.04it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6180.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7502.42it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7586.78it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7517.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7498.83it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7681.15it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7391.88it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6630.44it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7383.00it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7638.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7510.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6605.05it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7165.80it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7322.73it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7326.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6925.56it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6930.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7280.93it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6914.76it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6946.71it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5634.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6635.53it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6786.18it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6804.87it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5984.61it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6487.95it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6657.46it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7267.27it/s]
100%|██████████| 10000/10000 [00:01<00:00, 7313.48it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6761.47it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6233.06it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6676.46it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4739.30it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5062.68it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5573.31it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5313.26it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5853.92it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5031.47it/s]
100%|██████████| 10000/10000 [00:02<00:00, 3341.33it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4241.72it/s]
100%|██████████| 10000/10000 [00:02<00:00, 4355.57it/s]
100%|██████████| 10000/10000 [00:01<00:00, 5889.02it/s]
100%|██████████| 10000/10000 [00:01<00:00, 6786.65it/s]

(array([1]), array([1]))
ax[np.unravel_index([3], [2,2])][0]
<matplotlib.axes._subplots.AxesSubplot at 0x7fd72026e550>
priors = ["U(0,1)", "jeffreys", "$\delta(1)$", "$\delta(0.5)$"]
from matplotlib import colors, ticker, cm

dist = 3
f, ax = plt.subplots(2,2, figsize=(10,10))
for dist in range(4):
    angles975 = []
    angles025 = []
    angles500 = []
    for trace in traces[dist::4]:

        angles975.append(np.nanpercentile(trace['angle'][5000:], 97.5))
        angles025.append(np.nanpercentile(trace['angle'][5000:], 2.5))
        angles500.append(np.nanpercentile(trace['angle'][5000:], 50))
    #plt.figure(figsize=(10,10))
    #plt.contour((np.rad2deg(angles025).reshape(-1, 20)), extent=(10, 390, 0, 9), aspect=500)

    cons = ax[np.unravel_index([dist], [2,2])][0].contourf(np.log10(np.arange(10, 400, 20)), np.arange(10), 
                 np.rad2deg(angles500).reshape(10, 20)/2, 
                 levels = np.linspace(0,90, 21)
                )#locator=ticker.LogLocator(), )#levels=(np.logspace(-0.7, np.log(90), 10)))
    ax[np.unravel_index([dist], [2,2])][0].set_title(priors[dist])
    ax[np.unravel_index([dist], [2,2])][0].set_ylabel("Number of events")
    ax[np.unravel_index([dist], [2,2])][0].set_xlabel("log10 Horizon Distance")
plt.colorbar(cons, label="Angle [deg]")
<matplotlib.colorbar.Colorbar at 0x7fd72e451810>
png