{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Stochaskell, version 0.1.0\n",
"Copyright (C) 2015-2019 David A Roberts\n",
"This program comes with ABSOLUTELY NO WARRANTY.\n",
"This is free software, and you are welcome to redistribute it\n",
"under certain conditions; see the LICENSE for details.\n",
"\n",
"Using installation directory at \n",
" /home/jovyan/stochaskell"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"{-# LANGUAGE MonadComprehensions, RebindableSyntax, NoImplicitPrelude, FlexibleContexts, TypeFamilies #-}\n",
"import Language.Stochaskell\n",
"stochaskell"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"covPrior :: Z -> P RMat\n",
"covPrior n = do\n",
" tau <- joint vector [ truncated 0 infinity (cauchy 0 2.5) | i <- 1...n ]\n",
" corr <- corrLKJ 2 (1,n)\n",
" return (qfDiag corr tau)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"birats :: Z -> Z -> P (RVec,RVec,RMat,RMat,R,RMat)\n",
"birats n t = do\n",
" x <- uniforms (vector [ 0 | j <- 1...t ]) (vector [ 50 | j <- 1...t ])\n",
" betaMu <- normals (vector [ 0 | _ <- 1...2 ]) (vector [ 100 | _ <- 1...2 ])\n",
" betaSigma <- covPrior 2\n",
" beta <- joint (designMatrix 2) [ normal betaMu betaSigma :: P RVec | i <- 1...n ]\n",
" let beta' = tr' beta\n",
" yMu = asColumn (beta'!1) + outer (beta'!2) x\n",
" -- = matrix [ (beta'!1!i) + (beta'!2!i) * (x!j) | i <- 1...n, j <- 1...t ]\n",
" ySigma <- truncated 0 infinity (cauchy 0 2.5)\n",
" y <- normals yMu (matrix [ ySigma | i <- 1...n, j <- 1...t ])\n",
" return (x,betaMu,betaSigma,beta,ySigma,y)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
":opt svg\n",
"import Language.Stochaskell.Plot"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"rejecting OOB sample -3.0211867938117805\n",
"rejecting OOB sample -6.9251262844039\n",
"rejecting OOB sample -13.073243189832711\n",
"rejecting OOB sample -138.31103267470144\n",
"rejecting OOB sample -4.257210070571588"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"(x,betaMu,betaSigma,beta,ySigma,ys) <- simulate (birats 5 5)\n",
"toRenderable $ sequence_ [plot $ line \"\" [sort $ list x `zip` y] | y <- list ys :: [[Double]]]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"-- http://www.openbugs.net/Examples/BiRatsdata.html\n",
"biratsX = [8.0, 15.0, 22.0, 29.0, 36.0]\n",
"biratsY = [\n",
" [151, 199, 246, 283, 320],\n",
" [145, 199, 249, 293, 354],\n",
" [147, 214, 263, 312, 328],\n",
" [155, 200, 237, 272, 297],\n",
" [135, 188, 230, 280, 323],\n",
" [159, 210, 252, 298, 331],\n",
" [141, 189, 231, 275, 305],\n",
" [159, 201, 248, 297, 338],\n",
" [177, 236, 285, 350, 376],\n",
" [134, 182, 220, 260, 296],\n",
" [160, 208, 261, 313, 352],\n",
" [143, 188, 220, 273, 314],\n",
" [154, 200, 244, 289, 325],\n",
" [171, 221, 270, 326, 358],\n",
" [163, 216, 242, 281, 312],\n",
" [160, 207, 248, 288, 324],\n",
" [142, 187, 234, 280, 316],\n",
" [156, 203, 243, 283, 317],\n",
" [157, 212, 259, 307, 336],\n",
" [152, 203, 246, 286, 321],\n",
" [154, 205, 253, 298, 334],\n",
" [139, 190, 225, 267, 302],\n",
" [146, 191, 229, 272, 302],\n",
" [157, 211, 250, 285, 323],\n",
" [132, 185, 237, 286, 331],\n",
" [160, 207, 257, 303, 345],\n",
" [169, 216, 261, 295, 333],\n",
" [157, 205, 248, 289, 316],\n",
" [137, 180, 219, 258, 291],\n",
" [153, 200, 244, 286, 324]]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"let n = length biratsY\n",
" t = length biratsX\n",
" prior = birats (integer n) (integer t)\n",
" posterior = [ (bm,bs,b,sd) | (x,bm,bs,b,sd,y) <- prior, x == list biratsX, y == list biratsY ]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"let initial = (list [0,0], eye 2, list (replicate n [1,1]), 1) :: (RVec,RMat,RMat,R)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"--- Generating Stan code ---\n",
"data {\n",
" vector[5] x_stan_0_0;\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" matrix[30,5] x_stan_0_6;\n",
"}\n",
"parameters {\n",
" \n",
" vector[2] x_stan_0_1;\n",
" vector[2] x_stan_0_2;\n",
" corr_matrix[2] x_stan_0_3;\n",
" matrix[30,2] x_stan_0_4;\n",
" real x_stan_0_5;\n",
" \n",
"}\n",
"model {\n",
" \n",
" matrix[2,30] v_0_1;\n",
" matrix[30,1] v_0_2;\n",
" matrix[30,1] v_0_3;\n",
" \n",
" matrix[1,5] v_0_5;\n",
" matrix[30,5] v_0_6;\n",
" matrix[30,5] v_0_7;\n",
" \n",
" matrix[30,5] v_0_9;\n",
" \n",
" \n",
" \n",
" matrix[2,2] v_0_13;\n",
" vector[2] v_0_14;\n",
" vector[2] v_0_15;\n",
" \n",
" \n",
" \n",
" v_0_1 = x_stan_0_4';\n",
" v_0_2 = to_matrix(to_vector(v_0_1[1]));\n",
" v_0_3 = to_matrix(to_vector(v_0_1[2]));\n",
" \n",
" v_0_5 = to_matrix(to_row_vector(x_stan_0_0));\n",
" v_0_6 = to_matrix(v_0_3) * to_matrix(v_0_5);\n",
" v_0_7 = rep_matrix(to_vector(v_0_2), 5) + v_0_6;\n",
" \n",
" for (i_1_1 in 1:30) for (i_1_2 in 1:5) {\n",
" \n",
" v_0_9[i_1_1, i_1_2] = x_stan_0_5;\n",
" }\n",
" \n",
" \n",
" \n",
" v_0_13 = quad_form_diag(x_stan_0_3, x_stan_0_2);\n",
" for (i_1_1 in 1:2) {\n",
" \n",
" v_0_14[i_1_1] = 0;\n",
" }\n",
" for (i_1_1 in 1:2) {\n",
" \n",
" v_0_15[i_1_1] = 100;\n",
" }\n",
" \n",
" \n",
"\n",
" \n",
" x_stan_0_1 ~ normal(v_0_14, v_0_15);\n",
" for (i_1_1 in 1:2) {\n",
" x_stan_0_2[i_1_1] ~ cauchy(0, 2.5) T[0,];\n",
" }\n",
" x_stan_0_3 ~ lkj_corr(2);\n",
" for (i_1_1 in 1:30) {\n",
" x_stan_0_4[i_1_1] ~ multi_normal(x_stan_0_1, v_0_13);\n",
" }\n",
" x_stan_0_5 ~ cauchy(0, 2.5) T[0,];\n",
" to_vector(x_stan_0_6) ~ normal(to_vector(v_0_7), to_vector(v_0_9));\n",
"}\n",
"\n",
"make -C /home/jovyan/stochaskell/cmdstan /home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a\n",
"make[1]: Entering directory '/home/jovyan/stochaskell/cmdstan'\n",
"\n",
"--- Translating Stan model to C++ code ---\n",
"bin/stanc /home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.stan --o=/home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.hpp\n",
"Model name=model_3a4af8197fb3f3295b183f18be009847751d441a_model\n",
"Input file=/home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.stan\n",
"Output file=/home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.hpp\n",
"\n",
"--- Linking C++ model ---\n",
"g++ -I src -I stan/src -isystem stan/lib/stan_math/ -isystem stan/lib/stan_math/lib/eigen_3.3.3 -isystem stan/lib/stan_math/lib/boost_1.62.0 -isystem stan/lib/stan_math/lib/cvodes_2.9.0/include -Wall -DEIGEN_NO_DEBUG -DBOOST_RESULT_OF_USE_TR1 -DBOOST_NO_DECLTYPE -DBOOST_DISABLE_ASSERTS -DFUSION_MAX_VECTOR_SIZE=12 -DNO_FPRINTF_OUTPUT -pipe -lpthread -O3 -o /home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a src/cmdstan/main.cpp -include /home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.hpp stan/lib/stan_math/lib/cvodes_2.9.0/lib/libsundials_nvecserial.a stan/lib/stan_math/lib/cvodes_2.9.0/lib/libsundials_cvodes.a \n",
"make[1]: Leaving directory '/home/jovyan/stochaskell/cmdstan'\n",
"--- Sampling Stan model ---\n",
"/home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a method=sample num_samples=1000 num_warmup=1000 save_warmup=0 thin=1 adapt engaged=1 algorithm=hmc engine=nuts max_depth=10 metric=diag_e stepsize=1.0 stepsize_jitter=0.0 data file=/tmp/stan-7ab78c4890857200/stan.data init=/tmp/stan-7ab78c4890857200/stan.init output file=/tmp/stan-7ab78c4890857200/stan.csv\n",
"method = sample (Default)\n",
" sample\n",
" num_samples = 1000 (Default)\n",
" num_warmup = 1000 (Default)\n",
" save_warmup = 0 (Default)\n",
" thin = 1 (Default)\n",
" adapt\n",
" engaged = 1 (Default)\n",
" gamma = 0.050000000000000003 (Default)\n",
" delta = 0.80000000000000004 (Default)\n",
" kappa = 0.75 (Default)\n",
" t0 = 10 (Default)\n",
" init_buffer = 75 (Default)\n",
" term_buffer = 50 (Default)\n",
" window = 25 (Default)\n",
" algorithm = hmc (Default)\n",
" hmc\n",
" engine = nuts (Default)\n",
" nuts\n",
" max_depth = 10 (Default)\n",
" metric = diag_e (Default)\n",
" stepsize = 1 (Default)\n",
" stepsize_jitter = 0 (Default)\n",
"id = 0 (Default)\n",
"data\n",
" file = /tmp/stan-7ab78c4890857200/stan.data\n",
"init = /tmp/stan-7ab78c4890857200/stan.init\n",
"random\n",
" seed = 1067463274\n",
"output\n",
" file = /tmp/stan-7ab78c4890857200/stan.csv\n",
" diagnostic_file = (Default)\n",
" refresh = 100 (Default)\n",
"\n",
"\n",
"Gradient evaluation took 0.000156 seconds\n",
"1000 transitions using 10 leapfrog steps per transition would take 1.56 seconds.\n",
"Adjust your expectations accordingly!\n",
"\n",
"\n",
"Iteration: 1 / 2000 [ 0%] (Warmup)\n",
"Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:\n",
"Exception: lkj_corr_lpdf: y is not positive definite. (in '/home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.stan' at line 71)\n",
"\n",
"If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine,\n",
"but if this warning occurs often then your model may be either severely ill-conditioned or misspecified.\n",
"\n",
"Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:\n",
"Exception: lkj_corr_lpdf: y is not positive definite. (in '/home/jovyan/stochaskell/cache/stan/model_3a4af8197fb3f3295b183f18be009847751d441a.stan' at line 71)\n",
"\n",
"If this warning occurs sporadically, such as for highly constrained variable types like covariance matrices, then the sampler is fine,\n",
"but if this warning occurs often then your model may be either severely ill-conditioned or misspecified.\n",
"\n",
"Iteration: 100 / 2000 [ 5%] (Warmup)\n",
"Iteration: 200 / 2000 [ 10%] (Warmup)\n",
"Iteration: 300 / 2000 [ 15%] (Warmup)\n",
"Iteration: 400 / 2000 [ 20%] (Warmup)\n",
"Iteration: 500 / 2000 [ 25%] (Warmup)\n",
"Iteration: 600 / 2000 [ 30%] (Warmup)\n",
"Iteration: 700 / 2000 [ 35%] (Warmup)\n",
"Iteration: 800 / 2000 [ 40%] (Warmup)\n",
"Iteration: 900 / 2000 [ 45%] (Warmup)\n",
"Iteration: 1000 / 2000 [ 50%] (Warmup)\n",
"Iteration: 1001 / 2000 [ 50%] (Sampling)\n",
"Iteration: 1100 / 2000 [ 55%] (Sampling)\n",
"Iteration: 1200 / 2000 [ 60%] (Sampling)\n",
"Iteration: 1300 / 2000 [ 65%] (Sampling)\n",
"Iteration: 1400 / 2000 [ 70%] (Sampling)\n",
"Iteration: 1500 / 2000 [ 75%] (Sampling)\n",
"Iteration: 1600 / 2000 [ 80%] (Sampling)\n",
"Iteration: 1700 / 2000 [ 85%] (Sampling)\n",
"Iteration: 1800 / 2000 [ 90%] (Sampling)\n",
"Iteration: 1900 / 2000 [ 95%] (Sampling)\n",
"Iteration: 2000 / 2000 [100%] (Sampling)\n",
"\n",
" Elapsed Time: 2.90063 seconds (Warm-up)\n",
" 2.12953 seconds (Sampling)\n",
" 5.03016 seconds (Total)\n",
"\n",
"# stan_version_major = 2\n",
"# stan_version_minor = 16\n",
"# stan_version_patch = 0\n",
"# model = model_3a4af8197fb3f3295b183f18be009847751d441a_model\n",
"# method = sample (Default)\n",
"# sample\n",
"# num_samples = 1000 (Default)\n",
"# num_warmup = 1000 (Default)\n",
"# save_warmup = 0 (Default)\n",
"# thin = 1 (Default)\n",
"# adapt\n",
"# engaged = 1 (Default)\n",
"# gamma = 0.050000000000000003 (Default)\n",
"# delta = 0.80000000000000004 (Default)\n",
"# kappa = 0.75 (Default)\n",
"# t0 = 10 (Default)\n",
"# init_buffer = 75 (Default)\n",
"# term_buffer = 50 (Default)\n",
"# window = 25 (Default)\n",
"# algorithm = hmc (Default)\n",
"# hmc\n",
"# engine = nuts (Default)\n",
"# nuts\n",
"# max_depth = 10 (Default)\n",
"# metric = diag_e (Default)\n",
"# stepsize = 1 (Default)\n",
"# stepsize_jitter = 0 (Default)\n",
"# id = 0 (Default)\n",
"# data\n",
"# file = /tmp/stan-7ab78c4890857200/stan.data\n",
"# init = /tmp/stan-7ab78c4890857200/stan.init\n",
"# random\n",
"# seed = 1067463274\n",
"# output\n",
"# file = /tmp/stan-7ab78c4890857200/stan.csv\n",
"# diagnostic_file = (Default)\n",
"# refresh = 100 (Default)\n",
"# Adaptation terminated\n",
"# Step size = 0.190624\n",
"# Diagonal elements of inverse mass matrix:\n",
"# 5.83378, 0.0112468, 3.3753, 0.00816748, 0.0546415, 28.991, 31.7809, 28.8753, 29.5893, 32.5971, 31.8214, 26.9231, 28.9886, 35.1412, 27.7419, 29.5949, 25.4521, 25.845, 28.6024, 30.1287, 27.5221, 28.7733, 30.1964, 24.443, 24.1183, 28.9358, 29.8461, 27.2327, 30.0987, 36.5679, 28.2423, 26.8473, 27.0516, 28.2851, 24.1571, 0.0558018, 0.0573982, 0.0475101, 0.0541492, 0.0559067, 0.0548206, 0.0474767, 0.0567981, 0.0604249, 0.0473151, 0.0543833, 0.0464371, 0.0470357, 0.0543212, 0.0508562, 0.0472773, 0.0483793, 0.0524393, 0.0462552, 0.0447209, 0.0490314, 0.0532829, 0.0480532, 0.05432, 0.0630577, 0.0462804, 0.0473987, 0.0466123, 0.0485278, 0.0443185, 0.00601311\n",
"# \n",
"# Elapsed Time: 2.90063 seconds (Warm-up)\n",
"# 2.12953 seconds (Sampling)\n",
"# 5.03016 seconds (Total)\n",
"# \n",
"\n",
"Extracting: x_stan_0_1, v_0_13, x_stan_0_4, x_stan_0_5\n",
"--- Removing temporary files ---"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"([104.639,6.33149],[[135.57807844,-5.944705082836486],[-5.944705082836486,0.6518915304039999]],[[99.4325,6.38386],[91.3923,7.00401],[101.771,6.81125],[107.228,5.47218],[78.4097,7.14034],[111.988,6.22571],[99.0285,5.81951],[95.9207,6.78053],[117.306,7.49154],[98.8741,5.32688],[94.8058,7.65448],[96.4247,6.10042],[104.098,6.25678],[117.772,6.69302],[131.797,5.01399],[126.627,5.56047],[99.0814,6.09183],[107.099,6.11271],[112.064,6.43936],[111.084,5.99643],[116.036,6.25897],[95.0701,5.95259],[106.196,5.46068],[119.844,5.66106],[83.2827,6.92215],[107.478,6.64509],[108.289,6.5509],[120.509,5.51061],[96.445,5.30583],[105.957,6.38429]],6.85353)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"samples <- hmcStanInit 1000 posterior initial\n",
"print $ last samples"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"import numpy as np\n",
"import pymc3 as pm\n",
"import sys\n",
"import theano\n",
"import theano.tensor as tt\n",
"import theano.tensor.basic\n",
"import theano.tensor.slinalg\n",
"from theano.ifelse import ifelse\n",
"\n",
"def ascolumn(a): return a.dimshuffle(0,'x')\n",
"def asrow(a): return a.dimshuffle('x',0)\n",
"def quad_form_diag(m,v):\n",
" d = theano.tensor.basic.diag(v)\n",
" return d.dot(m).dot(d)\n",
"def lkj_corr(name, eta, n):\n",
" C_triu = pm.LKJCorr(name + '_triu', eta=eta, n=n)\n",
" shape = n * (n - 1) // 2\n",
" tri_index = np.zeros([n, n], dtype='int32')\n",
" tri_index[np.triu_indices(n, k=1)] = np.arange(shape)\n",
" tri_index[np.triu_indices(n, k=1)[::-1]] = np.arange(shape)\n",
" return pm.Deterministic(name, tt.fill_diagonal(C_triu[tri_index], 1))\n",
"\n",
"theano.config.floatX = 'float32'\n",
"\n",
"with pm.Model() as model:\n",
" v_0_0 = 0.0 * np.ones((5), dtype='float32')\n",
" v_0_1 = 50.0 * np.ones((5), dtype='float32')\n",
" x_pm_0_0 = tt.as_tensor_variable(np.load('x_pm_0_0.npy').astype('float32'))\n",
" v_0_3 = 0.0 * np.ones((2), dtype='float32')\n",
" v_0_4 = 100.0 * np.ones((2), dtype='float32')\n",
" x_pm_0_1 = pm.Normal('x_pm_0_1', mu=v_0_3, sd=v_0_4, shape=(2-1+1))\n",
" x_pm_0_2 = pm.Cauchy('x_pm_0_2', alpha=0.0, beta=2.5, shape=(2-1+1))\n",
" x_pm_0_3 = lkj_corr('x_pm_0_3', eta=2.0, n=2)\n",
" v_0_8 = quad_form_diag(x_pm_0_3, x_pm_0_2)\n",
" x_pm_0_4 = pm.MvNormal('x_pm_0_4', mu=x_pm_0_1, cov=v_0_8, shape=(30-1+1, 2-1+1))\n",
" x_pm_0_5 = pm.Bound(pm.Cauchy, lower=0.0)('x_pm_0_5', alpha=0.0, beta=2.5, shape=())\n",
" v_0_11 = x_pm_0_4.T\n",
" v_0_12 = ascolumn(v_0_11[1-1])\n",
" v_0_13 = ascolumn(v_0_11[2-1])\n",
" v_0_14 = asrow(x_pm_0_0)\n",
" v_0_15 = v_0_13.dot(v_0_14)\n",
" v_0_16 = v_0_12 + v_0_15\n",
" v_0_17 = x_pm_0_5 * np.ones((30, 5), dtype='float32')\n",
" x_pm_0_6 = pm.Normal('x_pm_0_6', mu=v_0_16, sd=v_0_17, observed=np.load('x_pm_0_6.npy').astype('float32'), shape=(30-1+1, 5-1+1))\n",
"\n",
" trace = pm.sample(draws=1000,step=None,init=\"adapt_diag\",start={'x_pm_0_1': np.load('x_pm_0_1.npy').astype('float32'), 'x_pm_0_2': np.load('x_pm_0_2.npy').astype('float32'), 'x_pm_0_3': np.load('x_pm_0_3.npy').astype('float32'), 'x_pm_0_4': np.load('x_pm_0_4.npy').astype('float32'), 'x_pm_0_5': np.load('x_pm_0_5.npy').astype('float32')},tune=1000)\n",
" print(map(list, zip(trace['x_pm_0_1'].tolist(), trace['x_pm_0_2'].tolist(), trace['x_pm_0_3'].tolist(), trace['x_pm_0_4'].tolist(), trace['x_pm_0_5'].tolist())))"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"Auto-assigning NUTS sampler...\n",
"Initializing NUTS using adapt_diag...\n",
"Multiprocess sampling (2 chains in 2 jobs)\n",
"NUTS: [x_pm_0_5, x_pm_0_4, x_pm_0_3_triu, x_pm_0_2, x_pm_0_1]\n",
"\r",
" 0%| | 0/2000 [00:00, ?it/s]\r",
" 0%| | 1/2000 [00:00<19:46, 1.69it/s]\r",
" 1%|1 | 21/2000 [00:00<13:45, 2.40it/s]\r",
" 2%|2 | 46/2000 [00:00<09:32, 3.41it/s]\r",
" 4%|4 | 81/2000 [00:00<06:35, 4.85it/s]\r",
" 5%|4 | 99/2000 [00:02<05:13, 6.05it/s]\r",
" 6%|5 | 112/2000 [00:03<04:31, 6.96it/s]\r",
" 6%|6 | 122/2000 [00:04<04:08, 7.55it/s]\r",
" 6%|6 | 129/2000 [00:05<03:46, 8.27it/s]\r",
" 7%|6 | 135/2000 [00:06<04:44, 6.56it/s]\r",
" 7%|6 | 139/2000 [00:07<04:46, 6.49it/s]\r",
" 7%|7 | 142/2000 [00:07<05:17, 5.86it/s]\r",
" 7%|7 | 145/2000 [00:08<05:24, 5.72it/s]\r",
" 7%|7 | 147/2000 [00:08<05:47, 5.33it/s]\r",
" 7%|7 | 149/2000 [00:09<05:45, 5.35it/s]\r",
" 8%|7 | 151/2000 [00:09<05:57, 5.18it/s]\r",
" 8%|7 | 152/2000 [00:09<06:35, 4.67it/s]\r",
" 8%|7 | 153/2000 [00:09<06:18, 4.88it/s]\r",
" 8%|7 | 154/2000 [00:10<06:36, 4.66it/s]\r",
" 8%|7 | 155/2000 [00:10<06:19, 4.86it/s]\r",
" 8%|7 | 156/2000 [00:10<06:35, 4.67it/s]\r",
" 8%|7 | 157/2000 [00:10<06:45, 4.55it/s]\r",
" 8%|7 | 158/2000 [00:11<06:35, 4.65it/s]\r",
" 8%|7 | 159/2000 [00:11<06:18, 4.86it/s]\r",
" 8%|8 | 160/2000 [00:11<06:17, 4.88it/s]\r",
" 8%|8 | 161/2000 [00:11<06:04, 5.04it/s]\r",
" 8%|8 | 162/2000 [00:11<06:09, 4.97it/s]\r",
" 8%|8 | 163/2000 [00:11<05:52, 5.20it/s]\r",
" 8%|8 | 164/2000 [00:12<06:03, 5.06it/s]\r",
" 8%|8 | 165/2000 [00:12<05:54, 5.17it/s]\r",
" 8%|8 | 167/2000 [00:12<05:09, 5.93it/s]\r",
" 8%|8 | 168/2000 [00:12<05:24, 5.64it/s]\r",
" 8%|8 | 169/2000 [00:12<05:36, 5.44it/s]\r",
" 8%|8 | 170/2000 [00:13<05:44, 5.32it/s]\r",
" 9%|8 | 171/2000 [00:13<05:47, 5.26it/s]\r",
" 9%|8 | 172/2000 [00:13<05:43, 5.33it/s]\r",
" 9%|8 | 173/2000 [00:13<05:52, 5.19it/s]\r",
" 9%|8 | 174/2000 [00:13<05:46, 5.27it/s]\r",
" 9%|8 | 175/2000 [00:14<06:01, 5.05it/s]\r",
" 9%|8 | 176/2000 [00:14<05:15, 5.79it/s]\r",
" 9%|8 | 177/2000 [00:14<05:55, 5.13it/s]\r",
" 9%|8 | 179/2000 [00:14<04:58, 6.09it/s]\r",
" 9%|9 | 181/2000 [00:14<04:20, 6.99it/s]\r",
" 9%|9 | 183/2000 [00:15<03:30, 8.64it/s]\r",
" 9%|9 | 185/2000 [00:15<03:58, 7.62it/s]\r",
" 9%|9 | 186/2000 [00:15<04:57, 6.09it/s]\r",
" 9%|9 | 187/2000 [00:15<05:27, 5.54it/s]\r",
" 9%|9 | 188/2000 [00:15<05:28, 5.51it/s]\r",
" 9%|9 | 189/2000 [00:16<05:43, 5.27it/s]\r",
" 10%|9 | 191/2000 [00:16<04:50, 6.24it/s]\r",
" 10%|9 | 193/2000 [00:16<04:21, 6.91it/s]\r",
" 10%|9 | 194/2000 [00:16<04:56, 6.10it/s]\r",
" 10%|9 | 195/2000 [00:16<05:08, 5.85it/s]\r",
" 10%|9 | 196/2000 [00:17<05:16, 5.69it/s]\r",
" 10%|9 | 197/2000 [00:17<06:22, 4.72it/s]\r",
" 10%|9 | 198/2000 [00:17<07:26, 4.04it/s]\r",
" 10%|9 | 199/2000 [00:17<06:16, 4.78it/s]\r",
" 10%|# | 201/2000 [00:18<05:37, 5.33it/s]\r",
" 10%|# | 202/2000 [00:18<10:36, 2.82it/s]\r",
" 10%|# | 204/2000 [00:19<08:15, 3.62it/s]\r",
" 10%|# | 205/2000 [00:19<07:32, 3.97it/s]\r",
" 10%|# | 206/2000 [00:19<06:10, 4.84it/s]\r",
" 10%|# | 208/2000 [00:19<05:10, 5.77it/s]\r",
" 10%|# | 209/2000 [00:19<05:15, 5.68it/s]\r",
" 10%|# | 210/2000 [00:19<04:35, 6.49it/s]\r",
" 11%|# | 212/2000 [00:20<04:01, 7.39it/s]\r",
" 11%|# | 213/2000 [00:20<04:48, 6.18it/s]\r",
" 11%|# | 214/2000 [00:20<05:22, 5.54it/s]\r",
" 11%|# | 215/2000 [00:20<05:26, 5.47it/s]\r",
" 11%|# | 216/2000 [00:20<05:47, 5.13it/s]\r",
" 11%|# | 218/2000 [00:21<04:52, 6.10it/s]\r",
" 11%|# | 219/2000 [00:21<04:32, 6.54it/s]\r",
" 11%|#1 | 220/2000 [00:21<04:21, 6.80it/s]\r",
" 11%|#1 | 221/2000 [00:21<04:36, 6.44it/s]\r",
" 11%|#1 | 223/2000 [00:21<04:10, 7.10it/s]\r",
" 11%|#1 | 224/2000 [00:21<04:06, 7.19it/s]\r",
" 11%|#1 | 227/2000 [00:22<03:17, 8.99it/s]\r",
" 12%|#1 | 230/2000 [00:22<02:41, 10.95it/s]\r",
" 12%|#1 | 232/2000 [00:22<02:54, 10.12it/s]\r",
" 12%|#1 | 234/2000 [00:22<02:49, 10.44it/s]\r",
" 12%|#1 | 236/2000 [00:22<02:37, 11.19it/s]\r",
" 12%|#1 | 238/2000 [00:23<03:26, 8.54it/s]\r",
" 12%|#2 | 240/2000 [00:23<03:07, 9.39it/s]\r",
" 12%|#2 | 242/2000 [00:23<02:45, 10.62it/s]\r",
" 12%|#2 | 244/2000 [00:24<05:23, 5.42it/s]\r",
" 12%|#2 | 245/2000 [00:24<05:31, 5.30it/s]\r",
" 12%|#2 | 247/2000 [00:24<05:29, 5.32it/s]\r",
" 12%|#2 | 248/2000 [00:25<07:22, 3.96it/s]\r",
" 12%|#2 | 249/2000 [00:25<08:22, 3.49it/s]\r",
" 12%|#2 | 250/2000 [00:25<06:53, 4.24it/s]\r",
" 13%|#2 | 252/2000 [00:25<06:00, 4.85it/s]\r",
" 13%|#2 | 253/2000 [00:26<05:15, 5.54it/s]\r",
" 13%|#2 | 255/2000 [00:26<04:30, 6.44it/s]\r",
" 13%|#2 | 256/2000 [00:26<04:09, 6.98it/s]\r",
" 13%|#2 | 257/2000 [00:26<04:34, 6.34it/s]\r",
" 13%|#2 | 258/2000 [00:26<04:33, 6.36it/s]\r",
" 13%|#3 | 260/2000 [00:26<04:00, 7.24it/s]\r",
" 13%|#3 | 261/2000 [00:27<03:51, 7.53it/s]\r",
" 13%|#3 | 263/2000 [00:27<03:45, 7.71it/s]\r",
" 13%|#3 | 265/2000 [00:27<03:13, 8.97it/s]\r",
" 13%|#3 | 267/2000 [00:27<02:56, 9.79it/s]\r",
" 13%|#3 | 269/2000 [00:28<05:16, 5.46it/s]\r",
" 14%|#3 | 270/2000 [00:28<05:39, 5.09it/s]\r",
" 14%|#3 | 271/2000 [00:28<05:08, 5.61it/s]\r",
" 14%|#3 | 273/2000 [00:28<04:01, 7.14it/s]\r",
" 14%|#3 | 275/2000 [00:29<03:54, 7.36it/s]\r",
" 14%|#3 | 277/2000 [00:29<04:44, 6.06it/s]\r",
" 14%|#3 | 279/2000 [00:29<03:51, 7.44it/s]\r",
" 14%|#4 | 281/2000 [00:29<03:53, 7.35it/s]\r",
" 14%|#4 | 283/2000 [00:30<03:14, 8.83it/s]\r",
" 14%|#4 | 286/2000 [00:30<02:39, 10.73it/s]\r",
" 14%|#4 | 288/2000 [00:30<02:34, 11.07it/s]\r",
" 14%|#4 | 290/2000 [00:30<02:18, 12.37it/s]\r",
" 15%|#4 | 293/2000 [00:30<02:24, 11.78it/s]\r",
" 15%|#4 | 296/2000 [00:30<02:21, 12.05it/s]\r",
" 15%|#4 | 298/2000 [00:31<02:12, 12.88it/s]\r",
" 15%|#5 | 300/2000 [00:31<02:27, 11.52it/s]\r",
" 15%|#5 | 302/2000 [00:31<02:18, 12.25it/s]\r",
" 15%|#5 | 304/2000 [00:31<02:19, 12.18it/s]\r",
" 15%|#5 | 306/2000 [00:31<02:36, 10.84it/s]\r",
" 15%|#5 | 308/2000 [00:31<02:26, 11.55it/s]\r",
" 16%|#5 | 310/2000 [00:32<02:30, 11.25it/s]\r",
" 16%|#5 | 312/2000 [00:32<02:21, 11.94it/s]\r",
" 16%|#5 | 314/2000 [00:32<03:13, 8.72it/s]\r",
" 16%|#5 | 316/2000 [00:32<02:49, 9.95it/s]\r",
" 16%|#5 | 318/2000 [00:33<03:17, 8.53it/s]\r",
" 16%|#6 | 320/2000 [00:33<03:31, 7.94it/s]\r",
" 16%|#6 | 322/2000 [00:33<03:09, 8.87it/s]\r",
" 16%|#6 | 326/2000 [00:33<02:27, 11.35it/s]\r",
" 16%|#6 | 328/2000 [00:34<05:45, 4.84it/s]\r",
" 16%|#6 | 330/2000 [00:34<04:32, 6.12it/s]\r",
" 17%|#6 | 332/2000 [00:35<04:03, 6.86it/s]\r",
" 17%|#6 | 334/2000 [00:35<03:21, 8.28it/s]\r",
" 17%|#6 | 336/2000 [00:35<02:49, 9.81it/s]\r",
" 17%|#7 | 340/2000 [00:35<02:15, 12.28it/s]\r",
" 17%|#7 | 345/2000 [00:35<01:46, 15.54it/s]\r",
" 17%|#7 | 349/2000 [00:35<01:29, 18.49it/s]\r",
" 18%|#7 | 354/2000 [00:35<01:13, 22.29it/s]\r",
" 18%|#7 | 358/2000 [00:35<01:10, 23.18it/s]\r",
" 18%|#8 | 363/2000 [00:36<01:02, 26.38it/s]\r",
" 18%|#8 | 367/2000 [00:36<01:03, 25.71it/s]\r",
" 19%|#8 | 371/2000 [00:36<00:58, 27.81it/s]\r",
" 19%|#8 | 375/2000 [00:36<00:53, 30.24it/s]\r",
" 19%|#9 | 380/2000 [00:36<00:49, 32.94it/s]\r",
" 19%|#9 | 384/2000 [00:36<00:48, 33.46it/s]\r",
" 19%|#9 | 388/2000 [00:36<00:47, 33.65it/s]\r",
" 20%|#9 | 392/2000 [00:36<00:52, 30.73it/s]\r",
" 20%|#9 | 397/2000 [00:37<00:46, 34.31it/s]\r",
" 20%|## | 401/2000 [00:37<00:46, 34.22it/s]\r",
" 20%|## | 407/2000 [00:37<00:59, 26.74it/s]\r",
" 21%|## | 411/2000 [00:37<01:23, 19.11it/s]\r",
" 21%|## | 414/2000 [00:37<01:20, 19.68it/s]\r",
" 21%|## | 417/2000 [00:38<01:21, 19.43it/s]\r",
" 21%|##1 | 422/2000 [00:38<01:07, 23.24it/s]\r",
" 21%|##1 | 426/2000 [00:38<01:01, 25.63it/s]\r",
" 22%|##1 | 431/2000 [00:38<00:54, 28.56it/s]\r",
" 22%|##1 | 435/2000 [00:38<00:54, 28.86it/s]\r",
" 22%|##2 | 440/2000 [00:38<00:48, 31.99it/s]\r",
" 22%|##2 | 444/2000 [00:38<00:51, 30.31it/s]\r",
" 22%|##2 | 450/2000 [00:39<00:45, 34.39it/s]\r",
" 23%|##2 | 454/2000 [00:39<00:43, 35.71it/s]\r",
" 23%|##2 | 459/2000 [00:39<00:41, 37.56it/s]\r",
" 23%|##3 | 463/2000 [00:39<00:40, 37.54it/s]\r",
" 23%|##3 | 468/2000 [00:39<00:39, 38.82it/s]\r",
" 24%|##3 | 474/2000 [00:39<00:35, 42.90it/s]\r",
" 24%|##3 | 479/2000 [00:39<00:35, 42.44it/s]\r",
" 24%|##4 | 484/2000 [00:39<00:37, 40.87it/s]\r",
" 24%|##4 | 489/2000 [00:39<00:35, 42.48it/s]\r",
" 25%|##4 | 494/2000 [00:40<00:35, 42.58it/s]\r",
" 25%|##4 | 499/2000 [00:40<00:36, 41.03it/s]\r",
" 25%|##5 | 504/2000 [00:40<00:35, 42.56it/s]\r",
" 25%|##5 | 509/2000 [00:40<00:36, 41.04it/s]\r",
" 26%|##5 | 514/2000 [00:40<00:35, 41.50it/s]\r",
" 26%|##5 | 519/2000 [00:40<00:38, 38.66it/s]\r",
" 26%|##6 | 524/2000 [00:40<00:37, 39.78it/s]\r",
" 26%|##6 | 529/2000 [00:40<00:37, 38.99it/s]\r",
" 27%|##6 | 536/2000 [00:41<00:33, 43.50it/s]\r",
" 27%|##7 | 541/2000 [00:41<00:33, 43.27it/s]\r",
" 27%|##7 | 546/2000 [00:41<00:32, 44.47it/s]\r",
" 28%|##7 | 551/2000 [00:41<00:33, 43.58it/s]\r",
" 28%|##7 | 556/2000 [00:41<00:32, 43.88it/s]\r",
" 28%|##8 | 561/2000 [00:41<00:34, 41.89it/s]\r",
" 28%|##8 | 566/2000 [00:41<00:41, 34.90it/s]\r",
" 28%|##8 | 570/2000 [00:42<00:53, 26.80it/s]\r",
" 29%|##8 | 575/2000 [00:42<00:51, 27.41it/s]\r",
" 29%|##8 | 579/2000 [00:42<00:52, 27.21it/s]\r",
" 29%|##9 | 582/2000 [00:42<00:50, 27.82it/s]\r",
" 29%|##9 | 587/2000 [00:42<00:44, 31.82it/s]\r",
" 30%|##9 | 592/2000 [00:42<00:40, 34.57it/s]\r",
" 30%|##9 | 599/2000 [00:42<00:35, 39.17it/s]\r",
" 30%|### | 608/2000 [00:42<00:30, 45.75it/s]\r",
" 31%|### | 614/2000 [00:43<00:32, 42.12it/s]\r",
" 31%|### | 619/2000 [00:43<00:32, 42.31it/s]\r",
" 31%|###1 | 624/2000 [00:43<00:37, 36.64it/s]\r",
" 31%|###1 | 629/2000 [00:43<00:36, 37.72it/s]\r",
" 32%|###1 | 634/2000 [00:43<00:36, 37.35it/s]\r",
" 32%|###1 | 638/2000 [00:43<00:37, 35.95it/s]\r",
" 32%|###2 | 642/2000 [00:43<00:39, 34.65it/s]\r",
" 32%|###2 | 648/2000 [00:44<00:35, 38.23it/s]\r",
" 33%|###2 | 653/2000 [00:44<00:38, 34.66it/s]\r",
" 33%|###2 | 658/2000 [00:44<00:35, 37.50it/s]\r",
" 33%|###3 | 662/2000 [00:44<00:37, 36.11it/s]\r",
" 33%|###3 | 667/2000 [00:44<00:35, 37.47it/s]\r",
" 34%|###3 | 671/2000 [00:44<00:36, 36.66it/s]\r",
" 34%|###3 | 678/2000 [00:44<00:32, 40.44it/s]\r",
" 34%|###4 | 683/2000 [00:45<00:48, 27.34it/s]\r",
" 34%|###4 | 687/2000 [00:45<00:53, 24.73it/s]\r",
" 35%|###4 | 691/2000 [00:45<00:53, 24.35it/s]\r",
" 35%|###4 | 694/2000 [00:45<00:51, 25.14it/s]\r",
" 35%|###4 | 697/2000 [00:45<01:00, 21.60it/s]\r",
" 35%|###5 | 700/2000 [00:45<01:05, 19.90it/s]\r",
" 35%|###5 | 703/2000 [00:46<01:05, 19.77it/s]\r",
" 35%|###5 | 708/2000 [00:46<00:54, 23.78it/s]\r",
" 36%|###5 | 712/2000 [00:46<00:48, 26.55it/s]\r",
" 36%|###5 | 717/2000 [00:46<00:42, 30.52it/s]\r",
" 36%|###6 | 721/2000 [00:46<00:39, 32.31it/s]\r",
" 36%|###6 | 725/2000 [00:46<00:38, 33.19it/s]\r",
" 37%|###6 | 732/2000 [00:46<00:33, 37.67it/s]\r",
" 37%|###6 | 737/2000 [00:46<00:33, 38.09it/s]\r",
" 37%|###7 | 742/2000 [00:47<00:36, 34.59it/s]\r",
" 37%|###7 | 746/2000 [00:47<00:40, 30.79it/s]\r",
" 38%|###7 | 750/2000 [00:47<00:50, 24.92it/s]\r",
" 38%|###7 | 753/2000 [00:47<01:12, 17.26it/s]\r",
" 38%|###7 | 756/2000 [00:48<01:23, 14.88it/s]\r",
" 38%|###8 | 761/2000 [00:48<01:05, 18.82it/s]\r",
" 38%|###8 | 769/2000 [00:48<00:51, 24.03it/s]\r",
" 39%|###8 | 775/2000 [00:48<00:42, 28.81it/s]\r",
" 39%|###9 | 780/2000 [00:48<00:39, 31.23it/s]\r",
" 39%|###9 | 785/2000 [00:48<00:39, 30.71it/s]\r",
" 40%|###9 | 791/2000 [00:48<00:33, 35.57it/s]\r",
" 40%|###9 | 796/2000 [00:48<00:34, 35.27it/s]\r",
" 40%|#### | 801/2000 [00:49<00:31, 38.29it/s]\r",
" 40%|#### | 806/2000 [00:49<00:31, 38.08it/s]\r",
" 41%|#### | 811/2000 [00:49<00:32, 36.47it/s]\r",
" 41%|#### | 815/2000 [00:49<00:35, 33.75it/s]\r",
" 41%|####1 | 821/2000 [00:49<00:31, 37.48it/s]\r",
" 41%|####1 | 826/2000 [00:49<00:34, 33.72it/s]\r",
" 42%|####1 | 832/2000 [00:49<00:30, 38.70it/s]\r",
" 42%|####1 | 837/2000 [00:50<00:29, 39.36it/s]\r",
" 42%|####2 | 843/2000 [00:50<00:26, 43.32it/s]\r",
" 42%|####2 | 848/2000 [00:50<00:28, 40.85it/s]\r",
" 43%|####2 | 853/2000 [00:50<00:27, 41.43it/s]\r",
" 43%|####2 | 858/2000 [00:50<00:29, 39.16it/s]\r",
" 43%|####3 | 864/2000 [00:50<00:26, 42.70it/s]\r",
" 43%|####3 | 869/2000 [00:50<00:27, 40.63it/s]\r",
" 44%|####3 | 874/2000 [00:50<00:29, 37.61it/s]\r",
" 44%|####3 | 878/2000 [00:51<00:31, 35.32it/s]\r",
" 44%|####4 | 884/2000 [00:51<00:28, 39.00it/s]\r",
" 44%|####4 | 889/2000 [00:51<00:27, 40.58it/s]\r",
" 45%|####4 | 895/2000 [00:51<00:24, 44.42it/s]\r",
" 45%|####5 | 901/2000 [00:51<00:24, 45.65it/s]\r",
" 45%|####5 | 906/2000 [00:51<00:24, 44.75it/s]\r",
" 46%|####5 | 911/2000 [00:51<00:25, 43.36it/s]\r",
" 46%|####5 | 916/2000 [00:51<00:25, 43.16it/s]\r",
" 46%|####6 | 921/2000 [00:52<00:26, 40.33it/s]\r",
" 46%|####6 | 926/2000 [00:52<00:26, 40.74it/s]\r",
" 47%|####6 | 931/2000 [00:52<00:29, 35.96it/s]\r",
" 47%|####6 | 936/2000 [00:52<00:28, 37.20it/s]\r",
" 47%|####6 | 940/2000 [00:52<00:28, 36.85it/s]\r",
" 47%|####7 | 944/2000 [00:52<00:28, 37.53it/s]\r",
" 47%|####7 | 948/2000 [00:52<00:29, 35.87it/s]\r",
" 48%|####7 | 953/2000 [00:52<00:27, 38.69it/s]\r",
" 48%|####7 | 957/2000 [00:53<00:29, 35.93it/s]\r",
" 48%|####8 | 962/2000 [00:53<00:27, 37.77it/s]\r",
" 48%|####8 | 966/2000 [00:53<00:31, 32.80it/s]\r",
" 48%|####8 | 970/2000 [00:53<00:29, 34.45it/s]\r",
" 49%|####8 | 974/2000 [00:53<00:32, 32.01it/s]\r",
" 49%|####8 | 978/2000 [00:53<00:32, 31.48it/s]\r",
" 49%|####9 | 983/2000 [00:53<00:30, 33.76it/s]\r",
" 49%|####9 | 987/2000 [00:53<00:29, 34.32it/s]\r",
" 50%|####9 | 992/2000 [00:54<00:27, 36.51it/s]\r",
" 50%|####9 | 996/2000 [00:54<00:31, 32.21it/s]\r",
" 50%|##### | 1001/2000 [00:54<00:28, 34.85it/s]\r",
" 50%|##### | 1005/2000 [00:54<00:30, 32.67it/s]\r",
" 50%|##### | 1009/2000 [00:54<00:31, 31.42it/s]\r",
" 51%|##### | 1013/2000 [00:54<00:35, 27.65it/s]\r",
" 51%|##### | 1018/2000 [00:54<00:31, 31.05it/s]\r",
" 51%|#####1 | 1022/2000 [00:55<00:35, 27.49it/s]\r",
" 51%|#####1 | 1027/2000 [00:55<00:31, 30.91it/s]\r",
" 52%|#####1 | 1031/2000 [00:55<00:31, 31.08it/s]\r",
" 52%|#####1 | 1036/2000 [00:55<00:27, 34.76it/s]\r",
" 52%|#####2 | 1040/2000 [00:55<00:28, 33.17it/s]\r",
" 52%|#####2 | 1044/2000 [00:55<00:29, 32.43it/s]\r",
" 52%|#####2 | 1048/2000 [00:55<00:29, 32.06it/s]\r",
" 53%|#####2 | 1053/2000 [00:55<00:26, 35.50it/s]\r",
" 53%|#####2 | 1057/2000 [00:56<00:28, 33.06it/s]\r",
" 53%|#####3 | 1062/2000 [00:56<00:26, 35.61it/s]\r",
" 53%|#####3 | 1066/2000 [00:56<00:27, 33.88it/s]\r",
" 54%|#####3 | 1071/2000 [00:56<00:25, 36.24it/s]\r",
" 54%|#####3 | 1075/2000 [00:56<00:25, 35.60it/s]\r",
" 54%|#####4 | 1080/2000 [00:56<00:23, 38.52it/s]\r",
" 54%|#####4 | 1084/2000 [00:56<00:25, 35.27it/s]\r",
" 54%|#####4 | 1088/2000 [00:56<00:27, 33.58it/s]\r",
" 55%|#####4 | 1092/2000 [00:56<00:26, 34.05it/s]\r",
" 55%|#####4 | 1096/2000 [00:57<00:28, 32.14it/s]\r",
" 55%|#####5 | 1101/2000 [00:57<00:25, 34.88it/s]\r",
" 55%|#####5 | 1105/2000 [00:57<00:31, 28.74it/s]\r",
" 56%|#####5 | 1110/2000 [00:57<00:27, 31.85it/s]\r",
" 56%|#####5 | 1114/2000 [00:57<00:28, 30.85it/s]\r",
" 56%|#####5 | 1119/2000 [00:57<00:26, 32.87it/s]\r",
" 56%|#####6 | 1123/2000 [00:57<00:28, 31.09it/s]\r",
" 56%|#####6 | 1127/2000 [00:58<00:26, 33.12it/s]\r",
" 57%|#####6 | 1131/2000 [00:58<00:32, 27.03it/s]\r",
" 57%|#####6 | 1136/2000 [00:58<00:27, 31.13it/s]\r",
" 57%|#####6 | 1140/2000 [00:58<00:28, 30.40it/s]\r",
" 57%|#####7 | 1145/2000 [00:58<00:25, 33.16it/s]\r",
" 57%|#####7 | 1149/2000 [00:58<00:25, 33.01it/s]\r",
" 58%|#####7 | 1154/2000 [00:58<00:23, 35.60it/s]\r",
" 58%|#####7 | 1158/2000 [00:59<00:25, 33.55it/s]\r",
" 58%|#####8 | 1162/2000 [00:59<00:25, 33.09it/s]\r",
" 58%|#####8 | 1166/2000 [00:59<00:26, 31.68it/s]\r",
" 59%|#####8 | 1171/2000 [00:59<00:24, 34.50it/s]\r",
" 59%|#####8 | 1175/2000 [00:59<00:25, 32.92it/s]\r",
" 59%|#####8 | 1180/2000 [00:59<00:22, 35.91it/s]\r",
" 59%|#####9 | 1184/2000 [00:59<00:23, 34.33it/s]\r",
" 59%|#####9 | 1189/2000 [00:59<00:22, 36.63it/s]\r",
" 60%|#####9 | 1193/2000 [01:00<00:23, 34.31it/s]\r",
" 60%|#####9 | 1199/2000 [01:00<00:20, 38.20it/s]\r",
" 60%|###### | 1204/2000 [01:00<00:22, 35.17it/s]\r",
" 60%|###### | 1208/2000 [01:00<00:25, 31.24it/s]\r",
" 61%|###### | 1214/2000 [01:00<00:23, 33.90it/s]\r",
" 61%|###### | 1218/2000 [01:00<00:23, 33.39it/s]\r",
" 61%|######1 | 1223/2000 [01:00<00:21, 35.82it/s]\r",
" 61%|######1 | 1227/2000 [01:00<00:23, 33.36it/s]\r",
" 62%|######1 | 1232/2000 [01:01<00:21, 35.79it/s]\r",
" 62%|######1 | 1236/2000 [01:01<00:22, 34.64it/s]\r",
" 62%|######2 | 1241/2000 [01:01<00:20, 37.82it/s]\r",
" 62%|######2 | 1245/2000 [01:01<00:25, 30.13it/s]\r",
" 62%|######2 | 1249/2000 [01:01<00:24, 30.85it/s]\r",
" 63%|######2 | 1253/2000 [01:01<00:25, 28.77it/s]\r",
" 63%|######2 | 1258/2000 [01:01<00:23, 31.95it/s]\r",
" 63%|######3 | 1262/2000 [01:02<00:27, 27.01it/s]\r",
" 63%|######3 | 1266/2000 [01:02<00:28, 26.03it/s]\r",
" 63%|######3 | 1269/2000 [01:02<00:33, 21.99it/s]\r",
" 64%|######3 | 1272/2000 [01:02<00:33, 21.69it/s]\r",
" 64%|######3 | 1275/2000 [01:02<00:37, 19.44it/s]\r",
" 64%|######3 | 1278/2000 [01:02<00:34, 21.21it/s]\r",
" 64%|######4 | 1282/2000 [01:03<00:29, 24.69it/s]\r",
" 64%|######4 | 1287/2000 [01:03<00:25, 28.24it/s]\r",
" 65%|######4 | 1291/2000 [01:03<00:23, 29.61it/s]\r",
" 65%|######4 | 1296/2000 [01:03<00:21, 33.47it/s]\r",
" 65%|######5 | 1301/2000 [01:03<00:19, 35.62it/s]\r",
" 65%|######5 | 1306/2000 [01:03<00:18, 37.37it/s]\r",
" 66%|######5 | 1310/2000 [01:03<00:18, 37.31it/s]\r",
" 66%|######5 | 1314/2000 [01:03<00:20, 32.77it/s]\r",
" 66%|######5 | 1318/2000 [01:04<00:22, 30.90it/s]\r",
" 66%|######6 | 1322/2000 [01:04<00:21, 31.46it/s]\r",
" 66%|######6 | 1326/2000 [01:04<00:20, 32.98it/s]\r",
" 66%|######6 | 1330/2000 [01:04<00:20, 32.90it/s]\r",
" 67%|######6 | 1335/2000 [01:04<00:18, 35.44it/s]\r",
" 67%|######6 | 1339/2000 [01:04<00:19, 34.08it/s]\r",
" 67%|######7 | 1344/2000 [01:04<00:18, 36.39it/s]\r",
" 67%|######7 | 1348/2000 [01:04<00:20, 32.26it/s]\r",
" 68%|######7 | 1353/2000 [01:05<00:18, 34.87it/s]\r",
" 68%|######7 | 1357/2000 [01:05<00:25, 24.98it/s]\r",
" 68%|######8 | 1362/2000 [01:05<00:22, 28.32it/s]\r",
" 68%|######8 | 1366/2000 [01:05<00:25, 24.99it/s]\r",
" 68%|######8 | 1370/2000 [01:05<00:23, 27.26it/s]\r",
" 69%|######8 | 1374/2000 [01:05<00:22, 27.60it/s]\r",
" 69%|######8 | 1379/2000 [01:05<00:20, 30.96it/s]\r",
" 69%|######9 | 1383/2000 [01:06<00:21, 29.26it/s]\r",
" 69%|######9 | 1388/2000 [01:06<00:18, 32.47it/s]\r",
" 70%|######9 | 1392/2000 [01:06<00:21, 28.13it/s]\r",
" 70%|######9 | 1397/2000 [01:06<00:18, 32.23it/s]\r",
" 70%|####### | 1401/2000 [01:06<00:19, 30.85it/s]\r",
" 70%|####### | 1406/2000 [01:06<00:17, 33.77it/s]\r",
" 70%|####### | 1410/2000 [01:06<00:19, 30.98it/s]\r",
" 71%|####### | 1415/2000 [01:07<00:17, 33.87it/s]\r",
" 71%|####### | 1419/2000 [01:07<00:18, 31.23it/s]\r",
" 71%|#######1 | 1423/2000 [01:07<00:19, 29.82it/s]\r",
" 71%|#######1 | 1428/2000 [01:07<00:17, 32.61it/s]\r",
" 72%|#######1 | 1432/2000 [01:07<00:17, 32.02it/s]\r",
" 72%|#######1 | 1436/2000 [01:07<00:16, 33.76it/s]\r",
" 72%|#######2 | 1440/2000 [01:07<00:18, 30.97it/s]\r",
" 72%|#######2 | 1445/2000 [01:07<00:16, 33.85it/s]\r",
" 72%|#######2 | 1449/2000 [01:08<00:16, 33.80it/s]\r",
" 73%|#######2 | 1454/2000 [01:08<00:15, 36.01it/s]\r",
" 73%|#######2 | 1459/2000 [01:08<00:14, 37.54it/s]\r",
" 73%|#######3 | 1464/2000 [01:08<00:13, 39.96it/s]\r",
" 73%|#######3 | 1469/2000 [01:08<00:13, 38.67it/s]\r",
" 74%|#######3 | 1473/2000 [01:08<00:13, 39.05it/s]\r",
" 74%|#######3 | 1477/2000 [01:08<00:18, 28.11it/s]\r",
" 74%|#######4 | 1481/2000 [01:09<00:17, 29.73it/s]\r",
" 74%|#######4 | 1485/2000 [01:09<00:18, 28.38it/s]\r",
" 74%|#######4 | 1490/2000 [01:09<00:16, 31.58it/s]\r",
" 75%|#######4 | 1494/2000 [01:09<00:17, 29.39it/s]\r",
" 75%|#######4 | 1499/2000 [01:09<00:15, 32.44it/s]\r",
" 75%|#######5 | 1503/2000 [01:09<00:16, 29.89it/s]\r",
" 75%|#######5 | 1509/2000 [01:09<00:14, 34.13it/s]\r",
" 76%|#######5 | 1513/2000 [01:10<00:16, 30.09it/s]\r",
" 76%|#######5 | 1517/2000 [01:10<00:15, 30.27it/s]\r",
" 76%|#######6 | 1521/2000 [01:10<00:16, 29.91it/s]\r",
" 76%|#######6 | 1526/2000 [01:10<00:14, 32.75it/s]\r",
" 76%|#######6 | 1530/2000 [01:10<00:15, 30.14it/s]\r",
" 77%|#######6 | 1534/2000 [01:10<00:16, 28.20it/s]\r",
" 77%|#######6 | 1538/2000 [01:10<00:16, 27.95it/s]\r",
" 77%|#######7 | 1541/2000 [01:11<00:19, 24.15it/s]\r",
" 77%|#######7 | 1544/2000 [01:11<00:20, 22.61it/s]\r",
" 77%|#######7 | 1547/2000 [01:11<00:21, 21.06it/s]\r",
" 78%|#######7 | 1552/2000 [01:11<00:18, 24.80it/s]\r",
" 78%|#######7 | 1556/2000 [01:11<00:15, 27.88it/s]\r",
" 78%|#######8 | 1560/2000 [01:11<00:14, 30.39it/s]\r",
" 78%|#######8 | 1564/2000 [01:11<00:14, 30.99it/s]\r",
" 78%|#######8 | 1569/2000 [01:11<00:12, 33.81it/s]\r",
" 79%|#######8 | 1573/2000 [01:12<00:13, 32.37it/s]\r",
" 79%|#######8 | 1578/2000 [01:12<00:11, 35.82it/s]\r",
" 79%|#######9 | 1582/2000 [01:12<00:11, 35.51it/s]\r",
" 79%|#######9 | 1587/2000 [01:12<00:11, 37.13it/s]\r",
" 80%|#######9 | 1591/2000 [01:12<00:11, 34.44it/s]\r",
" 80%|#######9 | 1595/2000 [01:12<00:11, 35.79it/s]\r",
" 80%|#######9 | 1599/2000 [01:12<00:11, 34.27it/s]\r",
" 80%|######## | 1603/2000 [01:12<00:12, 32.84it/s]\r",
" 80%|######## | 1607/2000 [01:13<00:12, 32.39it/s]\r",
" 81%|######## | 1612/2000 [01:13<00:11, 34.89it/s]\r",
" 81%|######## | 1616/2000 [01:13<00:10, 35.96it/s]\r",
" 81%|########1 | 1621/2000 [01:13<00:10, 37.78it/s]\r",
" 81%|########1 | 1625/2000 [01:13<00:10, 36.90it/s]\r",
" 81%|########1 | 1629/2000 [01:13<00:09, 37.36it/s]\r",
" 82%|########1 | 1633/2000 [01:13<00:10, 34.88it/s]\r",
" 82%|########1 | 1637/2000 [01:13<00:10, 34.57it/s]\r",
" 82%|########2 | 1641/2000 [01:13<00:10, 34.35it/s]\r",
" 82%|########2 | 1645/2000 [01:14<00:10, 34.69it/s]\r",
" 82%|########2 | 1650/2000 [01:14<00:09, 36.75it/s]\r",
" 83%|########2 | 1654/2000 [01:14<00:09, 36.35it/s]\r",
" 83%|########2 | 1659/2000 [01:14<00:08, 38.02it/s]\r",
" 83%|########3 | 1663/2000 [01:14<00:08, 38.52it/s]\r",
" 83%|########3 | 1668/2000 [01:14<00:08, 40.21it/s]\r",
" 84%|########3 | 1673/2000 [01:14<00:08, 40.32it/s]\r",
" 84%|########3 | 1678/2000 [01:14<00:08, 38.28it/s]\r",
" 84%|########4 | 1682/2000 [01:15<00:08, 37.00it/s]\r",
" 84%|########4 | 1687/2000 [01:15<00:08, 38.58it/s]\r",
" 85%|########4 | 1691/2000 [01:15<00:08, 35.40it/s]\r",
" 85%|########4 | 1696/2000 [01:15<00:08, 37.38it/s]\r",
" 85%|########5 | 1700/2000 [01:15<00:10, 29.96it/s]\r",
" 85%|########5 | 1704/2000 [01:15<00:10, 28.96it/s]\r",
" 85%|########5 | 1708/2000 [01:15<00:09, 30.04it/s]\r",
" 86%|########5 | 1712/2000 [01:15<00:08, 32.02it/s]\r",
" 86%|########5 | 1716/2000 [01:16<00:08, 32.74it/s]\r",
" 86%|########6 | 1721/2000 [01:16<00:07, 36.01it/s]\r",
" 86%|########6 | 1725/2000 [01:16<00:07, 35.49it/s]\r",
" 86%|########6 | 1730/2000 [01:16<00:07, 37.29it/s]\r",
" 87%|########6 | 1734/2000 [01:16<00:07, 37.45it/s]\r",
" 87%|########6 | 1738/2000 [01:16<00:06, 38.12it/s]\r",
" 87%|########7 | 1742/2000 [01:16<00:06, 38.24it/s]\r",
" 87%|########7 | 1746/2000 [01:16<00:06, 38.04it/s]\r",
" 88%|########7 | 1751/2000 [01:16<00:06, 39.35it/s]\r",
" 88%|########7 | 1755/2000 [01:17<00:06, 39.17it/s]\r",
" 88%|########8 | 1760/2000 [01:17<00:05, 40.09it/s]\r",
" 88%|########8 | 1765/2000 [01:17<00:06, 33.99it/s]\r",
" 88%|########8 | 1769/2000 [01:17<00:07, 29.80it/s]\r",
" 89%|########8 | 1773/2000 [01:17<00:09, 24.59it/s]\r",
" 89%|########8 | 1776/2000 [01:17<00:08, 25.37it/s]\r",
" 89%|########8 | 1779/2000 [01:18<00:09, 22.60it/s]\r",
" 89%|########9 | 1784/2000 [01:18<00:08, 26.07it/s]\r",
" 89%|########9 | 1787/2000 [01:18<00:07, 26.80it/s]\r",
" 90%|########9 | 1792/2000 [01:18<00:06, 30.77it/s]\r",
" 90%|########9 | 1796/2000 [01:18<00:06, 31.11it/s]\r",
" 90%|######### | 1802/2000 [01:18<00:05, 35.21it/s]\r",
" 90%|######### | 1806/2000 [01:18<00:05, 34.24it/s]\r",
" 91%|######### | 1811/2000 [01:18<00:05, 36.53it/s]\r",
" 91%|######### | 1815/2000 [01:18<00:05, 35.61it/s]\r",
" 91%|#########1| 1820/2000 [01:19<00:04, 37.62it/s]\r",
" 91%|#########1| 1824/2000 [01:19<00:04, 35.86it/s]\r",
" 92%|#########1| 1830/2000 [01:19<00:04, 39.46it/s]\r",
" 92%|#########1| 1835/2000 [01:19<00:04, 39.19it/s]\r",
" 92%|#########2| 1840/2000 [01:19<00:04, 39.60it/s]\r",
" 92%|#########2| 1845/2000 [01:19<00:04, 37.49it/s]\r",
" 92%|#########2| 1850/2000 [01:19<00:03, 38.83it/s]\r",
" 93%|#########2| 1854/2000 [01:19<00:03, 37.40it/s]\r",
" 93%|#########2| 1858/2000 [01:20<00:04, 33.31it/s]\r",
" 93%|#########3| 1863/2000 [01:20<00:03, 35.25it/s]\r",
" 93%|#########3| 1867/2000 [01:20<00:04, 33.04it/s]\r",
" 94%|#########3| 1872/2000 [01:20<00:03, 35.42it/s]\r",
" 94%|#########3| 1876/2000 [01:20<00:03, 32.00it/s]\r",
" 94%|#########4| 1881/2000 [01:20<00:03, 32.96it/s]\r",
" 94%|#########4| 1885/2000 [01:20<00:03, 28.86it/s]\r",
" 94%|#########4| 1890/2000 [01:21<00:03, 32.71it/s]\r",
" 95%|#########4| 1894/2000 [01:21<00:03, 32.86it/s]\r",
" 95%|#########4| 1899/2000 [01:21<00:02, 35.36it/s]\r",
" 95%|#########5| 1903/2000 [01:21<00:02, 36.17it/s]\r",
" 95%|#########5| 1908/2000 [01:21<00:02, 37.95it/s]\r",
" 96%|#########5| 1912/2000 [01:21<00:02, 37.79it/s]\r",
" 96%|#########5| 1917/2000 [01:21<00:02, 39.21it/s]\r",
" 96%|#########6| 1921/2000 [01:21<00:02, 38.40it/s]\r",
" 96%|#########6| 1926/2000 [01:21<00:01, 40.56it/s]\r",
" 97%|#########6| 1931/2000 [01:22<00:01, 40.62it/s]\r",
" 97%|#########6| 1936/2000 [01:22<00:01, 42.51it/s]\r",
" 97%|#########7| 1941/2000 [01:22<00:01, 41.16it/s]\r",
" 97%|#########7| 1946/2000 [01:22<00:01, 41.65it/s]\r",
" 98%|#########7| 1951/2000 [01:22<00:01, 40.23it/s]\r",
" 98%|#########7| 1956/2000 [01:22<00:01, 41.56it/s]\r",
" 98%|#########8| 1961/2000 [01:22<00:01, 34.51it/s]\r",
" 98%|#########8| 1965/2000 [01:22<00:00, 35.09it/s]\r",
" 98%|#########8| 1969/2000 [01:23<00:01, 30.91it/s]\r",
" 99%|#########8| 1973/2000 [01:23<00:00, 27.77it/s]\r",
" 99%|#########8| 1978/2000 [01:23<00:00, 31.04it/s]\r",
" 99%|#########9| 1982/2000 [01:23<00:00, 29.03it/s]\r",
" 99%|#########9| 1987/2000 [01:23<00:00, 32.90it/s]\r",
"100%|#########9| 1991/2000 [01:23<00:00, 30.04it/s]\r",
"100%|#########9| 1997/2000 [01:24<00:00, 34.21it/s]\r",
"100%|##########| 2000/2000 [01:24<00:00, 23.77it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"([106.12870788574219,6.176269054412842],[[179.52633084787612,-3.654226198487391],[-3.654226198487391,0.37801998106516876]],[[100.14073181152344,6.276525020599365],[92.91806030273438,6.9047698974609375],[111.09143829345703,6.398200988769531],[118.18741607666016,4.951635837554932],[96.60414123535156,6.232805252075195],[123.55949401855469,5.8622918128967285],[100.26799774169922,5.945618629455566],[107.8413314819336,6.354674339294434],[113.60363006591797,7.7954325675964355],[86.55085754394531,5.811081886291504],[100.1036376953125,7.096543312072754],[103.55410766601563,5.6233229637146],[103.59244537353516,6.246775150299072],[119.96098327636719,6.750241756439209],[121.64537811279297,5.499698638916016],[122.6130142211914,5.80035400390625],[94.9382553100586,6.170075416564941],[129.95262145996094,5.122820854187012],[115.74018096923828,6.259227275848389],[109.01227569580078,6.124212265014648],[108.5250015258789,6.398806571960449],[92.0733413696289,5.973320007324219],[104.12140655517578,5.630012035369873],[115.29327392578125,5.777153015136719],[82.27437591552734,7.053092002868652],[110.72953796386719,6.630969047546387],[123.04608154296875,5.709709644317627],[118.15606689453125,5.60996150970459],[93.48809814453125,5.791196823120117],[111.0843505859375,5.790383815765381]],6.327272415161133)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import Language.PyMC3\n",
"let method = defaultPyMC3Inference{pmTune = 1000, pmDraws = 1000, pmInit = Just \"adapt_diag\"}\n",
"putStrLn $ pmProgram' method posterior (Just initial)\n",
"samples <- runPyMC3 method posterior (Just initial)\n",
"print $ last samples"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Haskell",
"language": "haskell",
"name": "haskell"
},
"language_info": {
"codemirror_mode": "ihaskell",
"file_extension": ".hs",
"name": "haskell",
"pygments_lexer": "Haskell",
"version": "8.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}