{
 "metadata": {
  "name": "",
  "signature": "sha256:508bfe56a37ac55e285aada1ed5172acfa5e46822f874f77b092acceb435750c"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Unscented Kalman Filters"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#format the book\n",
      "%matplotlib inline\n",
      "from __future__ import division, print_function\n",
      "import matplotlib.pyplot as plt\n",
      "import book_format\n",
      "book_format.load_style()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<style>\n",
        "@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
        "\n",
        "    div.cell{\n",
        "        width: 850px;\n",
        "        margin-left: 0% !important;\n",
        "        margin-right: auto;\n",
        "    }\n",
        "    div.text_cell code {\n",
        "        background: transparent;\n",
        "        color: #000000;\n",
        "        font-weight: 600;\n",
        "        font-size: 13pt;\n",
        "        font-style: bold;\n",
        "        font-family:  'Source Code Pro', Consolas, monocco, monospace;\n",
        "   }\n",
        "    h1 {\n",
        "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "\t}\n",
        "\t\n",
        "    div.input_area {\n",
        "        background: #F6F6F9;\n",
        "        border: 1px solid #586e75;\n",
        "    }\n",
        "\n",
        "    .text_cell_render h1 {\n",
        "        font-weight: 200;\n",
        "        font-size: 30pt;\n",
        "        line-height: 100%;\n",
        "        color:#c76c0c;\n",
        "        margin-bottom: 0.5em;\n",
        "        margin-top: 1em;\n",
        "        display: block;\n",
        "        white-space: wrap;\n",
        "    } \n",
        "    h2 {\n",
        "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "    }\n",
        "    .text_cell_render h2 {\n",
        "        font-weight: 200;\n",
        "        font-size: 20pt;\n",
        "        font-style: italic;\n",
        "        line-height: 100%;\n",
        "        color:#c76c0c;\n",
        "        margin-bottom: 0.5em;\n",
        "        margin-top: 1.5em;\n",
        "        display: block;\n",
        "        white-space: nowrap;\n",
        "    } \n",
        "    h3 {\n",
        "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "    }\n",
        "    .text_cell_render h3 {\n",
        "        font-weight: 300;\n",
        "        font-size: 18pt;\n",
        "        line-height: 100%;\n",
        "        color:#d77c0c;\n",
        "        margin-bottom: 0.5em;\n",
        "        margin-top: 2em;\n",
        "        display: block;\n",
        "        white-space: nowrap;\n",
        "    }\n",
        "    h4 {\n",
        "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "    }\n",
        "    .text_cell_render h4 {\n",
        "        font-weight: 300;\n",
        "        font-size: 16pt;\n",
        "        color:#d77c0c;\n",
        "        margin-bottom: 0.5em;\n",
        "        margin-top: 0.5em;\n",
        "        display: block;\n",
        "        white-space: nowrap;\n",
        "    }\n",
        "    h5 {\n",
        "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "    }\n",
        "    .text_cell_render h5 {\n",
        "        font-weight: 300;\n",
        "        font-style: normal;\n",
        "        color: #1d3b84;\n",
        "        font-size: 16pt;\n",
        "        margin-bottom: 0em;\n",
        "        margin-top: 1.5em;\n",
        "        display: block;\n",
        "        white-space: nowrap;\n",
        "    }\n",
        "    div.text_cell_render{\n",
        "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "        line-height: 135%;\n",
        "        font-size: 110%;\n",
        "        width:750px;\n",
        "        margin-left:auto;\n",
        "        margin-right:auto;\n",
        "        text-align:justify;\n",
        "        text-justify:inter-word;\n",
        "    }\n",
        "    div.output_subarea.output_text.output_pyout {\n",
        "        overflow-x: auto;\n",
        "        overflow-y: scroll;\n",
        "        max-height: 300px;\n",
        "    }\n",
        "    div.output_subarea.output_stream.output_stdout.output_text {\n",
        "        overflow-x: auto;\n",
        "        overflow-y: scroll;\n",
        "        max-height: 300px;\n",
        "    }\n",
        "    code{\n",
        "      font-size: 70%;\n",
        "    }\n",
        "    .rendered_html code{\n",
        "    background-color: transparent;\n",
        "    }\n",
        "    ul{\n",
        "        margin: 2em;\n",
        "    }\n",
        "    ul li{\n",
        "        padding-left: 0.5em; \n",
        "        margin-bottom: 0.5em; \n",
        "        margin-top: 0.5em; \n",
        "    }\n",
        "    ul li li{\n",
        "        padding-left: 0.2em; \n",
        "        margin-bottom: 0.2em; \n",
        "        margin-top: 0.2em; \n",
        "    }\n",
        "    ol{\n",
        "        margin: 2em;\n",
        "    }\n",
        "    ol li{\n",
        "        padding-left: 0.5em; \n",
        "        margin-bottom: 0.5em; \n",
        "        margin-top: 0.5em; \n",
        "    }\n",
        "    ul li{\n",
        "        padding-left: 0.5em; \n",
        "        margin-bottom: 0.5em; \n",
        "        margin-top: 0.2em; \n",
        "    }\n",
        "    a:link{\n",
        "       font-weight: bold;\n",
        "       color:#447adb;\n",
        "    }\n",
        "    a:visited{\n",
        "       font-weight: bold;\n",
        "       color: #1d3b84;\n",
        "    }\n",
        "    a:hover{\n",
        "       font-weight: bold;\n",
        "       color: #1d3b84;\n",
        "    }\n",
        "    a:focus{\n",
        "       font-weight: bold;\n",
        "       color:#447adb;\n",
        "    }\n",
        "    a:active{\n",
        "       font-weight: bold;\n",
        "       color:#447adb;\n",
        "    }\n",
        "    .rendered_html :link {\n",
        "       text-decoration: underline; \n",
        "    }\n",
        "    .rendered_html :hover {\n",
        "       text-decoration: none; \n",
        "    }\n",
        "    .rendered_html :visited {\n",
        "      text-decoration: none;\n",
        "    }\n",
        "    .rendered_html :focus {\n",
        "      text-decoration: none;\n",
        "    }\n",
        "    .rendered_html :active {\n",
        "      text-decoration: none;\n",
        "    }\n",
        "    .warning{\n",
        "        color: rgb( 240, 20, 20 )\n",
        "    } \n",
        "    hr {\n",
        "      color: #f3f3f3;\n",
        "      background-color: #f3f3f3;\n",
        "      height: 1px;\n",
        "    }\n",
        "    blockquote{\n",
        "      display:block;\n",
        "      background: #fcfcfc;\n",
        "      border-left: 5px solid #c76c0c;\n",
        "      font-family: 'Open sans',verdana,arial,sans-serif;\n",
        "      width:680px;\n",
        "      padding: 10px 10px 10px 10px;\n",
        "      text-align:justify;\n",
        "      text-justify:inter-word;\n",
        "      }\n",
        "      blockquote p {\n",
        "        margin-bottom: 0;\n",
        "        line-height: 125%;\n",
        "        font-size: 100%;\n",
        "      }\n",
        "</style>\n",
        "<script>\n",
        "    MathJax.Hub.Config({\n",
        "                        TeX: {\n",
        "                           extensions: [\"AMSmath.js\"]\n",
        "                           },\n",
        "                tex2jax: {\n",
        "                    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
        "                    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
        "                },\n",
        "                displayAlign: 'center', // Change this to 'center' to center equations.\n",
        "                \"HTML-CSS\": {\n",
        "                    styles: {'.MathJax_Display': {\"margin\": 4}}\n",
        "                }\n",
        "        });\n",
        "</script>\n"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 1,
       "text": [
        "<IPython.core.display.HTML at 0x239bb50>"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "In the previous chapter we developed the Extended Kalman Filter to allow us to use the Kalman filter with nonlinear problems. It is by far the most commonly used Kalman filter. However, it requires that you be able to analytically derive the Jacobian blah blah limp prose.\n",
      "\n",
      "\n",
      "However, for many problems finding the Jacobian is either very difficult or impossible. Futhermore, being an approximation, the EKF can diverge. For all these reasons there is a need for a different way to approximate the Gaussian being passed through a nonlinear transfer function. In the last chapter I showed you this plot:\n",
      "\n",
      "**author's note - need to add calcuation of mean/var to the output.**"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from nonlinear_plots import plot_transfer_func\n",
      "from numpy.random import normal\n",
      "import numpy as np\n",
      "\n",
      "data = normal(loc=0.0, scale=1, size=500000)\n",
      "\n",
      "def g(x):\n",
      "    return (np.cos(4*(x/2+0.7)))*np.sin(0.3*x)-1.6*x\n",
      "\n",
      "plot_transfer_func (data, g, lims=(-4,4), num_bins=300)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nwEC4u7sDAPR6PQoKChASEiJxMrH20yWiHlei/hwC1vVbHPQSEREAIDk5GTNnzsSRI0ekjtJOQ0MD\nPvroI5SWluLOO+8UZnbpkrNnzyI0NFSogYAoqqur4enpiR9//BE6nQ4eHh6oqqoSYtArOtGOK1F/\nDq3ptzjoJSLqZw4cOIDDhw+3u02lUiE6Ohre3t6SzfJ2lmvYsGGYNm0aHnnkERgMBnzyyScYPHgw\ntFqtELmqqqrwn//8B/fdd1+f5bEkl2jGjRsHAPjll1+EKZ0RmZTHVVdcXFwk/TnsTHp6Ovz8/Czu\ntzjoJSLqZyZOnIiJEye2u+3bb79FWloa0tPTUVNTA4VCAU9PTyQkJEiaq62AgAB4e3vDYDAgLCxM\n8lxNTU3YsGEDbr75Zvj6+vZZnp5yicTT0xNVVVXm7Uszv9Q1qY+rnkj1c9iZ3NxcnDx50uJ+i4Ne\nIiLCtGnTzDOEe/bsgYuLS58OeLtSWVkJtVoNnU6HqqoqFBcXw8fHR+pYMJlM2Lx5M0aOHImYmBip\n4wgrLCwMRUVFqKmpQVNTEyorKxEcHCx1LGGJelyJ+nNobb/FQS8REQmroqICX3/9tXl7xowZ0Ol0\nEiZqlZWVhZMnT6K4uBiHDh0CACxcuFCIWcxt27bh5MmTqK2txeuvv445c+ZItmLCpWW3PvroIwDA\nzJkzJcnRGZH20yWiHlei/hxai5chJiIiIiLZE+PUOyIiIiIiB+Kgl4iIiIhkj4NeIiIiIpI9DnqJ\niIiISPY46CUiIiIi2eOgl4iIiIhkj4NeIiIiIpI9DnqJiIiISPY46CUiIiIi2eOgl4iIiIhkj4Ne\nIiIiIpI9DnqJiIiISPY46CUiIiIi2eOgl4iIiIhkj4NeIiIiIpI9DnqJiIiISPY46CUiIiIi2eOg\nl4iIiIhkj4NeIiIiIpI9DnqJiIiISPY46CUiIiIi2eOgl4iIiIhkj4NeIiIiIpI9DnqJiIiISPY4\n6CUiIiIi2eOgl4iIiIhkj4NeIiIiIpI9DnqJiIiISPY46CUiIiIi2eOgl4iIiIhkj4NeIiIiIpI9\nDnqJiIiISPY46CUiIiIi2eOgl4iIiIhkj4NeIiIiIpI9DnqJiIiISPY46CUiIqJO/fDDD4iNjUV+\nfr7UUYh6TXH69GmT1CGIiIhIPE1NTaisrISPjw+USmnmyZ5++mnk5eXhk08+keT9ST7UUgcgIiIi\n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\n9/9Xm47Xy9b3ygAAAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0xa136b00>"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "I generated this by taking 500,000 samples from the input, passing it through the nonlinear tranform, and building a histogram of the result. From that histogram we can then compute a mean and a variance that we compared to the output of the EKF.\n",
      "\n",
      "It has perhaps occured to you that this sampling process constitutes a solution to our problem. This is called a 'monte carlo' approach, and it used by some Kalman filter designs, such as the *Ensemble filter*. Sampling requires no specialized knowledge programming, and does not require a closed form solution. No matter how nonlinear or poorly behaved the tranfer function is, as long as we sample with enough points we will build an accurate output distribution.\n",
      "\n",
      "\"Enought points\" is the rub. The graph above was created with 500,000 points, and the output is still not smooth. You wouldn't need to use that many points to get a reasonable estimate of the mean and variance, but it will require many points. What's worse, this is only for 1 dimension. In general, the number of points required increases by the power of the number of dimensions. If you need $50$ points for 1 dimension, you need $50^2$ for two dimensions, $50^3$ for three dimensions, and so on. So while this approach does work, it is very computationally expensive. The Unscented Kalman filter, the topic of this chapter, uses a somewhat similar technique but reduces the amount of computation needed by a drastic amount. \n",
      "\n",
      "It is somewhat hard to understand some aspects of this problem by looking at the histogram, so consider this alternative representation, this time for 2 variables/dimensions."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import ukf_internal\n",
      "ukf_internal.show_2d_transform()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xdc1PfhP/DXTW5wHHsPEXGAG8UoiiMqAmq0SbOaWtMk\nTfo1e7RJkzRJ26Rp0zRJdzPapM2v7TezaSpoJHEPEBGUIaKCbJnHATe49fsD5SsxEEXuPjdez8eD\nhxHed/ci6vG6z72HqLq62gEiIiIiIjclFjoAEREREdFoWFiJiIiIyK2xsBIRERGRW2NhJSIiIiK3\nxsJKRERERG6NhZWIiIiI3Jp0tC92dXWhv7/fVVmIiIiIyEfJ5XJERER85ddGLaz9/f2YO3euU0IR\nEREREV1QUlIy4tc4JYCIiIiI3BoLKxERERG5NRZWIiIiInJrLKxERERE5NZYWImIiIjIrbGwEhER\nEZFbY2ElIiIiIrfGwkpEREREbo2FlYiIiIjcGgsrEREREbk1FlYiIiIicmssrERERETk1lhYiYiI\niMitsbASERERkVtjYSUiIiIit8bCSkRERERujYWViIiIiNwaCysRERERuTUWViIiIiJyayysRERE\nROTWWFiJiIiIyK2xsBIRERGRW2NhJSIiIiK3xsJKRERERG6NhZWIiIiI3BoLKxERERG5NRZWIiIi\nInJrLKxERERE5NZYWImIiIjIrbGwEhEREZFbY2ElIiIiIrfGwkpEREREbo2FlYiIiIjcGgsrERER\nEbk1FlYiIiIicmssrERERETk1lhYiYiIiMitsbASERERkVtjYSUiIiIit8bCSkRERERujYWViIiI\niNwaCysRERERuTUWViIiIiJyayysREREROTWWFiJiIiIyK2xsBIRERGRW2NhJSIiIiK3xsJKRERE\nRG5NKnQAIiIici273Q6z2Qyz2Qyr1QqxWAyJRHLJh1gshkgkEjouEQsrERGRNzIYDNDpdNDr9eg3\nmtFnNMJgNKPfaIRpwAqxVAaRVAaJRAqHwwGH3QaHww7Y7XDY7YO/t9uhUvohLEiL8OBAaLVaBAQE\nQKVSCf3tkY9hYSUiIvJwNpsNer0eOp0Ore1daOnohMlih0SpgVSphkzuB7lSA7lWDrWfH2Qy+WXf\nt9lkQm9/L9raemE72w6rqR9SkR1hgVpEhgUjJjoaAQEBTvzuiFhYiYiIPJJer0dTczMaz3WgQ6cH\nZApIFRooNVoEJ8XCT6EYl8fxUyjgp1AgKCRs6HMWywAMvb2obNeh5OQhBKvlmJIYj+joaCjG6XGJ\nLsbCSkRE5CH6+vrQ1NyMU2eb0GOywk8bAk1QHOLiNJBIJC7LIZPJoQ0OgTY4BIhPQm+PDodrW2A9\ndgIJkaGYGB+LiIgIl2Yi78bCSkRE5MYMBgNaWlpQc7YRXb0myLWh0EZNQqLGfd6G12gDodEGwmaz\nobuzHXuOn4L8aDnmpCQjISEBYjE3JaKrw8JKRETkZux2O5qbm1F9ug7nuvsgCwiGNnQCEpMChY42\nKolEgtDwSISGR8LQ34fCk7UoP3kGc6dPRUxMjNDxyIOxsBIREbkJi8WC+vp6HKs+A5PYD4ERMZiQ\nEOKRW0up1P5ImDoDvT067C6tRnTtWaTNmgGNRiN0NPJALKxEREQCM5lMOFNbi4pTZ2FXBiA0YRoi\n/b2j2A1OF0hDW0sj/rtzP2ZPnoApkydzmgBdERZWIiIigfT29qLm9BmcPNsCSUAowibPGbfV/e4m\nPCoWlpAwlNXW4FzHISycnwY/Pz+hY5GHYGElIiJyMb1ej/KqatS2dEAVGoWY1HmQymRCx3I6mdwP\nCVOmo6X+DHbs3ofMa+ZzD1e6LCysRERELmI0GlF5ohrV9a1Qh8chYeYCn9z6KSp+Irra1di++wAy\n0+cgIiJC6Ejk5lhYiYiInMxqteLU6dMoq66FNDAc8dPnQyL17R/BwWER8FMoUXCoFAumT8KkpCSh\nI5Eb8+1/LURERE7W1NSEorJKDMjUiJjivXNUx0KtCUDstDk4VHUc+t4+zJ09S+hI5KZYWImIiJxA\nr9ej5Fg5mnVGhE2YCn832ujfncj9/DAhZQ6qqkqhVJzAtKlThY5EboiFlYiIaBxZrVZUnqhG+akG\n+EfFY8L0FI/cR9WVJBIJ4qbMwJHKUqhVKsTHxwsdidwMCysREdE46erqwoHiozBI/RE33TdW/o8X\nmUyOmMnTsa+kDKuUSoSFhQkdidwId+0lIiK6Sna7HRWVVcjfWwRJ2ATEJU1lWR0DhVKF0KQU7DpU\nAr1eL3QcciMsrERERFdBr9djx669KG/sRlxqGgKDQ4WO5NE0AVqooydi14EimEwmoeOQm2BhJSIi\nGgOHw4GaU6ewddcBWDSRiJ+SCplMLnQsrxAUGg67JgwHDx+Bw+EQOg65ARZWIiKiK9Tf349d+w6g\nuKYJUVPmICQ8UuhIXicidgJaei04e/as0FHIDXDRFRER0RWor69HYVkl5KGxmJASJ3QcrxaZOBlF\nx44hIiICSqVS6DgkIF5hJSIiugw2mw1HjpZi77EahEyaifBollVnU6rUkAZFoKy8QugoJDAWViIi\noq9hNBqxa99B1LQbkJAyB0qVWuhIPiMidgJOt+rQ2toqdBQSEAsrERHRKLq7u7Ft5z70ygKQMCUV\nEolE6Eg+RSwWIywhGYWl5bBarULHIYGwsBIREY2gvr4e+XsKoYxKQkRMgtBxfJZGGwizXIOKqhNC\nRyGBsLASERF9id1uR+mx49hTdhJRU2ZBGxwidCSfFxWfhMozDTAajUJHIQGwsBIREV3EbDZjz4FD\nONGqx4SUOVAoVUJHIgBSmQwybThq6+qEjkICYGElIiI6r6enB9t27kU3VEiYMh0SKXd/dCehUbGo\nOHUWFotF6CjkYiysREREADo6OrB9z0HIwicgMi5R6Dj0FfwUCtiVAWhoaBA6CrkYCysREfm8lpYW\nfLa/GIETUhAUEiZ0HBpFSGQcjp88A7vdLnQUciEWViIi8mn19fX4oqgMEZOmQxOgFToOfQ21JgAG\nyNDS0iJ0FHIhFlYiIvJZNadOY8/RKkRPmQ2Vv0boOHSZgiLiUF59SugY5EIsrERE5JMqq6pQWFWL\nuGlzoOA59R5FGxyCzn4Luru7hY5CLsLCSkREPsXhcKC07BhKTrcgYdpsyP38hI5EY6AIDEVzC49r\n9RUsrERE5DPsdjuKjpSgqkWHCSmzIZXJhI5EY6QNCcPphmahY5CLsLASEZFPsNls2H+oCLVdJsRP\nmQGJRCJ0JLoKKrU/+gbs0Ov1QkchF2BhJSIir2e323GwqBjNBgfiJ6dCLOaPP28g0wSh9dw5oWOQ\nC/BfLBEReTWHw4HDR0rQ2GtF3KRpEIlEQkeicaINDkNtI7e38gUsrERE5LUcDgdKSstwpsuIuOQU\nllUv4x+gRWePAUajUego5GQsrERE5LXKjpejukWHuGROA/BGIpEIUk0g2trahI5CTsZ/vURE5JUq\nq6pQ0dDOBVZezj8oFHWN3C3A27GwEhGR1zl5sgYlp5oQP2UmJFKp0HHIiTQBgTjXwQMEvB0LKxER\neZUztbUoOlGH+Kkzuc+qD5DKZLCKpOjv7xc6CjkRCysREXmNhoYGHDh+ErFTZkIm5wlWvkKqUHM/\nVi/H90nclMlkQkNDA7q6utDT04Pu7m50d3ejq7sbHZ3daO/qQldXN/r6+yESiSASiSAWiSEWiyAW\ni4d9SCQShAQHISo8DOFhoQgJCRn2ERoaCo1Gw9WzROTRzp07hz0lFYiZMgt+CoXQcciFJEo1dD09\niIqKEjoKOQkLq4AcDgeam5tx6tQpnDp1ClXVJ1Fx4iTOnD6N7o42+IeEQ+4fCKlSA5HSH1Bo4PDz\nh0TpD6lyMiRJGkjkyvP3ZT9/p3Y4HI7BX+0XfrXhrEEP65keOCoqITbpYTf0wNqvh7lPB5NeB6vF\njLDIaCROTELq1MmYNmUykpKSMGnSJERFRbHMEpFb0+v12F10FBFJqVAoVULHIRdT+WvQ3tWOaUIH\nIadhYXWhpqYmFBUV4cChQuw7WIi60zWQ+imhiYiHJCQGoqAYKCatQsTC7yIuOBJiiev+eOyWAZi7\nW9He3ohtTY3IP/4FbF3vovdcPawmI2InJCJ5UhJmpaZg3rw0pKWlITAw0GX5iIhGYjKZsOtAEfyj\nk6DWBAgdhwSgUmvQ3nRK6BjkRCysTtTc3Iw9e/Zgxxe7sHffPhgMRgROnA5J9FSolmzGtG9OhFTp\nL3RMAIBYJocyPB7K8PhLvmY19sHc0YTq9gYcP1yHd/6zA911JxAWEYn0+fOweOECzJ8/H1OnTuXW\nMUTkUjabDfsLi2HzD0VYaLjQcUggcj8/mK0OGI1GKJVKoeOQE7CwjrMTJ07g/Q8+xPsf/RudnR0I\nSp4DacIsRNz2PBRhcR751rpU6Q9p3BSo46YMfS7GZoPxXB2O1Fei8L0dMPzqNRh1HUiZMQtLFi7A\nsqWZWLhwIeRyuYDJicjblZSWoWNAjPjJiUJHoa/hcDhw5mQVSg/txeTUWZgx75pxvX+JcnDhFQur\nd2JhHQdnz57FBx9+iH+89wE6OroQMHMpNGsfQkTsFIi89GQVkUQCVXQSVNFJANYBAKwGPXobTuCD\n8kr849On0Ndaj4UZi7E+JwurVq3iZHgiGlfV1SdxsrUHE1JmCx2FRmCxDKD8SCEO7SpA4e4CtLcO\nbvA/OXUmXnn3k3F9LOn5whoRETGu90vugYV1jNrb2/Hhhx/i3f/9AHW1tQiasQT+y7+HyYkzvLak\nfh2pKgDaKenQTkkHsBmWPh1qqw/jl+9+iiee+jGiY2KxNjsLa7JWY968eZw+QERj1tzcjOLqOsRN\nm80jV91Mr74HR/bvQuGuAhQf2AVDX9/Q1/wUSiy6Ngs3bL5n3B9XKleg32Aa9/sl98DCeoXOnDmD\nl199Df/+9ycISlkIddoNmHpzmksXSHkKmX8gQtJWAWmrEGWzoa++Eh8eL8K7H90Pc087VqxYiVtv\nugHLly+HjJt7E9Fl6unpwZ4jxxA5aQb3WnUTrU0NKNw9eBW1/EgRbDbr0NdEYjHmLMjA8tyNWLh8\nNZQqtVMySGVy9Bl54pW3Ysu6TKWlpfjFy69g7959CE7PxeSH/wKZf5DQsTyGSCKBJnEGNIkzgKw7\nMKBrR2nFfhx66nkYO76P9evX49abbsSCBQt4tYSIRmQ0GrHzQBECYiZBpXaPRau+yG63o6by2FBJ\nraupvmRM0tRULM/diKVZ6xAc5vwFcXI/Pxh6eYXVW7GwjsLhcGD37t148VevoKr6JIIWfQNTHvs7\nJH6c0H215IFhCM/YAGRsgLmrBXvKdiH/7vsgtQ/g27fegtu+dSsSEhKEjklEbsRms2FfYTGgjURQ\nSJjQcXyO2WRC2eEDKNxdgKLdn6Oro+2SMWGR0ViWfR2W525AQtJkl+aTyeTQGc0ufUxyHRbWERw/\nfhz3PvQIGs91QptxA5LXPgmxlG9bO4NfcBQilt8Cx7KbYWw+hX8VfoY/vr4CU6ZMwZ2bv40NGzZw\n1ScR4XhFJToHJEhIvHT7PXKOnq5OFO3bicJdO1BycC/MJuMlY1RqfyxelYPluRsxfW66YO+SSWUy\nGE0srN6KhfVL9Ho9fvKzF/C/H3yAsJWbMfHGbJ9dROVqIpEIqphkqGKSEZF9F3qqCvHTP76Lx598\nGt+9fTPuvutOREZGCh2TiATQ0tKC8rpWTEidK3QUr9dYdxqFuwtwaFcBqsqODJ6e+CUSiRRpGUux\nYu1GpC+51i2OwpVIJLCLRLBYLFwX4YVYWM9zOBz46KOP8IMfPQXlpHmY9MCbkKm1QsfyWWKpHEEz\nliBoxhKY2hvwwcF/4/U3rkFWVhYevG8LZs6cKXREInKR/v5+7Cs+hsiJKZBI+WNrvNlsNpw4VoJD\nu3agcHcBms7Wjjh26ow5WJ67AUtW5UIbHOLClJdHLJXBbDazsHoh/ssHcPLkSdz30CM43dSGiBuf\nhH9CqtCR6CKKsDhErb8PYSu/g5LD+Vh3/U2YlJSIR+6/F1lZWdwei8iL2e12HDxcAr/QWB67Oo6M\nhn4cPbQPh3btwOG9O6HXdY04NjI2HstzNmB5zgbEJLj3AQ1iqRwDAwNCxyAn8PnC+s7f/o6nnnkW\noUtvQeL6DRCx/LgtqSoA4UtvQuji66E7vgcP/vgFSB9/Evf/z93YtGkTVCqV0BGJaJxVVJ1Ax4AY\nCYmxQkfxeJ1t51C093Mc2lWAsqL9sIxS7DTaQCxZvRYrcjdi6sw5HnNKo0gyeIWVvI/PFlaTyYSH\nHv0Btu/ahwl3/RrKcE7i9xRiiRTBs1cgaNZy9NdX4jfvfYhf/vpVPP7YI9j8ne/wOFgiL3Hu3DmU\nnW5AQkqa0FE8ksPhwNlT1UNv9Z+sODbqeKlMhgWZ12J57kbMW7wMMpnnPZeKJFJYLBahY5AT+GRh\nbWxsxE233oYuaRAS7/ktJApemfNEIpEI/gmp8E9IhaGpBq/8/R38+rXf4uknfoibbroJUs51I/JY\nBoMBe4tLETExBVLOR7xsVosFFUcPD5XUc82NX3ub6XPTsSJ3IzJW5cDf06ddiMSw2+1CpyAn8Lmf\n6Lt378bmO+6CdtE3ELvkRo95m4NGp4pJhmrTz9Bbexw/+c2b+OWvX8VPfvwU1q1bx4MIiDyM3W5H\n4ZGjkAZFe36BcoH+Xj2K9+9G4e4CFO/bif6+3q+9TWxiElbkbsTy7OsQHu1F0y1E+MpdDcjz+VRh\n/fPrb+D5X7yE6G8+joBJc4SOQ06gSZwB/ztfhv5kMR597kX8/KWX8dNnnsbKlSv54oTIQ5yorkar\nwY4JUzlVayRtzY04dP6UqePFhcOOQh1JYHAIlmZfh+U5GzBp2nQvfU4UsbB6KZ8prH9+4w38/OXX\nkHj3a/AL5l6e3kwkEkE7ZT4CJs+Drnwv7nn4cUyIDsdvX3kZKSkpQscjolF0dHTg6Ml6xHG/1WEc\nDgdOVZUPvdVfe7Lqsm4n91Ng0YosLM/diDkLMrx/WzARC6u38vK/uYPeeusveOFXr2LCHb9iWfUh\nIpEIQTMyEZiagc6iPGTlrsO3brkFTz7xQ2g0GqHjEdGXWK1WHDxShpCEyR654Ge8WQbMKCs6iMLd\nBSjc8zk621ov63YisRiz0xdhec4GLFyRBZXa38lJ3QsLq3fy+sL69jt/w09efAkJd7Ks+iqRWILQ\na9ZBO30x/rv9TXw4fwFe/uWLWLdunZe+JUbkmSqqTsAo80doULDQUQSj13Xj8N4vULi7ACUH98Jo\n6L/s2yZOnoYVuRuxdM16hIRHODGl++JTuvfy6sL67v/7f3jmZz9Hwnd/CUVItNBxSGAy/yBEX/8Y\nes8cw4NPPoc33/4bXnv5JSQmuvdG2ES+oKurC+VnmpAwfZ7QUVyuub5u6K3+ytLiK1rlHhIeiWU5\n12FFzgZMSJ7qxJQewgEutPVSXltY//vf/+LJZ346WFbDvGgFJF01zcSZUG/5I+r3f4TM5ddiy/fv\nwUMPPgA/Pz+hoxH5JJvNhoNHShEUl+T9cywx+P1WHy8dfKt/dwEaak9d0e2VajUyrs3GityNmJ62\ngKf9DcPpAN7KK58Z6urqsOX+BxH77Z9BER4ndBxyQ2KpDOFLb4J25jK8k/cH/ONf7+Evb/wJ8+b5\n3tUdIqFVVZ9EHxSIDwkTOorTmIxGHD20F4W7P8fhvZ9D19V5RbcXSyRIW7QUK3I3Ij3zWiiUSicl\n9WwOh4NTvbyU1xVWs9mMWzdtRvDSW6GOmyJ0HHJzfkERiPvWc+g6thsbb7wZ995zNx595GFesSBy\nke7ubhyrOYvYVO87zaqrox2H93yOQ7sLUFq4DwNjODJ0cupMLM/diMystQgMDnVCSi/jAAurl/K6\nwvrUj59Ft0SL2EUbhI5CHiR45lL4x6fgLx/+EtsLPsc7b72BuDhenSdyJpvNhkNHSqGNSfKKXQEc\nDgfqz9SgcNfgW/3V5aVjWrEeEROH5TkbsDznOsROSHJCUi9mt/KUQy/lVX+qeXl5eP/fn2Lilj/w\nFRZdMXlgGOJv/wXa972PxUuX4+VfvogbbrhB6FhEXutkTQ30dj/Eh4ULHWXMbFYrKkqLB0vqngK0\nNJwd0/34B2ixZFUuVqzdiGmz0vgzbIzsVgvkcs9/8UOX8prC2tjYiP+57wFE3/ospCrusUljIxKL\nEZ55E9QT5+AHzzyPrds+w2u//hUCAng8JNF46unpwdHqOsSmeO4BAQ6HA/fdshZnT1WP6fZSmQzp\nS67F8twNmL94GWRyLvy8WnabhQtovZTXFNYfPPEkAtLXwT+BJxnR1VPHTkbilt+jOP91LMhYgnfe\negPp6elCxyLyCna7HYUlZQiITvTYkuZwOFBTeWxMZTV1zjwsz92IxStzoNEGOiGdD7NZIZPJhE5B\nTuAVhfXIkSPYf7AQkx7+q9BRyItI5EpEXfcAusv34fqbbsHzP3kOm759m9CxiDxebV0dOs3AhIme\ndZiLw+HA6RMV2LcjD3t3bEVrY/1l3zYmIRErcjdiWc4GRMZwfryzcEqA9/L4wupwOPDDJ59GyIrb\nIJErhI5DXiho+mIowxPwzM+fRnllJV746U84qZ9ojEwmE46Un0Tk5FlCR7ksV1NStUEhyMxaixVr\nNyI5ZSbnpTqZzWaDGODzs5fy+D/VgoIC1Dadw8SNa4SOQl5MER6HxHt+i0/+92eouuFGvPvOX6HV\naoWOReRxKqpOQBIYDoVSJXSUEV1JSRVLJLDbbEO/l/v54Zplq7EidyPmXLMYUr497TJWiwVKhWdO\nMaGv59GF1Waz4fEnf4zglbdDxH0zycmkKg3iN72Auvw/IXP5tfjo/f9FUhK3nCG6XN3d3aiuP4f4\nGfOFjnKJKympfgol0jNXYMmqXKRlLMPubf/B4b1fYMGyVchYkQWVPxf+CsFqGYDSj9MBvJVHF9b3\n3nsPvfBDQsoioaOQjxBJJIhauwWdhf/FtavX4O233sCyZcuEjkXk9hwOB4rLyhEQneg2B3NcTUm9\n+KSprI03IWvjTa6ITKMYvMLKwuqtPLqwvvK7PyBo6bc5L4hcLmTBWshD47Dpju/hqSd+gO/deafQ\nkYjcWmNjI9oNNiQmRgiaY7xKKrkfi9WCYF5h9VoeW1jLysrQ1tGF5GTvO86PPIMmaRYS734VP3/5\nCeh79Hj0kYeFjkTklqxWKw4fr0J4/DRBHp8l1TdYzGaog/nn5a08trC++de3oU1bA5FYLHQUl3DY\nbWjMexMOuxWBKYvgnzgDYonH/vF5Db/gKCTc+Sv8/q8/hMFoxNNP/ohX/Im+pObUKVj8AqDWuO4A\nDpZU32MbMCJAEyR0DHISj2w8FosFn3zyCRL/5w9CR3EZfc0RnNvzHgCgbd9HkCg10E5bgMCURdBO\nng+Jwn1X3Ho7uTYUE+78Fd756+MwGk144Wc/YWklOs9gMKDsZB2ipjr/RCuWVN9mHzBBrVYLHYOc\nxCML6+7du6EKi4NfkLBzoVypv7Fm2O9txl50lRSgq6QAIokMmklzEJS6CNqURZAHhAiU0nfJ/IOQ\ncMdLeP/tH8FoMuLXL/0SYh+5+k80mvKqE/ALjoTcScdlsqTSBTazkYXVi3lkYX3vw4+gSFkidAyX\nCkvPhrmzCT2VB2E16Id9zWGzQF9dBH11EfDRq1DHTUVg6iIEpmZAEZ7Aq30uIlUFIP72F7H170/B\ndN8D+P1vXnWb1dBEQuju7kZNYzsSxnkbK5ZU+jKLZQBSsQN+TnphRMITVVdXO0b6YkNDA+bOdf7b\nOFdq4uSpiLvjZfiFRAsdxeUcNhv6zlZAV7EfusoDMHc2jzreLyTmfHldBP+EVIjELFDOZjMb0fju\nj7EwJRFv/vmPPHWFfNbu/QehlwUiNOLqn6tZUmk0vfoeiLrqsWrpYqGj0FUoKSlBXNxXH13scT9J\nW1paMDBggTw4SugoghBJJNBMnAnNxJmIXXsPTOfq0F1xALrK/TA0VF8y3tzZhHN73se5Pe9DqtZC\nO+0aBKZmICA5jUfZOonET4m4TT/DwXd/jAcefgS/e+1VXuUmn9PV1YXGzl4kzhz7zgAsqXS5TIZ+\nxATwwAZv5nGFtbS0FNr4KSwAAEQiEZSRiVBGJiL62m9hoKcduspD0FXuR++po3DYrMPGW/t70Fm8\nHZ3F2yGS+UGbnIbA1EXQTrsGMn+urBxPYpkfYm95BtvefAS/evnXeOzRR4SORORSx6uqERAZf8XP\n1SypNBYDJgOCwvhzzJt5XGE9UlICceQkoWO4Jbk2DOEL1yF84TrYTP3oqT4MXcUB9FQXwmbsGzbW\nYTFDV3kAusoDgEgE/4RUBKYMTh1QhH315Xi6MhKFCnHf/il+9/qDiIuLxc038SQc8g2dnZ1o7Oy7\n7KurLKl0texm7hDg7TyusB4oOgLFxBVCx3B7EoUawbOWIXjWMthtVvSdOTZYUCv2Y0DXNnyww4G+\nunL01ZWjMe91KMLjEZiagcCURVDHTfWZvW6dQa4NRfy3f4bHnngMUZGRWLp0qdCRiJzuWOUJBESN\nfnWVJZXGk23AwMLq5TyqsDocDlQcL0Ni5j1CR/EoYokUAclzEZA8F3Hrt8DYchq6isHyamg+dcl4\nU1s9Wtvq0brzn5BpgqGdthCBqYsQMGkuxDIee3ellJETEHvTU9h0+x3I/+9/kJKSInQkIqfp6OhA\nc7cBiTMv3XaQJZWcwW63A9YBFlYv51GFtampCXaIIQsIFTqKxxKJRFBFT4IqehKiV22Cufvc+Suv\nB9B7pgyw24aNt/R2oaNoKzqKtkIsVyBg8vzBXQemLoBUrRXou/A8mqRZCMv5PjZc/03sLPgMMTEx\nQkcicorjVdXDrq6ypJKzmQz90PqrubbFy3lUYe3o6IAqMJR/KceRX1AEIjI2IiJjI6yGXvRUFw3O\nez1RCPuAcdhY+4AJuvK90JXvBcRiaCbMGJw6kLoIfj66a8OVCJ69Ataedlx3/Tex+/MdvBpAXqej\nowPNOiPvsxsfAAAgAElEQVQmTA/HqapyllRyiT59D+JCuODK23lUYdXr9ZAo+UPeWaQqDULmXIuQ\nOdfCbh1A7+nSwakDlQdg0XcOH2y3o/dMGXrPlKHh0z9AGZk4NO9VFTuZLypGEJZ5I5rbz+K+Bx/G\nW6//if+fyGs4HA78+9Ot2FN0FMVPPsqSSi5j7tcjfIS9O8l7eFxhFfuphI7hE8RSObRT0qGdko74\nDffD0HRyqLwaW2svGW9srYWxtRYtn78LmTYMgSkLEZiaAc3EWRBLZQJ8B+5JJBIhcv192PXH+/HO\n3/6Ozd/ZJHQkojFzOBw4duwYPvnkE3z44YdoaGgYcSxLKjmLzdiHwMBAoWOQk3lUYe3t7YXIj1dY\nXU0kFkMdNxXquKmIWfNdmDqbhxZt9dWVAw77sPGWnna0H/wP2g/+B2I/FbRT0xGYkgHt1HRIlf4C\nfRfuQyJXIubmp/D0s48gbe4czJgxQ+hIRJft4pL673//G3V1dSOOZUklZ7MMmCET2eDvz58t3s6j\nCqterwfkvMIqNEVINCIzb0Bk5g2w9Pegp+oQdJUHoK8+DLvFPGys3WxAd9kudJftAsQSaJJmIShl\ncN6rPDBcmG/ADSgjEhCefTdu+87tOLhvD1Qq/r0m98WSSu6qV69HZGiI0DHIBTyusDpYWN2KTK1F\n6LwshM7Lgt1ihr6mZOhAAmufbvhguw29NSXorSlB/Se/hSom+fxhBRlQRk30ufmcIXNXoen0Efzg\niR/hd6+9KnQcomGuqKT6+WFmegZWrb+BJZVcytCrw5RYLrjyBR5VWA1GIyDlPqDuSizzG5y7mrIQ\nDvtD6G+ogq5iP3QVB2Bqv3Rum6GpBoamGjTveAfyoMihea/+iTMglnjUX80xi1h7L/77u+8jJy8P\nOTk5QschH3clJVWlUmH16tXIzs5Gn12G5PmZkEgkrgtLhMH5q8HBE4WOQS7gUa0gOCgIMDUJHYMu\ng0gshn9CKvwTUhGb8z2Y2hrQXTlYXvvrKwGHY9j4ge5WtO3/GG37P4ZEqYF22gIEpiyCdvJ8SBTe\ne1VdqvRH1Dd/iC33P4gj11yD4OBgoSORjxlLSd2wYQNWrlwJlUqFyqoqVLYZWFbJ5ex2OxxmA7Ra\n7gnuCzyqsIaEhEBk6hU6Bo2BIjwOUeE3I2rZzbD0dkFXdQi6iv3Q15TAYR0YNtZm7EVXSQG6Sgog\nksigmTQHQamLoE1ZBHmA981V0kyYjr7UJXj62efw+9+8JnQc8gFXW1IvsNlsqDh9FmHJc1yQmmi4\n/l49QgI1fLHkIzyusDqMeqFj0FWSaYIRlp6DsPQc2AaM0J88Al3FfvRUHYLVMPzP12GzQF9dBH11\nEfDRq1DHTR08aSs1A4rwBK+Z9xq2cjM+ffUO3Hn7ZsyZwx/+NP7Gq6RerKmpCTa5Bn4KhZNSE42s\nv7cHk8K87yIGfTWPKqzBwcGw9vcIHYPGkUSuRND0xQiavhgOmw19ZysG571WHoC5s/mS8f0NJ9Df\ncAJN2/4Cv5CY8+V1EfwTUiESe+6rbKnSH2Grbsd9Dz2CPV8UQCwWCx2JvIAzSurFyqtPIziS8wdJ\nGJZ+PUInJgkdg1zEowprSEgIBvpYWL2VSCKBZuJMaCbOROzae2A6V4fuigPQVe6HoaH6kvHmziac\n2/M+zu15H1K1Ftpp1yAwNQMByWmQyD3vik/w3NU4eyQff3/3XXxnEw8UoLFxdkm9oKOjAz0DdkzQ\ncsN2cj273Q6boRchIbzC6is8rrAae3VfP5A8nkgkgjIyEcrIRERf+y0M9LRDV3kIusr96D11FA6b\nddh4a38POou3o7N4O0QyP2iT0xCYugjaaddA5u8ZW56IxGKEr70Xzzz3JNavW4egIM/ITcJzVUm9\n2IlTZ6AOjR5jYqKr06vrRkRwAORy7hzkKzyqsAYEBAAOO6yGXkhVGqHjkAvJtWEIX7gO4QvXwWbq\nR0/1YegqDqDnxCHYTP3Dxjos5qG9YCESwT8h9fx+r4ugCHPv86ZVMcnQpC7BMz/5KX7zyq+FjkNu\nTIiSekFfXx/qW7uQMCv5qu6HaKx6dZ2YGx8pdAxyIY8qrCKRCNOmz0R/YzW0k+cJHYcEIlGoETxr\nGYJnLYPdZkXfmWODBbViPwZ0bcMHOxzoqytHX105GvNehyI8HoGpGQhMWQR13FSI3HCuaNjKzfj4\n1e/i+9+7C9OmTRM6DrkRIUvqxc7UnYVfSDjnWpNgLL3dCA+fKnQMciGPKqwAcM38NPz3DAsrDRJL\npAhInouA5LmIW78FxpbT0FUMlldD86lLxpva6tHaVo/Wnf+ETBMM7bSFCExdhIBJcyGWucdbS1KV\nBsELN+JXr7yGt17/k9BxSGDuUlIvsNlsOHGmHhFT08b9vokuh6G/D/5+Emg0fKfVl3hcYU2fl4b/\n7P+L0DHIDYlEIqiiJ0EVPQnRqzbB3H3u/JXXA+g9UwbYbcPGW3q70FG0FR1FWyGWKxAweT6CUjOg\nnbYAUlWAQN/FoJAF67D95e+gsbERsbGxgmYh13O3knqx1tZW2P38Iffzc+rjEI2kp6sDk2I4HcDX\neFxhTUtLg77+B4hyOLxmD05yDr+gCERkbERExkZYDb3oqS46P++1EPYB47Cx9gETdOV7oSvfC4jF\n0EyYMTh1IHUR/IKjXJ5dqtIgeN4avPbb3+OlX/zc5Y9PrufOJfViZ+ob4R8c4bLHI/qygb5uRE1J\nFToGuZjHFdbY2FiIHHZYejogDwwTOg55CKlKg5A51yJkzrWwWwfQe7p0cOpA5QFY9J3DB9vt6D1T\nht4zZWj49A9QRiYOzXtVxU522Qul4EUb8c/ffA9P/PAxHtnqpTylpF5gMpnQ0NaF+BlcbEXCsFgG\nALOB21n5II8rrCKRCLNmz0FLwwkWVhoTsVQO7ZR0aKekI37D/TA0nRwqr8bW2kvGG1trYWytRcvn\n70KmDUNgykIEpmZAM3EWxFKZ03LKtWEInL4Ef379DTzx+A+d9jjkWp5WUi/W3NwMiX8Qj8IkwfR0\ndyE+kgv+fJHHFVYAWJ6Zgb98fhSYsUToKOThRGIx1HFToY6bipg134Wps3lo0VZfXTngsA8bb+lp\nR/vB/6D94H8g9lNBOzUdgSkZ0E5Nh1TpP+75gjO+iT+9/jDuv+9eqNXqcb9/cg1PLqkXq66tR1BY\notAxyIcZdJ2YMy1e6BgkAI8srBuuuw6/fu13iFy7BSK+0qdxpAiJRmTmDYjMvAGW/h70VB2CrvIA\n9NWHYbeYh421mw3oLtuF7rJdgFgCTdIsBKUMznuVB4aPT57wOKgTUvHee+/h9ttvH5f7JNfwlpJ6\ngV6vR3f/ABIn8WQrEobD4YC1vwehoaFCRyEBeGRhTUxMRExMDHprjyFg0hyh4/gUm6kfhqZTEMsV\nkPipIPY7/6tc6ZZ7ml4NmVqL0HlZCJ2XBbvFDH1NydCBBNa+L524Zreht6YEvTUlqP/kt1DFJJ8/\nrCADyqiJVzXvVT17Fd791/ssrB7A20rqxRoam+AXyKJAwunp7kRkkAYKhecdvU1XzyMLKwDc8s3r\n8caO3SysLnbqb8+g99TRr/yaWK6AWK6ExE8FiZ8S4qFfv/w51flxyvOl9+JflW5ZgMUyv8G5qykL\n4bA/iP76E9BV7oeu4gBM7Q2XjDc01cDQVIPmHe9AHhQ5NO/VP3EGxJIr+2ennTwflR++hNbWVkRG\ncisXd+PNJfUCh8OBk3WNCErkymwSjr79HBZNSxA6BgnEYwvrxo0b8NIrryFy3b1XXABo7L6qnF1g\nHzDBPmCCta97XB7LXQuwSCyB/4RU+E9IRWzO92Bqa0D3+fLaX18JOBzDxg90t6Jt/8do2/8xJEoN\ntNMWIDBlEbST50Oi+PrCIpbJEZyyCJ988gnuvvvucfke6Or4Qkm9WGdnJ0yQIlLFedQkDJvVCoex\nBxERPDTIV3ls04uPj0fChAnoPV3KU69cSB07BbqeDpc8lqcUYEV4HKLCb0bUspth6e2CruoQdBX7\noa8pgcM6MCyDzdiLrpICdJUUQCSRQTNpDoJSF0GbsgjygJG3aVGlZuIf73/IwiogXyupF6utb4Aq\naHzmZRONRWf7OUyIDodc7h4nEpLreWxhBYBbvvkN/HnrbhZWF0ra9Bysfd2wmY2wDxhhMxtgMxlh\nNxtgMxtgHzANfs5sgN1sPP85I2wX/nvYr8ZLVuE707gXYJniK8ruYAGWaYIRlp4NS58O5s4WmNrr\nYR8wDbu9w2aBvroI+uoi4KNXoY6bisDUwXmvivCEYfNeA5LTUPXBL9HU1ISYmJhxyU9fz5dL6gVW\nqxVnGlsRlcLnWRKOobsNiXOnCR2DBOTRhfUbGzfi5794CWFrvgepimcKu4JIJIJMEwzZOPzvdjgc\nsFvM58vu+dI7YBxWgC8uxsPK7ld9ztUF2GKC3TJ+Bbi/4QT6G06gadtfIJLIIFVrIQ8MgywwHFKF\nGmJ1EO67/34sW7oUGo0G/v7+Qx9qtXrY7/39/blP4RixpA7X0dEBh58aMhmvbJEwzCYTZDYTwsK4\n97ov8+jCGh0djTVr1qC48FNELL9V6Dh0hUQiESRyBSRyBQvwl78XmwUWfQcs+g6gvmro87ta67Br\n587Lug+VSnVJif2qYqtWq32+ALOkjqzlXBsUATxpjYTT1daC5IRYr34Ooq/n0YUVAB596AGszl2P\nsMXXQyzzEzoOCYgFeDiDwQCDwYC2trZxub8vF+CRyq+/v/+wAjzSOKFPS2JJvTy1Ta0ImjhT6Bjk\nw0y6diTMmC90DBKYxxfWadOmIW3uHJwt3o6wheuFjkNeRIgCbOnrgbHlFIyttTB3NsNhs179A48T\nbyjALKlXpqenB2a7GAqlUugo5KP6evUIUEgQGMgDK3ydxxdWAHj80Ydxy+13ITQ9lydfkdu60gJs\nt1nRd+bY4GEFFfsxoBu9KMbHx2PBggWYOXMmIiIiYDAY0NfXh/7+fvT19Q37uPC53t7eYZ+z273v\nCrBarcbAwABaWlpw5swZ9PT0jHgfCoUC1157La6//nqsXr3aJ0vqxVrPnYNMEyR0DPJhuvZWzJoQ\nJ3QMcgOi6upqx0hfbGhowNy5c12ZZ8yWrcxC39TVCJ69QugoROPO4XDA2HIajflvQXyuBjrd6Au9\nIiIikJWVhZycHGRmZl7WyTAOhwNGo/Gyiq07FuDxdnEBHu3q78VXgL9q3OVcAS4uLsZ9990HmUyG\n0NBQhIeHD/s1LCxs6CM0NBR+fq6Z/vTZzj1ASAI0Wl7dItdzOByoKz2EDaszff7Fo68oKSlBXNxX\nv0DxmsK6bds23PvEs0j8nz9c1TGYRO6sv6Eaxm2v4ZMP3kN+fj7y8/Oxf/9+WK0jTx1QqVRYsWIF\ncnNzsXr1agQFueaKGQvwcKMV4I8//viK7isgIOAry+yXi214eDg0Gs2YnhNNJhM+3LYTibMX8jmV\nBNHV3ga1qR3LFi8SOgq5iE8UVrvdjmsWL4V97gZeZSWvZbdacPy5DThdcxL+/v4AAJ1Oh4KCAuTl\n5WHHjh3o7+8f8fYSiQQLFy5EdnY2cnJykJDgOcccflUB7u3tRXl5Ofbs2YOioiJ0dnaOeHuxWAyV\nSgWpVAqr1QqDweDRBfhy+fn5DSu2I125DQsLQ0hICKTSwZlijY2N2F9Vj/jJPI6VhFFXeRTL50zl\nkdQ+xCcKKwAcOnQIN962GckPvnVZR14SeaKzf7wXf//jK0hPT7/ka2azGXv37kV+fj62bduGlpaW\nUe8rJSVlqLzOnj3bI66kXenCqaysLFx33XWXLJz6qgJ84UruxVd2R7sK7E1XgIHBedbBwcGD0w4U\nCigDwxAeFYPAkFAEBocgMDh08OP87xVKPs+Sc/T36tHfWI31Wdd6xPMSjQ+fKawAcMf37sHhLjEi\n19wldBQip2j+xzP4xSN3Izc3d9RxdrsdpaWlyM/PR15eHqqqqkYdHx0djezsbGRnZ2Px4sVudQTi\neJVUZ2ccawHOz893Scbx5qdQfqnMhgz+PigEgSFh0AaHIDllBlRqf6Gjkoepr6nEvMRwJCUlCR2F\nXMinCmtbWxvmLViIhLt+DWV4vNBxiMZdy8cv47GbVmPTpk1XdLva2lrk5eUhPz8fhw4dGvVqoEaj\nwcqVK5GTk4NVq1YhICDgamNfMU8oqePl+eefx8svvyx0DKdITJ6K373nmYWchGEZMKOl6gi+kb0S\nMplM6DjkQj5VWAHgD3/8E37z7keI2/wi30ogr9Oc/wbuWJyMhx56aMz30dnZic8++wz5+fn44osv\nYDAYRhwrlUqRkZGBnJwcZGdnIzY2dsyP+3V8qaR+WVNTEwYGBmCz2Ub8sNvtsFqto37ObrfDZrNd\n8rnLGXPhc+3t7egwWKBU+cNut8FmtcFuP/9hs4/8OZsNdpvt/H8Pfm7B0pW4+c57hf7fSx6kpf4M\nJmqlmD1zhtBRyMV8rrBarVYsyFgC0YKbEDxzqdBxiMZV6+73kBMnxosvPD8u92c0GrFnzx7k5eVh\n27ZtaG9vH3X8rFmzhua9pqamXvWLQl8uqe6qYPc+2AJjERDIPVjJtex2O84eK8S6FRnQaMbhxBby\nKKMVVq84OODLpFIpfvvKy7hl8x3QTk2HRM5TWsh7SNUBONdeN273p1QqkZWVhaysLNhsNhQXFw9t\nmVVTU3PJ+LKyMpSVleHFF19EfHw81qxZg5ycHCxcuPCy375jSXVfNpsN7To94uJcPw2EqKujDXHh\nQSyrdAmvvMJ6wR13fx9FzUZEXfeA0FGIxo2u8iDCa7/Afz/+wOmPVVNTM7Ro6/Dhw3A4Rny6QGBg\nIFavXo3s7GysWLHikh84LKmeobu7G9sOHsWE1DSho5APqi0vxsr5MxAeHi50FBKAz11hveCVl36B\nBRlL0F2xH0GpGULHIRoXEoUa+t5elzxWcnIykpOTcf/996OtrQ3btm1Dfn4+du/eDZPJNGysTqfD\ne++9h/feew9yuRyZmZnIzs5GQkIC9u3bx5LqIXQ6HaRKXl0l1+vV90ArFyEsLEzoKOSGvLqwBgQE\n4O03X8cNt9wGddxUyANChI5EdNVsZgOC1GqXP254eDg2bdqETZs2ob+/Hzt37kR+fj62b9+Orq6u\nYWMHBgZQUFCAgoKCUe+TJdX9tLR1QunPwkqu193aiAXJE7lYmr6SVxdWAFiwYAHuvvO7+PuHv0T8\nd16ASDzyed5EnsBmMkCrFbZQqNVqrF27FmvXroXVakVhYSHeeecd7NixAz09PaPeViQSISkpCTfe\neCPuvvtuzlVzM60dXQhJ5paA5Fpmkwlikx6xsZceiEIEAGKhA7jC4z94DPEaGdp2/kPoKERXzWbq\nR5BWK3QMOBwOlJWV4YUXXsB9992HDz744GvL6oXbnTp1Ci+88ALmzp2LLVu2IC8vb9Sttcg1+vv7\nYbIBcj8/oaOQj2lrqsOMyYlDRwMTfZlP/M2QSqX4+9tvISNzGZTxKQhI5mIC8lw2Ux+Co4UprFe6\ncCozMxMRERE4e/YsDhw4gIGBgWFjOjs78c9//hP//Oc/oVQqsWzZMmRnZyMrK4vz2ATQ3d0NiYqn\nUpFrmYxGiPq7MTFxjtBRyI35RGEFgMjISLz91hu4dfMdUHz/d5AH8ocheSaH2YCgwAjXPd44re7X\n6/X4/PPPkZ+fj88++wx6vX7YbY1G49B2WiKRCOnp6UP7vU6aNMlZ3x5dpKOrG3IV56+Sa7U11WHW\n5ES3Og6a3I/PFFYAWLJkCR6+fwt+95enMOGuX0OicP3CFaKrJRowOP2oVGdsQRUQEICNGzdi48aN\nsFgsOHDgwNCWWY2NjZc8fmFhIQoLC/Hss88iOTkZubm5yM7ORlpaGsRin5jN5HLNbZ3QRPLsdnId\nk9EIsUGHpIl855NG59X7sH4Vh8OBBx9+FNuKjiPu2z+DWMpzismzNP39KfzyB/+D3Nzccb1fofZJ\ndTgcKC8vx9atW5Gfn4/jx4+POj4iIgJZWVnIyclBZmYmFArFmB+b/o/NZsP/frodE2Yv4iptcpmG\nU1WYFRuMKVMmCx2F3IDPHc36dWw2G2689Tac6AGir3+MT87kMRwOB068cCMO7duNmJiYcbk/d9vM\nv6GhYWhqwP79+2G1WkfNtGLFCuTm5mL16tUICuJRomOl1+uRt+8wElLnCR2FfITJaEBHTRk2rLn2\nsk/JI+/GwvoVDAYDVuesRW/EDESs2ix0HKLLYu4+h/o/348zNdVjfqHljiV1JDqdDgUFBdi6dSsK\nCgrQ398/4liJRIKFCxcOzXtNSEhwYVLP19zcjH2VdYhLThU6CvmI+ppKzIkPxeTJyUJHITfBwjqC\n9vZ2LFu5Gn4Lrkdo+vi+vUrkDN3H9yKyYS8+/ej9K7qdJ5XUkZjNZuzduxf5+fnYtm0bWlpaRh2f\nkpIyVF5nz57Nd1K+xsmTJ3H8XD+i4ycKHYV8gMloQMepMmzI4tVV+j8srKM4ffo0Vq7JQdj6hxA4\nbYHQcYhG1bL9LdwyNxY/euLxrx3rDSV1JHa7HaWlpUOLtqqqqkYdHx0djezsbGRnZ2Px4sVcjfwV\nCotL0O7wR0i463agIN9VX1OJOQmhmJzMq6v0f0YrrD61S8BXSUpKwnv/eBffuPFmiG9+CgFJs4WO\nRDQiW+spzEtbP+LXvbmkXkwsFmPu3LmYO3cunnzySdTW1iIvLw/5+fk4dOgQ7Hb7sPHNzc146623\n8NZbb0Gj0WDlypXIycnBqlWrnL7jgqfo6umFMjJc6BjkA0xGAyRmPSYmzhc6CnkQn7/CesGePXtw\n2+bvIur6H0A7hf+IyP04bDZUPn8DjhYXITz8/4qFr5TUy9XZ2YnPPvsM+fn5+OKLL0Y9QUsqlWLx\n4sXIycnBmjVrEBsb68Kk7sPhcOBfn+QjbuY1kEh4fDU5V31NBeZOCEcy91emL+GUgMt06NAh3HTr\nbYi47iEEpi4SOg7RMD0niyEp/CcO7P6CJfUyGY1G7NmzB3l5edi2bRva29tHHT9r1qyhea+pqak+\nM+/VYDDgk8/3YcJMTosi5+rr1aO/4QTWrV7BF0d0CRbWK1BSUoJvfPMmhOVuQdDMpULHIRrS/NHL\nWDcrHkqlgiV1DGw2G4qLi4e2zKqpqRl1fHx8PNasWYOcnBwsXLjQqxeGtLe3Y2fJCcRNnSl0FPJy\ntRUlyJyZ7LPvZtDoWFivUHl5OdZvvB7Bq+5A8NxVQschH+ZwOGBoqkFX2U607fkADod9xLEsqVem\npqZmaNHW4cOH4XCM+FSIwMBArF69GtnZ2VixYgU0Go0LkzpfXV0dDtd2IHYiF8CQ83S1t0He14qV\nSxf7zLsXdGVYWMfgxIkTWLthI7SZ30IIt7wiF7pQUruP70F32S6Yu0bevokldXy0tbVh27ZtyM/P\nx65du2A2m0ccK5fLkZmZOTTvNTIy0oVJnaP02HGc7RcjPJpXvcg57HY76o4fxpqMNISEhAgdh9wU\nC+sYnTlzBtlr10OZthZhmTfyFSE5DUuq++jv78fOnTuRn5+P7du3o6ura9TxaWlpyMnJQXZ2NqZM\nmeKRzxM79x2E2T8S2qBgoaOQl2ptPIso+QCumc+T1GhkLKxXobGxEdffdAv6NHGI2vAAxFLu30jj\n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\nSUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x3e70c18>"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Here on the left we show an ellipse depicting the $1\\sigma$ distribution of two variables. The arrows show how three randomly sampled points might be transformed by some arbitrary nonlinear function to a new distribution. The ellipse on the right is drawn semi-transparently to indicate that it is an *estimate* of the mean and variance of this collection of points - if we were to sample, say, a million points the shape of the points might be very far from an ellipse. "
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Choosing Sigma Points"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "So what would be fewest number of sampled points that we can use, and what kinds of constraints does this problem formulation put on the points? We will assume that we have no special knowledge about the nonlinear tranform as we want to find a generalized algorithm. For reasons that come clear in the next section, we will call these points *sigma points*.\n",
      "\n",
      "Let's consider the simplest possible case, and see if it offers any insight. The simplest possible system is *identity* - the transformation does not alter the input. It should be clear that if this does not work then the filter will never converge.\n",
      "\n",
      "The fewest number of points that we can use is one per dimension. This is the number that the linear Kalman filter uses. The input to a Kalman filter for the distribution $\\mathcal{N}(\\mu,\\sigma^2)$ is just $\\mu$ itself. So while this works for the linear case, it is not a good answer for the nonlinear case.\n",
      "\n",
      "If we were to pass some value $\\mu+\\Delta$ instead, the identity system would not converge, so this is not a possible algorithm. Since we cannot set our one point sample to $\\mu$, or any value that is not $\\mu$, we must conclude that a one point sample will not work.\n",
      "\n",
      "So, what is the next lowest number we can choose? Consider the fact that Gaussians are symmetric, and that we probably want to always have one of our sample points be the mean of the input. Two points would require us to select the mean, and then one other point. That one other point would introduce an asymmetry in our input that we probably don't want. I recognize that this is rather vague, but I don't want to spend a lot of time on a scheme that doesn't work. \n",
      "\n",
      "The next lowest number is 3 points. 3 points allows us to select the mean, and then one point on each side of the mean, as depicted on the chart below."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ukf_internal.show_3_sigma_points()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0xa583a58>"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "For this to work for identity we will want the sums of the weights to equal one. We can always come up with counterexamples, but in general if the sum is greater or less than one the sampling will not yield the correct output. Given that, we then have to select *sigma points* $\\mathcal{X}$ and their corresponding weights so that they compute to the mean and variance of the input Gaussian. So we can write\n",
      "\n",
      "$$\\begin{aligned}\n",
      "1 &= \\sum_i{w_i}\\;\\;\\;&(1) \\\\\n",
      "\\mu &= \\sum_i w_i\\mathcal{X}_i\\;\\;\\;&(2) \\\\\n",
      "\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^T}\\;\\;\\;&(3)\n",
      "\\end{aligned}\n",
      "$$\n",
      "\n",
      "If we look at this is should be clear that there is no one unique answer - the problem is unconstrained. For example, if you choose a smaller weight for the point at the mean for the input, you could compensate by choosing larger weights for the rest of the $\\mathcal{X}$, and vice versa if you chose a larger weight for it. Indeed, these equations do not require that any of the points be the mean of the input at all, though it seems 'nice' to do so, so to speak.\n",
      "\n",
      "Methods for selecting these sigma points is it own topic. In the next section I will develop the most typically used method in practice. It has the virtue of requiring only 3 sigma points per dimension, which is far lower than we might expect to provide good results. Despite the low number of points, the computations for the weight selections are very easy and efficient, and the numerical performance of the filter is as good as, and usually better than the EKF.\n",
      "\n",
      "But before we go on I want to make sure the idea is clear. We are choosing 3 points for each dimension in our covariances. That choice is *entirely deterministic*. Below are three different examples for the same covariance ellipse."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ukf_internal.show_sigma_selections()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAqwAAAFdCAYAAADG5D8RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl3XGWCJvgn9k2KXQrtu2zLtrzjFYMNmB0MmSRkGuYU\nU9V9Tk2dk91foT9Bz5wzc05PT3dlTeVUUkmSZAJJQtoGA7bxvsi2bCFZ+77ELsW+3PnDC8aSIbTF\neyPu8/svw2l4sHXjPve976Lq7u6WQEREREQkU2rRAYiIiIiIfgwLKxERERHJGgsrEREREckaCysR\nERERyRoLKxERERHJGgsrEREREcma9sd+0e/3IxKJ5CsLERERESmUXq+Hx+NZ8Nd+tLBGIhFs27Zt\nVUIREREREd1z5cqVR/4apwQQERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGw\nEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbAS\nERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIR\nERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhER\nEZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERER\nkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGR\nrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGs\nsbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayx\nsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGwEhEREZGssbASERERkayxsBIRERGRrLGw\nEhEREZGssbASERERkaxpRQcgecpms5idnYXf74ff70cymUQmk0EylQIAaDUaaLVaaLVa2O12OJ1O\n2O12aLX8kSJlyGazCIVC8Pl8CAQCSKVSSKfTSGcyAL6/RnQ6HRwOB1wuF2w2G9RqjhOQMqTTaQSD\n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\nAVDIna1qjBD6AAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x3e707f0>"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Note that while I chose the points to lie along the major and minor axis of the ellipse, nothing in the constraints above require me to do that; however, it is fairly typical to do this. Furthermore, in each case I show the points evenly spaced; again, the constraints above do not require that. However, the technique that we develop in the next section *does* do this. It is a reasonable choice, after all; if we want to accurately sample our input it makes sense to sample in a symmetric manner."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "The Unscented Transform"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "So our desire is to have an algorithm for selecting sigma points based on some criteria. Maybe we know something about our nonlinear problem, and we know we want our sigma points to be very close together, or very far apart. Or through experimentation we decide that a certain choice of basis vectors from our hyperellipse are the best axis to choose our sigma points from. But we want this to be an algorithm - we don't want to have to hard code in a specific selection algorithm for each different problem. So we are going to want to be able to set some parameters to tell the algorithm how to automatically select the points and weights for us. That may seem a bit abstract, so let's just launch into it, and try to develop an intuitive understanding as we go.\n",
      "\n",
      "Our first choice is always going to be the mean of our input. We will number this $\\mathcal{X}_0$. So,\n",
      "\n",
      "$$ \\mathcal{X}_0 = \\mu$$\n",
      "\n",
      "So for each dimension we need to select 2 more points. We want them to be symmetric around the mean so that for the linear case they cancel out and we are just left with the mean as the result. Here is how we are going to do that:\n",
      "\n",
      "\n",
      "$$ \n",
      "\\begin{aligned}\n",
      "\\mathcal{X}_i &= \\mu + (\\sqrt{(n+\\lambda)\\Sigma})_i\\,\\,\\,\\, &\\text{for i=1..n} \\\\\n",
      "\\mathcal{X}_i &= \\mu - (\\sqrt{(n+\\lambda)\\Sigma})_{i-n}\\,\\,\\,\\, &\\text{for i=n+1..2n}\n",
      "\\end{aligned}\n",
      "$$\n",
      "\n",
      "Let's talk through this. For the moment, just think of this in one dimension, so we can ignore the subscript $i$. $n$ is just our dimensionality, and $\\lambda$ is a scaling factor that controls how far away from the mean we want the points to be. A larger lambda will choose points further away from the mean, and a smaller lambda will choose points nearer the mean. So in one dimension we get something like:\n"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import stats\n",
      "import math\n",
      "\n",
      "# generate the Gaussian data\n",
      "\n",
      "xs = np.arange(-4, 4, 0.1)\n",
      "mean = 0\n",
      "sigma = 1.5\n",
      "ys = [stats.gaussian(x, mean, sigma*sigma) for x in xs]\n",
      "\n",
      "def sigma_points (mean, sigma, lambda_):\n",
      "    sigma1 = mean + math.sqrt ((1+lambda_)*sigma) \n",
      "    sigma2 = mean - math.sqrt ((1+lambda_)*sigma) \n",
      "    return mean, sigma1, sigma2\n",
      "    \n",
      "#generate our samples\n",
      "lambda_ = 1.4\n",
      "x0,x1,x2 = sigma_points (mean,sigma,lambda_)\n",
      "\n",
      "samples = [x0,x1,x2]\n",
      "for x in samples:\n",
      "    p1 = plt.scatter ([x], [stats.gaussian(x, mean, sigma*sigma)], s=80, color='k')\n",
      "\n",
      "lambda_ = 0.5\n",
      "x0,x1,x2 = sigma_points (mean,sigma,lambda_)\n",
      "\n",
      "samples = [x0,x1,x2]\n",
      "for x in samples:\n",
      "    p2 = plt.scatter ([x], [stats.gaussian(x, mean, sigma*sigma)], s=80, color='b')\n",
      "\n",
      "plt.legend([p1,p2],['$\\lambda$=1.4', '$\\lambda$=0.5'])\n",
      "plt.plot(xs, ys)\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0xa7d3588>"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Here I have plotted two different choices for lambda - 05 and 1.4 - to show how lambd affects the distribution of the points. \n",
      "\n",
      "Perhaps the reason for calling these sigma points is clear. While we are not selecting exactly $1\\sigma$ for the position of our points, we are scaling by some factor of $\\sigma$.\n",
      "\n",
      "\n",
      "On to larger dimensions ($n>1$). The term $(\\sqrt{(n+\\lambda)\\Sigma})_i$ has to be a matrix because $\\Sigma$ is a matrix. The subscript $i$ is choosing the column vector of the matrix. And thus the square root is not the square root of a scalar, but of a matrix.\n",
      "\n",
      "What is the 'square root of a matrix'? The usual definition is that the square root of a matrix $\\Sigma$ is just the matrix $S$ that, when multiplied by itself, yields $\\Sigma$.\n",
      "\n",
      "$$\n",
      "\\begin{aligned}\n",
      "\\text{if }\\Sigma = SS \\\\\n",
      "\\\\\n",
      "\\text{then }S = \\sqrt{\\Sigma}\n",
      "\\end{aligned}\n",
      "$$\n",
      "\n",
      "However, there is an alternative definition, and we will chose that because it has numerical properties that makes it much easier for us to compute its value. We can alternatively define the square root as a matrix S, when multiplied by its transpose, returns $\\Sigma$:\n",
      "$$\n",
      "\\Sigma = SS^T \\\\\n",
      "$$\n",
      "\n",
      "If this makes you uncomfortable, I advise not worrying about it. We are just defining an algorithm for choosing our sigma points; if the 'square' root in method of computation ($SS$) is slightly different than the other case ($SS^T), it shouldn't really matter. Plus, this still works for the one dimensional case, as the transpose of a scalar is just the scalar. \n",
      "\n",
      "I will derive the math for computing this in a later section in this chapter. For now I will say that this is a well worn area of linear algebra, and performing this 'square root' uses something called the Cholesky decomposition. This is a library procedure that is available in any linear algebra library. For example, numpy provides it in `numpy.linalg.cholesky()`, and we will be using that function in our code. If your language of choice is Fortran, C, C++, or the like the standard libraries like LAPACK also provide this routine. And, of course, matlab provides `chol()`, which does the same thing."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Implementation"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "So let's just implement this algorithm. First, let's write the code to compute the mean and covariance given the sigma points. Unfortunately, this requires a short diversion into the intricacies of numpy's data types. Through historical accidents, numpy provides several data structures to represent matrices, and they do not 'play well' with each other. Most sources recommend using the type `numpy.array`, however, it is quite cumbersome to use for intensive linear algebra. Since everything I do in this book is linear algebra, I choose to use `numpy.matrix` instead. Fortunately, numpy provides `numpy.asmatrix()`. It will convert a variable to `numpy.matrix` if it is not already one; better yet, it will turn a scalar into a $1{\\times}1$ matrix. The result is that we can pass scalars, `numpy.array`'s, or `numpy.matrix`s into my code and it will work.\n",
      "\n",
      "So we will store the sigma points and weights in matrices, like so:\n",
      "\n",
      "$$ \n",
      "\\begin{aligned}\n",
      "weights &= \n",
      "\\begin{bmatrix}\n",
      "w_1&w_2& \\dots & w_n\n",
      "\\end{bmatrix} \n",
      "\\\\\n",
      "sigmas &= \n",
      "\\begin{bmatrix}\n",
      "\\mathcal{X}_{0,0} & \\mathcal{X}_{0,1} & \\dots & \\mathcal{X}_{0,n} \\\\\n",
      "\\mathcal{X}_{1,0} & \\mathcal{X}_{1,1} & \\dots & \\mathcal{X}_{1,n} \\\\\n",
      "\\mathcal{X}_{2,0} & \\mathcal{X}_{2,1} & \\dots & \\mathcal{X}_{2,n}\n",
      "\\end{bmatrix}\n",
      "\\end{aligned}\n",
      "$$\n",
      "\n",
      "In other words, each column contains the 3 sigma points for one dimension in our problem. The $0th$ sigma point is always the mean, so first row of sigma's contains the mean of each of our dimensions. The second row contains the $\\mu+(\\sqrt{(n+\\lambda)\\Sigma})$ term, and the third row contains the $\\mu-(\\sqrt{(n+\\lambda)\\Sigma})$ term."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import numpy as np\n",
      "\n",
      "def unscented_transform (Xi, W, NoiseCov=None):\n",
      "    \"\"\" computes the unscented transform of a set of signma points and weights.\n",
      "    returns the mean and covariance in a tuple\n",
      "    \"\"\"\n",
      "    W = np.asmatrix(W)\n",
      "    Xi = np.asmatrix(Xi)\n",
      "\n",
      "    n, kmax = Xi.shape\n",
      "\n",
      "    # initialize results to 0\n",
      "    mu  = np.mat (np.zeros((n,0)))\n",
      "    cov = np.mat (np.zeros((n,n)))\n",
      "\n",
      "    for col in range (kmax):\n",
      "        mu += W[0,col] * Xi[:,col]\n",
      "\n",
      "    for col in range (kmax):\n",
      "        cov += W[0,col]*(Xi[:,col]-xm) * (Xi[:,col]-xm).T\n",
      "\n",
      "    return (mu, cov)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's review a bit of numpy nomenclature. The odd looking\n",
      "\n",
      "    Xi[:,i]\n",
      "    \n",
      "terms are merely saying 'take the *ith* column of Xi'. So This produces a $1{\\times}n$ column vector, like so:\n",
      "\n",
      "$$\n",
      "\\begin{bmatrix}\n",
      "\\mathcal{X}_{0,i} \\\\\n",
      "\\mathcal{X}_{1,i} \\\\\n",
      "\\mathcal{X}_{2,i}  \\\\\n",
      "\\vdots \\\\\n",
      "\\mathcal{X}_{n,i} \n",
      "\\end{bmatrix}\n",
      "$$"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This is confusing if you haven't seen it before so I will belabor this point. Read this as $\\tt Xi[A,B]$, where $\\tt A$ indexes the row, and $\\tt B$ the column. In this case the row value is ':', which is Python's way to taking a *slice*. For example, for a one dimensional list $\\tt x$, $\\tt x[3:5]$ returns a list containing $\\tt x[3]$ and $\\tt x[4]$. If you leave one of the slice elements out it just selects everything on that side of the slice, so $\\tt x[3:]$ would return a list of elements number 2 to the last element in $\\tt x$. Therefore, $\\tt x[:]$ just returns $\\tt x$ itself - it asks for all elements in $\\tt x$. So, in a form like $\\tt Xi[:,i]$ we take all rows from the ith column; effectively, a 1xn column vector. \n",
      "\n",
      "\n",
      "We write this way in numpy for two reasons. First, it is very close to the mathematical notation our equations use. Second, and more importantly, when you write this way numpy uses C routines to implement the functionality, making the code much faster. Avoiding for loops in numerical code is 'Pythonic'. If you are used to packages like Matlab you are already familar with notation; if you are coming from a language like C recognize I could have written this loop:\n",
      "\n",
      "    for k in range (kmax):\n",
      "        mu += W[0,k] * Xi[:,k]\n",
      "        \n",
      "as:\n",
      "\n",
      "    for k in range (kmax):\n",
      "       for i in range (n):\n",
      "        mu += W[0,k] * Xi[i,k]\n",
      "\n",
      "\n",
      "\n",
      "So if you look at this code you should see that it is just performing the computations\n",
      "$$\\begin{aligned}\n",
      "\\mu &= \\sum_i w_i\\mathcal{X}_i \\\\\n",
      "\\Sigma &= \\sum_i w_i{(\\mathcal{X}_i-\\mu)(\\mathcal{X}_i-\\mu)^T}\n",
      "\\end{aligned}\n",
      "$$\n",
      "\n",
      "** AUTHOR'S NOTE: break the function up into several cells, explain each cell (convert to matrix, initialize to zero, sum weights, sum variances. Then put into function. easier to explain to student that way**\n",
      "\n",
      "Even if you are not a strong numpy programmer it should be reasonably clear that this is not a difficult bit of code. Furthermore, as with our previous Kalman filter codes, we just need to write it once - we will call this function for *any* problem we are solving, and it will perform the Unscented transform for us."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "We are half done! Now we need to write the function that selects the sigma points based on this term $\\sqrt{(n+\\lambda)\\Sigma}$. It is a bit longer, but still straightforward.\n",
      "\n",
      "** Author's note: have not introduced kappa yet. Also, do we want this form (the original implementaiton of UKF, followed by the scaled UKF, or just jump to scaled UKF?**"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def sigma_points (mu, cov, kappa):\n",
      "    \"\"\" Computes the sigma points and weights for an unscented Kalman filter.\n",
      "    xm are the means, and P is the covariance. kappa is an arbitrary constant\n",
      "    constant. Returns tuple of the sigma points and weights.\n",
      "\n",
      "    Works with scalar, array, and matrix inputs:\n",
      "    sigma_points (5, 9, 2) # mean 5, covariance 9\n",
      "    sigma_points ([5, 2], 9*eye(2), 2) # means 5 and 2, covariance 9I\n",
      "    \"\"\"\n",
      "\n",
      "    mu  = asmatrix(mu)\n",
      "    cov = asmatrix(cov)\n",
      "\n",
      "    n = size(mu)\n",
      "\n",
      "    # initialize to zero\n",
      "    Xi = asmatrix (zeros((n,2*n+1)))\n",
      "    W  = asmatrix (zeros(2*n+1))\n",
      "\n",
      "\n",
      "    # all weights are 1/ 2(n+kappa)) except the first one.\n",
      "    W[0,1:] = 1. / (2*(n+kappa))\n",
      "    W[0,0] = float(kappa) / (n + kappa)\n",
      "\n",
      "\n",
      "    # use cholesky to find matrix square root of (n+kappa)*cov\n",
      "    #  U'*U = (n+kappa)*P\n",
      "    U = asmatrix (cholesky((n+kappa)*cov))\n",
      "\n",
      "    # mean is in location 0.\n",
      "    Xi[:,0] = mu\n",
      "\n",
      "    for col in range (n):\n",
      "        Xi[:,col+1] = mu + U[:,col]\n",
      "\n",
      "    for k in range (n):\n",
      "        Xi[:, n+col+1] = mu - U[:,col]\n",
      "\n",
      "    return (Xi, W)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    }
   ],
   "metadata": {}
  }
 ]
}