Last active
December 20, 2019 14:48
-
-
Save sharanry/2e9d401b3e16046fc89559d1a2ab79b2 to your computer and use it in GitHub Desktop.
Turing HMC vs Gen MH & SMC
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"using Turing\n", | |
"using Gen\n", | |
"using MacroTools\n", | |
"using MacroTools: prettify\n", | |
"using StatsPlots\n", | |
"using Statistics\n", | |
"using MCMCDiagnostics\n", | |
"using StatsBase" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"N = 100\n", | |
"σ = 3\n", | |
"μ = 9\n", | |
"Y = μ .+ σ*randn(N);" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7200\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<path clip-path=\"url(#clip7200)\" d=\"\n", | |
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7201\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<path clip-path=\"url(#clip7200)\" d=\"\n", | |
"M140.517 1487.47 L2352.76 1487.47 L2352.76 47.2441 L140.517 47.2441 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7202\">\n", | |
" <rect x=\"140\" y=\"47\" width=\"2213\" height=\"1441\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 262.194,1487.47 262.194,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 754.415,1487.47 754.415,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1246.64,1487.47 1246.64,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1738.86,1487.47 1738.86,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 2231.08,1487.47 2231.08,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 140.517,1446.71 2352.76,1446.71 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 140.517,1107.04 2352.76,1107.04 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 140.517,767.359 2352.76,767.359 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 140.517,427.682 2352.76,427.682 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 140.517,88.0053 2352.76,88.0053 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,1487.47 2352.76,1487.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,1487.47 140.517,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 262.194,1487.47 262.194,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 754.415,1487.47 754.415,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1246.64,1487.47 1246.64,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1738.86,1487.47 1738.86,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2231.08,1487.47 2231.08,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,1446.71 173.7,1446.71 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,1107.04 173.7,1107.04 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,767.359 173.7,767.359 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,427.682 173.7,427.682 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 140.517,88.0053 173.7,88.0053 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 262.194, 1541.47)\" x=\"262.194\" y=\"1541.47\">0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 754.415, 1541.47)\" x=\"754.415\" y=\"1541.47\">5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1246.64, 1541.47)\" x=\"1246.64\" y=\"1541.47\">10</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1738.86, 1541.47)\" x=\"1738.86\" y=\"1541.47\">15</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2231.08, 1541.47)\" x=\"2231.08\" y=\"1541.47\">20</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 1464.21)\" x=\"116.517\" y=\"1464.21\">0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 1124.54)\" x=\"116.517\" y=\"1124.54\">5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 784.859)\" x=\"116.517\" y=\"784.859\">10</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 445.182)\" x=\"116.517\" y=\"445.182\">15</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 105.505)\" x=\"116.517\" y=\"105.505\">20</text>\n", | |
"</g>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M262.194 1378.78 L262.194 1446.71 L459.082 1446.71 L459.082 1378.78 L262.194 1378.78 L262.194 1378.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 262.194,1378.78 262.194,1446.71 459.082,1446.71 459.082,1378.78 262.194,1378.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M459.082 1107.04 L459.082 1446.71 L655.971 1446.71 L655.971 1107.04 L459.082 1107.04 L459.082 1107.04 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 459.082,1107.04 459.082,1446.71 655.971,1446.71 655.971,1107.04 459.082,1107.04 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M655.971 563.553 L655.971 1446.71 L852.859 1446.71 L852.859 563.553 L655.971 563.553 L655.971 563.553 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 655.971,563.553 655.971,1446.71 852.859,1446.71 852.859,563.553 655.971,563.553 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M852.859 88.0053 L852.859 1446.71 L1049.75 1446.71 L1049.75 88.0053 L852.859 88.0053 L852.859 88.0053 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 852.859,88.0053 852.859,1446.71 1049.75,1446.71 1049.75,88.0053 852.859,88.0053 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M1049.75 223.876 L1049.75 1446.71 L1246.64 1446.71 L1246.64 223.876 L1049.75 223.876 L1049.75 223.876 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1049.75,223.876 1049.75,1446.71 1246.64,1446.71 1246.64,223.876 1049.75,223.876 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M1246.64 223.876 L1246.64 1446.71 L1443.52 1446.71 L1443.52 223.876 L1246.64 223.876 L1246.64 223.876 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1246.64,223.876 1246.64,1446.71 1443.52,1446.71 1443.52,223.876 1246.64,223.876 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M1443.52 563.553 L1443.52 1446.71 L1640.41 1446.71 L1640.41 563.553 L1443.52 563.553 L1443.52 563.553 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1443.52,563.553 1443.52,1446.71 1640.41,1446.71 1640.41,563.553 1443.52,563.553 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M1640.41 903.23 L1640.41 1446.71 L1837.3 1446.71 L1837.3 903.23 L1640.41 903.23 L1640.41 903.23 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1640.41,903.23 1640.41,1446.71 1837.3,1446.71 1837.3,903.23 1640.41,903.23 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M1837.3 1242.91 L1837.3 1446.71 L2034.19 1446.71 L2034.19 1242.91 L1837.3 1242.91 L1837.3 1242.91 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1837.3,1242.91 1837.3,1446.71 2034.19,1446.71 2034.19,1242.91 1837.3,1242.91 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7202)\" d=\"\n", | |
"M2034.19 1378.78 L2034.19 1446.71 L2231.08 1446.71 L2231.08 1378.78 L2034.19 1378.78 L2034.19 1378.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7202)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2034.19,1378.78 2034.19,1446.71 2231.08,1446.71 2231.08,1378.78 2034.19,1378.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7200)\" d=\"\n", | |
"M1989.93 251.724 L2280.76 251.724 L2280.76 130.764 L1989.93 130.764 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1989.93,251.724 2280.76,251.724 2280.76,130.764 1989.93,130.764 1989.93,251.724 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip7200)\" d=\"\n", | |
"M2013.93 215.436 L2157.93 215.436 L2157.93 167.052 L2013.93 167.052 L2013.93 215.436 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip7200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2013.93,215.436 2157.93,215.436 2157.93,167.052 2013.93,167.052 2013.93,215.436 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip7200)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2181.93, 208.744)\" x=\"2181.93\" y=\"208.744\">y1</text>\n", | |
"</g>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"histogram(Y, )" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"quote\n", | |
" σ ~ exponential(1)\n", | |
" μ ~ normal(0, 100)\n", | |
" for i = 1:N\n", | |
" y[i] ~ normal(μ, σ)\n", | |
" end\n", | |
"end" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"prog = quote\n", | |
" σ ~ exponential(1)\n", | |
" μ ~ normal(0, 100)\n", | |
" for i in 1:N\n", | |
" y[i] ~ normal(μ, σ)\n", | |
" end\n", | |
" end |> prettify" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"stan_to_gen (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function stan_to_gen(prog; model_name=\"model\", data=[], ret=nothing)\n", | |
" prog = prog |> prettify\n", | |
" new_expr = Expr(:function)\n", | |
" append!(new_expr.args, [Expr(:call, Symbol(model_name), data...)])\n", | |
" append!(new_expr.args, [Expr(:block)])\n", | |
" for line in prog.args\n", | |
" if @capture(line, a_ = b_)\n", | |
" append!(new_expr.args[2].args, [line])\n", | |
" end\n", | |
" if @capture(line, a_ ~ b_)\n", | |
" if @capture(b, normal(mu_, sig_))\n", | |
" symbol = QuoteNode(a)\n", | |
" append!(new_expr.args[2].args, [:($a = @trace($b, $symbol))])\n", | |
" continue\n", | |
" end\n", | |
" \n", | |
" if @capture(b, exponential(lambda_))\n", | |
" symbol = QuoteNode(a)\n", | |
" append!(new_expr.args[2].args, [:($a = @trace($b, $symbol))])\n", | |
" continue\n", | |
" end\n", | |
" \n", | |
" elseif line.head==:for\n", | |
" inner_block = line.args[2]\n", | |
" inner_expr = Expr(line.head, line.args[1], Expr(:block))\n", | |
" if inner_block.head != :block\n", | |
" inner_block = [inner_block]\n", | |
" else\n", | |
" inner_block = inner_block.args\n", | |
" end\n", | |
" for inner_line in inner_block\n", | |
" if @capture(inner_line, a_ ~ b_)\n", | |
" if a.head == :ref\n", | |
" symbol = QuoteNode(a.args[1])\n", | |
" else\n", | |
" symbol = QuoteNode(a)\n", | |
" end\n", | |
" if @capture(b, normal(mu_, sig_))\n", | |
" append!(inner_expr.args[2].args, [:(@trace($b, ($symbol, i)))])\n", | |
" continue\n", | |
" end\n", | |
" end\n", | |
" end\n", | |
" append!(new_expr.args[2].args, [inner_expr])\n", | |
" end\n", | |
" \n", | |
" end\n", | |
" if ret != nothing\n", | |
" append!(new_expr.args[2].args, [Expr(:return, ret)])\n", | |
" end\n", | |
" new_call = Expr(:macrocall, Symbol(\"@gen\"), nothing, new_expr)\n", | |
" println(new_call |> prettify)\n", | |
" eval(new_call |> prettify)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"@gen function model()\n", | |
" σ = @trace(exponential(1), :σ)\n", | |
" μ = @trace(normal(0, 100), :μ)\n", | |
" for i = 1:N\n", | |
" @trace normal(μ, σ) (:y, i)\n", | |
" end\n", | |
" end\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"DynamicDSLFunction{Any}(Dict{Symbol,Any}(), Dict{Symbol,Any}(), Type[], ##model#368, Bool[], false)" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"stan_to_gen(prog; data=[])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 93, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"stan_to_turing (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 93, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function stan_to_turing(prog; model_name=\"model\", data=[], ret=nothing)\n", | |
" prog = prog |> prettify\n", | |
" new_expr = Expr(:function)\n", | |
" append!(new_expr.args, [Expr(:call, Symbol(model_name), data...)])\n", | |
" append!(new_expr.args, [Expr(:block)])\n", | |
" for line in prog.args\n", | |
" if @capture(line, a_ = b_)\n", | |
" append!(new_expr.args[2].args, [line])\n", | |
" end\n", | |
" if @capture(line, a_ ~ b_)\n", | |
" if @capture(b, normal(mu_, sig_))\n", | |
" symbol = QuoteNode(a)\n", | |
" append!(new_expr.args[2].args, [:($a ~ Normal($mu, $sig))])\n", | |
" continue\n", | |
" end\n", | |
" \n", | |
" if @capture(b, exponential(lambda_))\n", | |
" symbol = QuoteNode(a)\n", | |
" append!(new_expr.args[2].args, [:($a ~ Exponential($lambda))])\n", | |
" continue\n", | |
" end\n", | |
" \n", | |
" elseif line.head==:for\n", | |
" inner_block = line.args[2]\n", | |
" inner_expr = Expr(line.head, line.args[1], Expr(:block))\n", | |
" if inner_block.head != :block\n", | |
" inner_block = [inner_block]\n", | |
" else\n", | |
" inner_block = inner_block.args\n", | |
" end\n", | |
" for inner_line in inner_block\n", | |
" if @capture(inner_line, a_ ~ b_)\n", | |
" if a.head == :ref\n", | |
" symbol = QuoteNode(a.args[1])\n", | |
" else\n", | |
" symbol = QuoteNode(a)\n", | |
" end\n", | |
" if @capture(b, normal(mu_, sig_))\n", | |
" append!(inner_expr.args[2].args, [:($a ~ Normal($mu, $sig))])\n", | |
" continue\n", | |
" end\n", | |
" end\n", | |
" end\n", | |
" append!(new_expr.args[2].args, [inner_expr])\n", | |
" end\n", | |
" \n", | |
" end\n", | |
" if ret != nothing\n", | |
" append!(new_expr.args[2].args, [Expr(:return, ret)])\n", | |
" end\n", | |
" new_call = Expr(:macrocall, Symbol(\"@model\"), nothing, new_expr)\n", | |
" println(new_call |> prettify)\n", | |
" eval(new_call |> prettify)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 99, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"@model function turing_model(y, N)\n", | |
" σ ~ Exponential(1)\n", | |
" μ ~ Normal(0, 100)\n", | |
" for i = 1:N\n", | |
" y[i] ~ Normal(μ, σ)\n", | |
" end\n", | |
" return y\n", | |
" end\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"turing_model (generic function with 3 methods)" | |
] | |
}, | |
"execution_count": 99, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"stan_to_turing(prog; model_name=\"turing_model\", data=[:y, :N], ret=:y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 317, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"infer_turing_hmc (generic function with 2 methods)" | |
] | |
}, | |
"execution_count": 317, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function infer_turing_hmc(my_model, y, n_samples)\n", | |
" Distribution = Turing.Distribution\n", | |
" turing_trace = sample(my_model(y, N), HMC(0.05, 10), n_samples; verbose=false, progress=false)\n", | |
" trace = Dict()\n", | |
" trace[:μ] = reshape(turing_trace[[:μ]].value.data, (n_samples))\n", | |
" trace[:σ] = reshape(turing_trace[[:σ]].value.data, (n_samples))\n", | |
" return trace\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 318, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"((8.918890428560008, 3.0854815796031008), 8.92825758016632, 3.09775760694777)" | |
] | |
}, | |
"execution_count": 318, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"turing_trace = infer_turing_hmc(turing_model, Y, 1000);\n", | |
"(mean(turing_trace[:μ]), mean(turing_trace[:σ])), mean(Y), std(Y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 128, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"infer_gen_mh (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 128, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function infer_gen_mh(my_model, y::Vector{Float64}, num_iters::Int)\n", | |
" # Create a set of constraints fixing the \n", | |
" # y coordinates to the observed y values\n", | |
" constraints = choicemap()\n", | |
" out_trace = Dict()\n", | |
" out_trace[:σ] = []\n", | |
" out_trace[:μ] = []\n", | |
" \n", | |
" for (i, yi) in enumerate(y)\n", | |
" constraints[(:y, i)] = yi\n", | |
" end\n", | |
" (trace, _) = generate(my_model, (), constraints)\n", | |
" for _ in 1:num_iters\n", | |
" (trace, _) = mh(trace, select(:σ))\n", | |
" (trace, _) = mh(trace, select(:μ))\n", | |
" choices = get_choices(trace)\n", | |
" append!(out_trace[:σ], (choices[:σ]))\n", | |
" append!(out_trace[:μ], (choices[:μ]))\n", | |
" end\n", | |
" return out_trace\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 297, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"infer_gen_smc (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 297, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function infer_gen_smc(my_model, y::Vector{Float64}, num_samples::Int)\n", | |
" # Create a set of constraints fixing the \n", | |
" # y coordinates to the observed y values\n", | |
" out_trace = Dict()\n", | |
" out_trace[:σ] = []\n", | |
" out_trace[:μ] = []\n", | |
" init_constraints = choicemap()\n", | |
" \n", | |
" for (i, yi) in enumerate(y)\n", | |
" init_constraints[(:y, i)] = yi\n", | |
" end\n", | |
" state = Gen.initialize_particle_filter(my_model, (), init_constraints, 5000)\n", | |
" traces = Gen.sample_unweighted_traces(state, num_samples)\n", | |
" trace = Dict()\n", | |
" trace[:μ] = [traces[i][:μ] for i=1:length(traces)]\n", | |
" trace[:σ] = [traces[i][:σ] for i=1:length(traces)]\n", | |
" trace\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 298, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"((9.284254745292289, 2.9782889955337515), 8.92825758016632, 3.09775760694777)" | |
] | |
}, | |
"execution_count": 298, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"trace = infer_gen_smc(model, Y, 1000)\n", | |
"(mean(trace[:μ]), mean(trace[:σ])), mean(Y), std(Y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 299, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"((8.77389110818249, 3.1994190197437042), 8.92825758016632, 3.09775760694777)" | |
] | |
}, | |
"execution_count": 299, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"trace = infer_gen_mh(model, Y, 1000)\n", | |
"(mean(trace[:μ]), mean(trace[:σ])), mean(Y), std(Y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Simulation Based Calibration" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"using Distributions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"generate_samples_from_prior (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 21, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function generate_samples_from_prior(n_samples)\n", | |
" σ = rand(Exponential(1), n_samples)\n", | |
" μ = rand(Normal(0, 1), n_samples)\n", | |
" return Dict(:σ => σ, :μ => μ)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 308, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"conditioned_generator_turing (generic function with 2 methods)" | |
] | |
}, | |
"execution_count": 308, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function conditioned_generator_turing(Θ, my_model, N)\n", | |
"# Couldn't find any easy way to do this\n", | |
" ys = []\n", | |
" for i=1:length(Θ[collect(keys(Θ))[1]])\n", | |
" append!(ys, [rand(Normal(Θ[:μ][i], Θ[:σ][i]), N)])\n", | |
" end\n", | |
" ys\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 312, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"conditioned_generator_gen (generic function with 2 methods)" | |
] | |
}, | |
"execution_count": 312, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function conditioned_generator_gen(Θ, my_model, N)\n", | |
" constraints = choicemap()\n", | |
" ys = []\n", | |
" for i=1:length(Θ[collect(keys(Θ))[1]])\n", | |
" for var in keys(Θ)\n", | |
" constraints[var] = Θ[var][i]\n", | |
" end\n", | |
" (trace, _) = generate(my_model, (), constraints)\n", | |
" y_ = [trace[(:y, i)] for i in 1:N]\n", | |
" append!(ys, [y_])\n", | |
" end\n", | |
" return ys\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 313, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# conditioned_generator(Dict(:μ=>[9, 90], :σ=>[3, 3]), model)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 314, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"find_rank (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 314, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function find_rank(elem, array, ≺)\n", | |
" sort!(array, lt=≺)\n", | |
" rank = 0\n", | |
" for a in array\n", | |
" if elem ≺ a\n", | |
" break\n", | |
" end\n", | |
" rank+=1\n", | |
" end \n", | |
" return rank\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 335, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"SBC (generic function with 3 methods)" | |
] | |
}, | |
"execution_count": 335, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function SBC(L::Int, N, conditioned_generator, my_inference_program, my_model)\n", | |
" ranks = []\n", | |
" L_dash = L\n", | |
" for n in 1:N\n", | |
" print(n, \" \")\n", | |
" Θ = generate_samples_from_prior(1)\n", | |
" ỹ = conditioned_generator(Θ, my_model, N)[1]\n", | |
" trace = my_inference_program(my_model, ỹ, L_dash)\n", | |
" ESS = effective_sample_size(trace[:μ])\n", | |
" if ESS<L\n", | |
" trace = my_inference_program(my_model, ỹ, Int(floor(L_dash*L/ESS)))\n", | |
" trace[:μ] = sample(trace[:μ], L)\n", | |
" trace[:σ] = sample(trace[:σ], L)\n", | |
" append!(ranks, find_rank(Θ[:μ][1], trace[:μ], <))\n", | |
" continue\n", | |
" end\n", | |
" append!(ranks, find_rank(Θ[:μ][1], trace[:μ], <))\n", | |
" end\n", | |
" return ranks\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 336, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Chi_Squared_Test (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 336, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function Chi_Squared_Test(ranks, m)\n", | |
" Obs = fit(Histogram, ranks, 0:m).weights\n", | |
" Exp = (length(ranks)/m)*ones(length(Obs))\n", | |
" sum(((Obs-Exp).^2 ./ Exp))\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"L = 50\n", | |
"N_ = 100\n", | |
"\n", | |
"SBC(Int(L), N_, conditioned_generator_turing, infer_turing_hmc, turing_model)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"L = 50\n", | |
"N_ = 100\n", | |
"\n", | |
"chis = []\n", | |
"for L in 100:100:1000\n", | |
" ranks = SBC(Int(L), N_, :hmc)\n", | |
" Exp = collect(Iterators.flatten([i*ones(Int(round(N_/(L+1)))) for i in 0:L]));\n", | |
" chi = Chi_Squared_Test(ranks, L)\n", | |
" println(L, \" \", chi)\n", | |
" append!(chis, [chi])\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip0900\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<path clip-path=\"url(#clip0900)\" d=\"\n", | |
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip0901\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<path clip-path=\"url(#clip0900)\" d=\"\n", | |
"M113.754 1487.47 L2352.76 1487.47 L2352.76 47.2441 L113.754 47.2441 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip0902\">\n", | |
" <rect x=\"113\" y=\"47\" width=\"2240\" height=\"1441\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 236.904,1487.47 236.904,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 627.63,1487.47 627.63,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1018.36,1487.47 1018.36,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1409.08,1487.47 1409.08,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1799.81,1487.47 1799.81,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 2190.53,1487.47 2190.53,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 113.754,1446.71 2352.76,1446.71 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 113.754,1144.78 2352.76,1144.78 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 113.754,842.843 2352.76,842.843 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 113.754,540.908 2352.76,540.908 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 113.754,238.973 2352.76,238.973 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,1487.47 2352.76,1487.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,1487.47 113.754,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 236.904,1487.47 236.904,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 627.63,1487.47 627.63,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1018.36,1487.47 1018.36,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1409.08,1487.47 1409.08,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1799.81,1487.47 1799.81,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2190.53,1487.47 2190.53,1465.87 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,1446.71 147.339,1446.71 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,1144.78 147.339,1144.78 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,842.843 147.339,842.843 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,540.908 147.339,540.908 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 113.754,238.973 147.339,238.973 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 236.904, 1541.47)\" x=\"236.904\" y=\"1541.47\">0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 627.63, 1541.47)\" x=\"627.63\" y=\"1541.47\">10</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1018.36, 1541.47)\" x=\"1018.36\" y=\"1541.47\">20</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1409.08, 1541.47)\" x=\"1409.08\" y=\"1541.47\">30</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1799.81, 1541.47)\" x=\"1799.81\" y=\"1541.47\">40</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2190.53, 1541.47)\" x=\"2190.53\" y=\"1541.47\">50</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 1464.21)\" x=\"89.7545\" y=\"1464.21\">0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 1162.28)\" x=\"89.7545\" y=\"1162.28\">2</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 860.343)\" x=\"89.7545\" y=\"860.343\">4</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 558.408)\" x=\"89.7545\" y=\"558.408\">6</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 89.7545, 256.473)\" x=\"89.7545\" y=\"256.473\">8</text>\n", | |
"</g>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M236.904 389.94 L236.904 1446.71 L275.976 1446.71 L275.976 389.94 L236.904 389.94 L236.904 389.94 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 236.904,389.94 236.904,1446.71 275.976,1446.71 275.976,389.94 236.904,389.94 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M275.976 842.843 L275.976 1446.71 L315.049 1446.71 L315.049 842.843 L275.976 842.843 L275.976 842.843 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 275.976,842.843 275.976,1446.71 315.049,1446.71 315.049,842.843 275.976,842.843 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M315.049 842.843 L315.049 1446.71 L354.121 1446.71 L354.121 842.843 L315.049 842.843 L315.049 842.843 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 315.049,842.843 315.049,1446.71 354.121,1446.71 354.121,842.843 315.049,842.843 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M354.121 1144.78 L354.121 1446.71 L393.194 1446.71 L393.194 1144.78 L354.121 1144.78 L354.121 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 354.121,1144.78 354.121,1446.71 393.194,1446.71 393.194,1144.78 354.121,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M393.194 1144.78 L393.194 1446.71 L432.267 1446.71 L432.267 1144.78 L393.194 1144.78 L393.194 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 393.194,1144.78 393.194,1446.71 432.267,1446.71 432.267,1144.78 393.194,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M432.267 1144.78 L432.267 1446.71 L471.339 1446.71 L471.339 1144.78 L432.267 1144.78 L432.267 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 432.267,1144.78 432.267,1446.71 471.339,1446.71 471.339,1144.78 432.267,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M471.339 1446.71 L471.339 1446.71 L510.412 1446.71 L510.412 1446.71 L471.339 1446.71 L471.339 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 471.339,1446.71 471.339,1446.71 510.412,1446.71 471.339,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M510.412 993.811 L510.412 1446.71 L549.484 1446.71 L549.484 993.811 L510.412 993.811 L510.412 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 510.412,993.811 510.412,1446.71 549.484,1446.71 549.484,993.811 510.412,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M549.484 1446.71 L549.484 1446.71 L588.557 1446.71 L588.557 1446.71 L549.484 1446.71 L549.484 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 549.484,1446.71 549.484,1446.71 588.557,1446.71 549.484,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M588.557 691.876 L588.557 1446.71 L627.63 1446.71 L627.63 691.876 L588.557 691.876 L588.557 691.876 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 588.557,691.876 588.557,1446.71 627.63,1446.71 627.63,691.876 588.557,691.876 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M627.63 842.843 L627.63 1446.71 L666.702 1446.71 L666.702 842.843 L627.63 842.843 L627.63 842.843 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 627.63,842.843 627.63,1446.71 666.702,1446.71 666.702,842.843 627.63,842.843 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M666.702 1295.75 L666.702 1446.71 L705.775 1446.71 L705.775 1295.75 L666.702 1295.75 L666.702 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 666.702,1295.75 666.702,1446.71 705.775,1446.71 705.775,1295.75 666.702,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M705.775 1295.75 L705.775 1446.71 L744.848 1446.71 L744.848 1295.75 L705.775 1295.75 L705.775 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 705.775,1295.75 705.775,1446.71 744.848,1446.71 744.848,1295.75 705.775,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M744.848 1144.78 L744.848 1446.71 L783.92 1446.71 L783.92 1144.78 L744.848 1144.78 L744.848 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 744.848,1144.78 744.848,1446.71 783.92,1446.71 783.92,1144.78 744.848,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M783.92 1144.78 L783.92 1446.71 L822.993 1446.71 L822.993 1144.78 L783.92 1144.78 L783.92 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 783.92,1144.78 783.92,1446.71 822.993,1446.71 822.993,1144.78 783.92,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M822.993 993.811 L822.993 1446.71 L862.065 1446.71 L862.065 993.811 L822.993 993.811 L822.993 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 822.993,993.811 822.993,1446.71 862.065,1446.71 862.065,993.811 822.993,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M862.065 1295.75 L862.065 1446.71 L901.138 1446.71 L901.138 1295.75 L862.065 1295.75 L862.065 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 862.065,1295.75 862.065,1446.71 901.138,1446.71 901.138,1295.75 862.065,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M901.138 1295.75 L901.138 1446.71 L940.211 1446.71 L940.211 1295.75 L901.138 1295.75 L901.138 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 901.138,1295.75 901.138,1446.71 940.211,1446.71 940.211,1295.75 901.138,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M940.211 842.843 L940.211 1446.71 L979.283 1446.71 L979.283 842.843 L940.211 842.843 L940.211 842.843 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 940.211,842.843 940.211,1446.71 979.283,1446.71 979.283,842.843 940.211,842.843 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M979.283 1144.78 L979.283 1446.71 L1018.36 1446.71 L1018.36 1144.78 L979.283 1144.78 L979.283 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 979.283,1144.78 979.283,1446.71 1018.36,1446.71 1018.36,1144.78 979.283,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1018.36 1295.75 L1018.36 1446.71 L1057.43 1446.71 L1057.43 1295.75 L1018.36 1295.75 L1018.36 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1018.36,1295.75 1018.36,1446.71 1057.43,1446.71 1057.43,1295.75 1018.36,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1057.43 1446.71 L1057.43 1446.71 L1096.5 1446.71 L1096.5 1446.71 L1057.43 1446.71 L1057.43 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1057.43,1446.71 1057.43,1446.71 1096.5,1446.71 1057.43,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1096.5 1295.75 L1096.5 1446.71 L1135.57 1446.71 L1135.57 1295.75 L1096.5 1295.75 L1096.5 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1096.5,1295.75 1096.5,1446.71 1135.57,1446.71 1135.57,1295.75 1096.5,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1135.57 842.843 L1135.57 1446.71 L1174.65 1446.71 L1174.65 842.843 L1135.57 842.843 L1135.57 842.843 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1135.57,842.843 1135.57,1446.71 1174.65,1446.71 1174.65,842.843 1135.57,842.843 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1174.65 1144.78 L1174.65 1446.71 L1213.72 1446.71 L1213.72 1144.78 L1174.65 1144.78 L1174.65 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1174.65,1144.78 1174.65,1446.71 1213.72,1446.71 1213.72,1144.78 1174.65,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1213.72 993.811 L1213.72 1446.71 L1252.79 1446.71 L1252.79 993.811 L1213.72 993.811 L1213.72 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1213.72,993.811 1213.72,1446.71 1252.79,1446.71 1252.79,993.811 1213.72,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1252.79 1446.71 L1252.79 1446.71 L1291.86 1446.71 L1291.86 1446.71 L1252.79 1446.71 L1252.79 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1252.79,1446.71 1252.79,1446.71 1291.86,1446.71 1252.79,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1291.86 1446.71 L1291.86 1446.71 L1330.94 1446.71 L1330.94 1446.71 L1291.86 1446.71 L1291.86 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1291.86,1446.71 1291.86,1446.71 1330.94,1446.71 1291.86,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1330.94 1295.75 L1330.94 1446.71 L1370.01 1446.71 L1370.01 1295.75 L1330.94 1295.75 L1330.94 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1330.94,1295.75 1330.94,1446.71 1370.01,1446.71 1370.01,1295.75 1330.94,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1370.01 1295.75 L1370.01 1446.71 L1409.08 1446.71 L1409.08 1295.75 L1370.01 1295.75 L1370.01 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1370.01,1295.75 1370.01,1446.71 1409.08,1446.71 1409.08,1295.75 1370.01,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1409.08 1446.71 L1409.08 1446.71 L1448.15 1446.71 L1448.15 1446.71 L1409.08 1446.71 L1409.08 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1409.08,1446.71 1409.08,1446.71 1448.15,1446.71 1409.08,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1448.15 1295.75 L1448.15 1446.71 L1487.23 1446.71 L1487.23 1295.75 L1448.15 1295.75 L1448.15 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1448.15,1295.75 1448.15,1446.71 1487.23,1446.71 1487.23,1295.75 1448.15,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1487.23 1446.71 L1487.23 1446.71 L1526.3 1446.71 L1526.3 1446.71 L1487.23 1446.71 L1487.23 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1487.23,1446.71 1487.23,1446.71 1526.3,1446.71 1487.23,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1526.3 1295.75 L1526.3 1446.71 L1565.37 1446.71 L1565.37 1295.75 L1526.3 1295.75 L1526.3 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1526.3,1295.75 1526.3,1446.71 1565.37,1446.71 1565.37,1295.75 1526.3,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1565.37 1295.75 L1565.37 1446.71 L1604.45 1446.71 L1604.45 1295.75 L1565.37 1295.75 L1565.37 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1565.37,1295.75 1565.37,1446.71 1604.45,1446.71 1604.45,1295.75 1565.37,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1604.45 1446.71 L1604.45 1446.71 L1643.52 1446.71 L1643.52 1446.71 L1604.45 1446.71 L1604.45 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1604.45,1446.71 1604.45,1446.71 1643.52,1446.71 1604.45,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1643.52 1295.75 L1643.52 1446.71 L1682.59 1446.71 L1682.59 1295.75 L1643.52 1295.75 L1643.52 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1643.52,1295.75 1643.52,1446.71 1682.59,1446.71 1682.59,1295.75 1643.52,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1682.59 1446.71 L1682.59 1446.71 L1721.66 1446.71 L1721.66 1446.71 L1682.59 1446.71 L1682.59 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1682.59,1446.71 1682.59,1446.71 1721.66,1446.71 1682.59,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1721.66 1295.75 L1721.66 1446.71 L1760.74 1446.71 L1760.74 1295.75 L1721.66 1295.75 L1721.66 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1721.66,1295.75 1721.66,1446.71 1760.74,1446.71 1760.74,1295.75 1721.66,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1760.74 993.811 L1760.74 1446.71 L1799.81 1446.71 L1799.81 993.811 L1760.74 993.811 L1760.74 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1760.74,993.811 1760.74,1446.71 1799.81,1446.71 1799.81,993.811 1760.74,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1799.81 993.811 L1799.81 1446.71 L1838.88 1446.71 L1838.88 993.811 L1799.81 993.811 L1799.81 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1799.81,993.811 1799.81,1446.71 1838.88,1446.71 1838.88,993.811 1799.81,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1838.88 1295.75 L1838.88 1446.71 L1877.95 1446.71 L1877.95 1295.75 L1838.88 1295.75 L1838.88 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1838.88,1295.75 1838.88,1446.71 1877.95,1446.71 1877.95,1295.75 1838.88,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1877.95 1446.71 L1877.95 1446.71 L1917.03 1446.71 L1917.03 1446.71 L1877.95 1446.71 L1877.95 1446.71 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1877.95,1446.71 1877.95,1446.71 1917.03,1446.71 1877.95,1446.71 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1917.03 1295.75 L1917.03 1446.71 L1956.1 1446.71 L1956.1 1295.75 L1917.03 1295.75 L1917.03 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1917.03,1295.75 1917.03,1446.71 1956.1,1446.71 1956.1,1295.75 1917.03,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1956.1 1295.75 L1956.1 1446.71 L1995.17 1446.71 L1995.17 1295.75 L1956.1 1295.75 L1956.1 1295.75 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1956.1,1295.75 1956.1,1446.71 1995.17,1446.71 1995.17,1295.75 1956.1,1295.75 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1995.17 993.811 L1995.17 1446.71 L2034.24 1446.71 L2034.24 993.811 L1995.17 993.811 L1995.17 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1995.17,993.811 1995.17,1446.71 2034.24,1446.71 2034.24,993.811 1995.17,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2034.24 993.811 L2034.24 1446.71 L2073.32 1446.71 L2073.32 993.811 L2034.24 993.811 L2034.24 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2034.24,993.811 2034.24,1446.71 2073.32,1446.71 2073.32,993.811 2034.24,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2073.32 993.811 L2073.32 1446.71 L2112.39 1446.71 L2112.39 993.811 L2073.32 993.811 L2073.32 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2073.32,993.811 2073.32,1446.71 2112.39,1446.71 2112.39,993.811 2073.32,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2112.39 1144.78 L2112.39 1446.71 L2151.46 1446.71 L2151.46 1144.78 L2112.39 1144.78 L2112.39 1144.78 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2112.39,1144.78 2112.39,1446.71 2151.46,1446.71 2151.46,1144.78 2112.39,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2151.46 993.811 L2151.46 1446.71 L2190.53 1446.71 L2190.53 993.811 L2151.46 993.811 L2151.46 993.811 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2151.46,993.811 2151.46,1446.71 2190.53,1446.71 2190.53,993.811 2151.46,993.811 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2190.53 88.0053 L2190.53 1446.71 L2229.61 1446.71 L2229.61 88.0053 L2190.53 88.0053 L2190.53 88.0053 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2190.53,88.0053 2190.53,1446.71 2229.61,1446.71 2229.61,88.0053 2190.53,88.0053 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M236.904 1144.78 L236.904 1446.71 L275.976 1446.71 L275.976 1144.78 L236.904 1144.78 L236.904 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 236.904,1144.78 236.904,1446.71 275.976,1446.71 275.976,1144.78 236.904,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M275.976 1144.78 L275.976 1446.71 L315.049 1446.71 L315.049 1144.78 L275.976 1144.78 L275.976 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 275.976,1144.78 275.976,1446.71 315.049,1446.71 315.049,1144.78 275.976,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M315.049 1144.78 L315.049 1446.71 L354.121 1446.71 L354.121 1144.78 L315.049 1144.78 L315.049 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 315.049,1144.78 315.049,1446.71 354.121,1446.71 354.121,1144.78 315.049,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M354.121 1144.78 L354.121 1446.71 L393.194 1446.71 L393.194 1144.78 L354.121 1144.78 L354.121 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 354.121,1144.78 354.121,1446.71 393.194,1446.71 393.194,1144.78 354.121,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M393.194 1144.78 L393.194 1446.71 L432.267 1446.71 L432.267 1144.78 L393.194 1144.78 L393.194 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 393.194,1144.78 393.194,1446.71 432.267,1446.71 432.267,1144.78 393.194,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M432.267 1144.78 L432.267 1446.71 L471.339 1446.71 L471.339 1144.78 L432.267 1144.78 L432.267 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 432.267,1144.78 432.267,1446.71 471.339,1446.71 471.339,1144.78 432.267,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M471.339 1144.78 L471.339 1446.71 L510.412 1446.71 L510.412 1144.78 L471.339 1144.78 L471.339 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 471.339,1144.78 471.339,1446.71 510.412,1446.71 510.412,1144.78 471.339,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M510.412 1144.78 L510.412 1446.71 L549.484 1446.71 L549.484 1144.78 L510.412 1144.78 L510.412 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 510.412,1144.78 510.412,1446.71 549.484,1446.71 549.484,1144.78 510.412,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M549.484 1144.78 L549.484 1446.71 L588.557 1446.71 L588.557 1144.78 L549.484 1144.78 L549.484 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 549.484,1144.78 549.484,1446.71 588.557,1446.71 588.557,1144.78 549.484,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M588.557 1144.78 L588.557 1446.71 L627.63 1446.71 L627.63 1144.78 L588.557 1144.78 L588.557 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 588.557,1144.78 588.557,1446.71 627.63,1446.71 627.63,1144.78 588.557,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M627.63 1144.78 L627.63 1446.71 L666.702 1446.71 L666.702 1144.78 L627.63 1144.78 L627.63 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 627.63,1144.78 627.63,1446.71 666.702,1446.71 666.702,1144.78 627.63,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M666.702 1144.78 L666.702 1446.71 L705.775 1446.71 L705.775 1144.78 L666.702 1144.78 L666.702 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 666.702,1144.78 666.702,1446.71 705.775,1446.71 705.775,1144.78 666.702,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M705.775 1144.78 L705.775 1446.71 L744.848 1446.71 L744.848 1144.78 L705.775 1144.78 L705.775 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 705.775,1144.78 705.775,1446.71 744.848,1446.71 744.848,1144.78 705.775,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M744.848 1144.78 L744.848 1446.71 L783.92 1446.71 L783.92 1144.78 L744.848 1144.78 L744.848 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 744.848,1144.78 744.848,1446.71 783.92,1446.71 783.92,1144.78 744.848,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M783.92 1144.78 L783.92 1446.71 L822.993 1446.71 L822.993 1144.78 L783.92 1144.78 L783.92 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 783.92,1144.78 783.92,1446.71 822.993,1446.71 822.993,1144.78 783.92,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M822.993 1144.78 L822.993 1446.71 L862.065 1446.71 L862.065 1144.78 L822.993 1144.78 L822.993 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 822.993,1144.78 822.993,1446.71 862.065,1446.71 862.065,1144.78 822.993,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M862.065 1144.78 L862.065 1446.71 L901.138 1446.71 L901.138 1144.78 L862.065 1144.78 L862.065 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 862.065,1144.78 862.065,1446.71 901.138,1446.71 901.138,1144.78 862.065,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M901.138 1144.78 L901.138 1446.71 L940.211 1446.71 L940.211 1144.78 L901.138 1144.78 L901.138 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 901.138,1144.78 901.138,1446.71 940.211,1446.71 940.211,1144.78 901.138,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M940.211 1144.78 L940.211 1446.71 L979.283 1446.71 L979.283 1144.78 L940.211 1144.78 L940.211 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 940.211,1144.78 940.211,1446.71 979.283,1446.71 979.283,1144.78 940.211,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M979.283 1144.78 L979.283 1446.71 L1018.36 1446.71 L1018.36 1144.78 L979.283 1144.78 L979.283 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 979.283,1144.78 979.283,1446.71 1018.36,1446.71 1018.36,1144.78 979.283,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1018.36 1144.78 L1018.36 1446.71 L1057.43 1446.71 L1057.43 1144.78 L1018.36 1144.78 L1018.36 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1018.36,1144.78 1018.36,1446.71 1057.43,1446.71 1057.43,1144.78 1018.36,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1057.43 1144.78 L1057.43 1446.71 L1096.5 1446.71 L1096.5 1144.78 L1057.43 1144.78 L1057.43 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1057.43,1144.78 1057.43,1446.71 1096.5,1446.71 1096.5,1144.78 1057.43,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1096.5 1144.78 L1096.5 1446.71 L1135.57 1446.71 L1135.57 1144.78 L1096.5 1144.78 L1096.5 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1096.5,1144.78 1096.5,1446.71 1135.57,1446.71 1135.57,1144.78 1096.5,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1135.57 1144.78 L1135.57 1446.71 L1174.65 1446.71 L1174.65 1144.78 L1135.57 1144.78 L1135.57 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1135.57,1144.78 1135.57,1446.71 1174.65,1446.71 1174.65,1144.78 1135.57,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1174.65 1144.78 L1174.65 1446.71 L1213.72 1446.71 L1213.72 1144.78 L1174.65 1144.78 L1174.65 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1174.65,1144.78 1174.65,1446.71 1213.72,1446.71 1213.72,1144.78 1174.65,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1213.72 1144.78 L1213.72 1446.71 L1252.79 1446.71 L1252.79 1144.78 L1213.72 1144.78 L1213.72 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1213.72,1144.78 1213.72,1446.71 1252.79,1446.71 1252.79,1144.78 1213.72,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1252.79 1144.78 L1252.79 1446.71 L1291.86 1446.71 L1291.86 1144.78 L1252.79 1144.78 L1252.79 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1252.79,1144.78 1252.79,1446.71 1291.86,1446.71 1291.86,1144.78 1252.79,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1291.86 1144.78 L1291.86 1446.71 L1330.94 1446.71 L1330.94 1144.78 L1291.86 1144.78 L1291.86 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1291.86,1144.78 1291.86,1446.71 1330.94,1446.71 1330.94,1144.78 1291.86,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1330.94 1144.78 L1330.94 1446.71 L1370.01 1446.71 L1370.01 1144.78 L1330.94 1144.78 L1330.94 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1330.94,1144.78 1330.94,1446.71 1370.01,1446.71 1370.01,1144.78 1330.94,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1370.01 1144.78 L1370.01 1446.71 L1409.08 1446.71 L1409.08 1144.78 L1370.01 1144.78 L1370.01 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1370.01,1144.78 1370.01,1446.71 1409.08,1446.71 1409.08,1144.78 1370.01,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1409.08 1144.78 L1409.08 1446.71 L1448.15 1446.71 L1448.15 1144.78 L1409.08 1144.78 L1409.08 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1409.08,1144.78 1409.08,1446.71 1448.15,1446.71 1448.15,1144.78 1409.08,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1448.15 1144.78 L1448.15 1446.71 L1487.23 1446.71 L1487.23 1144.78 L1448.15 1144.78 L1448.15 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1448.15,1144.78 1448.15,1446.71 1487.23,1446.71 1487.23,1144.78 1448.15,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1487.23 1144.78 L1487.23 1446.71 L1526.3 1446.71 L1526.3 1144.78 L1487.23 1144.78 L1487.23 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1487.23,1144.78 1487.23,1446.71 1526.3,1446.71 1526.3,1144.78 1487.23,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1526.3 1144.78 L1526.3 1446.71 L1565.37 1446.71 L1565.37 1144.78 L1526.3 1144.78 L1526.3 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1526.3,1144.78 1526.3,1446.71 1565.37,1446.71 1565.37,1144.78 1526.3,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1565.37 1144.78 L1565.37 1446.71 L1604.45 1446.71 L1604.45 1144.78 L1565.37 1144.78 L1565.37 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1565.37,1144.78 1565.37,1446.71 1604.45,1446.71 1604.45,1144.78 1565.37,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1604.45 1144.78 L1604.45 1446.71 L1643.52 1446.71 L1643.52 1144.78 L1604.45 1144.78 L1604.45 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1604.45,1144.78 1604.45,1446.71 1643.52,1446.71 1643.52,1144.78 1604.45,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1643.52 1144.78 L1643.52 1446.71 L1682.59 1446.71 L1682.59 1144.78 L1643.52 1144.78 L1643.52 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1643.52,1144.78 1643.52,1446.71 1682.59,1446.71 1682.59,1144.78 1643.52,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1682.59 1144.78 L1682.59 1446.71 L1721.66 1446.71 L1721.66 1144.78 L1682.59 1144.78 L1682.59 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1682.59,1144.78 1682.59,1446.71 1721.66,1446.71 1721.66,1144.78 1682.59,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1721.66 1144.78 L1721.66 1446.71 L1760.74 1446.71 L1760.74 1144.78 L1721.66 1144.78 L1721.66 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1721.66,1144.78 1721.66,1446.71 1760.74,1446.71 1760.74,1144.78 1721.66,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1760.74 1144.78 L1760.74 1446.71 L1799.81 1446.71 L1799.81 1144.78 L1760.74 1144.78 L1760.74 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1760.74,1144.78 1760.74,1446.71 1799.81,1446.71 1799.81,1144.78 1760.74,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1799.81 1144.78 L1799.81 1446.71 L1838.88 1446.71 L1838.88 1144.78 L1799.81 1144.78 L1799.81 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1799.81,1144.78 1799.81,1446.71 1838.88,1446.71 1838.88,1144.78 1799.81,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1838.88 1144.78 L1838.88 1446.71 L1877.95 1446.71 L1877.95 1144.78 L1838.88 1144.78 L1838.88 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1838.88,1144.78 1838.88,1446.71 1877.95,1446.71 1877.95,1144.78 1838.88,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1877.95 1144.78 L1877.95 1446.71 L1917.03 1446.71 L1917.03 1144.78 L1877.95 1144.78 L1877.95 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1877.95,1144.78 1877.95,1446.71 1917.03,1446.71 1917.03,1144.78 1877.95,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1917.03 1144.78 L1917.03 1446.71 L1956.1 1446.71 L1956.1 1144.78 L1917.03 1144.78 L1917.03 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1917.03,1144.78 1917.03,1446.71 1956.1,1446.71 1956.1,1144.78 1917.03,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1956.1 1144.78 L1956.1 1446.71 L1995.17 1446.71 L1995.17 1144.78 L1956.1 1144.78 L1956.1 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1956.1,1144.78 1956.1,1446.71 1995.17,1446.71 1995.17,1144.78 1956.1,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M1995.17 1144.78 L1995.17 1446.71 L2034.24 1446.71 L2034.24 1144.78 L1995.17 1144.78 L1995.17 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 1995.17,1144.78 1995.17,1446.71 2034.24,1446.71 2034.24,1144.78 1995.17,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2034.24 1144.78 L2034.24 1446.71 L2073.32 1446.71 L2073.32 1144.78 L2034.24 1144.78 L2034.24 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 2034.24,1144.78 2034.24,1446.71 2073.32,1446.71 2073.32,1144.78 2034.24,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2073.32 1144.78 L2073.32 1446.71 L2112.39 1446.71 L2112.39 1144.78 L2073.32 1144.78 L2073.32 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 2073.32,1144.78 2073.32,1446.71 2112.39,1446.71 2112.39,1144.78 2073.32,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2112.39 1144.78 L2112.39 1446.71 L2151.46 1446.71 L2151.46 1144.78 L2112.39 1144.78 L2112.39 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 2112.39,1144.78 2112.39,1446.71 2151.46,1446.71 2151.46,1144.78 2112.39,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2151.46 1144.78 L2151.46 1446.71 L2190.53 1446.71 L2190.53 1144.78 L2151.46 1144.78 L2151.46 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 2151.46,1144.78 2151.46,1446.71 2190.53,1446.71 2190.53,1144.78 2151.46,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0902)\" d=\"\n", | |
"M2190.53 1144.78 L2190.53 1446.71 L2229.61 1446.71 L2229.61 1144.78 L2190.53 1144.78 L2190.53 1144.78 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0902)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:0.5; fill:none\" points=\"\n", | |
" 2190.53,1144.78 2190.53,1446.71 2229.61,1446.71 2229.61,1144.78 2190.53,1144.78 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0900)\" d=\"\n", | |
"M1989.93 312.204 L2280.76 312.204 L2280.76 130.764 L1989.93 130.764 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1989.93,312.204 2280.76,312.204 2280.76,130.764 1989.93,130.764 1989.93,312.204 \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip0900)\" d=\"\n", | |
"M2013.93 215.436 L2157.93 215.436 L2157.93 167.052 L2013.93 167.052 L2013.93 215.436 Z\n", | |
" \" fill=\"#009af9\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2013.93,215.436 2157.93,215.436 2157.93,167.052 2013.93,167.052 2013.93,215.436 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2181.93, 208.744)\" x=\"2181.93\" y=\"208.744\">y1</text>\n", | |
"</g>\n", | |
"<path clip-path=\"url(#clip0900)\" d=\"\n", | |
"M2013.93 275.916 L2157.93 275.916 L2157.93 227.532 L2013.93 227.532 L2013.93 275.916 Z\n", | |
" \" fill=\"#808080\" fill-rule=\"evenodd\" fill-opacity=\"0.5\"/>\n", | |
"<polyline clip-path=\"url(#clip0900)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2013.93,275.916 2157.93,275.916 2157.93,227.532 2013.93,227.532 2013.93,275.916 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip0900)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2181.93, 269.224)\" x=\"2181.93\" y=\"269.224\">y2</text>\n", | |
"</g>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 51, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Exp = collect(Iterators.flatten([i*ones(Int(round(N_/(L+1)))) for i in 0:L]))\n", | |
"histogram(ranks, bins=L+1)\n", | |
"histogram!(Exp, bins=L+1, color=\"grey\", alpha=0.5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# SRS" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"((9.007806798592817, 0.9823079315739186), 8.92825758016632, 3.09775760694777)" | |
] | |
}, | |
"execution_count": 42, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"trace = my_inference_program(model, Y, 200)\n", | |
"(mean(trace[:μ]), mean(trace[:σ])), mean(Y), std(Y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 300, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"≺ (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 300, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Total Ordering\n", | |
"≺(a, b) = a<b" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 338, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"SRS (generic function with 2 methods)" | |
] | |
}, | |
"execution_count": 338, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function SRS(ground_truth_samples, model, theta, ≺, conditioned_generator)\n", | |
" r = []\n", | |
" for sample in ground_truth_samples\n", | |
" X = conditioned_generator(theta, model)[1]\n", | |
" append!(r, sum(X.≺sample))\n", | |
" end\n", | |
" r\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 339, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"N = 100\n", | |
"σ = 3\n", | |
"μ = 9\n", | |
"Y = μ .+ σ*randn(N);" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 340, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Sampling...\n", | |
"Done Sampling\n" | |
] | |
} | |
], | |
"source": [ | |
"mh_chis = []\n", | |
"println(\"Sampling...\")\n", | |
"trace = infer_gen_mh(model, Y, 2000)\n", | |
"println(\"Done Sampling\")\n", | |
"mh_mcmc_steps_list = 10:10:2000\n", | |
"for mcmc_steps = mh_mcmc_steps_list\n", | |
" rank = SRS(Y, model, Dict(:μ=>mean(trace[:μ][1:mcmc_steps]), :σ=>mean(trace[:σ][1:mcmc_steps])), ≺, conditioned_generator_gen);\n", | |
" chi = Chi_Squared_Test(rank, N)\n", | |
" append!(mh_chis, chi)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 342, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Sampling...\n", | |
"Done Sampling\n" | |
] | |
} | |
], | |
"source": [ | |
"smc_chis = []\n", | |
"println(\"Sampling...\")\n", | |
"trace = infer_gen_smc(model, Y, 2000)\n", | |
"println(\"Done Sampling\")\n", | |
"smc_mcmc_steps_list = 10:10:2000\n", | |
"for mcmc_steps = smc_mcmc_steps_list\n", | |
" rank = SRS(Y, model, Dict(:μ=>mean(trace[:μ][1:mcmc_steps]), :σ=>mean(trace[:σ][1:mcmc_steps])), ≺, conditioned_generator_gen);\n", | |
" chi = Chi_Squared_Test(rank, N)\n", | |
" append!(smc_chis, chi)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 344, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Sampling...\n", | |
"Done Sampling\n" | |
] | |
} | |
], | |
"source": [ | |
"hmc_chis = []\n", | |
"println(\"Sampling...\")\n", | |
"trace = infer_turing_hmc(turing_model, Y, 2000)\n", | |
"println(\"Done Sampling\")\n", | |
"hmc_mcmc_steps_list = 10:10:2000\n", | |
"for mcmc_steps = hmc_mcmc_steps_list\n", | |
" rank = SRS(Y, model, Dict(:μ=>mean(trace[:μ][1:mcmc_steps]), :σ=>mean(trace[:σ][1:mcmc_steps])), ≺, conditioned_generator_turing);\n", | |
" chi = Chi_Squared_Test(rank, N)\n", | |
" append!(hmc_chis, chi)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 349, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip3000\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<path clip-path=\"url(#clip3000)\" d=\"\n", | |
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip3001\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<path clip-path=\"url(#clip3000)\" d=\"\n", | |
"M229.135 1425.62 L2352.76 1425.62 L2352.76 47.2441 L229.135 47.2441 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip3002\">\n", | |
" <rect x=\"229\" y=\"47\" width=\"2125\" height=\"1379\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 279.17,1425.62 279.17,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 782.541,1425.62 782.541,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1285.91,1425.62 1285.91,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1789.28,1425.62 1789.28,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 2292.65,1425.62 2292.65,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 229.135,1292.86 2352.76,1292.86 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 229.135,990.454 2352.76,990.454 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 229.135,688.046 2352.76,688.046 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 229.135,385.638 2352.76,385.638 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 229.135,83.2306 2352.76,83.2306 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,1425.62 2352.76,1425.62 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,1425.62 229.135,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 279.17,1425.62 279.17,1404.94 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 782.541,1425.62 782.541,1404.94 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1285.91,1425.62 1285.91,1404.94 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1789.28,1425.62 1789.28,1404.94 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2292.65,1425.62 2292.65,1404.94 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,1292.86 260.99,1292.86 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,990.454 260.99,990.454 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,688.046 260.99,688.046 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,385.638 260.99,385.638 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 229.135,83.2306 260.99,83.2306 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 279.17, 1479.62)\" x=\"279.17\" y=\"1479.62\">0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 782.541, 1479.62)\" x=\"782.541\" y=\"1479.62\">500</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1285.91, 1479.62)\" x=\"1285.91\" y=\"1479.62\">1000</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1789.28, 1479.62)\" x=\"1789.28\" y=\"1479.62\">1500</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2292.65, 1479.62)\" x=\"2292.65\" y=\"1479.62\">2000</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 205.135, 1310.36)\" x=\"205.135\" y=\"1310.36\">100</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 205.135, 1007.95)\" x=\"205.135\" y=\"1007.95\">200</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 205.135, 705.546)\" x=\"205.135\" y=\"705.546\">300</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 205.135, 403.138)\" x=\"205.135\" y=\"403.138\">400</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 205.135, 100.731)\" x=\"205.135\" y=\"100.731\">500</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1290.95, 1559.48)\" x=\"1290.95\" y=\"1559.48\">Number of Samples</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 89.2861, 736.431)\" x=\"89.2861\" y=\"736.431\">Non-Uniformity of SRS</text>\n", | |
"</g>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 289.238,1292.86 299.305,606.396 309.373,86.2547 319.44,1047.91 329.507,1026.74 339.575,1174.92 349.642,1014.65 359.71,1132.59 369.777,1108.39 379.844,1111.42 \n", | |
" 389.912,1150.73 399.979,1199.12 410.047,1268.67 420.114,1235.4 430.182,1247.5 440.249,1171.9 450.316,1187.02 460.384,1193.07 470.451,1162.83 480.519,1190.04 \n", | |
" 490.586,1162.83 500.653,1253.55 510.721,1205.16 520.788,1187.02 530.856,1223.31 540.923,1129.56 550.991,1283.79 561.058,1277.74 571.125,1326.13 581.193,1298.91 \n", | |
" 591.26,1304.96 601.328,1220.28 611.395,1301.93 621.462,1256.57 631.53,1283.79 641.597,1187.02 651.665,1311.01 661.732,1280.77 671.8,1259.6 681.867,1235.4 \n", | |
" 691.934,1268.67 702.002,1259.6 712.069,1298.91 722.137,1356.37 732.204,1238.43 742.271,1256.57 752.339,1274.72 762.406,1304.96 772.474,1241.45 782.541,1232.38 \n", | |
" 792.609,1304.96 802.676,1274.72 812.743,1295.89 822.811,1238.43 832.878,1265.64 842.946,1211.21 853.013,1292.86 863.08,1314.03 873.148,1292.86 883.215,1277.74 \n", | |
" 893.283,1298.91 903.35,1268.67 913.417,1265.64 923.485,1320.08 933.552,1386.61 943.62,1301.93 953.687,1295.89 963.755,1280.77 973.822,1274.72 983.889,1292.86 \n", | |
" 993.957,1301.93 1004.02,1301.93 1014.09,1259.6 1024.16,1298.91 1034.23,1265.64 1044.29,1271.69 1054.36,1274.72 1064.43,1371.49 1074.5,1265.64 1084.56,1162.83 \n", | |
" 1094.63,1295.89 1104.7,1280.77 1114.77,1356.37 1124.83,1117.47 1134.9,1153.75 1144.97,1304.96 1155.04,1307.98 1165.1,1262.62 1175.17,1314.03 1185.24,1338.22 \n", | |
" 1195.31,1280.77 1205.37,1208.19 1215.44,1307.98 1225.51,1162.83 1235.57,1229.36 1245.64,1268.67 1255.71,1326.13 1265.78,1320.08 1275.84,1253.55 1285.91,1292.86 \n", | |
" 1295.98,1223.31 1306.05,1214.24 1316.11,1286.81 1326.18,1286.81 1336.25,1244.48 1346.32,1338.22 1356.38,1295.89 1366.45,1307.98 1376.52,1314.03 1386.59,1259.6 \n", | |
" 1396.65,1256.57 1406.72,1238.43 1416.79,1301.93 1426.86,1301.93 1436.92,1332.17 1446.99,1332.17 1457.06,1250.52 1467.13,1244.48 1477.19,1311.01 1487.26,1265.64 \n", | |
" 1497.33,1265.64 1507.4,1232.38 1517.46,1211.21 1527.53,1292.86 1537.6,1271.69 1547.66,1314.03 1557.73,1359.39 1567.8,1301.93 1577.87,1301.93 1587.93,1283.79 \n", | |
" 1598,1341.25 1608.07,1307.98 1618.14,1214.24 1628.2,1311.01 1638.27,1268.67 1648.34,1353.34 1658.41,1368.46 1668.47,1292.86 1678.54,1323.1 1688.61,1262.62 \n", | |
" 1698.68,1238.43 1708.74,1295.89 1718.81,1262.62 1728.88,1220.28 1738.95,1256.57 1749.01,1311.01 1759.08,1320.08 1769.15,1295.89 1779.22,1265.64 1789.28,1362.42 \n", | |
" 1799.35,1274.72 1809.42,1280.77 1819.48,1311.01 1829.55,1311.01 1839.62,1298.91 1849.69,1262.62 1859.75,1253.55 1869.82,1271.69 1879.89,1247.5 1889.96,1247.5 \n", | |
" 1900.02,1320.08 1910.09,1292.86 1920.16,1295.89 1930.23,1341.25 1940.29,1292.86 1950.36,1326.13 1960.43,1317.05 1970.5,1268.67 1980.56,1320.08 1990.63,1329.15 \n", | |
" 2000.7,1314.03 2010.77,1265.64 2020.83,1262.62 2030.9,1220.28 2040.97,1286.81 2051.04,1298.91 2061.1,1329.15 2071.17,1317.05 2081.24,1259.6 2091.31,1271.69 \n", | |
" 2101.37,1229.36 2111.44,1323.1 2121.51,1265.64 2131.57,1280.77 2141.64,1226.33 2151.71,1268.67 2161.78,1271.69 2171.84,1244.48 2181.91,1190.04 2191.98,1320.08 \n", | |
" 2202.05,1320.08 2212.11,1223.31 2222.18,1329.15 2232.25,1262.62 2242.32,1332.17 2252.38,1271.69 2262.45,1307.98 2272.52,1223.31 2282.59,1326.13 2292.65,1335.2 \n", | |
" \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 289.238,1280.77 299.305,1289.84 309.373,1317.05 319.44,1298.91 329.507,1265.64 339.575,1320.08 349.642,1211.21 359.71,1193.07 369.777,1190.04 379.844,1289.84 \n", | |
" 389.912,1317.05 399.979,1253.55 410.047,1307.98 420.114,1332.17 430.182,1241.45 440.249,1307.98 450.316,1298.91 460.384,1244.48 470.451,1344.27 480.519,1262.62 \n", | |
" 490.586,1205.16 500.653,1332.17 510.721,1301.93 520.788,1271.69 530.856,1262.62 540.923,1314.03 550.991,1295.89 561.058,1280.77 571.125,1298.91 581.193,1286.81 \n", | |
" 591.26,1211.21 601.328,1253.55 611.395,1283.79 621.462,1304.96 631.53,1238.43 641.597,1317.05 651.665,1280.77 661.732,1202.14 671.8,1344.27 681.867,1274.72 \n", | |
" 691.934,1171.9 702.002,1292.86 712.069,1301.93 722.137,1271.69 732.204,1314.03 742.271,1256.57 752.339,1365.44 762.406,1259.6 772.474,1292.86 782.541,1193.07 \n", | |
" 792.609,1217.26 802.676,1253.55 812.743,1220.28 822.811,1268.67 832.878,1226.33 842.946,1274.72 853.013,1350.32 863.08,1311.01 873.148,1280.77 883.215,1268.67 \n", | |
" 893.283,1265.64 903.35,1295.89 913.417,1341.25 923.485,1292.86 933.552,1356.37 943.62,1314.03 953.687,1280.77 963.755,1274.72 973.822,1274.72 983.889,1262.62 \n", | |
" 993.957,1295.89 1004.02,1244.48 1014.09,1326.13 1024.16,1295.89 1034.23,1317.05 1044.29,1295.89 1054.36,1298.91 1064.43,1274.72 1074.5,1253.55 1084.56,1341.25 \n", | |
" 1094.63,1320.08 1104.7,1274.72 1114.77,1335.2 1124.83,1177.95 1134.9,1262.62 1144.97,1217.26 1155.04,1177.95 1165.1,1323.1 1175.17,1304.96 1185.24,1247.5 \n", | |
" 1195.31,1292.86 1205.37,1341.25 1215.44,1326.13 1225.51,1241.45 1235.57,1262.62 1245.64,1320.08 1255.71,1280.77 1265.78,1335.2 1275.84,1338.22 1285.91,1283.79 \n", | |
" 1295.98,1326.13 1306.05,1292.86 1316.11,1250.52 1326.18,1259.6 1336.25,1244.48 1346.32,1304.96 1356.38,1298.91 1366.45,1250.52 1376.52,1271.69 1386.59,1371.49 \n", | |
" 1396.65,1229.36 1406.72,1274.72 1416.79,1314.03 1426.86,1338.22 1436.92,1320.08 1446.99,1332.17 1457.06,1220.28 1467.13,1253.55 1477.19,1298.91 1487.26,1283.79 \n", | |
" 1497.33,1320.08 1507.4,1329.15 1517.46,1193.07 1527.53,1311.01 1537.6,1289.84 1547.66,1274.72 1557.73,1262.62 1567.8,1268.67 1577.87,1232.38 1587.93,1286.81 \n", | |
" 1598,1317.05 1608.07,1183.99 1618.14,1283.79 1628.2,1286.81 1638.27,1323.1 1648.34,1353.34 1658.41,1196.09 1668.47,1286.81 1678.54,1326.13 1688.61,1247.5 \n", | |
" 1698.68,1326.13 1708.74,1298.91 1718.81,1187.02 1728.88,1226.33 1738.95,1226.33 1749.01,1277.74 1759.08,1298.91 1769.15,1265.64 1779.22,1271.69 1789.28,1298.91 \n", | |
" 1799.35,1229.36 1809.42,1332.17 1819.48,1298.91 1829.55,1244.48 1839.62,1283.79 1849.69,1277.74 1859.75,1256.57 1869.82,1226.33 1879.89,1304.96 1889.96,1259.6 \n", | |
" 1900.02,1292.86 1910.09,1262.62 1920.16,1211.21 1930.23,1329.15 1940.29,1283.79 1950.36,1298.91 1960.43,1289.84 1970.5,1286.81 1980.56,1268.67 1990.63,1347.3 \n", | |
" 2000.7,1277.74 2010.77,1317.05 2020.83,1259.6 2030.9,1301.93 2040.97,1317.05 2051.04,1262.62 2061.1,1247.5 2071.17,1292.86 2081.24,1341.25 2091.31,1271.69 \n", | |
" 2101.37,1326.13 2111.44,1298.91 2121.51,1304.96 2131.57,1338.22 2141.64,1289.84 2151.71,1250.52 2161.78,1329.15 2171.84,1307.98 2181.91,1289.84 2191.98,1223.31 \n", | |
" 2202.05,1277.74 2212.11,1214.24 2222.18,1247.5 2232.25,1341.25 2242.32,1317.05 2252.38,1232.38 2262.45,1295.89 2272.52,1335.2 2282.59,1271.69 2292.65,1277.74 \n", | |
" \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3002)\" style=\"stroke:#3da44d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 289.238,1314.03 299.305,1286.81 309.373,1289.84 319.44,1304.96 329.507,1280.77 339.575,1250.52 349.642,1262.62 359.71,1247.5 369.777,1317.05 379.844,1262.62 \n", | |
" 389.912,1298.91 399.979,1286.81 410.047,1241.45 420.114,1268.67 430.182,1238.43 440.249,1208.19 450.316,1314.03 460.384,1165.85 470.451,1283.79 480.519,1235.4 \n", | |
" 490.586,1335.2 500.653,1238.43 510.721,1253.55 520.788,1235.4 530.856,1280.77 540.923,1295.89 550.991,1235.4 561.058,1202.14 571.125,1341.25 581.193,1283.79 \n", | |
" 591.26,1317.05 601.328,1311.01 611.395,1314.03 621.462,1289.84 631.53,1320.08 641.597,1283.79 651.665,1307.98 661.732,1301.93 671.8,1271.69 681.867,1265.64 \n", | |
" 691.934,1217.26 702.002,1329.15 712.069,1256.57 722.137,1338.22 732.204,1280.77 742.271,1265.64 752.339,1307.98 762.406,1326.13 772.474,1377.54 782.541,1268.67 \n", | |
" 792.609,1262.62 802.676,1253.55 812.743,1250.52 822.811,1265.64 832.878,1208.19 842.946,1286.81 853.013,1280.77 863.08,1277.74 873.148,1220.28 883.215,1329.15 \n", | |
" 893.283,1247.5 903.35,1298.91 913.417,1292.86 923.485,1283.79 933.552,1280.77 943.62,1292.86 953.687,1295.89 963.755,1274.72 973.822,1183.99 983.889,1274.72 \n", | |
" 993.957,1259.6 1004.02,1241.45 1014.09,1286.81 1024.16,1283.79 1034.23,1314.03 1044.29,1356.37 1054.36,1253.55 1064.43,1295.89 1074.5,1268.67 1084.56,1247.5 \n", | |
" 1094.63,1253.55 1104.7,1295.89 1114.77,1256.57 1124.83,1359.39 1134.9,1256.57 1144.97,1232.38 1155.04,1286.81 1165.1,1332.17 1175.17,1317.05 1185.24,1220.28 \n", | |
" 1195.31,1307.98 1205.37,1359.39 1215.44,1344.27 1225.51,1301.93 1235.57,1301.93 1245.64,1301.93 1255.71,1304.96 1265.78,1247.5 1275.84,1277.74 1285.91,1208.19 \n", | |
" 1295.98,1292.86 1306.05,1223.31 1316.11,1286.81 1326.18,1223.31 1336.25,1311.01 1346.32,1271.69 1356.38,1304.96 1366.45,1268.67 1376.52,1283.79 1386.59,1250.52 \n", | |
" 1396.65,1286.81 1406.72,1214.24 1416.79,1304.96 1426.86,1271.69 1436.92,1307.98 1446.99,1338.22 1457.06,1232.38 1467.13,1244.48 1477.19,1262.62 1487.26,1274.72 \n", | |
" 1497.33,1307.98 1507.4,1259.6 1517.46,1304.96 1527.53,1283.79 1537.6,1298.91 1547.66,1247.5 1557.73,1241.45 1567.8,1235.4 1577.87,1214.24 1587.93,1347.3 \n", | |
" 1598,1320.08 1608.07,1268.67 1618.14,1223.31 1628.2,1307.98 1638.27,1289.84 1648.34,1280.77 1658.41,1317.05 1668.47,1241.45 1678.54,1344.27 1688.61,1247.5 \n", | |
" 1698.68,1311.01 1708.74,1238.43 1718.81,1280.77 1728.88,1289.84 1738.95,1298.91 1749.01,1338.22 1759.08,1250.52 1769.15,1277.74 1779.22,1268.67 1789.28,1226.33 \n", | |
" 1799.35,1265.64 1809.42,1311.01 1819.48,1274.72 1829.55,1280.77 1839.62,1311.01 1849.69,1277.74 1859.75,1217.26 1869.82,1298.91 1879.89,1311.01 1889.96,1262.62 \n", | |
" 1900.02,1347.3 1910.09,1247.5 1920.16,1301.93 1930.23,1223.31 1940.29,1317.05 1950.36,1329.15 1960.43,1277.74 1970.5,1298.91 1980.56,1220.28 1990.63,1323.1 \n", | |
" 2000.7,1174.92 2010.77,1280.77 2020.83,1277.74 2030.9,1174.92 2040.97,1232.38 2051.04,1250.52 2061.1,1314.03 2071.17,1353.34 2081.24,1289.84 2091.31,1268.67 \n", | |
" 2101.37,1332.17 2111.44,1256.57 2121.51,1323.1 2131.57,1292.86 2141.64,1256.57 2151.71,1338.22 2161.78,1274.72 2171.84,1295.89 2181.91,1286.81 2191.98,1283.79 \n", | |
" 2202.05,1317.05 2212.11,1326.13 2222.18,1301.93 2232.25,1271.69 2242.32,1156.78 2252.38,1292.86 2262.45,1347.3 2272.52,1314.03 2282.59,1259.6 2292.65,1238.43 \n", | |
" \n", | |
" \"/>\n", | |
"<path clip-path=\"url(#clip3000)\" d=\"\n", | |
"M1671.71 372.684 L2280.76 372.684 L2280.76 130.764 L1671.71 130.764 Z\n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1671.71,372.684 2280.76,372.684 2280.76,130.764 1671.71,130.764 1671.71,372.684 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#009af9; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1695.71,191.244 1839.71,191.244 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1863.71, 208.744)\" x=\"1863.71\" y=\"208.744\">MH from Gen</text>\n", | |
"</g>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1695.71,251.724 1839.71,251.724 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1863.71, 269.224)\" x=\"1863.71\" y=\"269.224\">SMC from Gen</text>\n", | |
"</g>\n", | |
"<polyline clip-path=\"url(#clip3000)\" style=\"stroke:#3da44d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1695.71,312.204 1839.71,312.204 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip3000)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1863.71, 329.704)\" x=\"1863.71\" y=\"329.704\">HMC from Turing</text>\n", | |
"</g>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 349, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"plot(mh_mcmc_steps_list, mh_chis, xaxis=\"Number of Samples\", yaxis=\"Non-Uniformity of SRS\", label=\"MH from Gen\")\n", | |
"plot!(smc_mcmc_steps_list, smc_chis, xaxis=\"Number of Samples\", yaxis=\"Non-Uniformity of SRS\", label=\"SMC from Gen\")\n", | |
"plot!(hmc_mcmc_steps_list, hmc_chis, xaxis=\"Number of Samples\", yaxis=\"Non-Uniformity of SRS\", label=\"HMC from Turing\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"@webio": { | |
"lastCommId": null, | |
"lastKernelId": null | |
}, | |
"kernelspec": { | |
"display_name": "Julia 1.1.0", | |
"language": "julia", | |
"name": "julia-1.1" | |
}, | |
"language_info": { | |
"file_extension": ".jl", | |
"mimetype": "application/julia", | |
"name": "julia", | |
"version": "1.1.0" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment