{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Discrete Bayes Animations" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from __future__ import division, print_function\n", "import matplotlib.pyplot as plt\n", "import sys\n", "sys.path.insert(0,'..') # allow us to format the book\n", "sys.path.insert(0,'../code') \n", "import book_format\n", "book_format.load_style(directory='..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook creates the animations for the Discrete Bayesian filters chapter. It is not really intended to be a readable part of the book, but of course you are free to look at the source code, and even modify it. However, if you are interested in running your own animations, I'll point you to the examples subdirectory of the book, which contains a number of python scripts that you can run and modify from an IDE or the command line. This module saves the animations to GIF files, which is quite slow and not very interactive. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from matplotlib import animation\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from book_plots import bar_plot\n", "%matplotlib inline\n", "\n", "# the predict algorithm of the discrete bayesian filter\n", "def predict(pos, move, p_correct, p_under, p_over):\n", " n = len(pos)\n", " result = np.array(pos, dtype=float)\n", " for i in range(n):\n", " result[i] = \\\n", " pos[(i-move) % n] * p_correct + \\\n", " pos[(i-move-1) % n] * p_over + \\\n", " pos[(i-move+1) % n] * p_under \n", " return result\n", "\n", "\n", "def normalize(p):\n", " s = sum(p)\n", " for i in range (len(p)):\n", " p[i] = p[i] / s\n", " \n", "# the update algorithm of the discrete bayesian filter\n", "def update(pos, measure, p_hit, p_miss):\n", " q = np.array(pos, dtype=float)\n", " for i in range(len(hallway)):\n", " if hallway[i] == measure:\n", " q[i] = pos[i] * p_hit\n", " else:\n", " q[i] = pos[i] * p_miss\n", " normalize(q)\n", " return q" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc\n" ] }, { "data": { "text/plain": [ "'imagemagick'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib\n", "# make sure our matplotlibrc has been edited to use imagemagick\n", "print(matplotlib.matplotlib_fname())\n", "matplotlib.rcParams['animation.writer']" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nVLj/AxjKbhgNuTcFAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nZAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from gif_animate import animate\n", "\n", "pos = [1.0,0,0,0,0,0,0,0,0,0]\n", "def bar_animate(nframe):\n", " global pos\n", " plt.cla()\n", " bar_plot(pos)\n", " plt.title('Step {}'.format(nframe + 1))\n", " pos = predict(pos, 1, .8, .1, .1)\n", "\n", "for i in range(10):\n", " bar_animate(i)\n", "\n", "fig = plt.figure(figsize=(6.5, 2.5))\n", "animate('02_no_info.gif', bar_animate, fig=fig, frames=75, interval=75);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "pos = np.array([.1]*10)\n", "hallway = np.array([1, 1, 0, 0, 0, 0, 0, 0, 1, 0])\n", "\n", "def bar_animate(nframe):\n", " global pos\n", " #if nframe == 0:\n", " # return\n", "\n", " bar_plot(pos, ylim=(0,1.0))\n", " plt.title('Step {}'.format(nframe + 1))\n", " if nframe % 2 == 0:\n", " pos = predict(pos, 1, .9, .05, .05)\n", " else:\n", " x = int((nframe/2) % len(hallway))\n", " z = hallway[x]\n", " pos = update(pos, z, .9, .2)\n", " \n", "\n", "fig = plt.figure(figsize=(6.5, 2.5))\n", "animate('02_simulate.gif', bar_animate, fig=fig, frames=40, interval=85);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " " ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }