{ "metadata": { "name": "", "signature": "sha256:1568d7eace109a897f26c20926949194b306e944d6d27966ba05152dc1a87ae6" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Basic Commands" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We started the notebook using 'ipython notebook' and then clicked 'New Notebook'. We did not load matplotlib automatically, but we do it now (this is the recommended procedure)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 'inline' option will show the plots within the notebook, instead of opening a different window." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Making a simple plot" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "x = np.linspace(0, 3.* np.pi, 500)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, np.sin(x**2))\n", "plt.title('A simple chirp');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "a=10" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "print(a)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "%load http://matplotlib.org/mpl_examples/showcase/integral_demo.py" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "IOError", "evalue": "[Errno socket error] [Errno -3] Temporary failure in name resolution", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mIOError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mget_ipython\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmagic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mu'load http://matplotlib.org/mpl_examples/showcase/integral_demo.py'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mmagic\u001b[0;34m(self, arg_s)\u001b[0m\n\u001b[1;32m 2203\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marg_s\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpartition\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m' '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2204\u001b[0m \u001b[0mmagic_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmagic_name\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlstrip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprefilter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mESC_MAGIC\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2205\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_line_magic\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmagic_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmagic_arg_s\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2206\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2207\u001b[0m \u001b[0;31m#-------------------------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mrun_line_magic\u001b[0;34m(self, magic_name, line)\u001b[0m\n\u001b[1;32m 2124\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'local_ns'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstack_depth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mf_locals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2125\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2126\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2127\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2128\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mload\u001b[0;34m(self, arg_s)\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/core/magic.pyc\u001b[0m in \u001b[0;36m\u001b[0;34m(f, *a, **k)\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[0;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 193\u001b[0;31m \u001b[0mcall\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 194\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/core/magics/code.pyc\u001b[0m in \u001b[0;36mload\u001b[0;34m(self, arg_s)\u001b[0m\n\u001b[1;32m 305\u001b[0m 'or macro.')\n\u001b[1;32m 306\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 307\u001b[0;31m \u001b[0mcontents\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshell\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfind_user_code\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 308\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 309\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m's'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mopts\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.pyc\u001b[0m in \u001b[0;36mfind_user_code\u001b[0;34m(self, target, raw, py_only, skip_encoding_cookie)\u001b[0m\n\u001b[1;32m 3128\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3129\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mutarget\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstartswith\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'http://'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'https://'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3130\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopenpy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_py_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mutarget\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_encoding_cookie\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mskip_encoding_cookie\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3131\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mUnicodeDecodeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3132\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mpy_only\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/dist-packages/IPython/utils/openpy.pyc\u001b[0m in \u001b[0;36mread_py_url\u001b[0;34m(url, errors, skip_encoding_cookie)\u001b[0m\n\u001b[1;32m 213\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0murllib\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 215\u001b[0;31m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0murlopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 216\u001b[0m \u001b[0mbuffer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mBytesIO\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msource_to_unicode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskip_encoding_cookie\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/urllib.pyc\u001b[0m in \u001b[0;36murlopen\u001b[0;34m(url, data, proxies, context)\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[0mopener\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_urlopener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 86\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 87\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 88\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mopener\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/urllib.pyc\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, fullurl, data)\u001b[0m\n\u001b[1;32m 211\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 212\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 213\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 214\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/urllib.pyc\u001b[0m in \u001b[0;36mopen_http\u001b[0;34m(self, url, data)\u001b[0m\n\u001b[1;32m 348\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrealhost\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mputheader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Host'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrealhost\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0margs\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maddheaders\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mputheader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 350\u001b[0;31m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mendheaders\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 351\u001b[0m \u001b[0merrcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrmsg\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetreply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0mfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetfile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/httplib.pyc\u001b[0m in \u001b[0;36mendheaders\u001b[0;34m(self, message_body)\u001b[0m\n\u001b[1;32m 1051\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1052\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mCannotSendHeader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1053\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_send_output\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage_body\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1054\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1055\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbody\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheaders\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/httplib.pyc\u001b[0m in \u001b[0;36m_send_output\u001b[0;34m(self, message_body)\u001b[0m\n\u001b[1;32m 895\u001b[0m \u001b[0mmsg\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0mmessage_body\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 896\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 897\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 898\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmessage_body\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 899\u001b[0m \u001b[0;31m#message_body was not a string (i.e. it is a file) and\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/httplib.pyc\u001b[0m in \u001b[0;36msend\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 857\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msock\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 858\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mauto_open\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 859\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconnect\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 860\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 861\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mNotConnected\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/httplib.pyc\u001b[0m in \u001b[0;36mconnect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 834\u001b[0m \u001b[0;34m\"\"\"Connect to the host and port specified in __init__.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 835\u001b[0m self.sock = self._create_connection((self.host,self.port),\n\u001b[0;32m--> 836\u001b[0;31m self.timeout, self.source_address)\n\u001b[0m\u001b[1;32m 837\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 838\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_tunnel_host\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/lib/python2.7/socket.pyc\u001b[0m in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address)\u001b[0m\n\u001b[1;32m 555\u001b[0m \u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0maddress\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 556\u001b[0m \u001b[0merr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 557\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mgetaddrinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhost\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mport\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSOCK_STREAM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 558\u001b[0m \u001b[0maf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msocktype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcanonname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msa\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 559\u001b[0m \u001b[0msock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mIOError\u001b[0m: [Errno socket error] [Errno -3] Temporary failure in name resolution" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Plot demonstrating the integral as the area under a curve.\n", "\n", "Although this is a simple example, it demonstrates some important tweaks:\n", "\n", " * A simple line plot with custom color and line width.\n", " * A shaded region created using a Polygon patch.\n", " * A text label with mathtext rendering.\n", " * figtext calls to label the x- and y-axes.\n", " * Use of axis spines to hide the top and right spines.\n", " * Custom tick placement and labels.\n", "\"\"\"\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Polygon\n", "\n", "\n", "def func(x):\n", " return (x - 3) * (x - 5) * (x - 7) + 85\n", "\n", "\n", "a, b = 2, 9 # integral limits\n", "x = np.linspace(0, 10)\n", "y = func(x)\n", "\n", "fig, ax = plt.subplots()\n", "plt.plot(x, y, 'r', linewidth=2)\n", "plt.ylim(ymin=0)\n", "\n", "# Make the shaded region\n", "ix = np.linspace(a, b)\n", "iy = func(ix)\n", "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", "ax.add_patch(poly)\n", "\n", "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", " horizontalalignment='center', fontsize=20)\n", "\n", "plt.figtext(0.9, 0.05, '$x$')\n", "plt.figtext(0.1, 0.9, '$y$')\n", "\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "ax.xaxis.set_ticks_position('bottom')\n", "\n", "ax.set_xticks((a, b))\n", "ax.set_xticklabels(('$a$', '$b$'))\n", "ax.set_yticks([])\n", "\n", "plt.show()\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Plot demonstrating the integral as the area under a curve.\n", "\n", "Although this is a simple example, it demonstrates some important tweaks:\n", "\n", " * A simple line plot with custom color and line width.\n", " * A shaded region created using a Polygon patch.\n", " * A text label with mathtext rendering.\n", " * figtext calls to label the x- and y-axes.\n", " * Use of axis spines to hide the top and right spines.\n", " * Custom tick placement and labels.\n", "\"\"\"\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Polygon\n", "\n", "\n", "def func(x):\n", " return (x - 3) * (x - 5) * (x - 7) + 85\n", "\n", "\n", "a, b = 2, 9 # integral limits\n", "x = np.linspace(0, 10)\n", "y = func(x)\n", "\n", "fig, ax = plt.subplots()\n", "plt.plot(x, y, 'r', linewidth=2)\n", "plt.ylim(ymin=0)\n", "\n", "# Make the shaded region\n", "ix = np.linspace(a, b)\n", "iy = func(ix)\n", "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", "ax.add_patch(poly)\n", "\n", "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", " horizontalalignment='center', fontsize=20)\n", "\n", "plt.figtext(0.9, 0.05, '$x$')\n", "plt.figtext(0.1, 0.9, '$y$')\n", "\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "ax.xaxis.set_ticks_position('bottom')\n", "\n", "ax.set_xticks((a, b))\n", "ax.set_xticklabels(('$a$', '$b$'))\n", "ax.set_yticks([])\n", "\n", "plt.show()\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Plot demonstrating the integral as the area under a curve.\n", "\n", "Although this is a simple example, it demonstrates some important tweaks:\n", "\n", " * A simple line plot with custom color and line width.\n", " * A shaded region created using a Polygon patch.\n", " * A text label with mathtext rendering.\n", " * figtext calls to label the x- and y-axes.\n", " * Use of axis spines to hide the top and right spines.\n", " * Custom tick placement and labels.\n", "\"\"\"\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Polygon\n", "\n", "\n", "def func(x):\n", " return (x - 3) * (x - 5) * (x - 7) + 85\n", "\n", "\n", "a, b = 2, 9 # integral limits\n", "x = np.linspace(0, 10)\n", "y = func(x)\n", "\n", "fig, ax = plt.subplots()\n", "plt.plot(x, y, 'r', linewidth=2)\n", "plt.ylim(ymin=0)\n", "\n", "# Make the shaded region\n", "ix = np.linspace(a, b)\n", "iy = func(ix)\n", "verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]\n", "poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')\n", "ax.add_patch(poly)\n", "\n", "plt.text(0.5 * (a + b), 30, r\"$\\int_a^b f(x)\\mathrm{d}x$\",\n", " horizontalalignment='center', fontsize=20)\n", "\n", "plt.figtext(0.9, 0.05, '$x$')\n", "plt.figtext(0.1, 0.9, '$y$')\n", "\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "ax.xaxis.set_ticks_position('bottom')\n", "\n", "ax.set_xticks((a, b))\n", "ax.set_xticklabels(('$a$', '$b$'))\n", "ax.set_yticks([])\n", "\n", "plt.show()\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "How to fit an elephant (code from Piotr Zolnierczuk listed in [John D. Cook's blog](www.johndcook.com/blog/2011/06/21/how-to-fit-an-elephant/))" ] }, { "cell_type": "code", "collapsed": false, "input": [ "\"\"\"\n", "Author: Piotr A. Zolnierczuk (zolnierczukp at ornl dot go)\n", "\n", "Based on a paper by:\n", "Drawing an elephant with four complex parameters\n", "Jurgen Mayer, Khaled Khairy, and Jonathon Howard,\n", "Am. J. Phys. 78, 648 (2010), d.o.i.:10.1119/1.3254017\n", "\"\"\"\n", "\n", "# elephant parameters\n", "p1, p2, p3, p4 = (50 - 30j, 18 + 8j, 12 - 10j, -14 - 60j)\n", "p5 = 40 + 20j # eyepiece\n", "\n", "def fourier(t, C):\n", " f = np.zeros(t.shape)\n", " A, B = C.real, C.imag\n", " for k in range(len(C)):\n", " f = f + A[k]*np.cos(k*t)+ B[k]*np.sin(k*t)\n", " return f\n", "\n", "def elephant(t, p1, p2, p3, p4, p5):\n", " npar = 6\n", " Cx = np.zeros((npar,), dtype='complex')\n", " Cy = np.zeros((npar,), dtype='complex')\n", " \n", " Cx[1] = p1.real*1j\n", " Cx[2] = p2.real*1j\n", " Cx[3] = p3.real\n", " Cx[5] = p4.real\n", " \n", " Cy[1] = p4.imag + p1.imag*1j\n", " Cy[2] = p2.imag*1j\n", " Cy[3] = p3.imag*1j\n", " \n", " x = np.append(fourier(t, Cx), [-p5.imag])\n", " y = np.append(fourier(t, Cy), [p5.imag])\n", " \n", " return x, y\n", "\n", "x, y = elephant(np.linspace(0, 2.*np.pi, 1000), p1, p2, p3, p4, p5)\n", "plt.plot(y, -x, '.')\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n/wfhEaeDlVPQlQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Exercise: Make it wiggle and wink! (Hint: Look at this implementation in [R](www.r-bloggers.com/a-winking-pink-elephant) )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By looking at the example written in R, we see that the function generating the elephant is basically the same, except for the fact that Cx[4] = Re(p5) - (i-1) is non-zero. The effect of the wiggling elephant is achieved by drawing two lines with slightly different parameters: the variable i takes the values 1, 2.\n", "\n", "The eyepiece is drawn at the position (-Im(p5), Im(p5)), and the winking effect is achieved by alternating symbols between a plain dot and a symbol in R that looks like a rotated S.\n", "\n", "Finally, the two images are alternated by means of an animation.\n" ] }, { "cell_type": "heading", "level": 5, "metadata": {}, "source": [ "Function that generates the elephant as in R: " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def relephant(i,t, p1, p2, p3, p4, p5): #slightly changed definition following example in R, takes additional parameter\n", " # i = 1,2 and does not plot the eyepiece, which will be drawn separately.\n", " npar = 6\n", " Cx = np.zeros((npar,), dtype='complex')\n", " Cy = np.zeros((npar,), dtype='complex')\n", " \n", " Cx[1] = p1.real*1j\n", " Cx[2] = p2.real*1j\n", " Cx[3] = p3.real\n", " Cx[4] = p5.real - (i-1)\n", " Cx[5] = p4.real\n", " \n", " Cy[1] = p4.imag + p1.imag*1j\n", " Cy[2] = p2.imag*1j\n", " Cy[3] = p3.imag*1j\n", " \n", " x = fourier(t, Cx)\n", " y = fourier(t, Cy)\n", " \n", " return x, y\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Draw the two elephant contours" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us test it for different values of i" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# slightly changed elephant parameters\n", "p1, p2, p3, p4 = (50 - 30j, 18 + 8j, 12 - 10j, -14 - 60j)\n", "p5 = 1+20j" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "x1, y1 = relephant(1,np.linspace(0,2*np.pi, 1000), p1,p2,p3,p4,p5)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "x2, y2 = relephant(2,np.linspace(0,2*np.pi, 1000), p1,p2,p3,p4,p5)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "heading", "level": 5, "metadata": {}, "source": [ "Let us plot the two elephants" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(y1,-x1,'.')\n", "plt.plot(y2,-x2,'.')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nUZQU5P8Df+BYzldTO4kAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the eyepiece does not appear, since we left it out from the output of the function 'relephant'\n", "Also, the difference between i=1 and i=2 is not noticeable. Let's try to exagerate it a bit." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x2, y2 = relephant(5,np.linspace(0,2*np.pi, 1000), p1,p2,p3,p4,p5)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(y1,-x1,'.')\n", "plt.plot(y2,-x2,'.')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEACAYAAABbMHZzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXl8VOX1/98nCagxwxIC5DdgiFgoi4rFErRUGepSwSqt\nWGvdBRXctf1WwfqSqG1Fv23dFRVEW7VSxW+lX3E38atUEyTiBjpYZZ2yhPVCFEjy/P64dyZzZyaQ\nMJNZz/v14sXc525PbjKf59xzznMeMcagKIqi5BZ5qe6AoiiKknxU/BVFUXIQFX9FUZQcRMVfURQl\nB1HxVxRFyUFU/BVFUXKQNou/iMwWkfUi8nFYW3cReU1EvhCRV0Wka9i++0RkuYgsEZGjEt1xRVEU\nZf9pj+U/B/hxRNtU4A1jzHeBt4BpACIyFjjMGDMAmAzMTEBfFUVRlATRZvE3xrwLbIloHg886Xx+\n0tkOtv/FOa8G6CoivePrqqIoipIo4vX59zLGrAcwxqwDggLfB1gddtxap01RFEVJAxId8NVaEYqi\nKBlAQZznrxeR3saY9SJSCmxw2tcCh4Qd19dpi0JEdMBQFEXZD4wxsr/nttfyF+dfkPnARc7ni4AX\nw9ovABCRY4CtQfdQLIwxafVv+vTpKe9DpvRL+6R9yoV+pWOf4qXNlr+IPAP4gB4isgqYDswAnhOR\nicBK4CxHzBeIyDgR+RLYCVwcd08VRVGUhNFm8TfGnNPKrhNbOf6q/eqRoiiK0uHoDN8Y+Hy+VHch\nJunYL+1T29A+tZ107Fc69ileJBG+o7g6IGJS3QdFUZRMQ0QwSQz4KoqiKFmAir+iKEoOouKvKIqS\ng6j4K4qi5CAq/oqiKDmIir+iKEoOouKvKIqSg6j4K4qi5CAq/oqiKDmIir+iKEoOouKvKIqSg6j4\nK4qi5CDxruSlKEknsD3A88uex9PJw5rtazig0wGcd8R5eLt4U901RckYtKqnktYEAjD7rxaf7Khi\na8HnFHftxNxt/wU0u47LJ5+pP5zKYd0Pw9pjcebgM3UwULKaeKt6JkT8ReR6YBL2N/IT7JW7vMCz\nQDGwGDjfGNMY41wVf8WFZUFVFbxTa/HHFxfAyVeDZ6P7oMg/eeNuK5ACbhl9C5O+N0kHASUrSbn4\ni4gXeBcYZIzZLSJzgQXAOOB5Y8xzIvIwsMQY80iM81X8lRB+Pxx/PKzf7YeLR4Nnnb0jltiH08pX\nQAcBJVtJl3r++cDBIlIAHAQEgDHAPGf/k8DPEnQvJQuxLHjiCRg0zGJ9ryfgysG28Astwm7C/jXn\nw4I/Q/XNsL3EvS9sYGg0jdxSfQvl95Tz7KfPYu2ykvljKUrakii3zzXA74EG4DXgOuA9Y8xAZ39f\nYIEx5sgY56rln+P4/TB6NKzbEYBJx0K3VfYOwSXkhdKTCd1vZdOWJoZwBof19jJ9OmzYakG/aujx\nOezygG86dNnQco0wyruWs3DiQn0LUDKeeC3/uLN9RKQbMB7oB2wDngNOac81KisrQ599Pl9Wrpep\nxKauDioqoOmgAFx2dIu1D2BAJI9fV0zj+P4j8ZX78BzgcZ1/7rlQW+thzZrTuOGG09iwAfjsXDjs\nZTjl6qhBYMW2FRz96NE8ctojjCkfE3U9RUlXqqurqa6uTtj1EuHzPxP4sTHmUmf7fOBY4Eyg1BjT\nLCLHANONMWNjnK+Wf45SVwcjRkBzVz9cMgoK612Weh55LLp0EcO9w9t0PcuCl1+Gq6/GHgQ6W/Yg\ncOrlcPBmfQtQsop08PmvAo4RkQNFRIATgM+AKuDnzjEXAi8m4F5KluAS/iuHRgl/8UHFLLtyWZuF\nH8DjgbPOgi+/hLlzobjIA8vOgpmfwJbyqHjAim0rGPHYCALbAwn7uRQlU0iUz386cDawB/gQuATo\ni53q2d1pO88YsyfGuWr55xgh4S8MwJRhcLBb+BNlkQcCMGoUrFiB/RbQrxp+chl0Wee6n7fIy6JL\nF+kbgJJRpDzVM15U/HMLvx+GDInt488nn6cnPM24AeMS5osPuoLOOQeamoCiAEwcBd1X2Ac499YB\nQMk0VPyVjCEQgGHDoH67BVOOtAU47E937oS5nHX4WR1yb78ffvhD2LgR+y1g+Ez48Q2u+/cs7Mm7\nF7/LwJKBHdIHRUkk6eDzV5R9Ylm2C6a+HjjspSjhL+9SztgBUfkACWPgQFiyBLxeYLcH6qbAxsGu\nOMDGho0MfWgo/np/h/VDUdIFFX8lKbz0kuN77+6HCee79pUeXMrCSQs7PO3S64VFi8IGgFk18Mx8\n2NkjdEyjaeSHc36oQWAl61G3j9Lh+P0wdCg05llw5SDoEghZ/SUHlfDRlI+S6msPBOyAcyCo792d\njKOCltJT6gJS0h11+yhpTTDjprER290TJvz5kp+SPHvXGwDAloHw4Gewo6e6gJScQcVf6TBcfv4Y\n7p5nzngmZZZ1cADo29dp2DIQZi6BnT1Dx6gLSMlmVPyVDqOqKizH/qIxkN/oSq3syABvW/B6oaYm\n7A1ghxdmvwtNLVVPNjZsZOSskToAKFmHir/SIQQCMHmys9GvKsrdU3VhVVrU1YnpAnrgM6Sh5Q1g\njbVGBwAl61DxVxJO0N2zbh32pKrTJrv2p9LdE4tYLiDz0BLydvQNHbPGWsNxc47TktBK1qDiryQc\nl7tn4ijXLN7yrh2bz7+/xHIBNc+sIW9HSzD6q61fUb2iOiX9U5REo+KvJBTLgmuvdTb6VUVN5rpv\n7H1p4e6JhdcLDz8c1rDDS/OLD7uKwV32z8uY/8V8fQNQMh4VfyWhhCZzdbZg7LWufeVdyvGV+1LR\nrTYzZgwMHhzWsHIMbO4fGgDW7VzH+GfHc9TMozQGoGQ0Kv5KwvD74fxgNmdECYdkzeKNF4/Hdv/M\nnx82E3jOO7C9r+sN4KutX2kMQMloVPyVhGBZttXc2EjMnP5HT3s0Yypmejxw2mlhWUA7vPBYDWzp\n7zpOYwBKJqPirySEqiqnXEIrOf3p7u6JhSsGsMMLM5fgee8u1zFT/neKun+UjETFX4mbqCBvmub0\n7w9jxkD/oMG/24NVNYW8bS1vAIEdAZ0DoGQkCRF/EekqIs+JyDIR+UxERopIdxF5TUS+EJFXRaRr\nIu6lpB97C/KmW05/e/F44J13wuYA7PbQ/Ng7UXMAdABQMo1EWf73AguMMYOBYcDnwFTgDWPMd4G3\ngGkJupeSRriCvBGpnema099egnMAQgOAMwcgXwcAJYOJu6SziHQBPjTGHBbR/jkw2hizXkRKgWpj\nzKAY52tJ5wzFsmDQoDBff8TqXPPPns9p3z0tlV1MKFGloIsC9Jg2kk171oSO6d+tP0umLMlYN5eS\nOaRDSedDgXoRmSMidSLyqIgUAr2NMesBjDHrgF4JuJeSRoSCvBCV2lneNf1z+ttLrElg+Y/X0LvQ\nPQu4dm1t8junKO2kYN+HtOkaw4ErjTEfiMjd2C6fSHO+VfO+srIy9Nnn8+Hz+RLQLaUjcQV5g6md\nGTKTNx6CAeCvvrK3N/zbS/ELD8Mp40PHNOxpSFHvlGymurqa6urqhF0vEW6f3sB7xpj+zvYPscX/\nMMAX5vapcmICkeer2ycDmT8fxo/HdvdErM7lLfLy+VWfZ6X4g/22M3IkrAl6ezpb5E8ZSVPxMsB2\n/bxz8TsZM69ByUxS7vZxXDurRSSY0nEC8BkwH7jIabsQeDHeeynpQTandraFqADwbg9N/7wPmvIB\n2/WjwV8l3UlUts81wNMisgQ72+cPwJ3ASSLyBfaAMCNB91JSTDandraVqAFg7UjYemjIuanZP0q6\nowu4K+0itBh7IzBgPpwz3hXk/fjyj7Pa6o/ElQFUFIBLR0LXluyfvp6+1FxSoy4gJeGk3O2j5A6u\n+j0xrP5sDfLujagSEI9p/r+SGaj4K23GldoZY0JXtqV2thVXCYgdXpofq6Gksw4ASnqj4q+0CVeQ\nN7g0Yw6kdraFYAmI4ABgtnkpfKqG0kJdBlJJX1T8lTYRc2lGh1y2+oN4vfDII5BvJ/ywaqntAoqc\nAKYloJV0QcVf2SeBAEwOrsGeYUszJpORI+HQQ1u21y33sueFh13HaAloJV1Q8Vf2imXBqFGwbh0Z\nuzRjsvB44O23w9I/gc11Y6JKQI9+YrS6f5SUo+Kv7JWQuweirP5MWZoxmcSaABZZAvrrrV9r/R8l\n5aj4K63iCvLGsPozaWnGZNJqCejt9htAk2nisn9epu4fJaWo+CutsjerX4O8eyc4AHiDY+MOL03/\n8wh5aAkIJT1Q8Vdi4gryamrnfhFVAnrtSGRbS0RY8/+VVKLir0QRFeTV1M79JnIN4KbH3tYlIJW0\nQMVfiWJv7h5Qq789RK0BHPT/79QBQEktKv6Ki30FeTW1s/3EDAA/qiUglNSi4q+4CJVrhqilGTW1\nc/8JDgD7KgGhA4CSLFT8lRB+P5x/vrMRY2lGTe2Mj9ZKQGgNICUVqPgrQIxyzReNgfzG0H5vkVfd\nPQkgVgmIWDWAdBKY0tEkTPxFJE9E6kRkvrNdLiLvi4hfRP4mIolYLF7pIKLKNefY0ozJIlYJiFg1\ngHQReKWjSaTlfy2wNGz7TuBPxpiBwFZgUgLvpSSQfeX058rSjMkiKgCMXQMof/Pg0PZ1r1ynvn+l\nQ0mI+ItIX2AcMCus+UfAPOfzk8DPEnEvJbG0Jad/7ICxqetglqKLwCupJlGW/93Ab3CWrxaRHsAW\nY0yzs38NoJHCNERz+lOHLgKvpJK4/fAiciqw3hizRER84bvaeo3KysrQZ5/Ph8/na/VYJXHEdPeE\noTn9HU9wALAXgffAnLddi8AHBwBdBF6prq6muro6YdcTY0x8FxD5A3Ae0AgcBHiAfwAnA6XGmGYR\nOQaYboyJ8h+IiIm3D0r7sSw48siw1bmmHBmV07/4ssUqOEli/nwYP97ZKAqQN2UkzUVrQvv7evrq\nAKC4EBGMMW02siOJ2+1jjLnJGFNmjOkPnA28ZYw5D6gCfu4cdiHwYrz3UhLH3iZzgeb0J5uoReBn\n1mgNIKVD6cg8/6nAr0TEDxQDszvwXko7iDmZKwx19yQfrQGkJJu43T5xd0DdPkklEIBhw6C+HtvP\nP2UYHFwfsvpLDirhoykfqdWfIgIBeyLYGsfjI10D9LhxJPW71QWkuEm520fJHAIBO7BYX09LWmeY\n8OdLPgsnLlRRSSFaA0hJFir+OUJQ+EOzeGP4+XUyV3rQ1hpAOgAo8aDinwMEAnD00WHC36sOJpzn\nOqa8i07mSidaqwEUOQCMfmK0FoFT9gsV/yzHNYMX7ADv5AooaHL5+bVUc3rRWg2gyAHg661faxE4\nZb9Q8c9yXCmd3f32BKK8ptB+9fOnL7FqAAUHgH4eOyjQZJq47J+XqftHaTea7ZPF1NVBRQU0NWG7\nei6rgPwmV4C39pJahnuHp7Sfyt6JzAAC6DHiDbaeegpN2AO5ZgDlHprto0RhWTB3rh3gDQn/5BEu\n4e92QDeWXrFUhT8DiPUGsOmjkbCtJSigAWClvajln2UEAvCDH8DKlU5DUPjzml0W/9IrlmpmT4YR\n9QagZSByGrX8lRDBrJ6VK7Hz+I94AiZ/3yX8eeRRe0mtCn8GEnMheC0DoewnavlnCUHhX7cOO7B7\n8eiWuvxhwr/o0kXq6slw2vIG4C3y8vBPHmZM+RjN4spS4rX8VfyzAL/fTues327Bd+fB+EmQ3+ya\nwKXCn13EGgC4dCR0WeP6vffv1p93Ln5H3UBZiIp/DmNZMG8eTLzcwhxSBeOuhG7BojAtx2lWT3bS\n1gFA4wDZiYp/jhIIwLHHwiortosHbGv/1jG3MvGoifrFz1ICATjuOPjqK6ehKAATj4PuX+kAkOWo\n+OcYlgULFsDl11ps6RXbxQPq5sklLAuqq2HKFKeER2cL+lUj46dgiloCvzoAZBcq/jlEIAAjxgQI\n9JoNFfeBp97eEfHrLy0q5e0L39aMnhxDU0GTQ10d3HwzbNxoP+tvvoE//QkmTUpuP1Iu/iLSF/gL\n0BtoBh4zxtwnIt2BuUA/YAVwljFmW4zzVfz3QWCTxd3/U8X982rZ9f0Z9mQtaBF9Y3/u26UvD417\nCF+5TzM8chQdADqOQABuvx1mzoy9f9as5A4A6SD+pdhr9S4RkSJgMTAeuBjYZIy5S0RuBLobY6bG\nOF/FPwbWLosFy6p48f2P+NvymeAJy9uOEP188pl1+iwmDJmgoq/oAJBggokVkyZBc3PrxxUXw6ZN\nyetXysU/6oIi/wAecP6NNsasdwaIamPMoBjHq/g7WLssqr6u4qN1H3F/zUw2fhND8MEWfSBP8rl1\nTKUGdJUo2pIJpHMB9k1dHZx4ImzZEmNnUQBO+DUMeAXe+B2HbruyJfCeBNJK/EWkHKgGDgdWG2O6\nh+3bbIwpjnFOTot/YHuApz5+iu3fbmfOkjkEdjqC71j1LpzH1CWvJ1ePvIYrjlXRV1pH5wLsP5YF\nTz0FV1wRY2dnC4bNglN+5aqRcNgXD/Dl365MWh/TRvwdl081cLsx5sVIsReRTcaYHjHOyznxDwr+\nxp0bufv9u0OVGWMS9mikoTd/PvFeJo0ep5aa0iZipoLqXIC94vfD8cfD+vUxdnb3wyXHQuFmezvM\nBXuAFPHt9OQtrBOv+BckqBMFwPPAX40xLzrN60Wkd5jbZ0Nr51dWVoY++3w+fD5fIrqVVgRdOrVr\na5nx7ow2Cz5Wb7p9MINfTT6EST+uwNtDRV9pO14vLFkSngpqrwcQmgsAIC01gXJ5AAgEYPZsqKyM\n7dvvMuQdtp81GvcXtIUDgutudhDV1dVUV1cn7HoJsfxF5C9AvTHmV2FtdwKbjTF35nLAN2jl3/v+\nvS0unUgif3yrN7w2g26dDuHu/6pgwmkePKr5Spy43EDOXAB+MgW6BHI6DrDPgK4nwAm/vZs3v/2j\nuz3CNTv9+OlUjqnswJ66SbnbR0RGAf8HfIL9OAxwE1AL/B04BFiJneq5Ncb5WSf+1i6LmrU1LN+0\nnKsWXEUzMf6iXNZ9T/jgMthwBOwqIW9dBbMf8jBhAir6SkJpqxsoF+IAwQmT11wDG1rxS3Q9/B2s\nM33R3+Fw4TdQlFdE4MZAUgfMlIt/vGSb+Pvr/YyeM5p1DetiHxD8UYOC/5+RsNIHuz14vXD99XDO\nOfbruqJ0BFEzglsZALL5LSBUHmVV7P0lfSxO/+1TPL4hIuIb/P5GpFt/ceUXSZ9UqeKfJgS2B5j9\n4Wwqqyv3bulbveHle+Hf42C3/YXq1Qvuuw/GjVNLX0keLjdQeE0gyNq3gKC1f8UVsHlz9P78fLj9\nIT93bzuejQ0REd+Ywi8svvSDlJRRUfFPMdYui3lL5zFp/qTWRb85H/55P2wbCGsrQqKfn2/PClT3\njpIqXG6gVuIAkPlvAfty8eQdZHH2jVWUHFXLA0vuaP27HCb8nUwRn169OGVlVFT8U4i/3s/oJ0az\nbmcrLp4tXqi5Hj49B3a0WE35+XZGwcSJ6t5RUk/QDXTNNbBiBXt9CyjvWs69Y+/NmEEgELDz9e+/\nP2y+QzidLboeVcWBE65k/TexDnCIEH6a8vm/Xy7luCGpq5+l4p8C9mntb+8FL9/ncu0EKS2Ft9+G\ngVpzTUkzXLGA+tbfAiC9BwHLspe7XLMGLr0UGhtjH5fX04/n6tFsa27FeAsSKfwN3XnhJ+/zs+NT\n+yVW8U8yge0Bjp11LKus6EiRkI+ZNwu+mBAl+n37wkMPgc+nLh4lvXG5gvbyFgBQ1qWc+8elxyBg\nWVBVBVddBatXt35cXrcAvutmU0UlJpbxFougRG3ry5+H1nD9Jal/ZVfxTyL+ej+jHh9F/Tf1rvY8\n8mh+41ZYMtHl3gEN5iqZicsVFHDeAsZeA91X2AdEZLv07lzOPafcy6lDkjsIBAX/o4/s+Flr2TsA\npQMCHHHhbN5qvLXVSZZdOndh++7t7kYDNOXBi49zWOMZfFiTHvNuVPyTRF2gjorHKqL+aIQ8zMxF\nsM4d7ddgrpINtGsQAEoKypnc/w4qjixhzICRCR8Igi6dhgb734037l3wKQrgOeZ5fv6zTvyl/hoa\nTWwf0P8r+n/sbtzNpm8jynIaYGcxPP4eT/x5IGeckT7fZxX/JFAXqGPEYyOi/PuysxQz623Y4vb9\nqV9fyTbaOwgAFOeXcXn5/VT0HMOYUe23lsOFHuz/b7hh7y4dwHZVDXmebp5ObD/uGpppxekP9Czs\nyYVHXsiTHz/JxoaNLTuCP8fWMpjzHourvAxPs0XxVPw7GH+9nyEPDaHJtFj8eeTjeeVpttW5A7pq\n7SvZjmVBbS3U18MNN1uskurYgwC0COiWcnosuYPJF5RwRPFICvP3/uVoaIDly/ftxgnR2YI+NVDQ\nQPc+m9nmu3Svgg/Q6+BeVI6uZMa7M1i1PeImYW4eWX4GHyz0pJ3wg4p/hxLYHmDYI8Oob2jx8eeR\nR9e/L2LLUvdfQ0kJLFyo1r6SOwQHgtXrLW54qJqNR+9jEADYUg6v3wGNhe6LNRbC2pFRiRJROFY9\nVi/7nIIGZOwNmC77eh2wKS0q5Y4f3cGBnQ7kuleuY/3OGBO5dhbD7PfI2zaQRYtIS+EHFf8OI1Zw\nN488PM8sYpvf/ddQWgqLF2vOvpK7WBZU/8vizX9Xc6//KugWZk23NhBEEhwYwD5/a5l7kDhwM4y/\nFPIbo6+7F4KC36OwBzv37OTGN25k1bYY1n6wD48vJK/Bm9bCDyr+HYK/3s/Qh4ZGB4eemwufneVq\nUuFXFDf+FRb3vVBLQVE9T2+YSn3jipade5Oq1mRgP+QtKPiHdD2EwSWD+eA/H3D1y1dHi37wvtt7\nwf/OgpU+8ho9aS/8oOKfcPz1fkY8NiI63WvDYJhV43otLS+3XT0q/IoSG2uXRfWXtdR+XM8jX09l\n454VHXavsq5l3HXiXZQUllDRpwKAl5a/xPWvXs+6HTEmckVY++zwkp9vu7LSXfhBxT+hBLYHKL+3\nnD3Ne0JteeTT/Pen4ctxrpo8Tz+tufuK0h6sXRa1a2tp2NPgam/Y08DUN6ayYtuKNl0n3I0TpLBT\nYUjwq1bY62A/uvhR1litlGwwwJYyePmBUFXdTIvbpcVKXtnCrA9nuYQfoHDBM+xY2uLqycvLHMtA\nSR+Ck5E+/xzKyuy2Vavsz4WFdoZLcJsDLJY31LBxRz1fblzFd3qV4TmwxfctBQ0c0HsVA3qVUdi5\npb2wUyEj+yQ+tz5ReA7wcEL/E2LuGzdgXGhgaNjTwKptqyjrWkZhJ3dgOCjykT9jYHuAhz94mPtr\n7m9d8INsdos+5Kb7Vi1/B3+9nyEPDnFN4pJtZZgHPw39geTlkRG+QCU9CJ99+uijMQqLhaUoUtBg\nBzl39IQxt7VkzeyNGDZfeddy7jjhDhBsAe3iHiAg/QeJfRFcLCn4BrGpYROT/zmZPWZPq+fkUUDz\nP2bB1r4QqMgK923au31E5BTgHux17mcbY+6M2J9y8bd2WQx6cBABK2yZxR3FMPMTV7mGuXPhrLNi\nXEBRHPYq+OFif+AmOPEm6NJKUbH9/kq3jeAgET4wNOxpYMPODZw5+My0qt0fLvYNexpiZ+u0QnFe\nX3a9ew07/3VuVOmV/Hx45hkYOzYz3bdpLf4ikgf4gROAALAIONsY83nYMSkX/2c/fZZfzvtlS0Nj\nPjy41DVzd/Bge7ZhJv6RKB2PZcFLL8G110bUiw8K/oH1cPKN7hRIaF3k9/crkYBBo0AKeOy0xygu\nLG71mI54e4i06MG26m9666bYAdtWKC3sy5HfXsYHC45ic50v5tyBbJiFn+7ifwww3Rgz1tmeCphw\n6z/V4h+V1mmAv8+FZbaJr8FdZV/4/TB6NKwL16fOFvSrgnFXt57zvhd6dirnzOLprNy0kQE9y/Ac\nZFvo1na4b2YDpmgVbCuDPY7lXtAAJ02F4hX7vniC3ipae3tozd0Ui+DxPQ/qyW3/d1ubg76x6HVQ\nKWd3u5eHfjWWxp2xv6ylpXDvvZlr7YeT7uI/AfixMeYyZ/s8oMIYc03YMSkT/5junm1eePDzkLWg\nrh6lNQIBmD0bbr0VmsLr/XX3w0Vj7Dr4sFexLZACZp02iwM7HRgKcgZTFVuzqgMBeOEF6NmzJVg8\ndapTc6dPLeSHxRDCBwiIPUh0sIupoyjzlHHbcXex6t+FbN9cyF9mVLBhdexnVlBgG3HZIPpBNNsn\nDqpWVLmFvzEfnqgKCX9Zmf3HoijhBF08F1wAe8JjjEUBGDYbxtwK+U2timqZp4xbx9yKtdtiwuAJ\n7fave712zfpwxo2D2loPDQ0nhAqgrfo89vl8Na5lkAjnwE1w0jQ7DpFmA0JwkCwuLGbzZqj9VyFD\nu1ZQeZbHXn2sFfr2tYvRnXtu5gV0O5qOFv+1QFnYdl+nzUVlZWXos8/nw+fzdXC3bKv/6gVXtzQY\nYN4zIT9/cTG89172WAlKYggEYNQo3ILT2YLDXoIJF0BB7IyTMk8Zd5181z6t+v3F44ETwrIo7cHA\nXRFz6lSn37s98HXslEv8E6IGhp694cIL4YAD7O1dzQ389T9TWb97RUJ/BrBdSTNOnBFK8WzY08Cq\nzRs4xJpA4Wov9Ztg8uSIQTcG2eTeCVJdXU11dXXCrtfRbp984AvsgO9/gFrgl8aYZWHHpMTtExXk\n3VwGM+20zvx8WLo0s4NBSuLx+23hrw9fy6coABNH2amZEdZyvuQz+7TZ9O3at0MEv70EC7EFa+GH\nBoP9obNFr+G1XDCxITQoAFjfNPD11lWM+0EZfXq13effq3MZG1aUcEhBhavq56ZNcNNNEfGUvZCN\n7p3WSGufP4RSPe+lJdVzRsT+pIu/tcti4AMDWzIIDPDqXfD+bwD18yvR+P0wdGjEerDd/XDJKDi4\nPur40oNLefuitxlYkr4WRORgcMMNbSyh3AYKCuCxx+w36L3R7vLNMSgvh+nT7Z9nwoTcce+kvfjv\nswMpEP/5X8xn/LPj7Q0DNBXAPSthhxev156Fme1Wg9J2AgEYNizM4g+6ec48v6XCpEPxgcU8fOrD\njB0wNuVWlo0rAAAcBklEQVSWfnsJHwwgAW8HHUhpKcyYYfv0Kypy8/uq4t9OrF0WRz58ZEtKWVhq\np7p7lEiiXD2dLbhkJPRaFnVseZdyFk5amFYTpOIlckCA1AwKBQX220FxsZ3hlKuCH45m+7STqhVV\nbuHfUg7/tlN6nnlGhV9pIcrV09mCox+OEv58yeeZM57JSGt/X0QGkoNEBpSDbNoE06a13UcfTlkZ\n3HWXLe5BGhrsSXO55M5JFjll+ce0+p+ZD8tPo7TU/rLnujWh2ES5eloJ7JYcVMLCiQvT2refbGK9\nLbRGsKDdoEHg8+n3rz2o5d8OYlr9K32AnRamf3gK2MI/YkSEq2fiD6B4pes4r8fLoksWZZWbJxG0\n9ragpBd5qe5AsrB2WVz98tXuxtdnwG6PTuZSQlgWHHecPQAALa6eSOEvUuFXMpucsfyrVlRFVwL8\npgSABx5Qq1+xWbAAvvrK2QgGd3u6ffylB5ey6FIVfiWzyQnL39plce3L17Y0BF0+gQq8XtvXqCh+\nv10GIMRhC+zgbphX1evxsviyxSr8SsaTE+Jfs7bG7evfXgqPLyS/yUNVlVr9iu3uGTMmrEBbdz+c\nea7rGHX1KNlETrh96hsiZmC+cg/s8DL7CU3tVGwWLAjz8xcFYNIouzibQ0lhibp6lKwi6y1/a5fF\ntDemuRsdX3/fvinokJJ2uNw9RQG4bAQUtRgMBXkFLLw4uyZvKUrWi3/M9M5ABeXl9ixBJbdxuXuC\nKZ2eljLfJQeV8Nnln2kev5J1ZLX4RwV6AV6+D3Z7uO8+9fUr9nq7IXdPvyrovtIV4H18/OMq/EpW\nktXiHxXodSZ1lZZqho9iW/3XBm2DzhaMvdYl/OVdy/GV+1LRNUXpcLJa/KMCvc6kLp3Nq4Bt9YeK\nkx22wC7d4FB6cCkLJy7Mulo9ihIka8W/tUCvzuZVwHb1TJ7sbHT3w4RzXVb/o6c9qgFeJavJ2lTP\nmC6fQAUPPK9Wf65jWfCDHziVJztbcPEYV1qn1+NVd4+S9cRl+YvIXSKyTESWiMg8EekStm+aiCx3\n9p8cf1fbRyyXT7nXo75+haoqWBks1dOvys7ucaz+Aimg6oIqdfcoWU+8bp/XgKHGmKOA5cA0ABEZ\nApwFDAbGAg+JyH6XHm0vrbl8ZsxQqz/XiRnkDeOpM57S7B4lJ4hL/I0xbxhjmp3N94HgtKnTgWeN\nMY3GmBXYA0PSsupbc/mUlCSrB0q6EjPI65gl5V3LGTdgXIp6pijJJZEB34nAAudzH2B12L61TltS\naNgTsYqE4/LRSV25jcvqjxHkvW/sferuUXKGfQZ8ReR1oHd4E7Y9/VtjzD+dY34L7DHG/G1/OlFZ\nWRn67PP58MXpmN+0vcHuYfCLvadQXT5Ki9WvQV4lA6murqa6ujph14t7GUcRuQi4FPiRMWaX0zYV\nMMaYO53tV4DpxpiaGOcndBlHa5fFgD8fyfpdK1qGqSff4I1ZJ+jqQjmMZcGRRzriP2A+nDPeFeT9\n7Aot4aBkFvEu4xhvts8pwG+A04PC7zAfOFtEOovIocB3gNp47tVWatbWsH73ihbh31JO37wKdfnk\nOC6rX4O8ihJ3nv/9QGfgdSeZ531jzBXGmKUi8ndgKbAHuCJZq7THSvH84x886vLJYVy+/n5VGuRV\nFOIUf2PMgL3suwO4I57rtxdrl8WNr09z+/u/KdEsnxynpqZ1q1+DvEquklXlHWrW1rBq+wqXy6es\nQF0+uU598GUwhtWvQV4lV8kq8Y+V4nnX79Tlk8tYFkybhlr9ihJBVol/KMUzyJ5CdfnkOKFAb4wJ\nXWr1K7lM1oh/rJIOvUsK1eWTw4QCvUUBmHCea59a/UqukzXiHyvFc8bVFeryyWFCVv8RT0F+Y8jq\nLy0qVatfyXmyRvxj+ft7qPLnLJYFV1+N7esf8aBr3z0/vketfiXnyR7xbyDK319YmKreKKlmwQJY\ntQonw2dVyOov61Kmef2KQhaJv/8zt9L3LFZ/f65iWXDddcTM8Hlg3ANq9SsKWST+1uoyaOpkW/+N\nB3DhuMHq789RqqqcVbo0r19RWiUrxN/aZfFE01jI32N/0aWJrv1WpbpbSgoIZfhoXr+i7JWsWMO3\nankN9Y1ftWT6bCtj2P8bmupudRiB7QGeX/Y8vQp7gcCqbavoeVBPNn6zMfR/WZcySg4uYWSfkTkl\neKFSDofWqNWvKHshK8T/o0/dmT49PvoDvt9nj+AFxb5pp4eXa/7Nm7vvpJnGNp3bp6gPk4+ezIAe\nA3JiMAiVcjjQXeBvxokzsvrnVpT2khXi/+1u9/bE8woz2t9vWfD8qwH+5/PnKSku4MmN19Fs9rgP\namMV77U71nLL27eEtvsU9eGakddw3pHn4e3iTWCvU4+rlMNJ7gl/JYU61VtRwskK8d/VHJHj37kh\n9oFpTCAAzz8POyTA7xfMpuH7t9kTkzY4B0SKfVsKZMcYINbuWMuNb97ITW/exHTfdCZ9b1LWDAIh\nl8/g6FIOFX009UtRwskK8Q98u9y1vXF3ZgR7g4JfUADX/DZA09DZMOY2GOm4dMLFO1Lst/eCN+6C\nPQdCt1WwsyccvNH+v8tq+P6j0G1Ny/ERA0ETTdxSfQuV1ZXMPn02E4ZMyHi3SH09WspBUdpIxou/\ntcvi1Y2zXG09ZVCKetM2AgGYPRtuuw0a8yw47CW46gI7WwlahDpc8LeXQvV0CkssLhw7iOI8H09u\n8bBmDbFZdB30qYUD6qGHv2UwiBgEmmnm4vkXM+3Nabx90dsZu6JVyOWjpRwUpU0kRPxF5NfAfwMl\nxpjNTtt9wFhgJ3CRMWZJIu4VSdXyGjY3rQqr6VNGz2JfR9wqLizLdkusXg2TJ8MesWDAS3DK9dBl\nnX1QhOgX0osLSu+ipFNfOm+q4KhbPfh8LQvR33g9VFfD559Dz572tR99FHtA2O2Br8MWLQ4OBgev\nhlNuhKINhLNu5zoGPziYSl9lRrqCqqpgRcCC07WUg6K0hUQs4N4XmAV8FzjaGLNZRMYCVxljThWR\nkcC9xphjWjk/rhUeb392Prd8Pr5F/Oc9y9pXf4E3jbQrEIBRoxx/NEB3P1w0OrboCxTRi//+0f2c\nWzG23cJlWVBba7tAPvkE7rwTGiMTgzpb8N158NNLIL8p6hr5kk/tJbUM9w5v171TRWhxdnkDLjjJ\nVcrh0ys+VfFXspKULuDucDf2Iu7hjAf+AmCMqQG6ikjvBNwrishMn2svL0wb4bcsePZZOOKIsGUE\nBz8LVw61hV9wuWF6FZYyd8JcAlO/ZMpxZ+2XaHk8cMIJ8ItfwO9+BytXwu2323GFELs98MlFcPcq\neP128sh3XaPJNDHisRHM/XQu1i5rP37y5BIK9Eakd9510l0q/IrSCnGJv4icDqw2xnwSsasPsDps\ne63T1uGkS4qn3w8DB8IvfwmbN2Nb+1cOgrN+6fJJAxRIAXMnzOXLa/2cdfj+iX5reL1w882tDAI7\nvLDwZprvXQpWqeu8Zpo5e97ZHPHQEQS2BxLWn46gvh5N71SUdrJPn7+IvA6EW+1BB8vNwE3ASfF2\norKyMvTZ5/Ph8/nafO6uXRHb38bbm/iwLHjpJTj/fMfd0tkJ6E44P0r088jjVt+tTPzexA73sQcH\ngYkT4fHHYfp0aG52dm4ZCPf7YdA85IxLMLS4glZuX8nRjx7N4ssWp2UcIBTojbFSl6Z3KtlEdXU1\n1dXVCbvefvv8ReRw4A2gAfsr1xfbwq8AbgOqjDFznWM/B0YbY9bHuE5cPv8L/zCfv+xu8flfeMB8\nnph22n5fLx6ifPtFAZg4yhYlcAm/t8hL1YVVKcuuqauDigpoinT5d/cjl47CFLpdKKUHl6blAPDG\nG3DSzwJwXT/X4Dr/7Pmc9t3U/B0oSjJImc/fGPOpMabUGNPfGHMosAb4njFmAzAfuMDp4DHA1ljC\nnwh69nRv90rBm36Ubx9sN8+UYS3WqPMrypd85k6Yy+dXfZ7StMrhw+1697ffDvnhLv8tAzEPfQQ7\n3G6gdTvXMWzmMPz1/uR2dB+sWYOmdyrKfpDIqp5OrgoYYxYAX4vIl8AjwBUJvE9aEeXbDw/qHlzv\nsvZLDiph6RVLE+7X31+CrqClS3EvdL/DCzMXR8UB6r+pZ8hDQ6gL1CW3o60QCMAlV+pKXYqyPyRM\n/J03gM1h21cZY75jjBlmjOkwtdi40b29oT72cYkmaO0PHerUjgfbzTPlyJhB3fIu5Xw05aO0nEQ1\ncCB89BGUhmv9Di88shg2l7uODWYCpcMA8NRT0NS7pmWlLgN9PbpSl6K0hYyv59+1h7uOT7fijq/r\nEwjYeeW//GVYDv0+3DwfX/Fx2vnLw/F6YfFiKC8Pa9zhhZkfw9+fdaWDNtOc8gHAsuDBB4EidwmL\nP56s6Z2K0hYyXvzr96za63ai8fth2LAw3z44aZxDoSi93Tz7wuuFjz+232hCcYDdHlj6C5pn1iJh\nfy6pHgBqamDV5gCMv9TVrumditI2Ml78ZVuZu2F7WewDE0BdHQwZElYzHmzhv2wkFLin0aazm2dv\neDz2BLHaWsgL/+tYNxzz0CJocg8AFbMqUhIErq8nZqBX0zsVpW1kvPj36OpeuL0kYjsRBP37rtTI\nYGD3qqFw0NbQsZni5tkXw4fDokURmUAbhsMji1xvAE2miVFzRiV1IphlwW9+a8GI+13tGuhVlLaT\n8eK/bpPbx/+f+sT6/MOzeULCHwzs/sIJ7Dp0O6BbRrl59sXw4TEygTYMx0QMAPUN9Rz96NFJGwAW\nLIA1ByyA7mtCgV5vUV8N9CpKO8h48d/Kqr1u7y9Ba3/IkLBsHmgJ7BavcB1fkFdAzSU1Gefm2RfB\nTCDXAPCf4ZjnnnEdt27nuqQMAJYF1/zGgrHXtDQKXH/stVkx4CpKssh48e9f7Pbx9+8Rv88/PJvH\nNQO2Vx1cNcQO7IZRclAJn13+WdYJfxCvFxYujHABLR8Hm/u5jkvGAFBVBRuKFoBnQ8jqz5cCzjn8\nnA67p6JkIxkv/ps3R2xviu96fn/ETF1o8e9ProgqgZypgd32MnBgRBB4twce/5e9yEwYHTkAWBZc\ncX201V/pm57R8RVFSQUZL/71jW43z9od++/2qauDwYMjBpTOFjJ5pOPfbxH+PPKyIrDbHoJB4NAA\nsMMLj0bPBO6oAaCmBtYeEGH1U8DEoyYm9D6KkgtkvPiXHOAu7rPwtZ4E2qk5gYBd42bEiLBKlw6e\n7y/A9FjmasuXfBZduihrArvtIeYA8MjimLWAEj0ALF8VYfUDU49Rq19R9oeMF/+BwyPqO3hW8/DD\nbTvXsmDOHCgrg1tuiRD+ogBdTr2dnSe7fcnBiVuZsspVRzB8ODwTHu8N1gLqwAEgEIAr7p/nsvrz\npIArjlWrX1H2h4wX/8MPiQjwfn8m9z5sYe1lAapgJs9hh9n17aPKGpfWIf9VxvYRt9BMy4hQUliS\nE/79tjBuHPQLj/fuZQA4dvaxca8IdudjfvjJJFfbNLX6FWW/yXjxLzm4pKWkggDdAljF1fzpT9HH\nBkX/0EPtTJ7IonAA3YfUkTdlhGtBE7BTORdevFDFxsHjgX/9K0YxuBgDwKrtq5i3dN5+36vuM4v7\nth8P+c0hq18kX61+RYmDuBdwj7sDcS7mYu2yOPSe/mz6pr5ljbGq38L//Q6fz85P79QJuna1hX/r\n1tjXkQMtJt75PHO2XOKy9sFeyOTti95Wiz8GgQAcfXTEXIiiAFxxBBS2RM4F4fHTH2fCkAntipNY\nFvQZ9wTWCRe7Frp/6MdzuPzYixLyMyhKJhLvYi4ZL/4AN795M79/9/f2hgF2FMP9K+x0xDZQPMCP\nTBzNpl3rXO2CMOf0OZwx5IycC+y2h5gDQHc/XDkECtxvUH09fam5pKbNb1B3POrnptWDXVZ/17xe\nrL7xS/2dKDlNylbySidcxbwEKNoM322Dm6FLgJ/8+Wa2nTskSvjzyOODSz/gwu9dqCKzD4LloF0u\noC0D4dFaVyE4gDXWGg5/+PA2FYN7Z0mAm748xiX8NOfx1oXv6O9EUeIkbvEXkatFZJmIfCIiM8La\np4nIcmffyfHeZ2+MOXQM3Tp3czeOu9p2P8Sge2+Ln1bOIe9Xh/C/239PU4R/P5jKmcsZPe0l5gDg\nFIKjyW2cbPl2C4MeHMQTHz7RaiC4bqWf458dCoVbXGWy7zh2NsP7qftNUeIlLrePiPiAm4BxxphG\nESkxxtSLyGDgGWAE9sLubwADYvl3EuH2AXjiwye4eP7FLQ0G8hs9nLTiA3owkJIS2PhtgD1DZ/Pm\nznvYvGtz1DUE4TbfbUz83kQN7O4ngQAce6y9PnCIXnUweYRtwUfQ7YBuvHnBm6GB1tpl8deP/8qV\nC64MWxgUMNBFerFmqrp7FAVS7PMXkbnAI8aYtyLapwLGGHOns/0yUGmMqYlxjYSIv7XLouzuMrbu\nio7o/nTATykuLGbOR3MwxL5XvuRTe0mtWvsJwLLgzjvh978Pa+zuh0nHwMFuSz7IqYedSkFeAW99\n/RZWoxUl/DTnsXjSMrX6FcUh1eL/IfAicArwDfBfxpjFInI/8J4x5hnnuFnAAmPMCzGukRDxB6gL\n1HH0Y0e3+7ybf3gzl4+4XK39BGJZdhB4+fKwxqIATBoJ3dbEHABiYoCmPF4Yt4ifHasDs6IEiVf8\nC9pwg9eB3uFN2F/Jm53zuxtjjhGREcBzQP/2dqKysjL02efz4fP52nsJAIZ7h/PKOa9wyjOntOn4\nfPKpvVSt/Y7A47FjAPPm2RPpjMGeB/DwUjsY/9OJkOcM+rH+fIP2wM6ePH3Cu/zsWLX4ldymurqa\n6urqhF0vXst/AXCnMeZtZ3s5cAxwKYAxZobT/gowvSPdPuHUBeo44ckT2Lo7dlL/5UdfzqHdD+Xc\nI85Vaz8J1NXFqJtUFIAR98AP/zt22kGTwEsP8cLvzuVn49THryiRpNrtcxnQxxgzXUQGAq8bY/qJ\nyBDgaWAk0Ad4nQ4O+EZi7bJYsHwBL3/5Mo2NjZQUltBII9dUXKOTtVKA3w+jRkWsfwz2IDDscShe\nZq+K1twJNg+CJRN55XkvP/5xSrqrKGlPqsW/E/A4cBSwC/h12FvANGASsAe41hjzWivX6BDxV9IP\ny7LdQNdf3/pMa7ArhlZXw3HHJa1ripJx6AxfJeOwLHsd3pdfhsZGuwTHxo0gAoMG2TECr3rjFGWv\nqPgriqLkIFreQVEURWk3Kv6Koig5iIq/oihKDqLiryiKkoOo+CuKouQgKv6Koig5iIq/oihKDqLi\nryiKkoOo+CuKouQgKv6Koig5iIq/oihKDqLiryiKkoOo+CuKouQgKv6Koig5SFziLyLDROQ9EflQ\nRGqddXyD++4TkeUiskREjoq/q4qiKEqiiNfyvwt7bd7vAdOdbURkHHCYMWYAMBmYGed9kkoiF0lO\nJOnYL+1T29A+tZ107Fc69ile4hX/ZqCr87kbsNb5fDrwFwBn0fauItI7znsljXT9Radjv7RPbUP7\n1HbSsV/p2Kd4KYjz/OuBV0XkT4AAP3Da+wCrw45b67Stj/N+iqIoSgLYp/iLyOtAuNUugAF+C5yI\nvTj7P0TkTOzF3E/qiI4qiqIoiSOuNXxFZKsxplvktojMBKqMMXOd9s+B0caYKMtfRHQBX0VRlP0g\nnjV843X7rBWR0caYt0XkBGC50z4fuBKYKyLHAFtjCT/E13lFURRl/4hX/C8F7hORfOBb4DIAY8wC\nERknIl8CO4GL47yPoiiKkkDicvsoiqIomUnKZvim6wQxEblaRJaJyCciMiOsfZrTp2UicnIy++Tc\n/9ci0iwixWFtKXlOInKX8xyWiMg8EekSti/Vz+kUEflcRPwicmOy7+/0oa+IvCUinzl/R9c47d1F\n5DUR+UJEXhWRrvu6Vgf0LU9E6kRkvrNdLiLvO8/rbyISrzegvf3pKiLPOX8vn4nIyFQ/JxG5XkQ+\nFZGPReRpEemciuckIrNFZL2IfBzW1uqzabceGGNS8g94FTjZ+TwWO0AMMA54yfk8Eng/iX3yAa8B\nBc52ifP/YOBDbDdZOfAlzltTkvrVF3gF+BooDntmqXpOJwJ5zucZwB3O5yEpfk55zj37AZ2AJcCg\nZN0/rB+lwFHO5yLgC2AQcCdwg9N+IzAjBX27HngKmO9szwV+7nx+GJic5P48AVzsfC7AnjeUsucE\neIGvgM5hz+fCVDwn4IfAUcDHYW0xn83+6EEqa/uk4wSxy7EfZqNz/3qnfTzwrDGm0RizAjuwXZGk\nPgHcDfwmom08KXpOxpg3jDHNzub72IMT2L+7VD6nCmC5MWalMWYP8Cz2c0oqxph1xpglzucdwDLs\nZzQeeNI57Engp8nsl4j0xTauZoU1/wiYF9annyWxP12A44wxcwCcv5ttpPg5AfnAwY51fxAQAMaQ\n5OdkjHkX2BLRHPlsxoe1t0sPUin+1wN/FJFV2GUhpjntrU0QSwYDgeOd17sqETk61X0SkdOB1caY\nTyJ2pfI5hTMRWOB8TnWfIu+/Jsn3j0JEyrGtt/eB3sbJejPGrAN6Jbk7QSPCOH3rAWwJG8jXYFu+\nyeJQoF5E5jiuqEdFpJAUPidjTAD4E7AK++93G1CHnbGYqucUTq+IZxMU+HZ/9zrUb5WOE8T20qeb\nsZ9Hd2PMMU4M4jmgf4r7dBMpmDi3t9+dMeafzjG/BfYYY/6W7P5lAiJSBDyP/Xe+I8aclqRlW4jI\nqcB6Y8wSEfGF70pWH2JQAAwHrjTGfCAidwNTiX4uyXxO3bCt6H7Ywv8ccEqy7r8f7Pez6VDxN8a0\nKloi8ldjzLXOcc+LSPBVdC1wSNihfWlxCXV0n6YALzjHLRKRJsc6WguUJbtPInI4tu/8IxER5751\nIlJBCp+T07eLsF0IPwpr7tA+tYEO/T21B8dl8DzwV2PMi07zehHpbYxZLyKlwIYkdmkUcLrYRRcP\nAjzAvdjugTzHqk3281qD/Vb7gbM9D1v8U/mcTgS+MsZsBhCR/8F+dt1S+JzCae3ZtPu7l0q3z1oR\nGQ0g0RPELnDa9zpBrAP4B46YichA7KDPJqdPv3Ci/ocC3wFqO7ozxphPjTGlxpj+xphDsb8s3zPG\nbCCFz0lETsF2H5xujNkVtms+cHayn1MYi4DviEg/EekMnO30KRU8Diw1xtwb1jYfuMj5fCHwYuRJ\nHYUx5iZjTJkxpj/2c3nLGHMeUAX8PEV9Wg+sdr5rACcAn5HC54Tt7jlGRA50DK5gn1L1nAT321n4\ns7korB/t14OOjljvJZL9A+AD7OyQ97BFLbjvAeysjY+A4UnsUyfgr8AnTt9Gh+2b5vRpGU6WUgqe\n2Vc42T4pfk7LgZXYvtA64KF0eU7Yr+hfOH2cmqLf0yigCTvb6EPnGZ0CFANvOP17DeiWov6NpiXb\n51CgBvBjZ7R0SnJfhmEP2kuw37q7pvo5YZenXwZ8jB1U7ZSK5wQ8gx1s3oU9KF0MdG/t2bRXD3SS\nl6IoSg6iyzgqiqLkICr+iqIoOYiKv6IoSg6i4q8oipKDqPgriqLkICr+iqIoOYiKv6IoSg6i4q8o\nipKD/H+gqMNkDo/LMQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks better now. Let's draw the eyepiece and try different symbols to mimic the winking." ] }, { "cell_type": "heading", "level": 5, "metadata": {}, "source": [ "Draw the eye" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The initial elephant had a dot at the position of the eye" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(y1,-x1,'.')\n", "plt.plot(p5.imag,p5.imag,'.')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nESkyA8RWAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simplest way to make it wink is to use another symbol available from the 'plot' function" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(y1,-x1,'.')\n", "plt.plot(p5.imag,p5.imag,'>')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 4, "metadata": {}, "source": [ "Overlay the two elephants using animation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I will follow the detailed explanation of matplotlib's example found in this [animation tutorial](https://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial).\n", "\n", "Embedding animations in IPython notebooks is far from trivial. I follow this [example](http://jakevdp.github.io/blog/2013/05/12/embedding-matplotlib-animations)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from tempfile import NamedTemporaryFile\n", "\n", "VIDEO_TAG = \"\"\" \"\"\"\n", "\n", "def anim_to_html(anim):\n", " if not hasattr(anim, '_encoded_video'):\n", " with NamedTemporaryFile(suffix='.mp4') as f:\n", " anim.save(f.name,fps=20, extra_args=['-vcodec', 'libx264'])\n", " video = open(f.name, \"rb\").read()\n", " anim._encoded_video = video.encode(\"base64\")\n", " return VIDEO_TAG.format(anim._encoded_video)\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import HTML\n", "\n", "def display_animation(anim):\n", " plt.close(anim._fig)\n", " return HTML(anim_to_html(anim))\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "from matplotlib import animation" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "ax = plt.axes(xlim=(-80,100), ylim=(-80,100))\n", "line, = ax.plot([],[],lw=2)\n", "#ax.set_axis_off()\n", "\n", "\n", "def init():\n", " line.set_data([], [])\n", " return line, \n", "\n", "def animate(i):\n", " x, y = relephant(i/10.,np.linspace(0,2.*np.pi,1000),p1,p2,p3,p4,p5)\n", " line.set_data(y,-x)\n", " return line,\n", " \n", "anim = animation.FuncAnimation(fig, animate, frames=100, interval=20, init_func=init,blit=True)\n", "\n", "display_animation(anim)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 22, "text": [ "" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 } ], "metadata": {} } ] }