{ "metadata": { "name": "Lecture23_DataFitting" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%config InlineBackend.close_figures = False" ], "language": "python", "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": true, "slide_step": true, "slide_type": "slide" } }, "source": [ "Data Fitting in Python (and IDL)\n", "--------------------------------\n", "In this lecture, we go through a series of examples of generating data with noise using random number generators, then using fitting codes to measure the input parameters.\n", "\n", "Each python command is given with its IDL equivalent when there is one.\n", "\n", "This notebook can be viewed as a [slideshow](http://keflavich.github.io/astr2600_notebooks/Lecture23_DataFitting.html) and found on [github](https://github.com/keflavich/astr2600_notebooks/blob/master/Lecture23_DataFitting.ipynb)\n", "\n", "__GOALS:__\n", "\n", " * Learn the tools needed for the data fitting homework problem, fitting Wien's law from the Planck curve\n", " * Learn some generally useful data fitting techniques\n", "\n", "__TUTORIAL TODAY:__ \n", "Repeat this lecture using IDL! You'll be given the source code. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# You can ignore this, it's just for aesthetic purposes\n", "matplotlib.rcParams['figure.figsize'] = (8,5)\n", "rcParams['savefig.dpi'] = 100" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_step": false, "slide_type": "skip" } }, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_step": true, "slide_type": "slide" } }, "source": [ "Fitting Lines to Data\n", "=====================\n", "We'll cover very basic line fitting, largely ignoring the subtleties of the statistics in favor of showing you *how* to perform simple fits of models to data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# These import commands set up the environment so we have access to numpy and pylab functions\n", "import numpy as np\n", "import pylab as pl\n", "\n", "# Data Fitting\n", "# First, we'll generate some fake data to use\n", "x = np.linspace(0,10,50) # 50 x points from 0 to 10\n", "# IDL> x = findgen(50)/49. * 10\n", "\n", "# Remember, you can look at the help for linspace too:\n", "# help(np.linspace)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_step": false, "slide_type": "slide" } }, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# y = m x + b\n", "y = 2.5 * x + 1.2" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_step": true, "slide_type": "subslide" } }, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# let's plot that\n", "pl.clf()\n", "pl.plot(x,y)\n", "# IDL> p1 = plot(x,y)" ], "language": "python", "metadata": { "slideshow": { "slide_start": true, "slide_step": true, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 5, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "# looks like a simple line. But we want to see the individual data points\n", "pl.plot(x,y,marker='s')\n", "# IDL> p2 = plot(x,y,symbol='s',overplot=pl)" ], "language": "python", "metadata": { "slideshow": { "slide_start": true, "slide_step": true, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "[]" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAApwAAAGsCAYAAABw2XeVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xt0VIXZ9uF7ZkjIAUISSCYM5RAQQahQghwU6AsUCVjx\nBalgKiJaX/1axAYQqghUKi3FKk1BBJQqIhpqa0usIiLWkCIILAEV0SZAEFESwiHEhCSEzHx/gLGj\nJJPD7Nlz+F1rsRbZmcPNGgy3M/t5tsXlcrkEAAAAGMRqdgAAAAAENwonAAAADEXhBAAAgKEonAAA\nADAUhRMAAACGonACAADAUBROAAAAGIrCCQAAAEPVu3CuWLFCvXv3VqtWrdSqVStdd9112rRpk9tt\n5s+fL4fDoaioKF1//fU6ePCg1wMDAAAgsNS7cLZv316LFy/Wnj179P7772v48OG66aab9PHHH0uS\nFi9erGXLlmnVqlXauXOnoqOjlZqaqsrKSsPCAwAAwP9ZmnJpy9atW+vxxx/XlClT5HA4NGvWLM2Y\nMUOSVFJSIrvdrjVr1mjixIleCwwAAIDA0qhzOKurq7V+/XpVVlZqyJAhys/PV2FhoUaMGFFzm5iY\nGA0YMEA7duzwWlgAAAAEnmYNufFHH32ka6+9VpWVlYqMjNTLL7+sK664Qtu3b5ck2e12t9vb7XYV\nFBR4Ly0AAAACToMKZ/fu3fXhhx/q7Nmz+utf/6pbb71V2dnZtd7e5XLJar38m6gnT57Um2++qU6d\nOikyMrJBoQEAAGC88vJyHTlyRKmpqWrTpk2jH6dBhTMsLEydO3eWJPXp00e7d+/WihUrNGfOHElS\nYWGh27uchYWFSklJuexjvfnmm5o0aVJjcwMAAMBH1q1bp9tuu63R929Q4fy26upqOZ1OJScnKykp\nSVu2bFGvXr0kXRwa2rVrl6ZOnXrZ+yYnJ0u6+Ae46qqrmhIDASI9PV0ZGRlmx4CP8HqHFl7v0MLr\nHTo++eQTTZo0qaa3NVa9C+dDDz2kG264Qe3bt9dXX32ll156STk5OZo7d66ki3/5Fi5cqK5du6pT\np06aN2+e2rVrp7Fjx1728SIiIiRJV111Va3vgiK4xMbG8lqHEF7v0MLrHVp4vUPP172tsepdOIuK\nijR58mQdP35crVq1Uu/evfXmm29q+PDhkqTZs2errKxM99xzj4qLizVkyBBt2rRJ4eHhTQoIAACA\nwFbvwrl69WqPt1mwYIEWLFjQpEAAAAAILlxLHQAAAIaicMJn0tLSzI4AH+L1Di283qGF1xsNReGE\nz/ADKrTweocWXu/QwuuNhqJwAgAAwFAUTgAAABiKwgkAAABDUTgBAABgKAonAAAADEXhBAAAgKEo\nnAAAADAUhRMAAACGonACAADAUBROAAAAGIrCCQAAAENROAEAAGAoCicAAAAMReEEAACAoSicAAAA\nMBSFEwAAAIaicAIAAMBQFE4AAAAYisIJAAAAQ1E4AQAAYCgKJwAAAAxF4QQAAIChKJwAAAAwFIUT\nAAAAhqJwAgAAwFAUTgAAABiKwgkAAABDUTgBAABgKAonAAAADEXhBAAAgKEonAAAADAUhRMAAACG\nonACAADAUBROAAAAGIrCCQAAAENROAEAAGAoCicAAAAM1czsAAAAAPAfw24cpi/PfClJqiit8Mpj\nUjgBAABQ48szXyp3ZO7FL45L+rDpj8lH6gAAADAUhRMAAACGonACAADgGy7vPyTncAIAAEBOp0uP\nrn9DeUWfef2xKZwAAAAh7k9ZWzXvnYf1Vdy7sirS629yUjgBAACC2H+vOfq2krIKnaz4ShfSzijK\n0lePdntDLyT8UrnK9WoGCicAAEAQc1tzdDnrwjWrwyv6/bxxslotenudQ9p88VsVpRU6qqNNzkDh\nBAAACGFdEzrpsTtvrvn6ndfeqfn9nj171Ldv3yY/B1PqAAAAIcxiMf45KJwAAABB6uMjJ/RZUZHZ\nMfhIHQAAINh8Vlis25Y/rnerMySVmx2HwgkAABAo6po4l6Q2Le2KHjRKW879QS5bpQZY7teJuL8p\nX4d8mPK76v2R+qJFi9SvXz/FxMTIbrdr3Lhxys11n3iaMmWKrFar268bbrjB66EBAABC0dcT57X9\n2n54u96qekRXu27XB3cd1nsLf6+wZjazY9f/Hc6cnBxNmzZN/fr1U1VVlebMmaORI0fqwIEDioqK\nkiRZLBaNHj1azz33XM39mjdv7v3UAAAA+I4wReudiR9qUM+ONccccd+sObocR5zD8Fz1LpxvvPGG\n29dr1qxRYmKi9uzZo8GDB0uSXC6XwsPDlZiY6N2UAAAA8Cg5IcmtbErua47M0ugp9eLiYklSfHx8\nzTGLxaLs7GzZ7XZ1795dv/jFL3T69OmmpwQAAIC8fs1JH2nU0JDT6VR6eroGDx6sHj161BwfNWqU\nxo8fr+TkZB08eFBz5szR6NGjtWPHDlmtbGACAABoDKfTpcf//rbyipp+1R8zNKpwTp06VQcOHNC2\nbdvcjk+cOLHm9z179lSvXr3UpUsXZWdna/jw4U1LCgAAEIJWbdyuBzc/rOK4bFkUYXacRmlw4bzv\nvvu0ceNG5eTkyOGo+yTT5ORktWnTRocOHaq1cKanpys2NtbtWFpamtLS0hoaDQAAIGB4WnHUzBKj\nk/3sOhH7uiIsvTS386t6OeEB5aqO66I3QWZmpjIzM92OfX0KZVPVu3C6XC5NmzZNWVlZys7OVseO\nHT3e59ixYzp16pTatm1b620yMjKUkpJS3xgAAABB4esVR7XKlMKsXTWtbaaWzJ2gZjartv1liWET\n55d7w89b11Kvd+GcOnWqMjMzlZWVpejoaBUUFEiSYmNjFRERobKyMj3yyCP6yU9+IrvdrkOHDmn2\n7Nnq2rWrUlNTmxwUAAAglMRY7SpcdEAR4d/UNX+YOG+Mek/yrFy5UiUlJRo6dKgcDkfNr5dfflmS\nZLPZ9NFHH+mmm25St27ddPfdd6tfv37697//rbCwMMP+AAAAAMEoKa6VW9kMZPX+Uzidzjq/HxER\noU2bNjU5EAAAQCioqqo2O4LPBEdtBgAACBDHikp0+1N/VH7xYbOj+AyFEwAAwAs8TZ0nxiQp9odj\n9PrZ38sVVqrmilWlzvgwoXkonAAAAF7gaeo898VDUr/t6uG6W8/fPle3/Wu4cimcAAAA8JYwV7Q2\n3bxHw3/QRdKlFUYGrTjyNxROAAAAH0hOTKopm1LgrjhqDC5wDgAA4A0uswP4LwonAABAE/0pa6vy\nio6aHcNv8ZE6AABAIz3/1m7NeP1hnY57SxY1NzuO36JwAgAAfIunFUfh1lY6dU07HY/doObWHprV\n4RVlJTykXNVxbfQQRuEEAAD4Fk8rjvSS1Mx2SvcmrNXSOT9VeJhNu19ZFjJT5w1F4QQAAGiglja7\nChZ+qqiIsJpjoTR13lAMDQEAADRQ27hWbmUTdaNwAgAAfEvVBafZEYIKH6kDAABcUnC6VJOXL1X+\nmcNmRwkqFE4AABDyiksrdNdTq7Th1O/kCi9Wc8WoUsVmxwoaFE4AABDU6lpx5HJKJeUWnby+TNVR\nx9XVeYeeu3W+7vrXSOVSOL2GwgkAAIKaxxVHmVIH5616eswCpV5zpaRLK4xYceQ1FE4AABDS2kZ2\n1GdPZLodY8WRdzGlDgAAQlrLKC5JaTQKJwAACGpnS8vNjhDyKJwAACAoZWbvVeL0H6uw8nOzo4Q8\nzuEEAAABpa6pc0lqbovVmWs66lirvyrMeqVibW1VrOM+TIhvo3ACAICA4nHq/CXJZivQlLg/a8VD\nk9X7vZ4UTpNROAEAQFBpYU3UF4/kKib64jAQK47MR+EEAABBxREfW1M2JVYc+QOGhgAAQEC5UO00\nOwIaiHc4AQBAQDh59pzuWL5ch08fNjsKGojCCQAA/Fpp+Xnd/dRq/bVwoZwRRQpXS53XWbNjoQEo\nnAAAwDR1rThyuaTScquKflShCy0+U2fnJP15/CO69+3RyqVwBhQKJwAAMI3HFUeZksN5s54a+Zr+\n97qekpg6D0QUTgAA4LeSIjvqiyWvuB1j6jzwMKUOAAD8VkxUc883gt+jcAIAANOUlFWYHQE+QOEE\nAAA+949398sxfZwKKo6aHQU+wDmcAADAK+qaOJcuDvPMffQZ/Wzdr/VZy0w1syWrlS1JZ1Xgw5Qw\nA4UTAAB4haeJ8yMvFmrEhu6y2uz6aasVeubBu9Rnx/cpnCGAwgkAAHzivEp1U+Rjem7mzxUfEymJ\nFUehgsIJAAB8onN8srIenOF2jBVHoYGhIQAA4BPNbNSOUMUrDwAAmqy4tEJfnj5jdgz4KQonAABo\ntHMVVZqc8YzaLOiqUmeR2XHgpziHEwAAXFada45cUmmFTUXDqlQVc1DtqyfK2WKnvtARn2ZEYKBw\nAgCAy/K05kiZUqLzRi0d+ldN/J8faNiNwxS9ObzWmzNxHroonAAAoFHsER1U8Md/1nzNxDlqwzmc\nAACgUVpFR5gdAQGCwgkAAC7rq3OVZkdAkKBwAgAANxt3far2MyboePlnZkdBkKBwAgAASVLOh/m6\n4oEp+vHrPXXc9p5irHazIyFIMDQEAEAIqGvFUWVVtU5+Va6yW4pkscVpfIsMPTv7HvXb3kslKvRx\nUgQjCicAACHA44qjF61KDf+t1s6YpsTYaEmX1hhtrv0urDlCfVE4AQCAOsd11qa5D7odY80RvIVz\nOAEAgJo1oxLAOPztAgAgyJWWn9fx08Vmx0AIo3ACABCkKs5f0N1PrlHcvG76ynnC7DgIYfU+h3PR\nokX6+9//rv/85z+KjIzUddddp8WLF+vKK690u938+fO1evVqFRcXa9CgQVqxYoWuuOIKrwcHACBU\n1TVxLklt4xxKGfcLLf94vs63+lQO581StPSljvguJPBf6l04c3JyNG3aNPXr109VVVWaM2eORo4c\nqQMHDigqKkqStHjxYi1btkxr165Vp06dNG/ePKWmpurAgQNq3ry5YX8IAABCiaeJ87x1n2nrsWy1\ndqZqyaAXNHnENeo2qJsPEwLu6l0433jjDbev16xZo8TERO3Zs0eDBw+Wy+VSRkaG5s2bpzFjxkiS\n1q5dK7vdrg0bNmjixIneTQ4AAC7LIqv+1Gerpt30w5pjrDiCmRq9Fqm4+OLJx/Hx8ZKk/Px8FRYW\nasSIETW3iYmJ0YABA7Rjxw4KJwAAPnJFQnu3simx4gjmatTQkNPpVHp6ugYPHqwePXpIkgoKCiRJ\ndrv7ZbDsdnvN9wAAgA9YzA4AuGvUO5xTp07VgQMHtG3bNo+3dblcslpr77Xp6emKjY11O5aWlqa0\ntLTGRAMAIKi9vfegDp84bnYMBKHMzExlZma6Hfv6E+2manDhvO+++7Rx40bl5OTI4fjmfI+kpCRJ\nUmFhodu7nIWFhUpJSan18TIyMur8PgAAkHZ+8rmmPPeoPo18lncwYYjLveG3Z88e9e3bt8mPXe/C\n6XK5NG3aNGVlZSk7O1sdO3Z0+35ycrKSkpK0ZcsW9erVS5JUUlKiXbt2aerUqU0OCgBAsKprzdH5\nqmqdLK1U6fgTslhb6qbIx/Rx65U6pDwfpwQar96Fc+rUqcrMzFRWVpaio6NrzsuMjY1VRESELBaL\n0tPTtXDhQnXt2rVmLVK7du00duxYw/4AAAAEOk9rjvSiVcPDHtEL6elytG6pYdv+Kdvm2t/mZOIc\n/qbehXPlypWyWCwaOnSo2/E1a9Zo8uTJkqTZs2errKxM99xzj4qLizVkyBBt2rRJ4eHhXg0NAEAo\nSY5L1tvz59V8zcQ5Ak29C6fT6azX7RYsWKAFCxY0OhAAAHAX1sxmdgSgSbiWOgAAJjpXUaWCM2fN\njgEYisIJAIAJLlQ7NXXlS4p9uIdKnIVmxwEM1egrDQEAgO+qa+JcujjQc+2EdC3ZN1eVrfbL7hwj\na2SVjuszH6YEfIvCCQCAF3maOM9bd1TZ+WMV5xyuJwfs0N2jBqrboG5ilTuCGYUTAAAfe+z7WzRr\n/I9qvnbEOaTNtd+eNUcIdBROAAB8qGtCB7eyKbHmCMGPoSEAAHyJy1IiBFE4AQDwkm37jyj/RIHZ\nMQC/Q+EEAKCJ9h06rqt/NVVDXr5SVZYys+MAfodzOAEAqIWnFUdxUYly9r9Wuy1PymKNUGr4b3Qw\n/lkdUp4PUwL+j8IJAEAtPK040ot5Uv99GmybqXXTZqqjPVbD3ntTts21n6jJxDlCEYUTAIBGaq5Y\n7b33P7qqQ0LNMSbOge/iHE4AABqpY0KCW9kEcHkUTgAAauFymZ0ACA58pA4AwLdcqHbqV2v+rryi\nI2ZHAYIChRMAEDI8TZ074hwa+tNZWrx7rspj98qqKDl13ocJgeBE4QQAhAxPU+d5644qO+/HinEN\n1mMpOVq2+W7lqo4pdQD1QuEEAKCGS492e0NzJqTKarXolVUOaXPtt2bFEVA/FE4AAC7pmtBRc28d\nVfM1K44A72BKHQCAr9W+rx1AE1A4AQAhYecnn+tIUaHZMYCQxEfqAICg9vGRE7p91SLtbbZC0gWz\n4wAhicIJAAhInlYcxUcnyjrwh9pe/SfJYtPwsId1JH6tDuugD1MCkCicAIAA5WnFkV48KPV/XwOt\nv9S6n89SF0e8hu36l5ptrv1sMqbOAWNQOAEAQam5YrTrrk/Uq3NSzTGmzgFzMDQEAAhKHRMS3com\nAPNQOAEAgclldgAA9cVH6gCAgOJ0ujR33avKKzpidhQA9UThBAAEBKfTpcde2aKF2+eqLHaXrIqS\nS+fNjgWgHiicAADTeVpxJGe0TgxopeK4bLVwDdTjV7+tpxN/rlzVMaUOwG9QOAEApvO44ihTirD0\n0tzOr2rBbTfKarXotWcd0uba78KKI8B/UDgBAH4v1tZWRY/vVTPbN7OurDgCAgdT6gAAv5cY29Kt\nbAIILPzXCwAwXWVVtdkRABiIwgkAME3esVPq//BsfXb2sNlRABiIczgBAF7naeq8dQu7ml/3I2VX\nPiFZXIpUnMp12ocJAfgShRMA4HUep85fPCj136W+mqoX7n1QY7MHK5fCCQQtCicAwOfC1VLv3v6x\nrrmynaRLK4xYcQQELQonAMDnOiXYa8qmxIojINgxNAQA8D6X2QEA+BPe4QQAeI3T6dKj699QXtFn\nZkcB4EconAAAr/hT1lbNe+dhfRX3rqyK5E1OADUonACAOnlacWRVS53oF6/TcW8pytJXC7tv0tqE\n+5WrOqbUAYQUCicAoE4eVxxlSs2tPTSrwyv6/bxxslot2vICU+cAvkHhBAA0SStbkk4s/lDhYbaa\nY0ydA/hvTKkDAJrEHhvjVjYB4NsonACAOp2vqjY7AoAAR+EEAFxW/vEzGjT/YR05e9jsKAACHOdw\nAkCI8TR13qalXdGDRmnLuT/IZT2vCMWpguucA2gCCicAhBhPU+e5Lx6S+u1UL9e9euFnc3RL9v8o\nl8IJoAkonAAAN2GK1ju3fqhBPTtKurTCiBVHAJqAwgkAcJOckFRTNiVWHAFoOoaGACDUcM1JAD5W\n78KZk5OjMWPGqF27drJarcrKynL7/pQpU2S1Wt1+3XDDDV4PDABoHKfTpd//9S3lFR01OwqAEFPv\nwnnu3Dn16dNHy5cvlyRZLBa371ssFo0ePVoFBQU1vzIzM72bFgDQKCtef1fxM4bpoQMjzY4CIATV\n+xzOUaNGadSoUbV+3+VyKTw8XImJiV4JBgDwzNOKo2aWGBX1S1RR7EZFWHppXpd/6i8JM5WrOq6N\nDgBe5rWhIYvFouzsbNntdsXFxWn48OFauHCh4uPjvfUUAIBv8bTiSJlSmPVK3e9Yryfm3qJmNqv+\nvf4Jps4B+JTXCueoUaM0fvx4JScn6+DBg5ozZ45Gjx6tHTt2yGplNgkAzBBjtatw0ceKCP/mxz1T\n5wB8zWuFc+LEiTW/79mzp3r16qUuXbooOztbw4cP99bTAAAaICmulVvZBAAzGPZTKDk5WW3atNGh\nQ4fqLJzp6emKjY11O5aWlqa0tDSjogFA0KiqqjY7AoAgkZmZ+Z2B7+LiYq88tmGF89ixYzp16pTa\ntm1b5+0yMjKUkpJiVAwACErHikp0+1N/VH7xYbOjAAgSl3vDb8+ePerbt2+TH7vehbOsrEx5eXk1\nXx8+fFj79u1T69atFR8fr0ceeUQ/+clPZLfbdejQIc2ePVtdu3ZVampqk0MCAC46efac7li+XG+U\nLJYrrFTNFatKnTE7FgDUqd6Fc/fu3TUfjVssFs2YMUPSxYXvTz31lD766COtXbtWxcXFcjgcSk1N\n1aOPPqqwsDBjkgNAkKlrxZHT6VLJOelkaqmcEUXq4bpbz98+V7f9a7hyKZwA/Fy9C+fQoUPldDpr\n/f6mTZu8EggAQpXHFUcvSZ2dt+uZm3+t4T/oIunSCiNWHAHwc4wuAkCAcER30qHH17odY8URgEDA\ngkwACBAtIsPNjgAAjULhBAA/caa03OwIAGAICicAmOz5t3ardfpIFVV+bnYUADAE53ACgEHqmjqX\npHBrK526pp2Ox25QuPUqxTVz6Ixqvz0ABCoKJwAYpD5T581sJ3VvwlotnfNTXb2zBwuOAAQlCicA\nmKSlNVFfPvppzTAQK44ABCsKJwCYpG18rNvkOSuOAAQrhoYAwCBVF2q/WAYAhBLe4QQALys4XarJ\ny5cq/8xhs6MAgF+gcAKAlxSXVuiup1Zpw6nfydX8jMIVo/MqNjsWAJiOwgkA9VDXiiOXUyopt+jk\n9WWqjvpSXZ1T9NzE+brr7ZHKpXACAIUTAOrD44qjTKl99UQ9feMCjerXTRJT5wDwNQonAHhB28iO\nOrpkvdsxps4B4CKm1AHAC1pGNTc7AgD4LQonANRDcWm52REAIGBROAGgDpnZe5U4/cc6Ufm52VEA\nIGBxDieAkFPXxLl0cZhn1vwVunf9fB1r9VeFWbsq1tZWxTruw5QAEDwonABCjqeJ8/x1Bcp+vads\ntna6I261Vj50h3q/15PCCQCNROEEgG+pspRpfIsMPTv7HsVEXxwGYsURADQehRMAvqVLfGf9bdY0\nt2OsOAKAxmNoCAC+xWazmB0BAIIKhRNASDl59py+OHXG7BgAEFIonABCQmn5eU18fLnsv71CZa4i\ns+MAQEjhHE4AAa+uNUcul1RablXRjyp0ocVn6uycpPMttumY8n2cEgBCF4UTQMDztOZImZLDebOe\nGvma/ve6nhp24zBFbQ6r9eZMnAOAd1E4AQS9pIgO+mLJKzVfM3EOAL7FOZwAgl5MdITZEQAgpFE4\nAQS8krIKsyMAAOpA4QQQsP7x7n45po9TQcVRs6MAAOpA4QQQcN7ee1CdZt6mm9/qpSLbh2plSzI7\nEgCgDgwNAfArda04qjh/QSdLy3VuwglZbXalxTylp391l/ruuFpnVeDjpACA+qJwAvArHlccvWjT\nTZGP6bmZP1d8TKSkS2uMNtd+F9YcAYC5KJwAAkrn+GRlPTjD7RhrjgDAv3EOJ4CA0szGjy0ACDT8\n5AbgN4pLK/Tl6TNmxwAAeBmFE4DpzlVU6Y4/rVabBVeq1FlkdhwAgJdxDicAw9Q1cS5JbeMcunrM\nPVqVO19VMQfVvnqinC126gsd8V1IAIDhKJwADONp4jxv3RFt7Zctu3OMlg77myb8sLe6Dermw4QA\nAF+gcAIwjUXN9PSArbp71MCaY6w4AoDgQ+EEYJorEr/nVjYlVhwBQDBiaAgAAACGonACMMTGXZ/q\n8InjZscAAPgBCicAr9q2/4i6PnCnfvx6T12wlJsdBwDgBziHE0C91bXmqLKqWidLK1T2kxOy2uI1\nvkWGPmi9TAeV5+OUAAB/Q+EEUG+e1hzpRatSw3+rtTOmKTE2WsO2/l3WzZZab87EOQCEBgonAK/p\nHNdZm+Y+WPM1E+cAAIlzOAF4UbNm/EgBAHwX/zoAqJfS8vM6frrY7BgAgABE4QRQp/NV1fq/5c8r\nbl43feU8YXYcAEAA4hxOIETVNXEuSW3jHEoZ9wst/3i+zrf6VA7nzVK09KWO+C4kACAoUDiBEOVp\n4jxv3WfaeixbrZ2pWjLoBU0ecY26Dermw4QAgGBB4QRwWRZZtTQlR/eNGVJzzBHnkDbXfh/WHAEA\nLofCCeCyrkho71Y2JdYcAQAap95DQzk5ORozZozatWsnq9WqrKys79xm/vz5cjgcioqK0vXXX6+D\nBw96NSwAH6p9XzsAAA1S78J57tw59enTR8uXL5ckWSzu/xotXrxYy5Yt06pVq7Rz505FR0crNTVV\nlZWV3k0MoMne3ntQh08cNzsGACBE1Psj9VGjRmnUqFGX/Z7L5VJGRobmzZunMWPGSJLWrl0ru92u\nDRs2aOLEid5JC6BJdn7yuaY896g+jXyWdzABAD7jlXM48/PzVVhYqBEjRtQci4mJ0YABA7Rjxw4K\nJ2AwTyuOYiMTVNWvn/Y2WyGLtaVuinxMH7deqUPK82FKAECo8krhLCgokCTZ7Xa343a7veZ7AIzj\nacWRXsqT+n+k4WEP64X0dDlat9Swbf+UbXPtb3MycQ4A8BZDp9RdLpes1rpPE01PT1dsbKzbsbS0\nNKWlpRkZDQgpEYrT/vvy1MURX3OMiXMAwH/LzMxUZmam27HiYu9c0tgrhTMpKUmSVFhY6PYuZ2Fh\noVJSUuq8b0ZGhsfbAGiaDm3auJVNAAC+7XJv+O3Zs0d9+/Zt8mN75VrqycnJSkpK0pYtW2qOlZSU\naNeuXbr22mu98RQA6uBymp0AAIDa1fsdzrKyMuXlfTNgcPjwYe3bt0+tW7dW+/btlZ6eroULF6pr\n167q1KmT5s2bp3bt2mns2LGGBAcgXah26pfPrFfeyXyzowAAUKt6F87du3dr+PDhki7u4JwxY4Yk\nacqUKXr22Wc1e/ZslZWV6Z577lFxcbGGDBmiTZs2KTw83JjkQAhzOl2au+5VLdk3V5Wt9sumaFWr\nyuxYAABcVr0L59ChQ+V01v253YIFC7RgwYImhwJCXa1rjlzS6dJzOn3+rJxpXynOOVxPDtihP2y+\nQ7mqY0qfmvxJAAATMElEQVQdAAATcS11wA95WnNkWRehx69+WzNvvvipw4tPOqTNtT8eK44AAGai\ncAIBqGtCh5qyKbHiCADg37wypQ7Ax7gsJQAggFA4AT+zbf8R5Z/gCl0AgOBB4QT8xL5Dx3X1r6Zq\nyMtXqspSZnYcAAC8hnM4AYPVOnF+SVxUopz9r9Vuy5OyWCM0qvmjyov/sw4pr9b7AAAQSCicgME8\nTZzrxTyp/z4NsT2gF6bNUEd7rLptfNZ3AQEAMBiFEzBZc8Vq773/0VUdEmqOOeJYcwQACB4UTsBk\nHRMS3MqmxJojAEBwYWgIMJjLZXYCAADMxTucgEEuVDs1e80ryis6YnYUAABMReEEvMzpdOnR9W9o\n8e65Ko/dK5uiVK3zZscCAMA0FE6gATytOHJWR6lwYLS+intXMa4heiwlR8s2361c1TGlDgBAkKNw\nAg3gccVRphRl6auF3TfpoVtGymq16JVVTJwDAEIbhRPworhmDp18Yres1m8uds7EOQAg1DGlDnhR\nQqsWbmUTAABQOIEGqTh/wewIAAAEHAonUA8fHzmhlIem62jJYbOjAAAQcDiHEyHN09R5fHSirAN/\nqO3Vf5IsNkVZWuucTvkwIQAAgY/CiZDmcer8xYNSvz0aaL1f634+SzdsvVa5FE4AABqEwgnUobli\ntOtnn6hX5yRJl1YYseIIAIAGoXACdeiYkFhTNiVWHAEA0BgMDSG0ucwOAABA8OMdToQkp9Oluete\nVW7REbOjAAAQ9CicCClOp0uPvbJFC7fPVVnsLlkVJafOmx0LAICgRuFE0PC04kjOaBUOiNHZuK1q\n4Rqox69+W08n/ly5qmNKHQAANBmFE0HD44qjTCnC0ktzO7+qBbfdKKvVoteeZeocAACjUTgRMmJt\nbVX0+F41s30zK8fUOQAAxmNKHSEjMbalW9kEAAC+wb++CBqV5y+YHQEAAFwGhRMBL+/YKfV/eLY+\nK8k3OwoAALgMzuGEX/I0ce6Ic+iF57I0afkSbT2/RLI4Fak4leu0D1MCAID6oHDCL3maOP8i84w6\nPJEsV1iZ+mqqXrj3QY3NHqxcCicAAH6HwomAVOYq0lXOe/X8pLnq1+17ki6tMGLFEQAAfofCiYD0\nvRbJOvDYSrdjrDgCAMA/MTSEgBQVEWZ2BAAAUE8UTvgdp9OlUyVlZscAAABeQuGEX8nYkK3YGYN1\nquoLs6MAAAAv4RxO+ISnNUdWtdSJfvE6HfeWIi0pah3WTqdE6QQAIBhQOOETntYcKVMKt16lB9r/\nTYvn3awf3TRcX26OrvXmTJwDABA4KJzwC61sSTqx+COFh9kkMXEOAEAw4RxO+AV7bExN2QQAAMGF\nwgmfOF9VbXYEAABgEgonDJV//IwGzX9YR84eNjsKAAAwCedwwhAFp0s1eflSbTn3B7lslYpQrCp0\nxuxYAADABBRONFhdK46cTpeKy1w6NbpEruZn1Mv1//TCXXN0yzv/o1wKJwAAIYnCiQbzuOLoJamr\n8y49N3G+BvXsKOnSGqPNtd+FNUcAAAQvCie8rl2LTsr9w5/djrHmCACA0MXQELwuOiLc7AgAAMCP\nUDjRIE6nS6e/Omd2DAAAEEAonKi3VRu3q/WM4Tp5/pjZUQAAQADhHM4QV9fEuXRxmOf/zfqj7t8w\nVydiX1eEpZfiw9rptL7wYUoAABDIKJwhztPE+eF1Xyo7u4/CrF01rW2mlsydoJ4/vEqnfZgRAAAE\nNq8WzkceeUS/+c1v3I51795dBw4c8ObTwIcuWCo0Je7PWvHQZEWEX/zrwoojAADQEF5/h/P73/++\ntmzZ8s0TNONN1EB2RetkPXf/XW7HWHEEAAAawutt0GazKTEx0dsPC5NYrRazIwAAgADn9Sn1vLw8\ntWvXTl26dNGkSZP0+eefe/sp4CXHikr0+alTZscAAABBzquFc+DAgXr++ef15ptvasWKFcrPz9eQ\nIUNUWlrqzadBE50uKdeYRY+rwxOdVe6icAIAAGN59SP1UaNG1fz++9//vgYMGKCOHTvq5Zdf1l13\n3VXHPeEtda05cjpdKjknnUwtlTOiSFc5f6aymLd0VId9nBIAAIQSQyd6WrVqpSuvvFKHDh2q9Tbp\n6emKjY11O5aWlqa0tDQjowUtT2uO9JLU2Xm7nrn51xr+gy4aduMwRWyu/a8BE+cAAISGzMxMZWZm\nuh0rLi72ymMbWjhLS0uVl5enyZMn13qbjIwMpaSkGBkD/8UR3UmHHl9b8zUT5wAAQLr8G3579uxR\n3759m/zYXj2H84EHHlBOTo6OHDmi7du3a9y4cQoPD+fdSj/SIjLc7AgAACDEePUdzi+++EJpaWk6\ndeqUEhISNGTIEL333ntq3bq1N58GdThTWm52BAAAADdeLZzf/twfvvP8W7s14/WHdbqSNVQAAMC/\ncBkgP1bXxLl0caDn/oeWaerf5ul47AaFW69SXDOHzqj2+wAAAPgahdOPeZo4P7zuuLLf6qVmtmTd\nm7BWS+f8VFfv7KEzPswIAADgCYUzgF2wnNNPW63QMw/epaiIMEmX1hhtrv0+rDkCAAC+RuEMYF1a\nd9aL0+91O8aaIwAA4G+8fi11+I7NajE7AgAAgEcUTj9VcLpUx06dNjsGAABAk1E4/UxxaYVufuxP\ncizuonOuk2bHAQAAaDLO4fShutYcuZxSSblFJ68vU3XUl+rqnKKKltn6XId9nBIAAMC7KJw+5GnN\nkTKlDs5b9fSYBUq95koNu3GYIjfX/hIxcQ4AAAIBhdOPtI3sqM+e+OZqTUycAwCAYMA5nH6kZVRz\nsyMAAAB4HYXTh86WlpsdAQAAwOconD7wl637ZJ9+oworPzc7CgAAgM9ROA20cdenaj9jgm7N7qMz\n1jzF2tqaHQkAAMDnGBpqpLpWHJVXVulkWbnKJ5yQzfY9TYn7s1Y8NFm93+upYh33cVIAAABzUTgb\nyeOKoxdtGt8iQ8/Ovkcx0ReHgRxxDmlz7XdhzREAAAhGFE6DdInvrL/NmuZ2jDVHAAAgFHEOp0Fs\nNovZEQAAAPwChbMRTpeU64tTZ8yOAQAAEBAonA1QWn5etz7xlBIWdlGZq8jsOAAAAAGBczhV98S5\nJLWNdajrDVO0Jv8RXWjxmTo7J+l8y206pnwfpgQAAAhMFE55njjPXXdEW/tny+G8WU+NfE3/e11P\ndRvUzYcJAQAAAheFsx5saqY1g7dr0o/61hxjxREAAED9UDjroUvi99zKpsSKIwAAgPpiaAgAAACG\nCvnC+Y939+vQidoHhgAAANA0IVs43957UJ1m3qab3+qlalWaHQcAACBoBeU5nHWtOao4f0EnS8t1\nbsIJWW12/bTVCu1us0R5quO66AAAAGi0oCycntYc6UWbbop8TM/N/LniYyI17O31sjBxDgAAYIig\nLJyedI5PVtaDM2q+ZuIcAADAOCF5DmczW0j+sQEAAEwRdM2ruLRCX54+Y3YMAAAAXBI0hfNcRZUm\nZzyjNgu6qtRZZHYcAAAAXOL353DWNXEuSW3jHOp54//pmbxfqyrmoDo4b5WzxXs6piO+CwkAAIBa\n+X3h9DRxnrvuiLb2y5bdOUZLh/1NE37YW90GdfNhQgAAANTF7wunJ1Y106oBW3X3qIE1xxxxDok1\nRwAAAH4h4AvnFYnfcyubEmuOAAAA/EnQDA0BAADAP/l14dy461MdPlH7wBAAAAD8n18Wzm37j6jr\nA3fqx6/31AVLhdlxAAAA0ASmn8M57s5ximgRIUmKiWijimt+oP3Nn5HVFq/xLTL0QetlOqg8k1MC\nAACgsUwvnEevPSq1vfTFS3my9P9EqeG/0doZ05QYG61hW/8u62ZLrfdn4hwAAMC/mV44/1uk4vRJ\n+iF1tMfWHGPiHAAAILD51Tmc7du0cSubAAAACHx+VTgBAAAQfCicAAAAMBSFEwAAAIaicAIAAMBQ\npk+pd9jRoWYPJyuOAAAAgo/phfMfz/1DKSkpZscAAACAQfhIHQAAAIaicAIAAMBQFE4AAAAYisIJ\nn8nMzDQ7AnyI1zu08HqHFl5vNJTXC+fy5cvVqVMnRUZGauDAgdq9e7e3nwIBih9QoYXXO7TweocW\nXm80lFcL51/+8hfNnDlTCxYs0N69e9W7d2+lpqaqqKjIm08DAACAAOLVwrlkyRLdc889uuOOO9S9\ne3etXLlSUVFRevbZZ735NAAAAAggXiuc58+f1549ezRixIiaYxaLRSNGjNCOHTu89TQAAAAIMF5b\n/H7y5ElVV1fLbre7HU9MTNSnn376ndtXVFRIkj755BNvRYCfKy4u1p49e8yOAR/h9Q4tvN6hhdc7\ndHzd08rLy5v0OKZdaSg/P1+SNGnSJLMiwAR9+/Y1OwJ8iNc7tPB6hxZe79By5MgRDRo0qNH391rh\nbNOmjWw2mwoLC92OFxYWqm3btt+5fWpqqtatW1cz0Q4AAAD/UlFRofz8fKWmpjbpcSwul8vlpUwa\nOHCg+vfvr6VLl0qSnE6nOnTooPvvv1+zZ8/21tMAAAAggHj1I/UZM2bojjvu0DXXXKN+/fopIyND\n5eXluvPOO735NAAAAAggXi2cEyZMUFFRkebPn6+CggL16dNHmzZtUkJCgjefBgAAAAHEqx+pAwAA\nAN9myrXUufxl6Fi0aJH69eunmJgY2e12jRs3Trm5uWbHgg/8/ve/l9Vq1fTp082OAoN88cUXmjRp\nktq0aaOoqCj16tVL77//vtmxYIALFy7ooYceUnJysqKionTFFVdo4cKFZseCl+Tk5GjMmDFq166d\nrFarsrKyvnOb+fPny+FwKCoqStdff70OHjzYoOfweeHk8pehJScnR9OmTdPOnTv11ltvqaqqSiNH\njtS5c+fMjgYD7d69W08//bR69eoli8VidhwY4MyZMxo0aJCaN2+uTZs26ZNPPtGSJUsUFxdndjQY\n4He/+51Wr16tp556Sp9++qkWL16sxx57TMuWLTM7Grzg3Llz6tOnj5YvXy5J3/m5vXjxYi1btkyr\nVq3Szp07FR0drdTUVFVWVtb7OXz+kfqAAQM0YMCAmkl2l8ul9u3ba9q0afrVr37lyygwwcmTJ5WY\nmKicnBwNHjzY7DgwQGlpqfr27asVK1bo0UcfVZ8+fbRkyRKzY8HLHnzwQe3YsUNbt241Owp8YMyY\nMUpKStIzzzxTc2z8+PGKjo7W2rVrTUwGb7NardqwYYNuuukmSRd7msPh0KxZszRjxgxJUklJiex2\nu9asWaOJEyfW73ENS3wZXP4SxcXFkqT4+HiTk8AoU6dO1Y033qjhw4eLU8SD16uvvqq+ffvqlltu\nkd1uV0pKilavXm12LBhk9OjR2rJli/Ly8iRJH3zwgd59912NHj3a5GQwWn5+vgoLC926W0xMjAYM\nGNCg7ubTKw019PKXCC5Op1Pp6ekaPHiwevToYXYcGGD9+vXat29fzXnZfJwevA4fPqwVK1Zo5syZ\nmjt3rnbt2qX7779f4eHhmjx5stnx4GW/+MUvdPToUXXr1k3NmjVTdXW1fve73yktLc3saDBYQUGB\nJH2nu9nt9prv1Ydpl7ZE6Jk6daoOHDigbdu2mR0FBvj888/1y1/+Ulu2bFF4eLikix/F8C5ncHI6\nnerfv3/N4Ejv3r21f/9+rVy5ksIZhJYuXarnn39e69evV8+ePbV3716lp6erbdu2vN4hyuVyyWqt\n/wflPv1IvaGXv0TwuO+++7Rx40a98847cjgcZseBAd5//30VFRUpJSVFYWFhCgsLU05OjpYuXarw\n8HCKZ5BxOBzf+aSie/fuOnr0qEmJYKTf/va3mjdvniZMmKCePXtq0qRJmj59uhYtWmR2NBgsKSlJ\nki7b3b7+Xn34tHCGh4erb9++2rJlS80xp9Opt99+W9dee60vo8BHXC6X7rvvPmVlZelf//qXOnbs\naHYkGGTEiBHav3+/PvjgA33wwQfat2+frrnmGk2aNEn79u3j4/UgM2jQoO+cCpWbm6tOnTqZEwiG\ncrlcstlsbsesViv/IxkCkpOTlZSU5NbdSkpKtGvXrgZ1N59/pM7lL0PL1KlTlZmZqaysLEVHR9ec\n7xEbG6uIiAiT08GbWrRo8Z13vKKiohQfH885u0Fo+vTpuu6667Ro0SLdcsst2rVrl5555hm3KWYE\nj7Fjx2rhwoVq3769evToob179+qPf/yjfvazn5kdDV5QVlZWMxAmXTxHe9++fWrdurXat2+v9PR0\nLVy4UF27dlWnTp00b948tWvXTmPHjq3/k7hM8OSTT7o6duzoat68uWvgwIGuXbt2mREDPmCxWFxW\nq9VlsVjcfj3//PNmR4MPDB061DV9+nSzY8Agr732muvqq692RUREuHr06OFavXq12ZFgkNLSUtfM\nmTNdnTp1ckVGRrq6dOnimjdvnquqqsrsaPCCd955p+bf5//+N/vOO++suc38+fNdSUlJroiICNf1\n11/vysvLa9BzcGlLAAAAGMqUS1sCAAAgdFA4AQAAYCgKJwAAAAxF4QQAAIChKJwAAAAwFIUTAAAA\nhqJwAgAAwFAUTgAAABiKwgkAAABD/X9uDp6684m4EwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "For the first, most basic example, we're going to add Gaussian (normally distributed) random noise to our line so that we can try to fit noisy data (which is what you do in the \"real world\")" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# We need to add noise first\n", "noise = pl.randn(y.size)\n", "# in IDL, this would be: IDL> noise = randomn(seed, n_elements(y))\n", "# Like IDL, python has a 'randn' function that is centered at 0 with a standard deviation of 1. \n", "# IDL's 'randomu' is 'pl.rand' instead\n", "# What's y.size?\n", "print y.size\n", "print len(y)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "50\n", "50\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "`y.size` is the number of elements in y, just like `len(y)` or, in IDL, `n_elements(y)`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Now add noise to the data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# We can add arrays in python just like in IDL\n", "noisy_flux = y + noise\n", "# We'll plot it too, but this time without any lines\n", "# between the points, and we'll use black dots\n", "# ('k' is a shortcut for 'black', '.' means 'point')\n", "pl.clf() # clear the figure\n", "pl.plot(x,noisy_flux,'k.')\n", "# We need labels, of course\n", "pl.xlabel(\"Time\")\n", "pl.ylabel(\"Flux\")" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "-" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The IDL equivalent:\n", " \n", " p1.putdata,x,noisy_flux\n", " p1.symbol='o'\n", " p1.sym_size=0.3\n", " p1.linestyle=''\n", " p1.xtitle = \"Time\"\n", " p1.ytitle = \"Flux\"\n", " p2.hide = 1\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "source": [ "On to the fitting stage.\n", "We're going to fit a function of the form\n", "\n", "$$y = m*x + b$$\n", "\n", "which is the same as\n", "\n", "$$f(x) = p[1]*x + p[0]$$\n", "\n", "to the data. Fitting this function means we are trying to determine the values of $m$ and $b$ (or $p[0]$ and $p[1]$).\n", "\n", "This is called \"linear regression\", but it is also a special case of a more\n", "general concept: this is a first-order polynomial.\n", "\"First Order\" means that the highest exponent of x in the equation is 1\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# We'll use polyfit to find the values of the coefficients. The third\n", "# parameter is the \"order\" (1=linear, 2=quadratic, 3=cubic, etc)\n", "p = np.polyfit(x,noisy_flux,1)\n", "# help(polyfit) if you want to find out more\n", "# IDL> p = linfit(x,noisy_flux)\n", "# or \n", "# IDL> p = poly_fit(x,noisy_flux,1)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "# print our fit parameters. They are not exact because there's noise in the data!\n", "# note that this is an array!\n", "print p, \" and we chose m=2.5 and b=1.2\"\n", "print type(p) # you can ask python to tell you what type a variable is" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 2.53191143 1.25297222] and we chose m=2.5 and b=1.2\n", "\n" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "# Great! We've got our fit. Let's overplot the data and the fit now\n", "pl.clf() # clear the figure\n", "pl.plot(x,noisy_flux,'k.') # repeated from above\n", "pl.plot(x,p[0]*x+p[1],'r-') # A red solid line\n", "pl.xlabel(\"Time\") # labels again\n", "pl.ylabel(\"Flux\")\n", "# IDL> p3 = plot(x,p[1]*x+p[0],color='r',overplot=p1)\n", "# (in IDL, just don't clear the plot)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "fragment" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 11, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "# Cool, but there's another (better) way to do this. We'll use the polyval\n", "# function instead of writing out the m x + b equation ourselves\n", "pl.clf() # clear the figure\n", "pl.plot(x,noisy_flux,'k.') # repeated from above\n", "pl.plot(x,np.polyval(p,x),'r-') # A red solid line\n", "pl.xlabel(\"Time\") # labels again\n", "pl.ylabel(\"Flux\")" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 12, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "# help(polyval) if you want to find out more" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The IDL equivalent, again:\n", " \n", " IDL> p3.hide=1\n", " IDL> p4 = plot(x,poly(x,p),color='r',overplot=p1)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "source": [ "Let's do the same thing with a noisier data set. I'm going to leave out most of the comments this time." ] }, { "cell_type": "code", "collapsed": false, "input": [ "noisy_flux = y+noise*10\n", "p = polyfit(x,noisy_flux,1)\n", "print p" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 2.81911426 1.72972222]\n" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "# plot it\n", "pl.clf() # clear the figure\n", "pl.plot(x,noisy_flux,'k.') # repeated from above\n", "pl.plot(x,np.polyval(p,x),'r-',label=\"Best fit\") # A red solid line\n", "pl.plot(x,2.5*x+1.2,'b--',label=\"Input\") # a blue dashed line showing the REAL line\n", "pl.legend(loc='best') # make a legend in the best location\n", "pl.xlabel(\"Time\") # labels again\n", "pl.ylabel(\"Flux\")" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 15, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nc3P1P//zP5o2bZqaNGmiG264QZL0wQcfKCwsTL/61a90+PDh0sfGxcUpNDRU//znP5WUlKTw8HBJ\n0qeffqqYmJjzWh4CEX8CAADA/23fLsXHe/Y11q+XylVJL9agQYNcqq633nqrYmNjde+992rs2LGq\nV6+edu7cqSNHjpT2056r5OKwYcOG6cYbb1RKSop+//vfa9iwYRo3bpxuu+02v7hIzBMIuQAAwP/1\n6GFCqKdfw4OCgoI0bNgw/eEPf9DOnTvVs2dPFRcXq1WrVnr33XcrfExERETp7z/44AOtXr1an376\nqT7//HPZ7XYtWrRIq1atUmhoqEfX7osIuQAAwP+FhLi1yuothYWFkqTjx49Lkrp06aJ//OMfuvzy\ny9WoUaMLPj4hIUEJCQlasGCB0tPTNXHiRL333nuaNm3aeRs4uJMnn7u2GCEGAADgA86ePau///3v\natiwoXr27ClJmjBhgoqKikovICuvsLBQR44ckWQmNZw7/7Zfv36SpDNnzkgyF59JUl5entvXHhoa\n6pHnvRhUcgEAALzgs88+09atWyVJhw4d0rvvvqtdu3bp8ccfLx3XdeWVV+ruu+/WCy+8oI0bN+qa\na65R/fr1tXPnTv3v//6v/vCHP2j8+PFasmSJXnvtNY0fP16dO3fWsWPH9N///d8KCwvTmDFjJEmN\nGzdWr1699P777ys6OlrNmzdX37591bt374t+LwMGDNDixYv13HPPqUuXLoqMjPT6rFxCLgAAQB0q\n+Wh/3rx5pccaNWqknj176vXXX9f06dNd7r948WLFx8frjTfe0JNPPql69eopKipKt99+u2w2myRz\n4dnatWv13nvvKTc3V2FhYUpISFB6ero6duxY+lxvvfWW7rvvPs2ePVtnz57V008/XauQe257wrx5\n8/TDDz/oxRdf1LFjxzRs2DCvh9wgZ3X3drOA7OxsxcfHa/369S5XMwIAAN/Cz2zrutD31l3fe3py\nAQAAYDmEXAAAAFgOIRcAAACWQ8gFAACA5RByAQAAYDmEXAAAApzdblf37t1lt9u9vRTAbQi5AAAE\nMLvdroyMDO3YsUMZGRkEXVgGIRcAgACWmZkph8MhSXI4HMrMzPTyigD3IOQCABDAbDabIiIiJEkR\nERGlO2gB/o6QCwBAAEtLS1NiYqKio6OVmJiotLQ0by8JcIt63l4AAADwLoItrIhKLgAAACyHkAsA\n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\n", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "Despite the noisy data, our fit is still pretty good! One last plotting trick, then we'll move on." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "The IDL equivalent:\n", " \n", " p4.hide=1\n", " noisy_flux = y+noise*10\n", " p = poly_fit(x,noisy_flux,1)\n", " p1.putdata,x,noisy_flux\n", " p2 = plot(x,poly(x,p),color='r',overplot=p1,name=\"Best Fit\")\n", " p3 = plot(x,2.5*x+1.2,color='b',linestyle='--',overplot=p1,name=\"Input Model\")\n", " \n", " p_legend = legend(target=[p2,p3]) \n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "pl.clf() # clear the figure\n", "pl.errorbar(x,noisy_flux,yerr=10,marker='.',color='k',linestyle='none') # errorbar requires some extras to look nice\n", "pl.plot(x,np.polyval(p,x),'r-',label=\"Best fit\") # A red solid line\n", "pl.plot(x,2.5*x+1.2,'b--',label=\"Input\") # a blue dashed line showing the REAL line\n", "pl.legend(loc='best') # make a legend in the best location\n", "pl.xlabel(\"Time\") # labels again\n", "pl.ylabel(\"Flux\")" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 16, "text": [ "" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAArkAAAG9CAYAAAARJ24/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XlYlOX+x/E3uCPuCi65oKKiQrmk5ljuS2oe08owNc9Y\nppWldrSOpaVZHvvlybIyyybtWLSXZqZpqdVYaS65ooiSO7iAKyjL/P54ZJiRRZCBGZjP67q4hHme\nmfkOjMyHe773ffvYbDYbIiIiIiLFiK+7CxARERERcTWFXBEREREpdhRyRURERKTYUcgVERERkWJH\nIVdEREREih2FXBEREREpdhRyRURERKTYUcgVERERkWLH40Pu0aNHGTZsGNWrV8fPz4+wsDA2b97s\ndM60adOoXbs2fn5+9OzZk/3797upWhERERHxBB4dcuPj4zGZTJQpU4aVK1eyZ88e/vvf/1KlShX7\nObNnz2bevHksWLCAP/74g/Lly9O7d28uX77sxspFRERExJ18PHlb32eeeYbffvuN9evXZ3ncZrNR\nu3ZtJk2axMSJEwE4d+4cgYGBLFq0iCFDhhRmuSIiIiLiITx6JHfZsmW0adOGe++9l8DAQFq3bs3C\nhQvtxw8ePEhsbCw9evSwX1axYkXat2/Pb7/95o6SRURERMQDlHR3ATk5cOAA8+fP56mnnuK5555j\n48aNPPHEE5QuXZoRI0Zw4sQJAAIDA52uFxgYaD/m6NSpU6xatYoGDRpQrly5QnkMIiIiIpJ7iYmJ\nxMTE0Lt3b6pXr37Dt+PRITctLY127doxc+ZMAG6++WZ27tzJO++8w4gRI7K9ns1mw9c38yD1qlWr\nGDZsWIHVKyIiIiKusWTJEh544IEbvr5Hh9zatWvTvHlzp8uaNWvGl19+CUDNmjUBiI2NdRrNjY2N\npXXr1pluLygoCDC+aSEhIQVVtniQ8ePHM3fuXHeXIYVEP2/vop+3d9HP23vs2bOHYcOG2XPbjfLo\nkGsymYiMjHS6bN++fTRo0AAwQmvNmjVZs2YNYWFhgDHxbOPGjTz22GOZbq9s2bIAhISEZBmCpfip\nXLmyftZeRD9v76Kft3fRz9v7pOe2G+XRIXfChAl07NiRWbNmce+997Jx40bee+893nvvPQB8fHwY\nP348M2fOJDg4mAYNGjB16lTq1KnDwIED3Vy9iIiIiLiLR4fctm3b8vXXX/Pvf/+bGTNm0LBhQ15/\n/XXCw8Pt50yePJmLFy8yevRoEhISuP3221m5ciWlS5d2Y+UiIiIi4k4eHXIB+vXrR79+/XI8Z/r0\n6UyfPr2QKhIRERERT+fR6+SK5JfjqL8Uf/p5exf9vL2Lft6SVx4/kusOUVFRnD9/3t1liAs0bdqU\nLVu2AFChQgWCg4PdXJEUJL0Iehf9vL2Lft6SVwq514iKiqJJkybuLkMKyL59+xR0RUREvIBC7jXS\nR3C1lm7xkr7mnkboRUREvINCbja0lq6IiIhI0aWJZyIiIiJS7CjkioiIiEixo5ArIiIiIsWOQq6I\niIiIFDsKueKRoqKi6NWrF5UqVcLX15elS5eyaNEifH19OXTokLvLExEREQ+nkOtF0kOi40dgYCDd\nunVj5cqVBXa/iYmJvPDCC6xfvz7X13nwwQfZtWsXs2bNYsmSJbRt2xYfHx98fHycznv77bdZvHix\nq0sWERGRIk5LiHmhF198kaCgIGw2GydOnGDRokX07duXb7/9ln79+rn8/i5evMiMGTPw9fWlc+fO\n1z0/MTGR33//neeee45HH33Ufvnw4cMJDw+ndOnS9svefvttatSowYMPPujyukVERKToUsj1Qnfe\neafTGsCjRo0iMDCQTz75pEBCbjqbzZar806ePAlApUqVnC739fV1CrgiIiIi2VG7glCpUiXKli1L\nyZLOf/OkpaUxd+5cWrRoQbly5ahZsyZjxowhISHB6bw///yT3r17U6NGDfz8/GjYsCGjRo0CICYm\nhoCAAACmT59ub5OYPn16lrW88MILNGjQAIBJkybh6+tLUFAQQKae3AYNGrB7927Wr19vv92uXbu6\n7PsiIiIiRZdGcr1QQkICp06dwmazERcXx7x587h06RLDhg1zOu+RRx5h8eLFmM1mxo8fz4EDB3jz\nzTfZunUrVquVkiVLEhcXR69evQgMDOTf//43lStX5uDBg3z99dcABAQEMH/+fMaOHcugQYMYNGgQ\nAGFhYVnWNnjwYKpUqcKECRMYOnQoffv2xd/fP8tzX3/9dcaNG0eFChV49tlnAQgMDHTVt0lERESK\nMIVcL9SjRw+nr8uUKYPFYqF79+72y3799Vfef/99IiIiGDJkiP3yrl270qdPHz7//HPCw8PZsGED\nCQkJrFmzxqkF4sUXXwTAz8+PwYMHM3bsWMLCwhg6dGiOtYWGhlKhQgUmTJhA69atczz/H//4B88+\n+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\nMJjNZjZv3gzAqlWrtIWqiHg1x5aWdAkJCS65bY8NuZs3b+bkyZO0bt3afllqaiq//PILb731FpGR\nkQDExsY6jebGxsY6XScrc+fOve45IiIFwWq1cu7cOQBOnTqlLVRFxKtlNci4ZcsW2rRpk+/b9th2\nhR49erBz507++usv/vrrL7Zt20bbtm0ZNmwY27ZtIygoiJo1a7JmzRr7dc6dO8fGjRu57bbb3Fi5\niEj2TCYTFStWBKB69eraQlVEpIB47Eiuv78/zZs3d7rMz8+PqlWr2i8fP348M2fOJDg4mAYNGjB1\n6lTq1KnDwIED3VGyiMh1WSwWYmJiWLt2Lb1791argohIAfHYkJsVHx8fp8lnkydP5uLFi4wePZqE\nhARuv/12Vq5cae/hFRHxRGPHjmXt2rW89dZb7i5FRKTYKlIhd+3atZkumz59OtOnT3dDNSIiIuJJ\n4uPj2bhxIyaTCX9/f3eXI25WpEKuiIiIiCPH2fnx8fH8+uuvdO3a1R5ytXqS91LIFRERkSLLMcRu\n2LABk8nEW2+9RUhIiJsrE3fz2NUVRERERERulEZyRURExGM4th/s3LmTatWqUatWLftxtR9Ibink\nioiIiMdwDLH16tXjzjvvZMaMGW6uSooitSuIiIiISLGjkCsiIiIixY5CrohIEbB582bWr1+P2Wx2\ndykiIkWCQq6IiIczm80cP36cS5cusXz5cgVdEZFcUMgVEfFwVquVK1euAHDy5EmsVqubKxIR8XwK\nuSIiHs5kMlG6dGkAatSogclkcnNFIiKeTyFXRMTDWSwWatWqhZ+fH/3798disbi7JBHxQFeuXOHF\nF19US9NVCrkiIkVAmzZt6Ny5swKuiGTJbDaTlpbGyZMnc927P2/ePACefPLJgi7PLRRyRURERIo4\nx1793PTum81mNm3aBMCqVauK5eivQq6IiIhIEefYq5+b3n2r1cq5c+cAOH36dLGc0KqQKyIiIlLE\nWSwWfH19qVGjRq56900mExUrVgSgWrVqxXJCa0l3FyAiIlIUffbZZ5w/fx6z2ew1vdIRERFERERw\n+fJlDh48SIMGDShbtqz9eHh4OOHh4W6sMO9Onz5NUlISderUcXcpTpKSkkhLS8PPzy/X1yldujRT\np05l3Lhx1z3XYrFw6NAhfvzxR3r37l0sn8MKuSIiInlkNpvZvXs3aWlp9kk+xTEkXCs9xG7bto1W\n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\n", "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " errp = errorplot(x,noisy_flux,replicate(10,n_elements(x)),$\n", " linestyle='', symbol='o', sym_size=0.3, xtitle='Time', ytitle='Flux')\n", " \n", " errp2 = plot(x,poly(x,p),color='r',overplot=errp,name=\"Best Fit\")\n", " errp3 = plot(x,2.5*x+1.2,color='b',linestyle='--',overplot=errp,name=\"Input Model\")\n", " p_legend = legend(target=[errp2,errp3]) \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "source": [ "Curve Fitting\n", "=============\n", "\n", "We'll now move on to more complicated curves. What if the data looks more like a sine curve? We'll create \"fake data\" in basically the same way as above." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# this time we want our \"independent variable\" to be in radians\n", "x = np.linspace(0,2*np.pi,50)\n", "y = np.sin(x)\n", "pl.clf()\n", "pl.plot(x,y)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "pyout", "prompt_number": 17, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nmGOOYcSIEUCYl1qjRg06duxIr169IqdLL9nZ2UyePJmmTZvGjpK2li9fTpUqVZg9ezYnnHBC7Dhp\nqwmx43MAAATxSURBVFKlSgwePJhWrVrFjpI2fvzxRxo0aMDo0aO57bbbqFevHkOHDo0dKy3cfPPN\nTJkyhbfffjt2lLTUu3dv5syZwz+LYkCtCqRz58688MILhbpimFIrqOvWrWP+/PlbHIualZVF48aN\nmTNnTsRk0o5ZuXIlAHvssUfkJOlp48aNPP7446xdu5YTTzwxdpy00r59e8455xxOOeUUUmydIyV8\n+umnVK9enf3224+WLVuyePHi2JHSxjPPPEODBg24+OKLycnJoX79+jz44IOxY6WtdevW8eijj/7u\nPP1fS6mCunz5cjZu3PibY1GrVKmy3WNRpWSUl5dH586dOeGEE7y/rIi9//777L777uy66660bduW\nJ598kv333z92rLTx+OOP884773DnnXcC3gpU1Bo2bMj48eOZNm0ao0ePZuHChZx44on8+OOPsaOl\nhc8//5zRo0dz0EEH8dJLL3Httddy/fXXb55ApKI1efJkvv/+e6688spCva7Ix0xJKpj27dvz73//\n23vLEqB27dq89957fP/990yaNIlLL72UWbNmbfd0OhXM4sWL6dSpEzNmzNg8CjA/P99V1CJ0xhln\nbP7fhx56KMcccwz77LMPTz75ZKFXofRbeXl5HH300fTv3x+AunXr8sEHHzBmzBguv/zyyOnSz9ix\nYznrrLM2nxxaUClVUCtXrkyJEiVYunTpFo8vXbqUvfbaK1IqqfA6dOjACy+8wOzZs6lWrVrsOGmn\nVKlS7LvvvgDUq1ePuXPnMnr0aB544IHIyVLfvHnz+Oabb7Yo+xs3buTVV19l1KhRrF271hXVIla+\nfHkOPPBAPvvss9hR0kK1atV+c9Wqdu3aPPXUU5ESpa///ve//6+9u3dpJIjDOP5ki2xQC1FQEGNS\nC1ZG8KWxMI2CnWBACGKpTcRGECxtLewUgo2WErAREgXLVBEsxIWU/gMqVu7vqgvcXXNKjtnMfT+w\nsLsw8LDVw8zsrhqNhq6urr48tqeW+NPptKanp1Wv1zv34jhWo9HQ3Nycw2TA3zEz7ezsqFar6fb2\nVrlcznWk/8Ln56fiOHYdwwtLS0t6fHzUw8ND50+BhUJBGxsbarValNN/4O3tTVEUMRHTJQsLC3p6\nevrl3vPzs/L5vJtAHqtWqxodHdXKysqXx/bUDKok7e7uqlwuq1AoaGZmRsfHx/r4+ODt3C55f39X\nFEWd63a7rVarpeHhYWWzWYfJ/LC9va3Ly0vVajX19/d39k4PDg4qk8k4TueH/f19LS8vK5vN6vX1\nVRcXF7q/v9fBwYHraF4YGBj4Y/apr69PQ0ND7KXukr29Pa2urmpiYkIvLy86PDxUOp1WqVRyHc0L\nlUpF8/PzOjo60tramprNpk5PT1lh6bI4jlWtVlUulxUE35gPtR50cnJiuVzOwjC02dlZazabriN5\n4+7uzlKplKVSKQuCoHO+ubnpOpoXfn+uP4/z83PX0byxtbVl+XzewjC0kZERKxaLVq/XXcfy2uLi\nolUqFdcxvLG+vm5jY2MWhqGNj49bqVSydrvtOpZXrq+vbWpqyjKZjE1OTtrZ2ZnrSN65ubmxIAgs\niqJvje+576ACAADAbz21BxUAAAD+o6ACAAAgUSioAAAASBQKKgAAABKFggoAAIBEoaACAAAgUSio\nAAAASBQKKgAAABKFggoAAIBE+QH6CKBccBeqtgAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", "\n", " x = findgen(50)/49. * 2 * !pi\n", " y = sin(x)\n", " curvepl = plot(x,y,color='b')\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# We'll make it noisy again\n", "noise = pl.randn(y.size)\n", "noisy_flux = y + noise\n", "pl.plot(x,noisy_flux,'k.') # no clear this time" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 18, "text": [ "[]" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAApoAAAGsCAYAAAB9xwfSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3Xl4lOW5x/Ffwo5a1oCCQFBMEFAkAUEmKnBQFAcqVtEc\nqci4lSIU1Bb12IpbrWgtKoiKjqhoVOqCHS0IKERHCkpYXICwSFEEHErABdmSOX/cBURRkjBP3lm+\nn+t6r8CYzNwOhPzeZ7mftGg0GhUAAAAQY+leFwAAAIDkRNAEAACAEwRNAAAAOEHQBAAAgBMETQAA\nADhB0AQAAIATBE0AAAA4QdAEAACAE06C5sSJE9WxY0fVq1dP9erVU/fu3TV9+nQXLwUAAIA4lebi\nZKBQKKTq1avrhBNOUDQa1eTJkzV27FgtWrRI7du3j/XLAQAAIA45CZoH06hRI913330aMmRIVbwc\nAAAAPFbd9QuUlpZq6tSp2rlzp04//XTXLwcAAIA44SxofvjhhzrttNO0c+dO1alTRy+++KLatGnj\n6uUAAAAQZ5xNne/evVufffaZtm3bpqlTp2r8+PGaM2eOcnJyDvi8zZs3a8aMGcrMzFSdOnVclAIA\nAIDD8N1332nt2rXq06ePGjduXO6vq7I1mmeddZYyMzM1adKkAx5/9tlnNWjQoKooAQAAAIdhypQp\nuvTSS8v9+c7XaO5VWlqqsrKyHz3eunVrSVb4iSeeWFXlpJyRI0dq3LhxXpeR1HiP3eL9dY/32C3e\nX/d4j91ZtmyZBg0atC+3lZeToHnTTTepb9++atGihb7++ms999xzKiws1C233PKjz61du7Yk6cQT\nT/zRtDpip379+ry/jvEeu8X76x7vsVu8v+7xHru3N7eVl5OgGYlEdNlll2nDhg2qV6+eOnbsqBkz\nZqhXr14uXg4AAABxyEnQfPzxx108LQAAABIIZ50DAADACYJmisjPz/e6hKTHe+wW7697vMdu8f66\nx3scf6qsvdFPKSoqUm5urhYuXMgCXgAAgDhU2bzGiCYAAACcIGgCAADACYImAAAAnCBoAgAAwAmC\nJgAAAJwgaAIAAMAJgiYAAACcIGgCAADACYImAAAAnCBoAgAAwAmCJgAAAJwgaAIAAMAJgiYAAACc\nIGgCAADACYImqlwgEFB2drYCgYDXpQAAAIcImqhSgUBAoVBIxcXFCoVChE0AAJIYQRNVKhwOKxKJ\nSJIikYjC4bDHFQEAAFcImqhSPp9PGRkZkqSMjAz5fD6PKwIAAK4QNFGlgsGg/H6/srKy5Pf7FQwG\nvS4JAAA4Ut3rApB6CJcAAKQGRjQBAADgBEETAAAAThA0AQAA4ARBEwAAAE4QNAEAAOAEQRMAAABO\nEDQBAADgBEETAAAAThA0AQAA4ARBEwAAAE4QNAEAAOAEQRMAAABOEDQBAADgBEETAAAAThA0AQAA\n4ARBEwAAAE4QNJGyAoGAsrOzFQgEvC4FAICkRNBESgoEAgqFQiouLlYoFCJsAgDgAEETKSkcDisS\niUiSIpGIwuGwxxUBAJB8CJpIST6fTxkZGZKkjIwM+Xw+jysCACD5EDSRkoLBoPx+v7KysuT3+xUM\nBr0uCQCApFPd6wIArxAuAQBwixFNAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBE0AAAA4QdAEAACA\nEwRNAAAAOEHQBAAAgBMETQAAADjhJGjefffd6tKli37xi1+oadOmGjBggIqLi128FAAAAOKUk6BZ\nWFio4cOHa/78+Zo5c6Z2796ts88+W9u3b3fxcgAAAIhDTs46/+c//3nA7ydPnqwmTZqoqKhIeXl5\nLl4SAAAAcaZK1mhu3bpVktSwYcOqeDkAAADEAedBs6ysTCNHjlReXp7atWvn+uUAAAAQJ5xMnX/f\nsGHD9Mknn+jdd991/VIAAACII06D5rXXXqs33nhDhYWFatas2c9+7siRI1W/fv0DHsvPz1d+fr7L\nEgEAAPA9BQUFKigoOOCxvcsgKyotGo1GY1HU90WjUQ0fPlzTpk3TnDlzdPzxx//k5xYVFSk3N1cL\nFy5UTk5OrEsBAADAYapsXnMyojls2DAVFBRo2rRpOuKII7Rx40ZJUv369VW7dm0XLwkAAIA442Qz\n0COPPKKvvvpKPXr0ULNmzfZdL774oouXAwAAQBxyMqJZVlbm4mkBAACQQDjrHAAAAE4QNAEAAOAE\nQRMAAABOEDQBAADgBEETAAAAThA0AQAA4ARBEwAAAE4QNAEAAOAEQRMAAABOEDSBBBMIBJSdna1A\nIOB1KQAA/CyCJpBAAoGAQqGQiouLFQqFCJsAgLhG0AQSSDgcViQSkSRFIhGFw2GPKwIA4KcRNBMc\n06ipxefzKSMjQ5KUkZEhn8/ncUUAAPw0gmYCYxo19QSDQfn9fmVlZcnv9ysYDHpdEgAAP6m61wWg\n8phGTU2ESwBAomBEM4ExjQoAAOIZQTOBMY0KAADiGVPnCY5wCQAA4hUjmgAAAHCCoAkAAAAnCJoA\nAABwgqAJAAAAJwiaAAAAcIKgCQAAACcImgAAAHCCoAkAAAAnCJoAAABwgqAJAAAAJwiaAAAAcIKg\nibgXCASUnZ2tQCDgdSkAAKACCJqIa4FAQKFQSMXFxQqFQoRNAAASCEETcS0cDisSiUiSIpGIwuGw\nxxXFHiO2AIBkRdBEXPP5fMrIyJAkZWRkyOfzeVxRbDFiCwBIZgRNxLVgMCi/36+srCz5/X4Fg0Gv\nS4qpVBixBQCkrupeFwAcSrKFy+/z+XwqKSlRJBJJyhFbAEBqY0QT8FCyj9gCAFIbI5pAOQUCAYXD\nYfl8vpgGQsIlACBZMaIJlAObdgAAqDiCJlAObNoBAKDiCJpAOSR7myUAAFwgaALlwKYdAAAqjs1A\nQDkRLpEIXG1aA4DKYEQTAJIEm9YAxBuCJgAkCTatAYg3BE0ASBJsWgMQbwiaAColEAgoOzub6dk4\nwqY1APGGzUAAKmzvWsBIJKKSkhIFAgFCTZxIhT8HNjwBiYMRTQAVxlpAeIUNT0BiIWgCqDDWAsIr\n3OQAiYWgCaDCWAsIr8TTTQ7rlIFDY40mgEohXMILwWAwLtZosk4ZKB+CJgAgocRDoGMKHygfps4B\nAKigeJrCB+IZQRMAgApinTJQPk6CZmFhofr166fmzZsrPT1d06ZNc/EyAAB4JhgMasWKFYRM4Gc4\nCZrbt29Xp06dNGHCBElSWlqai5cBAABAHHOyGeicc87ROeec4+KpAQAAkCBYowkAAAAnaG8Ez0Wj\n0jffSFu27L9KSg78tSTVrFm+q359qUULqXlzqUYNb//fAABIZXETNEeOHKn69esf8Fh+fr7y8/M9\nqgixsmeP9Omn0iefSMuW2cfVqw8Mlnv2/Pjr0tOlBg0sOKalSbt2Hfz6KWlpUrNmUsuWFjxbttx/\n7f19o0b2eXArHhpsAwDKp6CgQAUFBQc8tnXr1ko9V9wEzXHjxiknJ8frMnAYdu6UVq48MFAuWyat\nWLE/ENarJ514onTCCVK3blLDhvuvBg0O/P0vfmFh8+dEoxZS94bOnTttBPSzz6R16w68Fi60x78f\nTo88UsrJkbp02X+1bk34jCVOUAGAxHKwgb6ioiLl5uZW+LniJmgi8WzZIs2dK82ZY9fHH0ulpfbf\nmjSxQJmXJ111ldSunf3+mGNiG+LS0mx6vEYN6Ygj7LGjj7bXOpiyMikS2R8+V62SPvhA+vvfpb/+\n1T6nUSOpc+cDw+cxx8Su5lTDCSoAkLqcBM1vv/1WK1eu3Pf7NWvWaPHixWrUqJFatGjh4iVRBUpK\npMJC6e23LVguXWojiscdJ/XoIQ0btj9QNmrkdbUHl54uNW1qV5cuB/63L7+00Pn++3Y99ph05532\n35o3t8/v1Uvy+23UE+Xj8/lUUlKiSCTCCSoAkGLSotFoNNZPOmfOHPXq1cteIC1Ne1/i8ssv/9GU\n2d6h2IULFzJ1Hme2bpXeeWd/sFy82IJlZqYFy549pTPPlFq18rhQR6JRm2rfGzznz5fCYWn3bgvU\n551nobN7d6k6cwM/izWaAL6PfxMST2XzmpMfjz169FBZWZmLp4ZjW7ZIr74qvfCCNHu2TYW3bGmh\ncsQIC5iZmV5XWTXS0vZvHvrVr+yxr7+WZs6UQiHp6aele++1zUrnnGPB89xz43c010v8IAGwF+u2\nUwvjMNDWrRYuX3zRQlRpqY1UPvigBafMTDbH7HXUUdIFF9hVVmYbjF5/3YLnr39tU/PdutlI5/nn\n//RaUQBIVazbTi00bE9RX30lPfOM1K+fbdwJBKyX5bhx0hdf2HT5b3/LDuyfk55u6zbHjLG1nV98\nYes6mzSR7rrLpte7dpUmTtzfCxQAUp3P51NGRoYksW47BRA0U8j27dJzz9lIW5Mm0mWX2VT5fffZ\nWsTCQtvQc/TRXleamI45RrriCumVV6T//Ed66SV7n4cPt/92ySXSjBn7d+YDQCoKBoPy+/3KysqS\n3+9n2jzJMXWeAoqLbVRt8mSbJu/WTbr7bunCC61xOWKvVq39U+wbNkhTpkhPPmlrOZs3t5B/+eVS\nVpbXlQJA1SNcpg5GNJNUaak0bZp09tlSdrZNk199tZ3IM2+eNGoUIbOqHHOM9PvfW5/R+fNtucLD\nD9ufS16e9PjjtpQBAIBkQ9BMMl9+aaOVxx1nU+TbttlI5uefS/fcY4/DG2lp0qmn2ujyhg1SQYE1\nmb/6agujw4dLa9Z4XSUA4KcEAgFlZ2crEAh4XUrCIGgmgWjURikHDbJRyttvt8bie3s/Dh4s1a7t\ndZX4vjp19q/ZXLdOuuEGC54nnCANHCgtWOB1hQCA79vblqm4uFihUIiwWU4EzQS2e7eNVubkWNPw\nefNst/Pnn9t6wM6dva4wdVXkrvfYY6XbbrPAOWGCtGiR7VY/4wzptdesjRIAwFu0ZaocgmYC2rlT\nevRR20gyZIjUrJn1cly50kbGaBjurcre9datK/3mN9Ly5dLLL9s621/+0tokTZok7djhuHAAwE+i\nLVPlEDQTyI4d0vjxUps20tChtt5vyRILmX37Wl9HeO9w73qrVZMGDLDjLsNhC5rXXGNHfd55p7VO\nAgBULdoyVQ7RJAFs3y797W/WPP13v7NTez7+2I6JPPlkr6vDD8Xyrrd7dxvdXLHCjsG86y47EvP6\n66X/ZlkAQBUJBoNasWIFIbMCCJpx7OuvpbFj7QjI3//ejoNcvtx6MnK0Yfxycdd7wgnWEmnvxqFJ\nk6yDwK23WmcBAADiEUEzDm3bZiNXmZnSLbfYNOrKlVIwaIGjqtDGofJc3fVmZNjGoU8/teUTY8da\n4Lz3Xhv5BgAgnhA0q0B5A9uOHXYcZGamdMcdUn6+NVh/9FGbNq9KtHGIb40aWchcvVq6+GLp5ptt\n7e7EidKuXV5XBwCAIWg6Vp7AFo1Kzz9v0+E33ij97/9a4+7x4707vYc2DomhWTObUl+xQurd286q\nb9vWToLiTHUAgNcImo4dKrC9846dPZ6fL3XsaJt8JkywAOEl2jgkluOOk55+Wlq6VDrlFDtL/eST\npVdesRsZAAC8QNB07KcCW3GxdMEF1pS7tFSaM0d69VU7/zoe0MYhMXXoYLvU58+Xmje3v2Pdukn/\n+pfXlQEAUhFB07EfBraxY4MaMUJq315auNB2kC9YYC2L4g1tHBLXqadKb74pzZ5tazZPO82OIt2w\nwevKAACphKBZBYLBoJYsWaG2bYM6/njpqaes8fby5dKll9JoHe706iV98IFtKHv9dTtNauxYO10K\nAADXiDiORaPS1Kk2JX7zzbZ2btUqafRoqU4dr6tDKqhWTbr6amuRFQjY38OTTrLgiZ9Hiy8AODwE\nTYdWrpTOOUcaOHD/Rp+HHrJeiEBVa9BAeuABafFi62bg90vnnWfrhfFjtPgCuNnC4SNoOrBjhzRm\njI0aFRdLr71mV7xs9EFq69BBmjVLeukl6ZNP7Pd/+IP01VdeVxZfaPGFVMfNFmKBoBlj06fbD+4/\n/9nOo/74Y6lfP6+rAg6UlmY70j/5RPrjH61na3a2rR8uK/O6uvhAiy+kOm62EAsEzRj5/HPpoovs\nPPKWLa2f4V13SXXrel0Z8NPq1LGguXy5dT64/HKpZ09rAJ/qaPGFVJcqN1ssD3CLoHmYdu+W/vpX\nO43lnXekZ5+1ljJt23pdGVB+LVva6VSzZ0vr11uz9zvu4DhLWnwhVhIxzKTCzRbLA9yr7nUBiSwc\nloYOtenxYcPsB3O9el5XBVRer17Shx/a3+Xbb5deeEGaNMn6cAKonL1hJhKJqKSkRIFAIGFCW6LU\nWVksD3CPEc1KKCmRrrxSysuTate2husPPkjIROILBAI65ZRsbdwY0MKFtvTD57MbKTYLAZVDmIlf\nqbI8wEsEzQp67TU71WfqVGniRGnePCk31+uqgMP3wymkceMCmjdPGjfONgm1a2fHpAKoGMJM/EqF\n5QFeI2iW0+bN0v/+r/TLX0qdOtl0+W9+Y82wgWRwsFGXatWkESNsd/opp0gDBthu9S++8LhYIIEQ\nZuIba7HdYo3mIew92efaa6U9e6RnnrFjI9PSvK4MiC2fz6eSkhJFIpEfjbq0bCn94x/2vTBihHTi\nidI999iJQxyhChwaIQapih8RP2PjRulXv5Iuvlg6/XQb1Rk0iJCJ5HSoUZe0NDvlatky+zh0qNSj\nh7R6tTf1AgDiHyOaBxGN2sjlyJFS9eo2inPhhV5XBbhXnlGXBg1sJ/qll9rZ6R07SmPH2lISRjcB\nAN/Hj4Uf+PxzOwN68GCpb18bxSRkAj/Wo4cdTPDrX9uu9LPPltat87oqAEA8IWj+VzRqozTt20uL\nF9vu8ilTpMaNva4MiF9HHmndF958UyoutuNXn3jCvp8AACBoynbQ9u1rGxsuuojzyYGKOussa/R+\n0UXWY9bvZ2c6AICgqRdflE46yUYx33hDevxxqX59r6sCEk+9ejaaGQpJixbZ7MCUKYxuAkAqS9mg\nWVJimxkuvlj6n/+RPvpIOvdcr6sCEt9559n303nn2frNCy6QNm3yuioAgBdSMmjOmmWjmK+/biMu\nL7wgNWrkdVWJLRAIKDs7W4FAgDqghg3te+vll6VweP9pWgCA1JJSQXP7dms2fdZZUtu2tqaM5uuH\n74dHF3oV8uKlDuw3YICtee7Z03pvXnaZtG2b11UBAKpKygTNDz6wM8knTZIeeMB2ybZo4XVVyeFg\nRxemch3xJB5GeDMybC30M89I06ZZ38133/WsHCAhxMP3LhALSR809+yRbr9dOu006YgjpKIiG9Wk\nsXTs+Hw+ZWRkSNKPji5MxTriRTyN8Kal2alaS5bYDd6ZZ0r/93/S7t2elQTErXj63gUOV1LHreJi\nyeezoHnzzdK8eXZGM2LrUEcXplod8SIeR3gzM6U5c6Q77rDThLp3l1as8LoqIL7E4/cuUFlJeQRl\nNGptVn73O+nYY6X33pNOPdXrqpJbvIS6eKkjHvh8PpWUlCgSicTVCG+1anbjd/bZtka6Uyfp/vul\na65hvTQgxe/3LlAZSTeiuWWLNY2+6ir7IVZURMhEaor3Ed7One37c/BgaehQqX9/6csvva4K8F68\nf+8CFZFUI5pvv219+777ztqqDBjgdUWAt+L9B9QRR9gRln37SldcYW3HgkHrwQmksnj/3gXKKylG\nNHftkm680RqvZ2XZhgNCJpA4+vWzdmNdutjxlb/9rbUjSyTsEgaAH0v4oFlcbBsK/vpX6e67pZkz\nbV0mgMTStKn0j39IDz8sTZ5sU+tLlnhdVfmwSxgADi5hg+beDT+dOklffWU7ykePto0GABJTWpqt\n1/zgA6lGDalrV+mhh+L/vHR2CQPAwSVk0Ny74efKK6VLLrENBZ07e10VgFhp106aP992oo8YYRuF\n/pvj4hI9XAHg4BIuaM6ZYyeLzJ5tZyc/8YR05JFeVwUg1mrXtlO8QiHpX/+y7/tZs7yu6uDYJQwA\nB5cwQXPPHumPf5R69ZKOP15aulS68EKvqwLg2nnn2fd7+/bWe3P0aNsAGG+CwaBWrFhByASA70mI\noLl2rXTGGbbZ5447bDSTc8qB1HHMMdKMGdI991hzd59PWrXK66oAAIcS90Fz6lTplFOkL76QCgvt\nfOR42PBDKxOgaqWnS7//vW3827rVNgI+/XT8bxQCgFTmLGhOmDBBmZmZqlOnjrp166b333+/Ql//\n7bd2us/AgTZdtnixtTGKB7QyAbyz90ShX/3KThUaNMg6TwBIXgzuJC4nQfOFF17Q9ddfr9tuu02L\nFi1Sx44d1adPn33tPw5lyRL7YfLss9Ljj0svvCDVr++i0sqhlQngraOOsl6bzz1nm4VOOUVasMDr\nqgC4wOBOYnMSNO+//35dffXVGjx4sNq2batHHnlEdevWPeQi+WhUGj/eeufVrCktXGjH0qWluaiy\n8ly3MuHODSif/Hyb7WjSxNZtjh0rlZV5XRWAWGJwJ7HFPGju2rVLRUVF6t27977H0tLS1Lt3b82b\nN+8nv27rVumXv5SGD5euvtp66J14Yqyriw2XrUy4cwMqpnVr6Z13pBtusKNo+/SRNm70uioAsUKf\n2sQW86C5efNmlZaWqmnTpgc83qRJE238mX/9L75Yeu896bXXpAcftB56h8vlyKCrVibcuQEVV6OG\ndaV4803po4+kk0+W/vlPr6sCEAvx1Kd2+3bpm288e/mEFDe7zjMzbW1mv36xeb5EHRnkzg2ovN69\n96/x7ttXuv76+Oy5CaBi4qFP7dKl9m/Lddd5VkJCqh7rJ2zcuLGqVaumTZs2HfD4pk2bdMwxx/zk\n19WpM1JDhx644yc/P1/5+fmVqiNRRwaDwaACgYDC4bB8Ph/Nn4EKatLENgg98IA1d587VyookE44\nwevKACSiaFR6+GG7cc3KkkaO9Loi9woKClRQUHDAY1u3bq3Uc8U8aNasWVO5ubmaNWuW+vfvL0kq\nKyvT7NmzNWLEiJ/8unHjxiknJydmdfh8PpWUlCgSiSTcyCDhEjg86enSqFF20MMll0g5OfaD4te/\n9royAInkP/+xTcnTpknXXivde29slvbFu4MN9BUVFSk3N7fCz+Vk6vy6667TpEmT9PTTT2vZsmUa\nOnSovvvuOw0ZMsTFyx1UPK3pAOCN3Nz9PTcvu8yC5tdfe10VgEQwd67UsaNtNnz1Vemhh1IjZMZa\nzEc0JWngwIGKRCL605/+pI0bN6pTp06aPn36vrWHVYVwCWBvz82zzpJ+8xs7WaigQOrSxevKAMSj\nPXuk22+X7rxTOvNM6ZlnpGOP9bqqxOVsM9CwYcO0du1a7dixQ/PmzVMX/lUH4KFLL5UWLZIaNrRT\nxui5CeCH/v1vC5d//rN0xx3SrFmEzMMVN7vOAcC1Nm2kd9+1XaOjR1vPzQ0bvK4KQDz4+9/tlLH1\n66XCQun//k+qVs3rqhIfQRNASqlZU7rnHmnmTOnjj63nZijkdVUAvLJ9u3TNNdJFF9kSm8WLbdYD\nsUHQBJCS9vbc7NbN+veOGCHt2OF1VQCq0pIltl77mWekSZOkF16Q6tc/9Neh/AiaAFJWRoadRvbQ\nQ9Jjj0ldu0qffOJ1VQBcKyuTxo2TTj1Vql5dWrhQuvJKKS3N68qSD0ETQEpLS7P+eAsWSLt328kf\njz5qTZoBJJ+NG+3ksFGjpGHD7Hv/xBO9rip5ETQBQLZW84MPpMGDrQ3ShRdKW7Z4XRWAWHr9dfte\nX7xYmj5duv9+qVYtr6tKbgRNAPivunWliROll1+W3n7bmjXPmeN1VQAO13ff2cyF32/T5UuXWtcJ\nuEfQBIAfGDDAfhC1aSP16mWtkHbt8roqAJXx4Ye24eeJJ6Tx46V//ENq0sTrqlIHQRMADuLYY61Z\n81/+Iv3tb7ZRaNkyr6sCUF7RqPTggxYy09NtacywYWz4qWoETQD4CdWqSX/4gzR/vrRzp5STI02Y\nwEYhIN5t2iSdd570u9/ZmusFC6T27b2uKjURNAHgEDp1stGQK6+0dV59+9rOVQDxZ++Gn4ULpTfe\nsDZGtWt7XVXqImgCSBmBQEDZ2dkKBAIV/tq6da3f5htv2JnpJ50kTZvmoMiDOJy6gVTxzTfS1Vfb\nhp/OnW2d9bnnel0VCJoAUkIgEFAoFFJxcbFCoVClQ9u559rmgu7dpfPPtx9s334b42K/J1Z1A8ks\nHLYuEc89Z31wQyGpaVOvq4JE0ASQIsLhsCKRiCQpEokoHA5X+rkyMqRXX7XThJ591qbWFyyIVaUH\nimXdQLLZtUu6+WbpjDMsWC5ebDd/bPiJHwRNACnB5/MpIyNDkpSRkSGfz3dYz5eWJl11lU2j169v\nI5y3326nC8VSrOsGksVHH1k3iHvvle64QyostJZkiC8ETQApIRgMyu/3KysrS36/X8FgMCbPm5Vl\n03Y332xB87TTpI8/jslTS3JXN5CoSkulv/5Vys21Ec0FC+z7r3p1ryvDwfDHAiBluAppNWpYyOzX\nz46wzMmxEZbrr7cWSYeLcAmYtWvte+ydd+ys8rvuYkd5vGNEEwBipEsXqajIevfdeKOUlycVF3td\nFZD4olFp8mRrW7R2rfTWWzaqSciMfwRNAIih2rWlsWOld9+VNm+2nbDjxkllZV5XBiSmDRukCy6Q\nhgyxj0uXSj16eF0VyougCQAOdO8uLVliO2BHjZJ69pTWrPG6KiBxRKPS00/biT7vvSe99JKNatar\n53VlqAiCJgA4Ureu9MAD0ttvS+vW2bTfxIkcYQkcymef2RGSgwfbx08+sdFMJB6CJgA41qOHTfcN\nGiT99rfS2Wdb8ARwoGjU+tO2b28zAv/4h/TMM1KjRl5XhsoiaAJAFTjqKOmRR6QZM6Tly6UOHaSH\nH2btJrDXmjVS797SNddIF19sbcL8fq+rwuEiaAJAFTr7bGs0fckl0rBh0umnx7bvJpBoysqkhx6S\nTjpJWr1aevNNadIkOwgBiY+gCQBVrF49mx6cO1f6z3/sCMs//UnascPryoCqVVxsx0eOGCEFAnYT\ndtZZXlcEVvkQAAAY2ElEQVSFWCJoAoBHzjjDzma+6SbpL3+RTjnFjtEDkt2ePXZ0ZMeO0qZNdtP1\n0EPSkUd6XRlijaAJAB6qXVu67TYLnI0aSWeeaWeol5R4XRngxnvv2fGRN95oy0eWLLGbLiQngiYA\nxIF27exYvYcfll58UTrxRPtIKyQki82bpSuvlHw+qVYtO6P8vvusDRiSF0ETAOJEero0dKj1DPT5\nbOdt//6p0QopEAgoOztbgUDA61IQY2Vl0uOPS9nZ1nR94kRp3jwb1UTyI2gCQJxp3tx+IL/yip2d\n3q6dneu8a5fXlbkRCAQUCoVUXFysUChE2EwiS5ZIeXm2HKRfP2nFCuk3v5GqVfO6MlQVgiYAxKnz\nz7fRzSFDpD/8wU4Wmj7d66piLxwOKxKJSJIikYjC4bDHFeFwff21dN11Nmq5bZtt9pk8WWrSxOvK\nUNUImgAQx+rVs924ixZJxxwjnXuuTaevWuV1ZbHj8/mUkZEhScrIyJDP5/O4IlRWNGpri9u2lR59\nVPrzn22jG5t9UhdBEwASwMknS2+9JU2datOR7dvbrt2vv/a6ssMXDAbl9/uVlZUlv9+vYDDodUmo\nhOJi6ZxzbG1x167SsmU2El+jhteVwUsETQBIEGlp0oUX2g/wm2+WHnjANlhMmZL4u9ODwaBWrFhB\nyExAkYg0fLjd/BQX2/nkL78stWzpdWWIBwRNAEgwdetKt95qZ6bn5Um//rXtUv/gA68rQyrZsUO6\n5x6pTRvpmWdsmnzZMs4nx4EImgCQoFq1svVwb70lffONdOqp1qfwyy+9rgzJrKxMevZZG02/5Rbp\n8sttzfDvf28HEADfR9AEgATXs6e1QXroIZuyPP54G/Hcts3rypBs5s61G5pBg6TOna0rwgMPSI0b\ne10Z4hVBEwCSQPXqdpzfypXWp3DsWOm44+w86e3bva4OiW7FCumXv5R69LAemO+8Y71eTzjB68oQ\n7wiaAJBEGjWycLlqlTRwoG0aatPGTmNJ1obvcOfLL+0Gpn17aelS6fnnpX/9y9YGA+VB0ASAJNS8\nuYXL5cul//kfCwtt29qmjdJSr6tDvPvyS2ufdfzx0nPP2aaf5cutdVFamtfVIZEQNAEgiR1/vIXL\npUuljh2lyy6znpyvvJL4LZEQexs22Ik+mZnShAnWtmjVKun666VatbyurnwCgYCys7M5yjROEDQB\nIAV06GDhcv58qVkz6YILbFPHm28SOCF9/rmFytatpWDQdpD/+9/WsqhRI6+rK79AIKBQKKTi4mKF\nQiHCZhwgaAJACjn1VGnmTGn2bNtA1KeP1KWLrb3bs8fr6lDV1q61zWN7p8hvucUC5m23SQ0bel1d\nxYXDYUUiEUlSJBJROBz2uCIQNFMI0wkA9urVS3rvPWn6dKlBAyk/3zYNPfCA9eREclu1SrriCts1\n/vLL0u23W+i85RapXj2vq6s8n8+njIwMSVJGRoZ8Pp/HFYGgmSKYTgDwQ2lpNqI5c6b14czLs7V4\nLVrYbvUNG7yuELG2aJGdJJWdLb3xhm3y+fRTafRo6aijvK7u8AWDQfn9fmVlZcnv93OkaRwgaKYI\nphMA/JxOnezM9DVrbKRr/HjbEBIIWFNuJK6dO+0kn+7dpZwcac4cadw4+7O+7jrpiCO8rjC2gsGg\nVqxYQciMEwTNFMF0AoDyaNlSuu8+6bPPpDvvtM1C7dtL551nAYWNQ4lj3TobmW7Rwk7yqVvXpsk/\n/dQ2/tSp43WFSAUEzRTBdAKAiqhXz3Yer1kjPfWUBc+ePaWTTrIgummT1xXiYMrK7Obg/PNtB/mE\nCdIll0jLlkmzZkkDBtgmMKCqEDRTCNMJACqqZk3rvblkiQWYDh1sw0jz5lL//tYyiROHvLd1q02H\nt21r627XrJEeflhav1568EF7HPAC9zUAgENKS5POOsuukhKpoEB68knrx9m4sXTppdKQIdYUHlVj\n1y4bpXzhBenvf7ffX3ih9MQTtrGLE3wQDxjRBABUSIMG0m9/K73/vvThh9LgwRY8TznFNhU9+KC0\nebPXVSan3butJVUgIDVtamtn58+XbrrJljcUFEinn07IRPwgaAIAKq1DB1uz+fnn0muv2brA66+3\n04fOP99G12iTdHj27LEWVFddJR19tHTuudI779j59UuX2vrLW26x/wbEG6bOAQCHrUYNqV8/uyIR\na6czdap09dW2QSU3V/L7bQQuN1dKZ5jjZ+3ZIxUW2rT4yy/bCPFxx9n7efHFtkSBUUskAoImACCm\nMjKkkSPt2rzZpnpff91OHbrtNpvy7dvXgudZZyVHo/DDFY1av9I5c6S337aP//nP/l6mAwdaD0zC\nJRKNk6B511136fXXX9fixYtVq1YtlZSUuHgZAECca9zYejgOGmSjdO+9J4VCFjyffNJGQs84w0Y6\nfT4bqatVy+uq3YtGpeXL94fKOXNsJLh6dalrVzt/vH9/O4eecIlE5iRo7t69WxdffLG6d++uJ554\nwsVLAACqWCAQUDgcls/nq1SbtOrVLVSecYY0dqw1Dn/9dbtuuslOsKlRQzr5ZAtYe6927aRq1Rz8\nD1WhsjKpuHh/qJwzx3qRVq9u/49XXSX16GGn9yTbST1IbU6C5pgxYyRJkydPdvH0AIAqFggEFAqF\nFIlEVFJSokAgcNg9eVu3lq691q6dO61X5/vv21VYKD36qI381a1r08bfD5/HHx+fI3179kirV9s0\n+LJl+z8uXy5t326BuUsXawXVs6cFyyOPrLr6DvdmAago1mgCAA4pHA4rEolIkiKRiMLhcEyfv1Yt\n6dRT7drr66+loiILngsWWHP4v/1t/+cfe6wdmfn9q0WL/R9dBLjSUmuOvmWLraFcu/bAQFlcbC2I\nJKl+fRuN7dTJ+ox26CCddpp3a1Jd3CwAh0LQBAAcks/nU0lJiSKRiDIyMuTz+Zy/5lFHSWeeadde\nkYj0wQfSqlXWN3LdOgt3s2ZZG6Wysv2f27ChBc6jj5Zq17ZTjg51Va8uffWVBcm9V0nJ/l9v3frj\nOps2lU480eocOtR+3a6dPR5Po66ubxaAgyl30Lzxxhs1duzYn/2c5cuXKysrq1KFjBw5UvXr1z/g\nsfz8fOXn51fq+QAAsRMMBuNi2jUjw/pIHszu3dIXX1j43Ht99pmthdy1S9q2zT7+3LV7twXchg33\nX61b7/91gwYH/rdjj7WPicCLmwUkpoKCAhUUFBzw2NaD3WWVQ1o0Go2W5xM3b96sLVu2/OzntG7d\nWjVq1Nj3+8mTJ2vUqFE/u+u8qKhIubm5WrhwoXJycspZNgAAqKh4uFlAYqpsXiv3iGbjxo3VuHHj\nShUHAAC8R7hEVXOyRnPdunXasmWL1q1bp9LSUi1ZskTRaFQnnHCCjqBvAwAAQEpwcgjYn/70J+Xk\n5GjMmDH69ttv1alTp33DrfEqEAgoOztbgUDA61IAAACSgpOgOXnyZJWVlamsrEylpaX7Pp5xxhku\nXu6w7W35UFxcrFAoRNgEAACIASdBM9HQ8gEAACD2CJqylg8ZGRmSRMsHAACAGCFoynbh+f1+ZWVl\nye/3sysPAAAgBjgZ6L8IlwAAALHFiCYAAACcIGgCAADACYImAAAAnEi4oEljdQAAgMSQUEGTxuoA\nAACJI6GCJo3VAQAuMWsGxFZCBU0aqwMAXGHWDIi9hAqaNFYHgMSQiCODzJoBsZdwDdsJl0DyCwQC\nCofD8vl8fM8noL0jg5FIRCUlJQoEAgnx5+jz+VRSUqJIJMKsGRAjCTWiCSD5MX2Z+BJ1ZJBZMyD2\nEm5EE0ByS9SQkohcjRwn8sgg4RKILUY0AcQVNv1VDZcjx4wMAtiLEU0AcSUYDLJGswq4Hjnmzw2A\nRNAEEIcIKe4l8vQ2gMTB1DkApCCmtwFUBUY0ASBFES4BuMaIJoCEloiNwQEgVRA0ASQsem7iULgR\nAbxF0ASQsBK15ybhp2pwIwJ4j6AJIGElYs9Nwk/VSdQbESCZxE3QvO2227wuAUCCScSd04SfqpOI\nNyJAsomboFlYWMidPYAKCwaDWrFiRUKETInwU5US8UYESDZx095o69at3NkDSHqcfFS1eH8Bb8VN\n0Kxfvz539gBSAuEHQKqIm6nzM844g398AQAAkkjcBM1bb73V6xIAAAAQQ3ETNAEAAJBcCJoAAABw\ngqAJAAAAJwiaAAAAcIKgCQAAACcImgAAAHCCoAkAAAAnCJoAAABwgqAJAAAAJwiaAAAAcIKgCQAA\nACcImgAAAHCCoAkAAAAnCJoAAABwgqAJAAAAJwiaAAAAcIKgCQAAACcImgAAAHCCoAkAAAAnCJoA\nAABwgqAJAAAAJwiaAADgsAUCAWVnZysQCHhdCuIIQRMAAByWQCCgUCik4uJihUIhwib2iXnQXLt2\nra644godd9xxqlu3rtq0aaMxY8Zo9+7dsX4pAAAQB8LhsCKRiCQpEokoHA57XBHiRfVYP+GKFSsU\njUb12GOPqU2bNvrwww911VVX6dtvv9W9994b65cDAAAe8/l8KikpUSQSUUZGhnw+n9clIU7EPGj2\n6dNHffr02ff7zMxM3XDDDZo4cSJBEwCAJBQMBhUIBBQOh+Xz+RQMBr0uCXEi5kHzYLZu3apGjRpV\nxUsBAAAPEC5xMM43A61atUrjx4/XNddc4/qlAABIOez2Rjwrd9C88cYblZ6e/rNXcXHxAV+zfv16\nnXPOORo4cKCuuOKKmBcPAEAqY7c34l25p85vuOGGQ/4Fbt269b5ff/HFF+rZs6fy8vL02GOPHfL5\nR44cqfr16x/wWH5+vvLz88tbIgAAKYXd3nChoKBABQUFBzy2devWSj1XuYNm48aN1bhx43J97vr1\n69WzZ0916dJFTz75ZLm+Zty4ccrJySlvOQAApDx2e8OFgw30FRUVKTc3t8LPFfM1muvXr1ePHj3U\nqlUr3Xvvvdq0aZM2btyojRs3xvqlAABIacFgUH6/X1lZWfL7/WzIQdyJ+a7zmTNnavXq1VqzZo2O\nPfbYfY+npaWptLQ01i8HAEBKI1winsV8RPPyyy9XWVmZSktLVVZWtu8iZAIAAKQWzjoHAACAEwRN\nAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBE0AAAA4QdAEAACAEwRNAAAAOEHQBAAAgBMETQAAADhB\n0AQAAIATBE0AAAA4QdAEAACAEwRNAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBE0AAAA4QdAEAACA\nEwRNAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBE0AAAA4QdAEAACAEwRNAAAAOEHQBAAAgBMETQAA\nADhB0AQAAIATBE0AAAA4QdAEAACAEwRNAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBE0AAAA4QdAE\nAACAEwRNAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBE0AAAA4QdAEAACAEwRNAAAAOEHQBAAAgBME\nTQAAADhB0AQAAIATBE0AAAA4QdAEAACAEwRNAAAAOEHQBAAAgBMETQAAADhB0AQAAIATBM0UUVBQ\n4HUJSY/32C3eX/d4j93i/XWP9zj+OAma/fv3V6tWrVSnTh01a9ZMl112mTZs2ODipVBOfPO5x3vs\nFu+ve7zHbvH+usd7HH+cBM1evXpp6tSpKi4u1ksvvaTVq1frggsucPFSAAAAiFPVXTzpyJEj9/26\nRYsWGj16tAYMGKDS0lJVq1bNxUsCAAAgzjhfo7llyxY9++yz6tmzJyETAAAghTgZ0ZSk0aNHa8KE\nCdq+fbs6d+6sf/7znwf9vB07dkiSli1b5qoUSNq6dauKioq8LiOp8R67xfvrHu+xW7y/7vEeu7M3\np3333XcV+8JoOY0ePTqalpb2s9eKFSv2ff7mzZujK1eujM6cOTOal5cXzcvLi5aVlf3oeadMmRKV\nxMXFxcXFxcXFFefXlClTyhsdo9FoNJoWjUajKofNmzdry5YtP/s5rVu3Vo0aNX70+Pr169WiRQu9\n++676t69+4+ed8aMGcrMzFSdOnXKUwoAAACq0I4dO/Tpp5+qT58+aty4cbm/rtxB83CsW7dOmZmZ\nmjt3rk4//XTXLwcAAIA4EPOguWDBAi1YsEB5eXlq0KCBVq9erT/+8Y/avHmzPv74Y1Wv7mxZKAAA\nAOJIzHed161bV6+88op69+6ttm3b6sorr9Qpp5yiuXPnEjIBAABSSJVMnQMAACD1eHrW+YQJE/Zt\nAurWrZvef/99L8tJKoWFherXr5+aN2+u9PR0TZs2zeuSks7dd9+tLl266Be/+IWaNm2qAQMGqLi4\n2OuyksbEiRPVsWNH1atXT/Xq1VP37t01ffp0r8tKan/5y1+Unp6uUaNGeV1K0hgzZozS09MPuNq1\na+d1WUll/fr1GjRokBo3bqy6devq5JNP1sKFC70uK2lkZmb+6O9wenq6rr322nJ9vWdB84UXXtD1\n11+v2267TYsWLVLHjh3Vp08fRSIRr0pKKtu3b1enTp00YcIESVJaWprHFSWfwsJCDR8+XPPnz9fM\nmTO1e/dunX322dq+fbvXpSWFFi1a6J577lFRUZEWLlyoXr16qX///vr444+9Li0pvf/++3rsscd0\n8skn8+9FjHXo0EEbN27cd7377rtel5Q0SkpK5PP5VKtWLU2fPl3Lli3T/fffrwYNGnhdWtJYuHDh\nAX9/Z86cKUkaOHBgub7es6nzrl27qmvXrnrwwQclSdFoVC1atNDw4cM1evRoL0pKWunp6Xr11VfV\nv39/r0tJaps3b1aTJk1UWFiovLw8r8tJSo0aNdJ9992nIUOGeF1KUvnmm2+Um5uriRMn6o477lCn\nTp10//33e11WUhgzZoymTZumRYsWeV1KUrrxxhs1b948zZ071+tSUsbIkSP1xhtvlHsGz5MRzV27\ndqmoqEi9e/fe91haWpp69+6tefPmeVEScNi2bt0qSWrYsKHHlSSf0tJSPf/889q5cyct0hwYNmyY\n/H6/evXqJZbtx97KlSvVvHlzHX/88Ro0aJA+++wzr0tKGq+99ppyc3N10UUXqWnTpsrJydHjjz/u\ndVlJa9euXZoyZYoCgUC5v8aToLl582aVlpaqadOmBzzepEkTbdy40YuSgMNSVlamkSNHKi8vj/VX\nMfThhx/qyCOPVO3atXX11VfrxRdfVJs2bbwuK6k8//zzWrx4se6++25JLLOJtW7duumpp57SjBkz\nNHHiRH366ac6/fTT9c0333hdWlJYs2aNJk6cqOzsbL355psaOnSoRowYoaefftrr0pLSq6++qm3b\ntunyyy8v99fQbwiIgWHDhumTTz5h7VWMtW3bVkuXLtW2bds0depUXXLJJZozZ45ycnK8Li0pfPbZ\nZ/rd736nWbNmqWbNmpJsGROjmrFzzjnn7Pt1hw4d1LVrV7Vq1UovvvhihUaFcHBlZWU69dRTdeed\nd0qSOnbsqI8++kiPPPKILrvsMo+rSz5PPPGE+vbtq6OPPrrcX+NJ0GzcuLGqVaumTZs2HfD4pk2b\ndMwxx3hRElBp1157rd544w0VFhaqWbNmXpeTVGrUqKHjjjtOktSpUye9//77mjhxoiZNmuRxZclh\n4cKFikQiBwT30tJSvfPOO5owYYJ27tzJCGeM1atXT1lZWVq9erXXpSSFZs2a/WgWqW3btnrppZc8\nqih5/fvf/9bs2bP1yiuvVOjrPJk6r1mzpnJzczVr1qx9j5WVlWn27Nk67bTTvCgJqLBoNKprr71W\n06ZN01tvvaVWrVp5XVLSKy0tVVlZmddlJI3evXvro48+0pIlS7RkyRItXrxYnTt31qBBg7R48WJC\npgPffPONVq5cyaBKjPh8Pi1fvvyAx4qLi5WZmelNQUnsySefVNOmTXXeeedV6Os8mzq/7rrrNHjw\nYHXu3FldunTRuHHj9N1337GbNEa+/fZbrVy5ct/v16xZo8WLF6tRo0Zq0aKFh5Ulj2HDhqmgoEDT\npk3TEUccsW99cf369VW7dm2Pq0t8N910k/r27asWLVro66+/1nPPPafCwkLdcsstXpeWNI488sgf\njQbVrVtXDRs2ZK1xjNxwww3q37+/WrZsqS+++EK33nqratasqfz8fK9LSwqjRo1S9+7ddffdd+ui\niy7SggULNGnSJGY9YqysrExPPvmkBg8erPT0Co5RRj00fvz4aKtWraK1atWKduvWLbpgwQIvy0kq\nb7/9djQtLS2alpYWTU9P3/frIUOGeF1a0vjhe7v3euqpp7wuLSlcccUV0czMzGitWrWiTZo0iZ51\n1lnRWbNmeV1W0uvRo0d01KhRXpeRNC655JJos2bNorVq1Yoee+yx0fz8/OiaNWu8LiuphEKh6Ekn\nnRStXbt2tF27dtHHH3/c65KSzowZM6Lp6enRlStXVvhrOYISAAAATnh6BCUAAACSF0ETAAAAThA0\nAQAA4ARBEwAAAE4QNAEAAOAEQRMAAABOEDQBAADgBEETAAAAThA0AQAA4MT/A61MQaFjUYPbAAAA\nAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " noise = randomn(seed,n_elements(x))\n", " noisy_flux = y + noise\n", " noisypl = plot(x,noisy_flux,color='k', symbol='o', sym_size=0.3, overplot=curvepl, linestyle='', sym_filled=1)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "source": [ "That looks like kind of a mess. Let's see how well we can fit it.\n", "The function we're trying to fit has the form:\n", "$$f(x) = A * sin(x - B)$$\n", "where $A$ is a \"scale\" parameter and $B$ is the side-to-side offset (or the \"delay\" if the x-axis is time). For our data, they are $A=1$ and $B=0$ respectively, because we made $y=sin(x)$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# curve_fit is the function we need for this, but it's in another package called scipy\n", "from scipy.optimize import curve_fit\n", "# we need to know what it does:\n", "help(curve_fit)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Help on function curve_fit in module scipy.optimize.minpack:\n", "\n", "curve_fit(f, xdata, ydata, p0=None, sigma=None, **kw)\n", " Use non-linear least squares to fit a function, f, to data.\n", " \n", " Assumes ``ydata = f(xdata, *params) + eps``\n", " \n", " Parameters\n", " ----------\n", " f : callable\n", " The model function, f(x, ...). It must take the independent\n", " variable as the first argument and the parameters to fit as\n", " separate remaining arguments.\n", " xdata : An N-length sequence or an (k,N)-shaped array\n", " for functions with k predictors.\n", " The independent variable where the data is measured.\n", " ydata : N-length sequence\n", " The dependent data --- nominally f(xdata, ...)\n", " p0 : None, scalar, or M-length sequence\n", " Initial guess for the parameters. If None, then the initial\n", " values will all be 1 (if the number of parameters for the function\n", " can be determined using introspection, otherwise a ValueError\n", " is raised).\n", " sigma : None or N-length sequence\n", " If not None, it represents the standard-deviation of ydata.\n", " This vector, if given, will be used as weights in the\n", " least-squares problem.\n", " \n", " Returns\n", " -------\n", " popt : array\n", " Optimal values for the parameters so that the sum of the squared error\n", " of ``f(xdata, *popt) - ydata`` is minimized\n", " pcov : 2d array\n", " The estimated covariance of popt. The diagonals provide the variance\n", " of the parameter estimate.\n", " \n", " See Also\n", " --------\n", " leastsq\n", " \n", " Notes\n", " -----\n", " The algorithm uses the Levenburg-Marquardt algorithm through `leastsq`.\n", " Additional keyword arguments are passed directly to that algorithm.\n", " \n", " Examples\n", " --------\n", " >>> import numpy as np\n", " >>> from scipy.optimize import curve_fit\n", " >>> def func(x, a, b, c):\n", " ... return a*np.exp(-b*x) + c\n", " \n", " >>> x = np.linspace(0,4,50)\n", " >>> y = func(x, 2.5, 1.3, 0.5)\n", " >>> yn = y + 0.2*np.random.normal(size=len(x))\n", " \n", " >>> popt, pcov = curve_fit(func, x, yn)\n", "\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/Users/adam/virtual-python/lib/python2.7/site-packages/scikits/__init__.py:1: UserWarning: Module argparse was already imported from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.pyc, but /Users/adam/virtual-python/lib/python2.7/site-packages is being added to sys.path\n", " __import__('pkg_resources').declare_namespace(__name__)\n" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "source": [ "Look at the returns:\n", "\n", "\n", " Returns\n", " -------\n", " popt : array\n", " Optimal values for the parameters so that the sum of the squared error\n", " of ``f(xdata, *popt) - ydata`` is minimized\n", " pcov : 2d array\n", " The estimated covariance of popt. The diagonals provide the variance\n", " of the parameter estimate.\n", " \n", "\n", "So the first set of returns is the \"best-fit parameters\", while the second set is the \"covariance matrix\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Unfortunately, IDL doesn't have an equivalent to `curve_fit` built in. You'll need to use the `mpfit` code package, which is an external library. That will be provided for you in the github repository." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def sinfunc(x,a,b):\n", " return a*np.sin(x-b)\n", "fitpars, covmat = curve_fit(sinfunc,x,noisy_flux)\n", "# The diagonals of the covariance matrix are variances\n", "# variance = standard deviation squared, so we'll take the square roots to get the standard devations!\n", "# You can get the diagonals of a 2D array easily:\n", "variances = covmat.diagonal()\n", "std_devs = np.sqrt(variances)\n", "print fitpars,std_devs" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0.79501462 0.17488299] [ 0.20350827 0.25121636]\n" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " ; needs to be in a different file\n", " function shifted_sin,x,pars\n", " return,pars[0]*sin(x-pars[1])\n", " end\n", "\n", "We need to define a \"starting point\" for the parameters `a` and `b`, and we need to identify the error on each data point (1-$\\sigma$). Then we can use `mpfitfun`:\n", "\n", " errorbars = replicate(1.,n_elements(x))\n", " guesses = [0.,0.]\n", " params = mpfitfun(\"shifted_sin\",x,noisy_flux,errorbars,guesses)\n", " \n", "Finally, plot it:\n", "\n", " fitpl = plot(x,shifted_sin(x,params), color='r', overplot=curvepl)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Just to show how it works:\n", " \n", " IDL> params = mpfitfun(\"shifted_sin\",x,noisy_flux,errorbars,guesses)\n", " Iter 1 CHI-SQUARE = 85.294258 DOF = 48\n", " P(0) = 0.00000\n", " P(1) = 0.00000\n", " Iter 2 CHI-SQUARE = 51.359203 DOF = 48\n", " P(0) = 1.17695\n", " P(1) = 0.00000\n", " Iter 3 CHI-SQUARE = 48.539089 DOF = 48\n", " P(0) = 1.17689\n", " P(1) = 0.285293\n", " Iter 4 CHI-SQUARE = 48.483067 DOF = 48\n", " P(0) = 1.22393\n", " P(1) = 0.277742\n", " Iter 5 CHI-SQUARE = 48.483063 DOF = 48\n", " P(0) = 1.22386\n", " P(1) = 0.278199\n", " Iter 6 CHI-SQUARE = 48.483055 DOF = 48\n", " P(0) = 1.22386\n", " P(1) = 0.278157\n", " Iter 6 CHI-SQUARE = 48.483055 DOF = 48\n", " P(0) = 1.22386\n", " P(1) = 0.278157" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Let's plot our best fit, see how well we did\n", "# These two lines are equivalent:\n", "pl.plot(x, sinfunc(x, fitpars[0], fitpars[1]), 'r-')\n", "pl.plot(x, sinfunc(x, *fitpars), 'r-')" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 21, "text": [ "[]" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAApoAAAGsCAYAAAB9xwfSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XmczWX/x/H3jH0fzJA160yWyF6OkBRpqlub3Ck50iZF\nq0rdWu5fpXK3iZucJJpQUk2ltDCZhGZIoRlLUrbOMCP7MnN+f3zusUSMcb5zttfz8TiPMePM+V4O\nx7zPdV2fzxXl8/l8AgAAAPwsOtADAAAAQHgiaAIAAMARBE0AAAA4gqAJAAAARxA0AQAA4AiCJgAA\nABxB0AQAAIAjCJoAAABwhCNBc+zYsWrZsqUqVaqkSpUqqWPHjpo9e7YTlwIAAECQinLiZKDk5GQV\nL15cjRs3ls/n06RJkzRq1CgtWbJEzZo18/flAAAAEIQcCZrHU7VqVT3//PMaMGBAUVwOAAAAAVbc\n6Qvk5uZqxowZ2rdvn84//3ynLwcAAIAg4VjQ/PHHH3Xeeedp3759KlOmjKZPn65GjRo5dTkAAAAE\nGceWzg8cOKDffvtN27dv14wZM/Tqq69q7ty5at269VH3y8rK0meffaZ69eqpTJkyTgwFAAAAp2HP\nnj1at26devToodjY2AJ/X5Ht0bzoootUr149TZgw4aivT506Vf369SuKIQAAAOA0TJkyRddff32B\n7+/4Hs18ubm5ysvLO+br9evXl2QDb9KkSVENJ+IMHTpUL774YqCHEdZ4jp3F8+s8nmNn8fw6j+fY\nOStXrlS/fv0O5baCciRoPvTQQ+rVq5fq1KmjHTt26O2331ZKSopGjBhxzH1Lly4tSWrSpMkxy+rw\nn5iYGJ5fh/EcO4vn13k8x87i+XUez7Hz8nNbQTkSNL1er2688UZt2rRJlSpVUsuWLfXZZ5+pW7du\nTlwOAAAAQciRoPn666878bAAAAAIIZx1DgAAAEcQNCNE3759Az2EsMdz7CyeX+fxHDuL59d5PMfB\np8jaG/2d9PR0tWnTRmlpaWzgBQAACEKFzWvMaAIAAMARBE0AAAA4gqAJAAAARxA0AQAA4AiCJgAA\nABxB0AQAAIAjCJoAAABwBEETAAAAjiBoAgAAwBEETQAAADiCoAkAAABHEDQBAADgCIImAAAAHEHQ\nBAAAgCMImihybrdbCQkJcrvdgR4KAABwEEETRcrtdis5OVmZmZlKTk4mbAIAEMYImihSqamp8nq9\nkiSv16vU1NQAjwgAADiFoIki5XK5FBcXJ0mKi4uTy+UK8IgAAIBTCJooUh6PR4mJiYqPj1diYqI8\nHk+ghwQAABxSPNADQOQhXAIAEBmY0QQAAIAjCJoAAABwBEETAAAAjiBoAgAAwBEETQAAADiCoAkA\nAABHEDQBAADgCIImAAAAHEHQBAAAgCMImgAAAHAEQRMAAACOIGgCAADAEQRNAAAAOIKgCQAAAEcQ\nNAEAAOAIgiYAAAAcQdBExHK73UpISJDb7Q70UAAACEsETUQkt9ut5ORkZWZmKjk5mbAJAIADCJqI\nSKmpqfJ6vZIkr9er1NTUAI8IAIDwQ9BERHK5XIqLi5MkxcXFyeVyBXhEAACEH4ImIpLH41FiYqLi\n4+OVmJgoj8cT6CEBABB2igd6AECgEC4BAHAWM5oAAABwBEETAAAAjiBoAgAAwBEETQAAADiCoAkA\nAABHEDQBAADgCIImAAAAHEHQBAAAgCMImgAAAHCEI0Hz6aefVrt27VSxYkVVr15dvXv3VmZmphOX\nAgAAQJByJGimpKRoyJAhWrhwoebMmaMDBw7o4osv1u7du524HAAAAIKQI2edf/rpp0d9PmnSJFWr\nVk3p6enq1KmTE5cEAABAkCmSPZo5OTmSpCpVqhTF5QAAABAEHA+aeXl5Gjp0qDp16qSmTZs6fTkA\nAAAECUeWzo80ePBgrVixQvPnz3f6UgAAAAgijgbNO++8U5988olSUlJUs2bNE9536NChiomJOepr\nffv2Vd++fZ0cIgAAAI6QlJSkpKSko76Wvw3yVEX5fD6fPwZ1JJ/PpyFDhuiDDz7Q3Llz1bBhw7+9\nb3p6utq0aaO0tDS1bt3a30MBAADAaSpsXnNkRnPw4MFKSkrSBx98oHLlymnz5s2SpJiYGJUuXdqJ\nSwIAACDIOFIMNG7cOP3555/q2rWrataseeg2ffp0Jy4HAACAIOTIjGZeXp4TDwsAAIAQwlnnAAAA\ncARBEwAAAI4gaAIAAMARBE0AAAA4gqAJAAAARxA0AQAA4AiCJgAAABxB0AQAAIAjCJoAAABwBEET\nCDFut1sJCQlyu92BHgoAACdE0ARCiNvtVnJysjIzM5WcnEzYBAAENYImEEJSU1Pl9XolSV6vV6mp\nqQEeEQAAf4+gGeJYRo0sLpdLcXFxkqS4uDi5XK4AjwgAgL9H0AxhLKNGHo/Ho8TERMXHxysxMVEe\njyfQQwIA4G8VD/QAUHgso0YmwiUAIFQwoxnCWEYFAADBjKAZwlhGBQAAwYyl8xBHuAQAAMGKGU0A\nAAA4gqAJAAAARxA0AQAA4AiCJgAAABxB0AQAAIAjCJoAAABwBEETAAAAjiBoAgAAwBEETQAAADiC\noAkAAABHEDQBAADgCIImgp7b7VZCQoLcbneghwIAAE4BQRNBze12Kzk5WZmZmUpOTiZsAgAQQgia\nCGqpqanyer2SJK/Xq9TU1ACPyP+YsQUAhCuCJoKay+VSXFycJCkuLk4ulyvAI/IvZmwBAOGMoImg\n5vF4lJiYqPj4eCUmJsrj8QR6SH4VCTO2AIDIVTzQAwBOJtzC5ZFcLpeys7Pl9XrDcsYWABDZmNEE\nAijcZ2wBAJGNGU2ggNxut1JTU+VyufwaCAmXAIBwxYwmUAAU7QAAcOoImkABULQDAMCpI2gCBRDu\nbZYAAHACQRMoAIp2AAA4dRQDAQVEuEQocKpoDQAKgxlNAAgTFK0BCDYETQAIExStAQg2BE0ACBMU\nrQEINgRNAIXidruVkJDA8mwQoWgNQLChGAjAKcvfC+j1epWdnS23202oCRKR8PdAwRMQOpjRBHDK\n2AuIQKHgCQgtBE0Ap4y9gAgU3uQAoYWgCeCUsRcQgRJMb3LYpwycHHs0ARQK4RKB4PF4gmKPJvuU\ngYIhaAIAQkowBDqW8IGCYekcAIBTFExL+EAwI2gCAHCK2KcMFIwjQTMlJUWXXXaZatWqpejoaH3w\nwQdOXAYAgIDxeDzKyMggZAIn4EjQ3L17t1q1aqUxY8ZIkqKiopy4DAAAAIKYI8VAPXv2VM+ePZ14\naAAAAIQI9mgCAADAEbQ3QsD5fNLOndK2bYdv2dlH/1qSSpYs2C0mRqpTR6pVSypRIrB/NgAAIlnQ\nBM2hQ4cqJibmqK/17dtXffv2DdCI4C8HD0q//CKtWCGtXGkf16w5OlgePHjs90VHS5UrW3CMipL2\n7z/+7e9ERUk1a0p161rwrFv38C3/86pV7X5wVjA02AYAFExSUpKSkpKO+lpOTk6hHitoguaLL76o\n1q1bB3oYOA379kmrVh0dKFeulDIyDgfCSpWkJk2kxo2lc8+VqlQ5fKtc+ejPK1a0sHkiPp+F1PzQ\nuW+fzYD+9pu0fv3Rt7Q0+/qR4bR8eal1a6ldu8O3+vUJn/7ECSoAEFqON9GXnp6uNm3anPJjBU3Q\nROjZtk2aN0+aO9duy5dLubn2e9WqWaDs1EkaNEhq2tQ+r1HDvyEuKsqWx0uUkMqVs6+dcYZd63jy\n8iSv93D4XL1a+v576d13pRdesPtUrSq1bXt0+KxRw39jjjScoAIAkcuRoLlr1y6tWrXq0Odr167V\n0qVLVbVqVdWpU8eJS6IIZGdLKSnS119bsFy2zGYUGzSQunaVBg8+HCirVg30aI8vOlqqXt1u7dod\n/Xt//GGhc/Fiu40fLz31lP1erVp2/27dpMREm/VEwbhcLmVnZ8vr9XKCCgBEmCifz+fz94POnTtX\n3bp1swtERSn/EjfddNMxS2b5U7FpaWksnQeZnBzpm28OB8ulSy1Y1qtnwfKCC6QuXaQzzwzwQB3i\n89lSe37wXLhQSk2VDhywQH3ppRY6O3aUirM2cELs0QRwJP5PCD2FzWuO/Hjs2rWr8vLynHhoOGzb\nNmnWLGnaNOnLL20pvG5dC5V33WUBs169QI+yaERFHS4euuoq+9qOHdKcOVJysjR5svTcc1as1LOn\nBc9LLgne2dxA4gcJgHzs244szMNAOTkWLqdPtxCVm2szlS+/bMGpXj2KY/JVqCBdeaXd8vKswOjj\njy143nCDLc2fe67NdP7jH3+/VxQAIhX7tiMLDdsj1J9/Sm+9JV12mRXuuN3Wy/LFF6WNG225/I47\nqMA+keho27c5cqTt7dy40fZ1Vqsm/fvftrzeoYM0duzhXqAAEOlcLpfi4uIkiX3bEYCgGUF275be\nfttm2qpVk2680ZbKn3/e9iKmpFhBzxlnBHqkoalGDWngQOn996WtW6X33rPnecgQ+73rrpM+++xw\nZT4ARCKPx6PExETFx8crMTGRZfMwx9J5BMjMtFm1SZNsmfzcc6Wnn5auvtoal8P/SpU6vMS+aZM0\nZYr0xhu2l7NWLQv5N90kxccHeqQAUPQIl5GDGc0wlZsrffCBdPHFUkKCLZPfcoudyLNggTRsGCGz\nqNSoId1/v/UZXbjQtiu89pr9vXTqJL3+um1lAAAg3BA0w8wff9hsZYMGtkS+fbvNZP7+u/Tss/Z1\nBEZUlNS+vc0ub9okJSVZk/lbbrEwOmSItHZtoEcJAPg7brdbCQkJcrvdgR5KyGDpPAz4fNJ330lj\nxkgzZliRynXX2X7Ltm0DPboikpdnG00zM6WsLJvSzb8dPGi3I7+Wm2sNMfM7uNeqZX2MzjxTKlvW\n8eGWKWN/R9ddZ28CJkywv7/XXrNWSvfdZ6EUABAcaMtUOATNEHbggDR1qvTSS9ZMvUEDq3YeMCCM\nejlmZFi3+NWrpQ0bpC1bLEjm5FhTyz177PByf/dtLVbMzrUsVcpSYfnydvh6nTrS2WdbCjz/fGui\neRyn0oy4dm3p8celBx+03pwvvGDV6uefb4EzMfHkZ74DAJxFW6bCIWiGoH37bDn8mWekdeukXr0s\nYPbsGaKBZO9eOzR9/nwpPV1atUravNn6Lf314KqoKKlkycPhr1YtS9VnnCHVrGmzkrGxFhKLFbNb\n8eKHg+ORnxcvbjOdmzZZiN282fYebN1q5fj5YXbXLvu99ettfB98cHg8xYpZc81q1awXVNOmGpee\nru+XLVNmdvYpvestW1a67TY7G/7DD60bwBVX2F7Oe++1Pp2lS/v5uQcAFAjH6RYOQTOE7N1rhSPP\nPmu56JprLPO0aBHokZ2CpUutx9L8+ZaSt261GckjlS1rwa1dO6llSzvjsWVLC3KBPusxL8/+DKmp\n9jEjwwLo779bQP7sM90m6TZJuZL+8Hq15p13rLy8T58CHZJerJjUu7fdvv3WAuett0ojRtg+zttv\nD6MZawAIER6Ph6MzC8GRs85PBWedn9zu3dJ//yuNGmUTbn37So88EgKnzuzda80kZ82yw8I3bLAZ\nRMmmXmNibEaySRPbTNq1q9SmTYhOy/7PmjWa2L+/lJams/buVZOoKFX2+XSo532JEvZnbt1a6tHD\nekxVqXLSh121SvrPf6xFUnS0zXwOHy79r+cxAACOKmxeI2gGsR07rEL5+edtJffGG6WHHpIaNw70\nyP7GqlW2aXTOHGnFClt6zle+vM3qdeliSbldu8CNswgc9a53/Hjpiy9s+vnbb620fOfOw3cuU8Zm\nOnv2lO6884Sznl6v9OqrFjp9Pumee+xWqVIR/KEAABGLoBlGtm+3MDF6tIXNAQNs9qoAq65+ddIl\ngvy1/ClTpB9+sM+lw5XcrVpZJUvfvn9bNBOxdu60md6PP7YD09ets+ouyUJ527bS9dfbu4uSJY/5\n9q1bbQvFK6/YToPhw63LQBEUzAMAIlBh81oIr1GGjoL23dq712Yv69WTnnzS8tmaNbZsHoiQmZyc\nrMzMTCUnJx8e+8qV1vixbl1LNUOGSIsW2XLwbbfZIekHDtjB3x9/bBsKCZnHKl9e6tfPmmlmZto+\n1fnzreKnUiWrtB80yKp/6tSxY4QWLjz07VWr2laKNWts6+fDD0uNGtkM+F+3vAIAECgETYf9bWA7\ngs8nvfOObVUcPlz65z9tdfXVVwN3ek9+G4doSRd5vRr0zjsWjpo2taaPW7dKnTtb+fv+/dZ+aOxY\n22cZynssA8nlsv5Gv/9ubZvGjbMeRzk50ptv2tmhpUrZ/s7Ro6X9+1WzpvXezMiQune3Wc2zzrKT\noDhTHQAQaCQCh52s79Y331h+6NvXCquXL7fG3TVrBmK0/7N3r56qUEGrihXTfklTJZ27Z4/NTA4c\nKP34o7X8mTtX6t8/8JXg4ah0aSs1nzfP9k+sXm3nhtarZ9sU7r3X9na2bCmNHasGdQ9q8mRp2TLp\nnHNsxb1FC+n994/tEAUAQFEhaDrM5XIp7n+lwUf23crMlK680iYFc3Mts82aZT0TAyIvz0qaW7WS\nypXTNWlpqufzaXmpUnq7fXtF7dplM22vvy41bx6gQUawhg1tFjMjw7YmTJhgIfOnn6Q77rBg2qaN\nmi/yaOa7eVq40HYzXHmlvZH57rtA/wEAAJGIoOkwj8ejxMRExcfHKzExUaNGeXTXXVKzZlYDMmWK\nbXHs0iVAA5w92y5eurTkdtuUWMuW0qRJKn7ggFrs3at/LlxIlUkwiY6Wbr7Zmsfv22cVQU2bWl/P\ngQOlUqXUfkgHfd5/qr6ck6f9+6XzzrPJ502bAj14AEAkIWgWAY/Hox9+yNBZZ3nUsKFtt3vqKenn\nn62wuMi3NKan25Ez5cpJl1wipaTYkuyzz9rewPR0SyXstQx+xYtbS6Rly+zv7vnnrf/V4sVSv37q\n1qu00it20az75uvjj63D1KhRlk8BAHAaScJhPp80Y4YtiT/8sO2dW73azrUuU6YIB5KTY0usVapY\nU/QPP7Tq5vvus8KezEzpgQeO20oHIaJkSdu7uWKFtU966impXj1FpaToiufP1x+K0/vxD+iJ4bt1\n9tnWFAAnVtCOEQCA4yNoOmjVKuvBfe21hwt9XnmliE9z+eorqX17C5hjx1ry7d/f+jZu3Cg991yB\nTqZBiClb1o6Pysy09fL+/RW9b6+6pz+nHaqgmVs6alTiXF16qd0FxypIxwgg3PFmC6eLoOmAvXul\nkSOls8+2H+Iffmi3Iiv02bvXjhCKjZUuvFD6/nsrRf70Uyk721oSnXlmEQ0GAXfGGfZ3vmOHNGOG\nopo3U7M/F2ieLtCU2VX16VnDNGLoTv35Z6AHGlxO1jECCHe82YI/EDT9bPZsK8r+v/+zVczly6XL\nLiuii6enS926Wb/LZ56xwDlwoJSVZb/Xs2cRDQRB6+qrpWXLFOX1SjffrJhyB3S370U98VJFrY5t\nrzn3faa8vEAPMjj8XccIIFLwZgv+QND0k99/l665xmpr6ta12ox//7sIirUPHrTqjlq1bO/l119b\nMciUKbZP7/XXWRrHsWJjpQkTFPXnn9KsWTrQ7By1OvC9Lnqhp7aXqqY/7h+lSE+cf+0YcdxjWIEw\nFilvttge4CyC5mk6cEB64QU7jeWbb6SpU6Uvv7TPHZWTY3sty5WzyqKtW20z6K+/2jGR11/v8AAQ\nNq64QqV+SldU9jZtuHSQyuTuULXnH9SBUuWUO3CQvWGJUB6PRxkZGYRMnLZQDDOR8GaL7QHOI2ie\nhtRUm0R84AFrQZmRYcdHRkU5eNFffpEuvtgOu5482T6+8oq0e7c0bZpNpwKFEROjWsnj5duxSx93\ne17ZByuomOd1+SpVsn9za9YEeoRASArlMBPub7bYHuA8gmYhZGdbv+xOnazP+aJF0ssvW7cgxyxY\nYGdcN2ggzZljlUWzZ1vl+J130vMSfuF2u3VO6yZ678zl2vzDH7qn0Yf6OS9evjlz5GvUyM61/PLL\nQA8TCCmEmeAVKdsDAol0coo+/NBO9Zkxw7oFLVhgs5qOmT5dql9f6tjRTn7p1MnOGl+xQurRw8EL\nI9L8ddblxRfdeu7nyzTnpZVqW+YnLSjZVb6ffpK6d5dq1pRefTXi93ECBUGYCV6RsD0g0AiaBZSV\nZcviV1xhx4EvXy7ddptUrJgDF8vLs6rxqlWlPn2k336TrrpK2rzZNoJy1jgccLxZl2LFpLvukt7/\nuZn+76KvVcWXpa/q3Cjf1q3SkCE2jf/kkwRO4AQIM8Et3LcHBBpB8yR8PptUbNrUVqrfektKTpZq\n13bgYgcP2obP8uWtD+aePfbDfOdO6d13pWrVHLgoYE4061K3rvTRR9J/p1XRP/e/qSold2lxr3/J\nJ0mPPSZVqCA9+iiBE/gbhBlEKoLmCWzebBOJffpI559vq9X9+jlQ7JMfMCtUsJN6Spe2lkU7d9rm\nz9Kl/XxB4Fgnm3WJirLGBitXSldfV1ztPxmpLi23K+vBUXbm+lNP2ZukBx6wf9MAgIhH0DwOn88K\nups2lebPt/2Y771nB6z41V8DZtmy0pgx0rZt0v33U+CDIleQWZfKlaUJE6xl6+8bo1Xv1fv12tPb\nlfefF+1N0XPPWeC8+25p//4iHD0AINiQZP7i99+lxERrUdmrl81iXn21ny/ydwFz61bpjjv8fDHA\nGV272sEEN9wgDR4sXZx8t9Yv3Sa99poFzZdftn/jd9xhp1QBACIOQfN/fD6bpWnWzIq7P/zQDteJ\njfXjRQiYCDPly1v3hc8/lzIzrU5tYsnb5fNmSR6PFBNjd6hYURo0iMAJABGGoClrRdmrl3TLLXaM\npN/PJydgIsxddJF13brmGusxm5gobewxQNqyxSroYmPtONRKlWxbCEVDABARIj5oTp8unX22zWJ+\n8on9LIyJ8dOD5+XZgecVKxIwEfYqVZImTrSuDEuW2OrAlCmS7/p+9m7urbfszdbzz9vHp58mcAJA\nmIvYoJmdbceB9+kjXXih9NNP0iWX+PECr79ufTBHjLCK3FdeIWAiIlx6qb2eLr3U9m9eeaVNbKpf\nP2tI++KLVuj28MP2Ghk/PtBDBgA4JCKD5hdf2Czmxx/bjMu0afbzzi+Sk+3UlEGDrA/mo49KOTl2\nTGQYc7vdSkhICPgZvsEyjkhXpYq9tmbOlFJTD5+mJcmq0bdvtzdhe/dKt95qLR1mzgzomAEA/hdR\nQXP3bjvl5KKLpLPOsj1l11/vp76YCxdK8fG2udPrtR+ef/4pPfFE2Lcp+uvRhYEKecEyDhzWu7ft\neb7gAuvBeeONljEVHW0nCu3YYbP8W7da09r69aWvvgr0sAEAfhLeCegI339vZ5JPmCC99JJVydap\n44cHXrVKatdOOvdcafVqWyfculUaN04qWdIPFwh+xzu6MJLHEUyCYYY3Ls72Qr/1lvTBB1LLltaf\nVpJtKxkzxtLnP/8prV9ve1ny2z8AESoYXruAP4R90Dx40CYVzztPKldOSk+3Wc3TnmT84w+bGo2P\ntxTbtas14XzvPSv+iSAnOrowEscRLIJphjcqyrZo/vCDvcHr0kV65BHpwIH/3aFsWWnqVFsN6NXL\njh9q1cqmQv/4I2DjBgIhmF67wOkK66CZmSm5XBY0H35YWrBAatLkNB90/37r5l6jhm32POcc6+r+\n9de2NzMCnezowkgbR7AIxhneevWkuXNt1XzUKKljRykj44g7VKlim6fXrLGVgrlz7bXWvz+nDCFi\nBONrFyissAyaPp8VfbdqZXU4334rPf64VKLEaT5wfquiyZNtWuabb6yPy2mn19BXkKMLI2kcwSBY\nZ3iLFTv8xu/PP+11Om6cvW4PqV9fWrTIXmN16thrrmJFS6i0REKYC9bXLlAYYRc0t22zptGDBlmh\nT3q61L79aT7o++9bw+kRI6RSpezEk3XrpE6d/DFkwBHBPsPbtq29Pvv3l26/Xbr88uOsknfqZK+1\nSZPsHPXHHrNNn9OmBWDEQNEI9tcucCqifL6j5hGKXHp6utq0aaO0tDS1bt36tB7r66+tb9+ePTaj\n2bv3aQ5u2TJrtPnzzzYdOmyYNZkO8ypyoKh99JE0cKDt5fR4rAfnMfLyLGg+95wtozdsKCUl2RI7\nAMBRhc1rYZGY9u+Xhg+3YtX4eCs4OK2QmZVlD9aypW0g693bpkqffZaQCTjgssus3Vi7dnZ85R13\nWDuyo0RHS089ZactXHedtHatLVe4XFaIF2BUCQPAsUI+NWVmWkHBCy/YZOOcOVLt2oV8sIMHbc29\nenXr5de2rRUlzJwplS/v13EDOFr16jaz+dprtlLetq29aTxG2bI2k7l+vYXMb7+V6tYNaMEQVcIA\ncHwhGzR9PjtXuVUrKyhYsEB68EErNCiUl16yYoPXX5dq1bJ1+MWLrSgBQJGIirL9mt9/b7tVOnSw\n01uPu8Gndm1ryLlokZWzT55sB66PHl3Uw6ZKGAD+RkgGzfyCn5tvthW09HSb/SiUlBT7gTV0qKXU\nceNspqRrV38OGcApaNrUDtu69Vbre3v55dZi87jatbNl9IkTrQH8vfdaq7EiPGGIKmEAOL6QC5pz\n59rWyS+/tLOTJ04s5Kr2xo3Wxb1LF2nTJptGyc62n2wAAq50aVtoSE6WvvvOXvdffHGCb3C77YSh\nO++08vULL7Q9nOvXOz5WqoQB4PhCJmgePCg9+qjUrZsVmy5bJl19dSEfaOBA68333XdS584WNF97\nzWZDAASVSy+113uzZtLFF9sWmb/dihkdbWvtmzfbfxaLF9uy+g03OL5/kx6uAHCskAia69ZZHnz6\naevX/OWXhTyn/NVXbR+mx2MP8O230rx5UrVq/h4yAD+qUUP67DNr/DB6tNUArV59gm+IjbX/KPL3\nWU+ZYvs3X3ihyMYMAAiBoDljhp3yuHGjbad85JFCFPzMn29VqUOGWLXBuHGWXs87r9DjopUJULSi\no6X777fCv5wcKwScPPlvCoXy5XeO8Hisuui++yy1FuH+TQCIZI4FzTFjxqhevXoqU6aMzj33XC1e\nvPiUvn9dgX0fAAAgAElEQVTXLus0dO21tly2dKm1MTolmzfbySLnny9t2GDVQ9u3n/Y+TFqZAIGT\nf6LQVVdZR6N+/azzxAkNGGDpdMgQqyq68ELp3HPtHSyAoMfkTuhyJGhOmzZN9957rx5//HEtWbJE\nLVu2VI8ePQ61/ziZH36wHyZTp1q3oWnTpJiYUxjAwYNW3FOrlpSaautsGzZIEyb4ZR8mrUyAwKpQ\nwXptvv22FQudc451OTqh6Gjp5ZftDWjXrlbWXqeOvQE9eLAIRg2gMJjcCW2OBM3Ro0frlltuUf/+\n/XXWWWdp3LhxKlu27Ek3yft8to2yQwepZEkpLe3wsXQF9sYbUuXKtjxeo4b0zTe2dH7GGaf3hzqC\n061MeOcGFEzfvrbaUa2avZ8cNcpOqjyh2Fjrk/vtt9babOJEeyc7fnyRjBnAqWFyJ7T5PWju379f\n6enp6t69+6GvRUVFqXv37lqwYMHffl9OjnTFFbaydcstNtnQpMkpXHjpUqlxY2txcvCg9J//2LF0\nnTqdxp/m+JxsZcI7N+DU1K9v7yfvu8+Oou3RwyYtT+q886Rff7Uq9bw821LToIF1iwcQNOhTG9r8\nHjSzsrKUm5ur6tWrH/X1atWqafMJ/vfv08cmGD780Fa3Spcu4AX//FO65BKrDFizxqY4srOloUMd\nnRl0qpUJ79yAU1eihHWl+Pxz6aefpBYtpE8/LeA333mnvdO98UYrEmzXTrroIjsZAkDABVOf2t27\npZ07A3b5kBQ0Vef16tnezMsuK+A35OVJI0ZIVatKs2fbJq01a2zTVunSITszyDs3oPC6dz+8x7tX\nLzskqEDtM0uWlN5804Jm27bWGb56dStzP+laPACnBUOf2mXL7L+He+4J2BBCkt87lMfGxqpYsWLa\nsmXLUV/fsmWLatSo8bffV6bMUN1++9EVP3379lXfvn2PvfNHH0k33WQzDlWqWFXAXxJqqM4Mejwe\nud1upaamyuVy0fwZOEXVqlmB0EsvWXP3efOkpCTbWXNSdeta783Zs62k/fnnrSLxv/+1FhgAIo7P\nZ2e63HuvFB9vJ1aHu6SkJCUlJR31tZycnMI9mM8BHTp08A0ZMuTQ57m5ub5atWr5nn322WPum5aW\n5pPkS0tLO/kDr17t87Vs6fNJPl/x4j7fiBE+X27uce86YMAAX1xcnE+SLy4uzjdgwIBC/3kAhKbv\nv/f5GjXy+cqX9/kmTy7EAzzxhM9XsqT9n9O0qc+3YoXfxwggeGVl+XxXXGH/Bdx5p8+3Z0+gRxQ4\np5TXjuDI0vk999yjCRMmaPLkyVq5cqVuv/127dmzRwMGDCjcA+7da5s4Gze2dbGePaWtW+2YoOjj\n/xGCaU8HgMBo0+Zwz80bb7STKHfsOIUHePRR2/P9j39IK1bYOZhXXmkbtQCEtXnzpJYtrdhw1iyr\nGyxw/QgOceRw72uvvVZer1ePPfaYNm/erFatWmn27NmH9h6eklGjpMcek/bts6D57ru2078ACJcA\n8ntuXnSRdNttdrJQUpLV/BRI2bLS++9LK1dKV19tv65c2ULoiBFODh1AABw8KD3xhPTUU1KXLtJb\nb1knNBSOY8VAgwcP1rp167R3714tWLBA7Qr8v/r/fPml9cF88EHbqP/WW1JmZoFDJgAc6frrpSVL\nbFt3x44F7Ll5pCZNpOXL7QSJsmUtaFavboewAwgLv/5q4fL//s8WTb/4gpB5uoKm6vyQ33+X2re3\n8lGvV7rrLms90q9foEcGIMQ1amTnN9xzj72H7dFD2rTpFB/k2mtt685991lBYs+eNj26fr0jYwZQ\nNN591xrYbNggpaRIjzwiFSsW6FGFvuAJmgcOWCV5ftXnBRdY1+WXXvrbfZgAcKpKlpSefVaaM8cm\nKFu0sCr1UxIdLT33nL0Zvugia/Jer55tBC1QPyUAwWL3bjuv4Zpr7OW8dKmtesA/gifBdelifezq\n1pW++0766is7Kg4AHJDfc/Pcc6072l13Wd3hKYmJsS7xixfbEUVvvSVVqmQhFEDQ++EHW5B46y1p\nwgTbGRMTc4Jv+OMPKSOjyMYXDoInaEZF2fnk69bZYecA4LC4ODuN7JVX7KjzDh2suPyUtW1rB0Z4\nPHZM0QMPSGecwf5NIEjl5Ukvvmg79YoXl9LSpJtvtihyXAcP2h1q1JASE4t0rKEueILmvHk2dw0A\nRSgqyk6hXLTIdvC0bWv92X2+QjzYgAG2p3zoUCkry/Zv5h+PCyAobN5sJ4cNGyYNHmyv/SZNTvAN\no0dLFStKEydKtWrZRxRY8ATN4o50WgKAAmnRwrZa9u9vbZCuvrqQx51HR0v/+Y8FzR49bMNX48bW\nzJP+m0BAffyxvdaXLrUDwEaPlkqV+ps7f/aZzWDee69VBf33v1b017lzkY451AVP0ASAACtbVho7\nVpo5U/r6a2vWPHduIR8sJsZ+kv3wg51bN3Om9d987DHOTweK2J49tnKRmGjL5cuW2fvA41qzxlYi\neva0gr8hQ6Tt26VbbinSMYcLgiYA/EXv3vaDqFEjqVs3a4VU6GLyFi2kn3+2KoNy5aw5X1ycBU8A\njvvxRyv4mThRevVV6aOPpGrVjnPHnTvtxd+4sU159uhhxT8vv0z3m9PAMwcAx1G7tjVrfuYZWwnv\n0MEOByq0a6+15fRHHrFzMK+6SkpIsPV6AH7n81lGbNfOcuL339uezGMKfvLypIcfttMcZs2SzjrL\n0uns2fY1nBaCJgD8jWLFrIB84UI7Bbd1a2nMmEIWCkn20+6pp2zz55VXSqtW2U9Bl4uG74Afbdki\nXXqpdPfdtud60SKpWbPj3PHNN6WqVaWnn7aCn5kzrfVE8+ZFPuZwRdAEgJNo1cpmQ26+2fZ59epl\nlauFVr689N571s6tY0fp22+t4fvVV9vyHYBCyy/4SUuTPvnE2hiVLv2XO335pfXtvukm28D55JO2\n4tC7dyCGHNYImgAihtvtVkJCgtxu9yl/b9my1m/zk0/szPSzz5Y++OA0B1S3rpSaatMtjRpZ+Kxc\n2c7IPKJg6HTGDUSKnTutXicx0dqULVsmXXLJX+7000/24u3eXdq4UXK7pT//lEaMCMiYIwFBE0BE\ncLvdSk5OVmZmppKTkwsd2i65xLZvdewo/eMf9oNt167THFy7dlJmpi3bValim0IrVpReecVv4wbC\nWWqqdYl4+23rQpScLFWvfsQdNm6Uuna1kLl8uS1L/PGHVQiVLBmoYUcEgiaAiJCamiqv1ytJ8nq9\nSk1NLfRjxcVZzcD48dLUqba0vmiRHwbZu7dtLnvhBdsIetddenbyZHXw07iBcLN/v9XxdO5swXLp\nUnvzd6jgZ+dOqU8fq+6bN8/e1K1aZevrFPoUCYImgIjgcrkUFxcnSYqLi5PL5Tqtx4uKkgYNsmX0\nmBib4XziCTtd6LTdc4/17RsyRFXy8vShpJ8lXVKp0mmPGwgXP/1k3SCee862WKak2A4USbb1ZNgw\n24oyfbrUsKHthV60yH6NIkPQBBARPB6PEhMTFR8fr8TERHk8Hr88bny8Lds9/LAFzfPOs5W501a8\nuPTyyyqWk6P0unXVWNLH27fL8/33Nm0DRKjcXJv0b9PGZjQXLbLXX/HisoA5apRUoYJVAVWpYnuf\nV62yFyeKHEETQMTweDzKyMjwW8jMV6KEhcwFC+yUydat7Wddbq4fHrxiRbX59VdFb9qkqB49bBqn\nVSs73iQjww8XAELHunV2iML991sHiLQ0ezlIsmBZubKdsBAVZZ9v2WKtxBAwBE0A8JN27aT0dOvd\nN3y41KmT1fj4xRlnWAPpX36xDWmLF1tj6c6d6cGJsOfzSZMmWduideukr76yWc3SpWXnxlapYkvl\nBw5I//qXVZLffXeARw2JoAkAflW6tM1mzp9vbflatrSJFb8db37mmVbU8PPPlmy/+cZ6cOYflweE\nmU2bbFJywAD7uGyZFZDL45FiY6U77rBemMOHW/HPyJEcGRlE+JsAAAd07Cj98INVwA4bJl1wgbR2\nrR8vkJBgm9OWLLFTTD7/3GY9e/eWcnL8eCEgMHw+afJkO9Hn229tq+WkSVKl5KlWYj5woB3nOmyY\nfXz6aQJmEOJvBAAcUras9NJL0tdf2+p2ixa2ylfoIyyP55xzbIpn/nypcWPru1S1qjX5ZIYTIeq3\n3+wIyf797eOKFdKVee9KNWtK/fpJ2dk2k7ljhzR69P8qgRCMCJoA4LCuXS0L9utnPxsvvtiBbZUu\nlxUHzZ4tNWhgxxadcYadgPLrr36+GOAMn8/60zZrZisCH30kvdVzqqq2rC1dc43k9dpZsH/+KY0Z\nQ7P1EEDQBIAiUKGCNG6c9Nlntr2yeXPptdf8uHczX48e1spl/nz7af3ll7aHs2NHP/VdApyxdq29\nL7r1VqnPNXlafcdoJd4Ua+/QtmyRbrjB+stOmHCcw8sRrAiaAFCELr7YOhRdd500eLB0/vkO5T+X\ny87KXLLEioYWLLB0e845VrEOBIm8POmVV+x0yF9WHdTaPg9pwvRKKjPiXjvfdcgQWyKfPNn2oyCk\nEDQBoIhVqmTLg/PmSVu3Wh/Axx6T9u514GLnnGNFQ6tXS1262Bp++/bWGunLLx24IFBwmZnWoeuB\nu3br83qDtGZLOdWf9owV9TzxhAXNl19mBjOEETQBIEA6d7ZDfh56SHrmGcuEKSkOXaxhQ2nuXOn3\n36VLLrGf8N2727L6lCkOXRQ4voMH7ejIC87O0oilV2l3dEW5VryuqJgY21Oyfbv06KNUkYcB/gYB\nIIBKl5Yef9wCZ9WqNuk4aJAV1TqiZk3pk0+syefVV1vwvOEGqWJF6d57HZpWBQ779lvpqmYr1fqB\nC/X7/mrqsWumos6sa/2LtmyRbr890EOEHxE0ASAING1qvddfe02aPl1q0sQ++rUV0pGqVJFmzLAG\n1/ffbzNHo0dL5ctLvXpJa9Y4dGFEqqwsaWLnN1XN1VCzMpuqm75S1NnNFTVvnlUCcVRkWCJoAkCQ\niI62yZwVK6yWp08f6fLLHT5hMv8oo5wc6e23bSn900+lRo2saj052cGLH+Z2u5WQkCC3210k10PR\nycv5Uyu63q7ScRU08Jub1CB6vXyX9FJUZqbtGe7cOdBDhIMImgAQZGrVslXE99+3s9ObNrVznffv\nd/jCffta0dCPP9pRRj//LF12mR3z9+STtrHOAW63W8nJycrMzFRycjJhM1wsXqydrc+XKseo6bxx\n8pUsqZ1DH1H0nl2K/uRjO2AAYY+gCQBB6h//sNnNAQOkBx6wk4Vmzy6CCzdvLn31lRVk3HabnSP9\n2GPWWqZ3b2nlSr9eLjU1VV6vV5Lk9XqVmprq18dHEcrLk156SXm1asvXvr3KLZmvVaWa68dnPlaF\nfVtV/j9P0WQ9whA0ASCIVapkPQaXLJFq1LCC8csvt4lHx5Uvb2dm7thhm0fPOMOOuGza1KZdR470\nS/GQy+VSXFycJCkuLk4ul+u0HxNFbNUqqU8f+cqVk4YO1cGNXs2MvlpjH/pNDXYs09kP9gr0CBEg\nBE0ACAEtWtgk44wZdjRfs2bS8OGWAR2Xv3l0/XpbTr/ySmnbNiuXL1dOOu88O/KokDwejxITExUf\nH6/ExER5PB4/Dh6O2bnTenPVrCnFx8s3fbq25cXofj2r667Yo3a/zNAd/1dbJUoEeqAIJIImAISI\nqCjrSLRypfTww9JLL0kJCdYG07Hq9L9KSLANpLt22YWbNZMWLpR69rQWSQMGSBs3nvLDejweZWRk\nEDKDXV6endDTooX9fT/zjHzZOVraoLdaRP+ktjU3qctHD2jmrGjVrRvowSIYEDQBIMSULSv96182\nudipk7XBdLmk778vwkFER0vXX29Vw9u2SXfdZXvvJk2yZfXGjaUXXyyCCiYUicWLbd9GmTJS//7S\n8uXKa9NWM/u9p5iSu9V160zd+EwzrVwpJSYGerAIJgRNAAhRZ55pvTa/+spWMdu3l26+WfrjjyIe\nSEyMTa9mZVk37m7dpHXrpGHDrH1S06bS009Lu3cX8cBwWtaskW65xU4SaN/eKtFq1FDek08p6fVd\nqv/HIvV550rddJPtGb7/fk6KxLEImgAQ4i64wNogvfKKNHOmnTb5r39Z0XiRO+88O0N9zx5pwgSp\nbVsrFHn4YSsuathQGjHC+nYi+KSkWGeBypWtl+qECVJurs1i/vab5r25Tu1nPaJ/ukurbVvrivDS\nS9YBCzgegiYAhIHixaXBgy3T3Xab9WBv0MDOkw7IRGLx4ja9umiRtG+fNYN3uezIy3//24JM3bo2\n67l5cwAGCEm253LKFGuaXqaMnYE6a5ZUooT0z39KaWlSTo4yHpqkKwbXVteuUrFidorVe+/RChMn\nR9AEgDBStaqFy9WrpWuvtYnERo2sS1HAtktGR1sz+G++sdD50UdS9+621P7ii9a3qUYN6brr7Bz2\nvLwADTRC7NxpWxnOPtv21d5wgzR/vrWvGjZM2rDB9l9Mnao/arfW4MFW87VsmfTOO9J339neYKAg\nCJoAEIZq1bJw+fPP0oUX2mznWWdJb71lK6EBlZgozZljU63z5tnpQ7t3S9OmSZdearNpDRpIAwdK\nCxYEeLBhYPduyeOx57Z6dalCBXsHsnKlNed//nkLn7/8Yufd16ypP/6w9lkNG9pk9LPP2r+lPn2s\n+wFQUARNAAhjDRtauFy2TGrZUrrxRutM8/77RdgS6UQ6d5Y+/NA2lG7aZEddtmljy+kej9SxowXP\nJk2ku++Wli8P9IiDX06O9OqrNmtctar1Oh040GaLDx60r0+bZlPcS5dK995rrQxkfwX33GNH3o8Z\nIw0ZYrPj994rlSoV2D9WQbndbiUkJHCUaZAgaAJABGje3MLlwoXWX/vKK62Q+PPPgyRwSrZ0O2KE\n7evcvdsSzgMPWMhcu1Z6+WX7g+RXsv/znxZGs7ICPfLA+v1325TbubN1AKhc2RLil1/aXtlLLpEm\nTrTep1u32mzytdfaloYjHmLIEKl+fXtK779f+vVX6f/+z7JqqHC73UpOTlZmZqaSk5MJm0GgeKAH\nAAAoOu3bW8746ivpkUekHj1sAvG++6wZfPFg+qnQsKGt2T77rH2+dKk0frz0xRe2zLtypZSUZL9X\nqpQF1bPPtsD1j3+EX6XKzp32zuDLL63NwNq1Fhzz90JERdlz0K2bdM010lVXnfRc8XXrpGeekd54\nw5oCjBhhgbNSJef/OE5ITU2V1+uVJHm9XqWmpgZ4RAim/1LgMLfbrdTUVLlcLk7fACJct27W8vLz\nz22LXt++tidv2DBbZS1fPtAjPI5zzrEz1/Pl5Niy+xdf2GHw69ZJycl2e+ABK4+Oi7PA2rChbVJt\n1cpaLgVzP55t26zae948m4LOzJS2bLFCqnzFiklVqti7hFatbNby0ksL/E5h9WqrB5o82SZAn3hC\nuuMO274Zylwul7Kzs+X1ehUXFyeXyxXoIUW8KJ8vsIsm6enpatOmjdLS0tS6detADiWs5S8n5L/4\nOE8YwJGWLJFeeMGqiitUsKPNhwyxYvCQsn+/Bc/Zsy2krV5tgfSvlexRUdbOJybGCmTOPNNmQJs3\nt0qquDgLo9Wq+W+ad/du6ccfbZ9pRoYF499+swrv7Gxb2t6//9i9DBUrSnXq2Gzt+edbqKxfv1BD\nWLLE6n3eftv+aPffL916q23jDBdMqjijsHmNoBkhEhISlJmZeejz+Ph4ZWRkBHBEAILR+vW2FXL8\neJtAu/56W1Zv2jTQIztNO3facvOSJRb01q61jYlZWdKOHSfv/RQVZbOIxYvbrWTJw9UxBw8evuXm\nWqjN/+jznbhdU7FiFngrVbLNkDVqWCVOw4ZS1642Yxl9euUU+/ZJ775rxT0LFki1a9uE780326WB\ngihsXmPpPEKwnACgIOrWtaX0Rx+1sPnSS7Z/r1cvm/3q0iVE29uUL297Nzt3Pv7v5+VZt/v0dFum\nzsmxWcbt26U//7SgunOnzTru2SPt3Ws3n8+CZ+nSVh1fqtThj0feypQ5fDJSQoLNTjZu7Oim2PXr\npXHjpNdfl7xea3M1c6Z1kwqqvbgIa/xTixAej4flBAAFVqmSBcu777bl9Oeft6MumzWTbrrJenxX\nrx7oUfpRdLQFwISEQI/ktOTl2c6B116zvvjly9vpkXfcYVtUgaJGe6MI4vF4lJGRQcgEUGAlS1rv\nzR9+sMKh5s2tMrlWLenyy61lUsBOHMIhOTl2yNJZZ1kngbVrLWxu2GBbIQiZCBRmNAEAJxUVJV10\nkd2ys62r0BtvWD/O2FjbyzlggDWFR9HIr3uaNs32YO7fby2qJk60IyJDcosDwg4zmgCAU1K5si3F\nLl5sRdT9+1vwPOcc67Tz8sv0UHfKgQNWUO9229aFSy+14vqHHrIC9qQkK0wnZCJYEDQBAIWWf1T2\n779bS8v69e24wpo1rWf6xIl2rCEK7+BBa7I/aJD1Y7/kEumbb+z8+mXLrG/9iBH2e0CwYekcAHDa\nSpSwaubLLrMK56lTpRkzpFtusQKVNm2kxESbgfNDx56wd/CglJJiy+IzZ9oMcYMG9nz26WNbFJi1\nRCggaAIA/CouTho61G5ZWbbU+/HH1irp8cdtybdXLwueF10U+qfR+IPPJ61YIc2dK339tX3cutVa\narrddjR569aES4QeR4Lmv//9b3388cdaunSpSpUqpezsbCcuAwAIcrGxUr9+djt40I69TE624PnG\nGzYT2rmzzXS6XDZTl98HPZz5fNLPPx8OlXPn2kxw8eJShw7SbbdZVX+7doRLhDZHguaBAwfUp08f\ndezYURMnTnTiEgCAIna6vXiLFz/cM33UKOmXXyxwfvyxFbPs22fBs0ULC1j5t6ZN7QCdUJaXZ0eW\n54fKuXOtL3zx4vZnHDTIDgLq2DG8joMEHAmaI0eOlCRNmjTJiYcHABQxt9ut5ORkeb1eZWdny+12\nn3ZP3vr1pTvvtNu+fdarc/Fiu6WkSP/9r838lS1ry8ZHhs+GDYNzpu/gQWnNGlsGX7ny8Meff7aj\nzosVs/EPGGAN8Dt2tKbqRYWDO1DU2KMJADip1NRUeb1eSZLX61VqaqpfH79UKal9e7vl27HDToRc\nvFhatMiaw//nP4fvX7u2HZl55K1OncMfnQhwubnWHH3bNttDuW7d0YEyM9NaEElSTIzNxrZqZX1G\nmzeXzjsvcHtSnXizAJwMQRMAcFIul0vZ2dnyer2Ki4uTy+Vy/JoVKtjZ6l26HP6a1yt9/720erX1\njVy/3sLdF19YG6W8vMP3rVLFAucZZ9hR5CVLnvxWvLgdbb5t2+FbdvbhX+fkHDvO6tWlJk1snLff\nbr9u2tS+Hkyzrk6/WQCOp8BBc/jw4Ro1atQJ7/Pzzz8rPj6+UAMZOnSoYmJijvpa37591bdv30I9\nHgDAfzweT1Asu8bFWR/J4zlwQNq40cJn/u2332wv5P790vbt9vFEtwMHLOBWqXL4Vr/+4V9Xrnz0\n79WubR9DQSDeLCA0JSUlKSkp6aiv5RzvXVYBRPl8Pl9B7piVlaVt27ad8D7169dXiRIlDn0+adIk\nDRs27IRV5+np6WrTpo3S0tLUunXrAg4bAACcqmB4s4DQVNi8VuAZzdjYWMXGxhZqcAAAIPAIlyhq\njuzRXL9+vbZt26b169crNzdXP/zwg3w+nxo3bqxy9G0AAACICI4cAvbYY4+pdevWGjlypHbt2qVW\nrVodmm4NVm63WwkJCXK73YEeCgAAQFhwJGhOmjRJeXl5ysvLU25u7qGPnTt3duJypy2/5UNmZqaS\nk5MJmwAAAH7gSNAMNbR8AAAA8D+CpqzlQ1xcnCTR8gEAAMBPCJqyKrzExETFx8crMTGRqjwAAAA/\n4GSg/yFcAgAA+BczmgAAAHAEQRMAAACOIGgCAADAESEXNGmsDgAAEBpCKmjSWB0AACB0hFTQpLE6\nAMBJrJoB/hVSQZPG6gAAp7BqBvhfSAVNGqsDQGgIxZlBVs0A/wu5hu2ESyD8ud1upaamyuVy8ZoP\nQfkzg16vV9nZ2XK73SHx9+hyuZSdnS2v18uqGeAnITWjCSD8sXwZ+kJ1ZpBVM8D/Qm5GE0B4C9WQ\nEoqcmjkO5ZlBwiXgX8xoAggqFP0VDSdnjpkZBJCPGU0AQcXj8bBHswg4PXPM3xsAiaAJIAgRUpwX\nysvbAEIHS+cAEIFY3gZQFJjRBIAIRbgE4DRmNAGEtFBsDA4AkYKgCSBk0XMTJ8MbESCwCJoAQlao\n9twk/BQN3ogAgUfQBBCyQrHnJuGn6ITqGxEgnARN0Hz88ccDPQQAISYUK6cJP0UnFN+IAOEmaIJm\nSkoK7+wBnDKPx6OMjIyQCJkS4acoheIbESDcBE17o5ycHN7ZAwh7nHxUtHh+gcAKmqAZExPDO3sA\nEYHwAyBSBM3SeefOnfnPFwAAIIwETdD817/+FeghAAAAwI+CJmgCAAAgvBA0AQAA4AiCJgAAABxB\n0AQAAIAjCJoAAABwBEETAAAAjiBoAgAAwBEETQAAADiCoAkAAABHEDQBAADgCIImAAAAHEHQBAAA\ngCMImgAAAHAEQRMAAACOIGgCAADAEQRNAAAAOIKgCQAAAEcQNAEAAOAIgiYAAAAcQdAEAACAIwia\nAAAAcARBEwAAnDa3262EhAS53e5ADwVBhKAJAABOi9vtVnJysjIzM5WcnEzYxCF+D5rr1q3TwIED\n1aBBA5UtW1aNGjXSyJEjdeDAAX9fCgAABIHU1FR5vV5JktfrVWpqaoBHhGBR3N8PmJGRIZ/Pp/Hj\nx6tRo0b68ccfNWjQIO3atUvPPfecvy8HAAACzOVyKTs7W16vV3FxcXK5XIEeEoKE34Nmjx491KNH\nj0Of16tXT/fdd5/Gjh1L0AQAIAx5PB653W6lpqbK5XLJ4/EEekgIEn4PmseTk5OjqlWrFsWlAABA\nAD7IWAwAAAtcSURBVBAucTyOFwOtXr1ar776qm699VanLwUAQMSh2hvBrMBBc/jw4YqOjj7hLTMz\n86jv2bBhg3r27Klrr71WAwcO9PvgAQCIZFR7I9gVeOn8vvvuO+k/4Pr16x/69caNG3XBBReoU6dO\nGj9+/Ekff+jQoYqJiTnqa3379lXfvn0LOkQAACIK1d5wQlJSkpKSko76Wk5OTqEeq8BBMzY2VrGx\nsQW674YNG3TBBReoXbt2euONNwr0PS+++KJat25d0OEAABDxqPaGE4430Zeenq42bdqc8mP5fY/m\nhg0b1LVrV5155pl67rnntGXLFm3evFmbN2/296UAAIhoHo9HiYmJio+PV2JiIgU5CDp+rzqfM2eO\n1qxZo7Vr16p27dqHvh4VFaXc3Fx/Xw4AgIhGuEQw8/uM5k033aS8vDzl5uYqLy/v0I2QCQAAEFk4\n6xwAAACOIGgCAADAEQRNAAAAOIKgCQAAAEcQNAEAAOAIgiYAAAAcQdAEAACAIwiaAAAAcARBEwAA\nAI4gaAIAAMARBE0AAAA4gqAJAAAARxA0AQAA4AiCJgAAABxB0AQAAIAjCJoAAABwBEETAAAAjiBo\nAgAAwBEETQAAADiCoAkAAABHEDQBAADgCIImAAAAHEHQBAAAgCMImgAAAHAEQRMAAACOIGgCAADA\nEQRNAAAAOIKgCQAAAEcQNAEAAOAIgiYAAAAcQdAEAACAIwiaAAAAcARBEwAAAI4gaAIAAMARBE0A\nAAA4gqAJAAAARxA0AQAA4AiCJgAAABxB0AQAAIAjCJoAAABwBEETAAAAjiBoAgAAwBEETQAAADiC\noAkAAABHEDQBAADgCIImAAAAHEHQBAAAgCMImgAAAHAEQRMAAACOIGgCAADAEQRNAAAAOIKgCQAA\nAEcQNAEAAOAIgmaESEpKCvQQwh7PsbN4fp3Hc+wsnl/n8RwHH0eC5uWXX64zzzxTZcqUUc2aNXXj\njTdq06ZNTlwKBcSLz3k8x87i+XUez7GzeH6dx3McfBwJmt26ddOMGTOUmZmp9957T2vWrNGVV17p\nxKUAAAAQpIo78aBDhw499Os6derowQcfVO/evZWbm6tixYo5cUkAAAAEGcf3aG7btk1Tp07VBRdc\nQMgEAACIII7MaErSgw8+qDFjxmj37t1q27atPv300+Peb+/evZKklStXOjUUSMrJyVF6enqghxHW\neI6dxfPrPJ5jZ/H8Oo/n2Dn5OW3Pnj2n9o2+AnrwwQd9UVFRJ7xlZGQcun9WVpZv1apVvjlz5vg6\nderk69Spky8vL++Yx50yZYpPEjdu3Lhx48aNG7cgv02ZMqWg0dHn8/l8UT6fz6cCyMrK0rZt2054\nn/r166tEiRLHfH3Dhg2qU6eO5s+fr44dOx7zuJ999pnq1aunMmXKFGQoAAAAKEJ79+7VL7/8oh49\neig2NrbA31fgoHk61q9fr3r16mnevHk6//zznb4cAAAAgoDfg+aiRYu0aNEiderUSZUrV9aaNWv0\n6KOPKisrS8uXL1fx4o5tCwUAAEAQ8XvVedmyZfX++++re/fuOuuss3TzzTfrnHPO0bx58wiZAAAA\nEaRIls4BAAAQeQJ61vmYMWMOFQGde+65Wrx4cSCHE1ZSUlJ02WWXqVatWoqOjtYHH3wQ6CGFnaef\nflrt2rVTxYoVVb16dfXu3VuZmZmBHlbYGDt2rFq2bKlKlSqpUqVK6tixo2bPnh3oYYW1Z555RtHR\n0Ro2bFighxI2Ro4cqejo6KNuTZs2DfSwwsqGDRvUr18/xcbGqmzZsmrRooXS0tICPaywUa9evWP+\nDUdHR+vOO+8s0PcHLGhOmzZN9957rx5//HEtWbJELVu2VI8ePeT1egM1pLCye/dutWrVSmPGjJEk\nRUVFBXhE4SclJUVDhgzRwoULNWfOHB04cEAXX3yxdu/eHeihhYU6dero2WefVXp6utLS0tStWzdd\nfvnlWr58eaCHFpYWL16s8ePHq0WLFvx/4WfNmzfX5s2bD93mz58f6CGFjezsbLlcLpUqVUqzZ8/W\nypUrNXr0aFWuXDnQQwsbaWlpR/37nTNnjiTp2muvLdD3B2zpvEOHDurQoYNefvllSZLP51OdOnU0\nZMgQPfjgg4EYUtiKjo7WrFmzdPnllwd6KGEtKytL1apVU0pKijp16hTo4YSlqlWr6vnnn9eAAQMC\nPZSwsnPnTrVp00Zjx47Vk08+qVatWmn06NGBHlZYGDlypD744AMtWbIk0EMJS8OHD9eCBQs0b968\nQA8lYgwdOlSffPJJgVfwAjKjuX//fqWnp6t79+6HvhYVFaXu3btrwYIFgRgScNpycnIkSVWqVAnw\nSMJPbm6u3nnnHe3bt48WaQ4YPHiwEhMT1a1bN7Ft3/9WrVqlWrVqqWHDhurXr59+++23QA8pbHz4\n4Ydq06aNrrnmGlWvXl2tW7fW66+/Huhhha39+/drypQpcrvdBf6egATNrKws5ebmqnr16kd9vVq1\natq8eXMghgSclry8PA0dOlSdOnVi/5Uf/fjjjypfvrxKly6tW265RdOnT1ejRo0CPayw8s4772jp\n0qV6+umnJbHNxt/OPfdcvfnmm/rss880duxY/fLLLzr//PO1c+fOQA8tLKxdu1Zjx45VQkKCPv/8\nc91+++266667NHny5EAPLSzNmjVL27dv10033VTg76HfEOAHgwcP1ooVK9h75WdnnXWWli1bpu3b\nt2vGjBm67rrrNHfuXLVu3TrQQwsLv/32m+6++2598cUXKlmypCTbxsSspv/07Nnz0K+bN2+uDh06\n6Mwzz9T06dNPaVYIx5eXl6f27dvrqaeekiS1bNlSP/30k8aNG6cbb7wxwKMLPxMnTlSvXr10xhln\nFPh7AhI0Y2NjVaxYMW3ZsuWor2/ZskU1atQIxJCAQrvzzjv1ySefKCUlRTVr1gz0cMJKiRIl1KBB\nA0n6//buHySZMI4D+NcbPKmgKDCQ/DNFBA6RgenSUIuBW5AQSDTWYrgIQWNrQ9GgIC06RQgugRbY\nZgQnNERHQktLY0U0eL93eoXeJsHj4X34fuDg7oEHvtz05Xme47CwsIC7uzucnZ2hWCwqTqaH+/t7\nvL29/SjuvV4Pt7e3OD09xff3N1c4h2x8fByzs7N4fn5WHUULgUDg1y7S3NwcLi4uFCXS18vLC5rN\nJi4vLweap2Tr3Ov1YnFxEY1Goz/mOA6azSaWl5dVRCIamIhgb28PtVoN19fXCIfDqiNpr9frwXEc\n1TG0sbq6ioeHB3Q6HXQ6HViWhVgshq2tLViWxZLpgo+PD9i2zUWVIUkmk3h8fPwx9vT0hEgkoiaQ\nxsrlMqanp7G+vj7QPGVb5/v7+8hms4jFYlhaWsLx8TG+vr74NemQfH5+wrbt/nO324VlWZiamkIw\nGFSYTB+7u7uoVquo1WoYHR3tny+emJiAz+dTnO7/VygUkEqlEAwG8f7+jkqlglarhYODA9XRtDE2\nNvZrNWhkZASTk5M8azwk+Xwe6XQaoVAIr6+vODw8hNfrRSaTUR1NC7lcDolEAkdHR9jY2EC73Uax\nWOSux5A5joNyuYxsNgvDGHCNUhQ6OTmRcDgspmlKPB6XdrutMo5Wbm5uxOPxiMfjEcMw+vfb29uq\no2nj33f79zo/P1cdTQs7OzsSiUTENE3x+/2ytrYmjUZDdSztraysSC6XUx1DG5ubmxIIBMQ0TZmZ\nmZFMJiPdbld1LK3U63WJRqPi8/lkfn5eSqWS6kjaubq6EsMwxLbtgefyF5RERERE5Aqlv6AkIiIi\nIn2xaBIRERGRK1g0iYiIiMgVLJpERERE5AoWTSIiIiJyBYsmEREREbmCRZOIiIiIXMGiSURERESu\nYNEkIiIiIlf8AcYnw0/+cXR5AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "Again, this is pretty good despite the noisiness." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Fitting a Power Law\n", "===================\n", "\n", "Power laws occur all the time in physis, so it's a good idea to learn how to use them.\n", "\n", "What's a power law? Any function of the form:\n", "$$f(t) = a t^b$$\n", "where $x$ is your independent variable, $a$ is a scale parameter, and $b$ is the exponent (the power).\n", "\n", "When fitting power laws, it's very useful to take advantage of the fact that \"a power law is linear in log-space\".\n", "That means, if you take the log of both sides of the equation (which is allowed) and change variables, you get a \n", "linear equation!\n", "$$\\ln(f(t)) = \\ln(a t^b) = \\ln(a) + b \\ln(t)$$\n", "We'll use the substitutions $y=\\ln(f(t))$, $A=\\ln(a)$, and $x=\\ln(t)$, so that\n", "$$y=a+bx$$\n", "which looks just like our linear equation from before (albeit with different letters for the fit parameters).\n", "\n", "We'll now go through the same fitting exercise as before, but using powerlaws instead of lines." ] }, { "cell_type": "code", "collapsed": false, "input": [ "t = np.linspace(0.1,10) \n", "a = 1.5\n", "b = 2.5\n", "z = a*t**b " ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "pl.clf()\n", "pl.plot(t,z)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "pyout", "prompt_number": 23, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nGjVyuO22TI44IrivYUOLZzzLyckhMzMz7BgqI37eicXPWyUVSil95JFHuPfee4lEIpx44omMGjWK\nU045JYwoKoHNm4PzNr/5Blat2vX9zp//85+geO7cVB4gKSm4mlHDhsHIZqtWwdedPx9xRFBKdzr/\n/ByuvNI/YonC/2glFj/vxOLnrZIq81L63HPPcf311zNu3DgyMjIYMWIEnTp1YsmSJRzqLuRlascO\n+O47+Pbb3W+rV+9ePnduIL9TcjKkpQW3evWgXbuihbNhQ6hf35XtkiTp55V5KX3ggQfo27cvl19+\nOQBjx47ltddeY/z48fzxj38s6zhxIT8f1q3b/fbdd7u+X7t29+L53//uOndzp0qVoE6dYJP4evWC\nW8uWwded5XPn93XqBMdLkiTtrzItpVu3bmX+/PnceuuthfdVqlSJDh06MHv27LKMEopoFLZtC6bB\nN28OzqvcvBk2bQquIrRxY3A+5s7vf3zb+diGDUXL5w/Pz/yhpCSoXRtq1QpKZt260LQpnHJK8P2h\nh+66f+etTh3P4ZQkSWWvTEvpt99+y44dO0hNTS1y/2GHHcbixYt3O37L/9rWp59+WuT+7dthwYKg\n5P3wBsHXgoKiP//wtmNH8PgPv/74vh9+v317UCS3bdv9+50///D+rVuDW35+UBZ3fr/ztjPXz6lW\nDVJSdn394e2ww3YuCtr9dtBBu75PSSn+SObmzbsWJoVp3bp1zJ8/P9wQKjN+3onFzzux+Hknjp09\nbfPOPRv3Ublefb98+XIAevXqFXKSsrdzNDURpaenhx1BZcjPO7H4eScWP+/E8uWXX3Laaaft8++X\naSmtW7cuBxxwAJFIpMj9kUiEevXq7XZ8p06dePrpp2nSpAnVqlUrq5iSJEkqpi1btrB8+XI6deq0\nX89TKRot7oRybJx66qm0bt2ahx56CICCggIaNWrEtddey+DBg8syiiRJksqJMp++HzRoEJdffjkn\nn3wyp5xyCiNHjmTz5s307t27rKNIkiSpnCjzUvqb3/yGNWvWMGTIEFatWkXLli2ZMmWKe5RKkiQl\nsDKfvpckSZJ+LCnsAHvzyCOPFC5wOvXUU5k3b17YkVRKhg0bximnnELNmjVJTU3lwgsv5LPPPgs7\nlsrA3XffTVJSEgMHDgw7ikrJ119/Ta9evahbty4pKSmccMIJ5Obmhh1LpWD79u3cfPPNNG3alJSU\nFI466iiGDh0adizFyMyZM+nSpQsNGjQgKSmJSZMm7XbMkCFDqF+/PikpKXTs2JFly5aV6DXKZSnd\neSnSO+64gwULFnDiiSfSqVMn1qxZE3Y0lYKZM2fSv39/5syZw9SpU9m2bRtnnXUW33//fdjRVIrm\nzZvHo48+ygknnEAlLw0Wl7777jtOO+00qlSpwpQpU/j000954IEHOPjgg8OOplJw11138fjjjzN6\n9GgWL17M8OHDueeeexg1alTY0RQD33//PS1btuSRRx4B2O3v9vDhwxk1ahTjxo1jzpw5VK9enU6d\nOpGfn1/s1yiX0/cZGRlkZGQUrtCPRqM0bNiQ/v37eynSBPDtt99y2GGHMXPmTE4//fSw46gUbNy4\nkfT0dMaMGcNf/vIXWrZsyQMPPBB2LMXYTTfdxOzZs5kxY0bYUVQGunTpQlpaGo899ljhfd27d6d6\n9epMmDAhxGSKtaSkJF5++WXOP/98IOhp9evX58Ybb2TQoEEA5OXlkZqaypNPPknPnj2L97yllngf\n7bwUaYcOHQrvS6RLkSq4CghAnTp1Qk6i0pKVlcV5551H+/btKYf/LlaMvPLKK6Snp3PRRReRmppK\nq1atePzxx8OOpVJy9tlnM23aNJYuXQrAokWL+Ne//sXZZ58dcjKVtuXLlxOJRIp0t5o1a5KRkVGi\n7lburuhU0kuRKr4UFBQwYMAATj/9dFq0aBF2HJWCZ599loULFxaeJ+7Uffz64osvGDNmDNdffz23\n3XYbc+fO5dprryU5OZnLLrss7HiKsWuuuYYVK1bQrFkzDjzwQHbs2MFdd91FZmZm2NFUylatWgWw\nW3dLTU0tfKw4yl0pVWLLysrik08+4d133w07ikrBV199xXXXXce0adNITk4GgmkfR0vjU0FBAa1b\nty5c7HLiiSfy0UcfMXbsWEtpHHrooYd46qmnePbZZ/nFL37BggULGDBgAPXq1fPzTlDRaJSkpOJP\nype76fuSXopU8aNfv368/vrrTJ8+nfr164cdR6UgNzeXNWvW0KpVKypXrkzlypWZOXMmDz30EMnJ\nyZbTOFO/fv3dZjyOPfZYVqxYEVIilaY777yT7OxsfvOb3/CLX/yCXr16MXDgQIYNGxZ2NJWytLQ0\ngD12t52PFUe5K6XJycmkp6czbdq0wvsKCgp46623aNOmTYjJVFqi0Sj9+vVj0qRJvP322zRu3Djs\nSColHTp04KOPPmLRokUsWrSIhQsXcvLJJ9OrVy8WLlzoVH6cOe2003Y77eqzzz6jSZMm4QRSqYpG\noxxwwAFF7ktKSvIfmwmgadOmpKWlFelueXl5zJ07t0TdrVxO33sp0sSSlZVFTk4OkyZNonr16oXn\nn9SuXZuqVauGnE6xdNBBB+02cpaSkkKdOnU8hzgODRw4kLZt2zJs2DAuuugi5s6dy2OPPVZkdbbi\nR9euXRk6dCgNGzakRYsWLFiwgBEjRtCnT5+woykGNm3aVLiIDYJzxhcuXMghhxxCw4YNGTBgAEOH\nDuXoo4+mSZMmZGdn06BBA7p27Vr8F4mWUw8//HC0cePG0SpVqkRPPfXU6Ny5c8OOpFJSqVKlaFJS\nUrRSpUpFbk899VTY0VQGzjzzzOjAgQPDjqFSMnny5Ojxxx8frVq1arRFixbRxx9/POxIKiUbN26M\nXn/99dEmTZpEq1WrFj3yyCOj2dnZ0W3btoUdTTEwffr0wv8+//C/2b179y48ZsiQIdG0tLRo1apV\nox07dowuXbq0RK9RLvcplSRJUmIpd+eUSpIkKfFYSiVJkhQ6S6kkSZJCZymVJElS6CylkiRJCp2l\nVJIkSaGzlEqSJCl0llJJkiSFzlIqSZKk0P0/5P5bJIBl1AcAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " t = findgen(50)/49.*(10-0.1)+0.1\n", " a = 1.5\n", " b = 2.5\n", " z = a*t^b \n", " plpl = plot(t,z,color='b')\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Next, we'll re-make this plot as a log-log plot." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Change the variables\n", "# np.log is the natural log\n", "y = np.log(z)\n", "x = np.log(t)\n", "pl.clf()\n", "pl.plot(x,y)\n", "pl.ylabel(\"log(z)\")\n", "pl.xlabel(\"log(t)\")" ], "language": "python", "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 24, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nV2fIkCHs3r077NEEDB06lIYNG1K6dOkDbkenwjVu3Li9F6Ced955LFiwIOyREt6sWbO44oor+O1v\nf0tycjKTJ08OeyT9zLBhw6hbty7HHnssxx9/PK1bt2blypVhjyVg/PjxnHPOOaSkpJCSkkLDhg2Z\nNm1art9f5MNr06ZNeemll1i5ciUvv/wya9as4eqrrw57LAGffPIJsViMxx9/nOXLlzN69GgeffRR\nbrvttrBHE8FFkddeey09evQIe5SE98ILLzBgwADuvvtuFi1axDnnnEOLFi349ttvwx4toW3fvp1a\ntWoxbtw4AJKSkkKeSD83a9Ysevfuzfvvv8/06dPZvXs3l1xyCdu3bw97tIRXuXJl7r//fjIzM1m4\ncCFNmzblyiuvzPXNpxJu2cCUKVNo3bo1u3btolixYmGPo18YOXIk48ePZ82aNWGPov9v4sSJ9OvX\njx9++CHsURJW/fr1qV+/Pg899BAAsViMypUr07t3bwYNGhTydAJITk7mtdde48orrwx7FP2KTZs2\nUalSJWbNmkXjxo3DHke/cNxxxzFy5Eg6dux4yNcW+eb1577//nsmTZrERRddZHCNU1lZWRx33HFh\njyHFjV27dpGZmUmzZs32HktKSqJZs2bMnTs3xMmkaMnKygKgQoUKIU+in8vOzub5559n586dnH/+\n+bl6T0KE10GDBlG2bFkqVqzIZ599xgsvvBD2SDqA1atX8/DDD9O1a9ewR5HixqZNm8jOzub444/f\n53ilSpXYsGFDSFNJ0ZKTk0N6ejqNGzfe54ZHCs/SpUspW7YspUqVokuXLrz44otUr149V++NZHi9\n5ZZbSE5OPujj54uyb775Zj788EPeeustSpYsyR/+8AcSbLVEocrr+QFYv349l156KW3atKFz584h\nTV70Hc65kaSo69mzJ8uXL+f5558PexT9f2eccQZLlixh/vz59OrVi+uuu47MzMxcvTeSa143bdrE\n999/f9DXVKtWjaOOOmq/4+vXr6dy5crMnj07z3d0UO7k9fx89dVXNGnShIYNGzJx4sRCmDBxHc7v\nHde8hmvXrl2UKVOGl19+eZ/1lO3bt2fz5s28+uqrIU6n/3LNa/zq1asXr7/+OrNmzfrVu3IqfM2b\nN6dq1ao88cQTh3xtZG5S8HO5va3sgWRnZ+/zT+W/vJyf9evXc9FFF1G3bl2eeuqpAp5MR/J7R+Eo\nUaIEqampzJgxY28wysnJ4e2336ZPnz4hTyfFr1gsRu/evZk8eTIzZ840uMa57OxscnJycvXaSIbX\n3Jo/fz7z58+ncePGlC9fnjVr1nDnnXdy2mmn0aBBg7DHS3jr16+nSZMmVK1alREjRrBx48a9Xzvh\nhBNCnEwA69at4/vvv2fdunVkZ2ezePFiYrEYp512GmXKlAl7vITSv39/2rdvT506dahbty5jxoxh\nx44duboqVwVn27ZtrFq1au/zTz/9lA8//JDjjjuOypUrhziZIFgqkJGRweTJkylTpszeNeLlypWj\nVKlSIU+X2G699VZatWpF5cqV2bJlC//4xz+YNWsWd9xxR+4+IFaELV26NNa0adPYcccdFytVqlSs\nWrVqsR49esS+/vrrsEdTLBZ76qmnYklJSbHk5ORYUlLS3kdycnLYoykWi7Vv336fc/Lff7733nth\nj5aQHn744ViVKlViJUuWjJ133nmx+fPnhz1Swnv33Xf3+z2SlJQU69ixY9ijKRY74PeXpKSk2NNP\nPx32aAmvc+fOsapVq8ZKliwZq1SpUqx58+axGTNm5Pr9kVzzKkmSpMQUyd0GJEmSlJgMr5IkSYoM\nw6skSZIiw/AqSZKkyDC8SpIkKTIMr5JUCJo0aUK/fv0K5HMnTZp00NeMGzeO1q1b5/vPLUlhMLxK\nUiFISkoiKSkpXz/zzTff5IsvvuD666/feyw5OZkpU6bs87obb7yRuXPnsmDBgnz9+SUpDIZXSYqo\ncePG0a5du/1C8S+37y5ZsiTXXHMN48aNK8zxJKlAGF4lqZD98MMPtGvXjgoVKlCmTBlatWrF6tWr\n93nNE088QeXKlSlTpgzXXHMNo0ePpnz58nu//uOPPzJt2jSuvPLKvceqVq0KQOvWrUlOTuaUU07Z\n+7Urr7ySl19+mezs7IL9xUlSATO8SlIh69ChA5mZmbz++uvMnTuXWCxGq1at2LNnDwD/+c9/6N69\nO/369WPx4sU0bdqUoUOH7tOwzp07l2LFilGzZs29xz744AMAJk6cyIYNG/ZZJlCnTh22bdtGZmZm\nIf0qJalgFA97AElKJKtWreL1119nzpw5nHfeeQBMmjSJypUrM3nyZP74xz8yduxYWrVqRf/+/QGo\nXr06c+bM4Y033tjnc0444QSKFSu291jFihUBKFeuHJUqVdrn5y1fvjzHHHMMq1atom7dugX9y5Sk\nAmPzKkmFaMWKFRQvXpz69evvPVahQgVOP/10VqxYAcDKlSupV6/ePu/7ZeDcvHkzZcuWzdPPfeyx\nx7J58+bDnFyS4oPhVZIK0a/tOPDLi6wOJSUlha1bt+bpPZs3byYlJSVP75GkeGN4laRCdOaZZ7Jn\nzx7mzZu399h3333HypUrqVGjBgCnn3468+fP3+d9v9zmqnr16nz99df7XYB11FFHHfCirB9++IEt\nW7ZQvXr1/PqlSFIoDK+SVAj+26xWr16dq666iptuuon//Oc/LF68mLZt23LyySdz1VVXAdC7d2+m\nTp3K6NGjWbVqFY899hjTpk0jOfn//shu0KAB2dnZLF68eJ+fp2rVqsyYMYMNGzbwww8/7D0+f/58\nSpcuTe3atQvhVytJBcfwKkmF4OfLBZ566ilSU1O5/PLLadiwIUlJSUydOnXvxVcNGzbk0Ucf5YEH\nHuDcc8/lrbfeol+/fpQsWXLvZ6SkpNCyZcv9bkgwatQopk+fzu9+9ztSU1P3Hn/99df505/+tM8F\nXpIURUmxvC60kiQVuptuuomVK1fy3nvv7T325ptv0qNHD1atWrVPK/tLP/30E1WrVmXKlCn7XQgm\nSVFj8ypJcWjkyJEsXryY1atXM3bsWJ555hnat2+/z2tatGhB5cqVycjIOOhn/f3vf6dhw4YGV0lF\ngs2rJMWha6+9lpkzZ7JlyxZOPfVUevfuTZcuXcIeS5JCZ3iVJElSZLhsQJIkSZFheJUkSVJkGF4l\nSZIUGYZXSZIkRYbhVZIkSZFheJUkSVJkGF4lSZIUGYZXSZIkRYbhVZIkSZHx/wAgU7ChTL4o0QAA\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "It's a straight line. Next, for our \"fake data\", we'll add the noise *before* transforming from \"linear\" to \"log\" space" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " y = alog(z)\n", " x = alog(t)\n", " logplpl = plot(x,y,color='b',xtitle='log(t)',ytitle='log(z)')\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "noisy_z = z + pl.randn(z.size)*10\n", "pl.clf()\n", "pl.plot(t,z)\n", "pl.plot(t,noisy_z,'k.')" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 25, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " noisy_z = z + randomn(seed,n_elements(z))*10\n", " noisyplpl = plot(t,noisy_z,color='k',symbol='o',sym_size=0.3,overplot=plpl,linestyle='',sym_filled=1)\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "noisy_y = np.log(noisy_z)\n", "pl.clf()\n", "pl.plot(x,y)\n", "pl.plot(x,noisy_y,'k.')\n", "pl.ylabel(\"log(z)\")\n", "pl.xlabel(\"log(t)\")" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "-c:1: RuntimeWarning: invalid value encountered in log\n" ] }, { "output_type": "pyout", "prompt_number": 26, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nmjVrtGjRIg0cOFC//PKL+vXrp5ycHPXu3btYBgYAXLljx6Qnn5TefFO67TbzhqxatayeCgAKrlDh\ndeXKlXrxxRfVr1+/fNffeecdLV68WHPnzlX9+vU1efJkwisAeJnly83jXPftkyZNkgYOpG0FYD+F\n+mVr4cKFatu27XnXW7durUWLFkmS2rVrpx07dhTNdACAq3b8uBQfL7VqJV13nbR+vTR4MMEVgD0V\n6peuihUrav78+eddT0pKUsWKFSVJx44dU7ly5YpmOgDAVVmxQrrlFnMLrPHjzS2wate2eioAuHKF\nXvPar18/LVu2TE2aNJEkpaSkaOHChXr77bclSUuWLFGrVq2KfFAAQMEdPy49+6w0caLUrJmUlGSe\nlgUAdleo8PrYY4+pXr16mjx5sj799FNJUt26dbV8+XK1aNFCkjR8+PCinxIAUGArV5prW//3P2ns\nWHPJQGCg1VMBQNEoVHiVJKfTKafTWRyzAACuwokT0siR5vKAJk2kefOkG26weioAKFqFDq85OTma\nN2+etmzZIkmqV6+eOnbsqED+WA8Allm9WurRQ9q5U3rlFWnYMNpWAL6pUOF1+/btat++vfbs2aO6\ndevKMAyNGTNGVatW1cKFC1WLzQIBwKNOnpSef14aN05q1EhKTZXq1bN6KgAoPoXabWDw4MGqVauW\ndu/erdTUVK1bt067du1SzZo1NWjQoOKaEQBwASkpUsOG5k1Zo0dLyckEVwC+r1DN67fffqtVq1bl\nbYslSZUqVdIrr7ySd8MWAKB4nToljRolvfaa1KCB2bbedJPVUwGAZxQqvAYFBenIkSPnXT969KhK\nlSpVZEMBAC5szRpzbeu2bdKLL0pPPCGVKPTdCwBgX4VaNhAbG6s+ffpo9erVMgxDhmFo1apV6tOn\nj+67777imhEA/N6pU9Izz0jNm0vBwdLatdLTTxNcAfifQoXXSZMmqVatWmrRooWCgoIUFBQkp9Op\n2rVra9KkScU1IwD4tbVrzZuxxo41lwusXi3dfLPVUwGANQr1Z/YKFSpo3rx52rZtm7Zs2SKHw6Eb\nb7xRUVFRxTUfAPit7GxzacCYMWZY/f57qX59q6cqGJfLpeTkZDmdTiUkJFg9DgAfctnwOmTIEDkc\njot+/5tvvsn7+9dff71opgIAP7dunbm2dfNm6bnnzCUCJUtaPVXBuFwuJSUlKT09XZmZmXK5XARY\n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\nYII=\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "Note how different this looks from the \"noisy line\" we plotted earlier. Power laws are much more sensitive to noise! In fact, there are some data points that don't even show up on this plot because you can't take the log of a negative number. Any points where the random noise was negative enough that the curve dropped below zero ended up being \"NAN\", or \"Not a Number\". Luckily, our plotter knows to ignore those numbers, but `polyfit` doesnt." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " noisy_y = alog(noisy_z)\n", " noisylogplpl = plot(x,noisy_y,color='k',symbol='o',sym_size=0.3,overplot=logplpl,linestyle='',sym_filled=1)\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print noisy_y" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 2.76012522 nan nan 2.27290403 nan nan\n", " nan 0.31335701 3.21197707 2.01756957 3.14928717 1.65411036\n", " 3.35271681 2.85620109 2.9023572 2.66612043 3.60955608 3.88209521\n", " 3.89569506 4.04838792 3.8895262 3.94830488 3.91183659 4.23644408\n", " 4.43359977 4.60836101 4.67800107 4.62730566 4.76306924 4.92023958\n", " 5.04024222 5.08665369 5.12973319 5.12704115 5.24906646 5.32432964\n", " 5.4371285 5.47023768 5.54468769 5.63013187 5.65347531 5.69845002\n", " 5.7949457 5.85527219 5.91827662 5.93444822 6.05265895 6.0267689\n", " 6.13261723 6.14632032]\n" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "# try to polyfit a line\n", "pars = np.polyfit(x,noisy_y,1)\n", "print pars" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "fragment" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ nan nan]\n" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "fragment" } }, "source": [ "In order to get around this problem, we need to *mask the data*. That means we have to tell the code to ignore all the data points where `noisy_y` is `nan`.\n", "\n", "My favorite way to do this is to take advantage of a curious fact: $1=1$, but `nan`!=`nan`. With IDL, you can use the `finite` function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print 1 == 1\n", "print np.nan == np.nan" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "True\n", "False\n" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "source": [ "So if we find all the places were `noisy_y` != `noisy_y`, we can get rid of them. Or we can just use the places where `noisy_y` equals itself." ] }, { "cell_type": "code", "collapsed": false, "input": [ "OK = noisy_y == noisy_y\n", "print OK" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ True False False True False False False True True True True True\n", " True True True True True True True True True True True True\n", " True True True True True True True True True True True True\n", " True True True True True True True True True True True True\n", " True True]\n" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "-" } }, "source": [ "This `OK` array is a \"boolean mask\". We can use it as an \"index array\", which is pretty neat. In IDL, you'd use the `where` function for this." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"There are %i OK values\" % (OK.sum())\n", "masked_noisy_y = noisy_y[OK]\n", "masked_x = x[OK]\n", "print \"masked_noisy_y has length\",len(masked_noisy_y)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "There are 45 OK values\n", "masked_noisy_y has length 45\n" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "# now polyfit again\n", "pars = np.polyfit(masked_x,masked_noisy_y,1)\n", "print pars" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 1.29705336 2.47197822]\n" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " ; try the bad polyfit\n", " pars = poly_fit(x,noisy_y,1)\n", " print,pars \n", " ; they're nan\n", " \n", " OK = finite(noisy_y)\n", " whok = where(ok,nok)\n", " print,\"There are \",nok,\" OK values\"\n", " masked_noisy_y = noisy_y[whok]\n", " masked_x = x[whok]\n", " pars = poly_fit(masked_x,masked_noisy_y,1)\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# cool, it worked. But the fit looks a little weird!\n", "fitted_y = polyval(pars,x)\n", "pl.plot(x, fitted_y, 'r--')" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 33, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nYdu2nNW+AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "The noise seems to have affected our fit. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " fitted_y = poly(x,pars)\n", " fitlogplpl = plot(x,fitted_y,color='r',linestyle='--',overplot=logplpl)\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Convert bag to linear-space to see what it \"really\" looks like\n", "fitted_z = np.exp(fitted_y)\n", "pl.clf()\n", "pl.plot(t,z)\n", "pl.plot(t,noisy_z,'k.')\n", "pl.plot(t,fitted_z,'r--')\n", "pl.xlabel('t')\n", "pl.ylabel('z')" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 34, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nSZOCu7PD0Sj8ioiIiEil2LEDMjIgPh4+/BBOP93pirTgTUREREQqwYEDcOONkJsLS5dCgwZOV2Qo\n/IqIiIhIQNk23HsvzJsHs2dDSorTFR2i8CsiIiIiAfWPf8BLL8G//gWdOztdTVnq+RURERGRgJkx\nA4YPhwcegN//3ulqjqTwKyIiIiIB8dVXcPPN0KsXPP2009UcncKviIiIiJyyn382OzskJ8Pbb0N0\niKbMEC1LRERERMLFnj1mtrekBP79b6hVy+mKyqfwKyIiIiJlWJZFSkoKlmUdd2xxMdx2G6xZA9On\nQ+PGQSjwFCj8ioiIiEgpy7LweDzk5OTg8XiOG4Dvvx8+/hgmT4Y2bYJU5CnQVmciIiIiUsrr9eL3\n+wHw+/14vd5yx44fb24TJ0LPnsGq8NRo5ldERERESrlcLhISEgBISEjA5XIdddyHH5otzUaMgLvv\nDmaFp0bhV0RERERKud1uMjIySE5OJiMjA7fbfcSYJUvg1lvN8cV/+5sDRZ4CtT2IiIiISBlHC7wH\nrV9vWhwuvxxefz10tzQrT5iVKyIiIiJO8fuhRw9o0MAscouNdbqiilP4FREREZHj2rvX7OVbUACf\nfAL16h16rCJbozlN4VdEREREjqm42PT4fv01zJgBzZsfeqyiW6M5TT2/IiIiInJM998P06aZVofL\nLiv7WEW2RgsFmvkVERERkXId3Mt3woSj7+V7olujhQqFXxERERE5qhPZy/dEtkYLJWp7EBEREZEj\nVGQv31APvL+lmV8RERERKSPc9/I9lpB+K08//TTR0dEMGzaszP2jRo2iUaNG1KxZk65du7Jhw4Yy\nj+/bt4/BgwfToEED4uLi6NevH9u2bQtm6SIiIiJhadu28N/L91hCNvyuWLGCf/7zn1x88cVERUWV\n3j927FgmTJjApEmTWLZsGbVq1aJbt24UFhaWjhk2bBgej4epU6eyYMECcnNz6dOnjxNvQ0RERCRs\n7NoF115rPh6+l29VEZLhd9euXfTv359XXnmFM844o/R+27YZP348I0eOpGfPnlx00UW8+eab5Obm\n8vHHHwOwY8cO3G4348aNo2PHjrRp04bXXnuNL774gmXLljn1lkRERERCWlER9O0L69aZ4PvbvXyr\nkpAMv4MHDyYjI4POnTtj23bp/Zs2bcLn89GlS5fS++Lj40lLS2PJkiUAZGdns3///jJjUlJSaNq0\n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\nOX/FLd9OE28AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 34 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "That's pretty bad. A \"least-squares\" approach, as with `curve_fit`, is probably going to be the better choice. However, in the absence of noise (i.e., on your homework), this approach *should* work" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " fitted_z = exp(fitted_y)\n", " fitplpl = plot(t,fitted_z,color='r',linestyle='--',overplot=plpl)\n", " " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def powerlaw(x,a,b):\n", " return a*(x**b)\n", "pars,covar = curve_fit(powerlaw,t,noisy_z)\n", "pl.clf()\n", "pl.plot(t,z)\n", "pl.plot(t,noisy_z,'k.')\n", "pl.plot(t,powerlaw(t,*pars),'r--')\n", "pl.xlabel('t')\n", "pl.ylabel('z')" ], "language": "python", "metadata": { "slideshow": { "slide_start": false, "slide_type": "subslide" } }, "outputs": [ { "output_type": "pyout", "prompt_number": 35, "text": [ "" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAAG8CAYAAADXZc3dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XlcVPX+x/EXKOQGmjqBmguVkGWWkpKOmJpr4pJaRqnV\nWP7ujSy08rao5c0W770lZVpWjrZiZqk1mguZqKOhYVrmgltXEx2HG0suLML5/TE3vJQaKnBm4P18\nPOZRnvnOOZ/TPB745tvnfL9+hmEYiIiIiIhUAf5mFyAiIiIiUlEUfkVERESkylD4FREREZEqQ+FX\nRERERKoMhV8RERERqTIUfkVERESkylD4FREREZEqQ+FXRERERKoMrwu/zz77LP7+/iVe11xzTYkx\nkyZNonHjxtSqVYuePXuyZ8+eEu/n5uYSFxdHw4YNCQoKYujQoRw9erQib0NEREREvJDXhV+A1q1b\nc+TIkeLXunXrit+bOnUq06dPZ9asWaSkpFC7dm169+5NXl5e8ZixY8ficDhYsGABycnJpKenM3jw\nYDNuRURERES8iJ+3bW/87LPPsnjxYr777rs/vGcYBo0bN+bxxx9n3LhxAOTk5BASEsLcuXMZNmwY\n2dnZXHbZZSQmJhYH3l27dtGqVSs2bNhAVFRUhd6PiIiIiHgPr5z53b17N02aNOHKK69k+PDhHDx4\nEID9+/fjcrno0aNH8djg4GCioqLYsGEDAKmpqRQUFJQYExERQbNmzYrHiIiIiEjVVN3sAn7vpptu\n4t133yUiIoL09HQmT55MdHQ027Zt48iRIwCEhISU+ExISAgulwuAI0eOEBgYSHBw8FnH/F5GRgbL\nly+nRYsW1KxZsxzuSkREREQuxsmTJ/npp5/o3bs3DRs2vODzeF347dOnT/G/t27dmqioKJo3b878\n+fO5+uqrz/iZi+3cWL58OcOHD7+oc4iIiIhI+fvggw+4++67L/jzXhd+f69u3bqEh4ezd+9eunXr\nBoDL5Sox++tyuWjXrh0AoaGh5Ofnk5OTU2L21+VyERoaesZrhIWFAZ7/mK1atSqvWxEvEh8fT0JC\ngtllSAXR91216PuuWvR9Vx07duxg+PDhxbntQnl9+D127Bi7d+9m5MiRhIWFERoaSlJSEm3atAE8\nD7xt3LiRuLg4ACIjIwkICCApKanEA28HDhygY8eOZ7xGjRo1AGjVqlVxiJbKrV69evquqxB931WL\n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\n", "text": [ "" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "IDL Equivalent:\n", " \n", " errorbars = replicate(10.,n_elements(t))\n", " guesses = [0.,0.]\n", " pars = mpfitfun(\"powerlaw\",t,noisy_z,errorbars,guesses)\n", " mpfitplpl = plot(t,powerlaw(t,pars),color='g',linestyle='__',thick=3,overplot=plpl)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "FIN" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "source": [ "Tricks with Arrays\n", "==================\n", "\n", "We need to cover a few syntactic things comparing IDL and python.\n", "\n", "In IDL, if you wanted the maximum value in an array, you would do: \n", "`maxval = max(array, location_of_max)`\n", "\n", "\n", "In python, it's more straightforward: \n", "`location_of_max = array.argmax()` \n", "or \n", "`location_of_max = np.argmax(array)` \n", "\n", "Now, say we want to determine the location of the maximum of a number of different functions. The functions we'll use are: \n", "`sin(x)` \n", "`sin`$^2$`(x)` \n", "`sin`$^3$`(x)` \n", "`sin(x)cos(x)` \n", "\n", "We'll define these functions, then loop over them. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# sin(x) is already defined\n", "def sin2x(x):\n", " \"\"\" sin^2 of x \"\"\"\n", " return np.sin(x)**2\n", "def sin3x(x):\n", " \"\"\" sin^3 of x \"\"\"\n", " return np.sin(x)**3\n", "def sincos(x):\n", " \"\"\" sin(x)*cos(x) \"\"\"\n", " return np.sin(x)*np.cos(x)\n", "list_of_functions = [np.sin, sin2x, sin3x, sincos]" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "# we want 0-2pi for these functions\n", "t = np.linspace(0,2*np.pi)\n", "# this is the cool part: we can make a variable function\n", "for fun in list_of_functions:\n", " # the functions know their own names (in a \"secret hidden variable\" called __name__)\n", " print \"The maximum of \",fun.__name__,\" is \", fun(t).max()" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The maximum of sin is 0.999486216201\n", "The maximum of sin2x is 0.998972696375\n", "The maximum of sin3x is 0.998459440388\n", "The maximum of sincos is 0.4997431081\n" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "# OK, but we wanted the location of the maximum....\n", "for fun in list_of_functions:\n", " print \"The location of the maximum of \",fun.__name__,\" is \", fun(t).argmax()" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The location of the maximum of sin is 12\n", "The location of the maximum of sin2x is 12\n", "The location of the maximum of sin3x is 12\n", "The location of the maximum of sincos is 6\n" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "# well, that's not QUITE what we want, but it's close\n", "# We want to know the value of t, not the index!\n", "for fun in list_of_functions:\n", " print \"The location of the maximum of \",fun.__name__,\" is \", t[fun(t).argmax()]" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The location of the maximum of sin is 1.5387392589\n", "The location of the maximum of sin2x is 1.5387392589\n", "The location of the maximum of sin3x is 1.5387392589\n", "The location of the maximum of sincos is 0.769369629451\n" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "# Finally, what if we want to store all that in an array?\n", "# Well, here's a cool trick: you can sort of invert the for loop\n", "# This is called a \"list comprehension\":\n", "maxlocs = [ t[fun(t).argmax()] for fun in list_of_functions ]\n", "print maxlocs" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1.5387392589011231, 1.5387392589011231, 1.5387392589011231, 0.76936962945056153]\n" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "# Confused? OK. Try this one:\n", "print range(6)\n", "print [ii**2 for ii in range(6)]" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0, 1, 2, 3, 4, 5]\n", "[0, 1, 4, 9, 16, 25]\n" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false, "slide_type": "slide" } }, "source": [ "Recursion\n", "=========\n", "\n", "The next big programming topic is called *recursion*.\n", "\n", "*Recursion*\n", "-----------\n", "The next little programming topic is called recursion.\n", "\n", "\n", "\n", "For better or worse, you must visit the wiki page on recursion\n", "\n", "Recursion is when a function calls itself. But, a recursive function *must* have an \"end condition\" to avoid an infinite loop.\n", "If you try to make an infinite loop, you will get a \"stack overflow\" (python will give you an error)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def fail(x):\n", " \"\"\" an infinite recursion. Will fail \"\"\"\n", " return fail(x)\n", "# WARNING: this will definitely fail, but it may take a long time! \n", "# print fail(1)" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_start": false } }, "source": [ "Recursion is a useful mathematical tool. There are some problems that are best solved via recursion. The most commonly used example is the fibonacci sequence: \n", "0 1 1 2 3 5 8 13 21 .... \n", "this sequence is defined by the recursive relation \n", "$$F_n = F_{n-1} + F_{n-2}$$ \n", "or $$f(n) = f(n-1) + f(n-2)$$\n", "\n", "It has the base conditions:\n", "$$f(0) = 0$$\n", "$$f(1) = 1$$\n", "\n", "This one is pretty easy to define in code. But I'll leave it as an exercise.\n", "\n", "The following code shows a hierarchy of what will happen if you call `fibonacci(5)`. Don't worry about trying to understand the 'digraph' code, it's just a graph visualization tool." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%install_ext https://raw.github.com/tkf/ipython-hierarchymagic/master/hierarchymagic.py" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Installed hierarchymagic.py. To use it, type:\n", " %load_ext hierarchymagic\n" ] } ], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext hierarchymagic" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "%%dot --format svg -- \n", "digraph G { \n", " f5 [label=\"f(5)\"];\n", " Lf1 [label=\"f(1)\"];\n", "LLf0 [label=\"f(0)\"];\n", "Lf2 [label=\"f(2)\"];\n", "Lf3 [label=\"f(3)\"];\n", "RRf1 [label=\"f(1)\"];\n", "RRMf1 [label=\"f(1)\"];\n", "RRf0 [label=\"f(0)\"];\n", "LLf1 [label=\"f(1)\"];\n", "RMf0 [label=\"f(0)\"];\n", "RMf1 [label=\"f(1)\"];\n", "Rf2 [label=\"f(2)\"];\n", "RMf2 [label=\"f(2)\"];\n", "Rf3 [label=\"f(3)\"];\n", "Rf4 [label=\"f(4)\"];\n", " f5->Lf3; f5->Rf4; \n", " Lf3->Lf2; Lf3->Lf1;\n", " Rf4->Rf3; Rf4->Rf2;\n", " Rf2->RRf1; Rf2->RRf0;\n", " Lf2->LLf1; Lf2->LLf0;\n", " Rf3->RMf2; Rf3->RMf1;\n", " RMf2->RMf0; RMf2->RRMf1;\n", "}" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", "\n", "\n", "G\n", "\n", "\n", "f5\n", "\n", "f(5)\n", "\n", "\n", "Lf3\n", "\n", "f(3)\n", "\n", "\n", "f5->Lf3\n", "\n", "\n", "\n", "\n", "Rf4\n", "\n", "f(4)\n", "\n", "\n", "f5->Rf4\n", "\n", "\n", "\n", "\n", "Lf1\n", "\n", "f(1)\n", "\n", "\n", "LLf0\n", "\n", "f(0)\n", "\n", "\n", "Lf2\n", "\n", "f(2)\n", "\n", "\n", "Lf2->LLf0\n", "\n", "\n", "\n", "\n", "LLf1\n", "\n", "f(1)\n", "\n", "\n", "Lf2->LLf1\n", "\n", "\n", "\n", "\n", "Lf3->Lf1\n", "\n", "\n", "\n", "\n", "Lf3->Lf2\n", "\n", "\n", "\n", "\n", "RRf1\n", "\n", "f(1)\n", "\n", "\n", "RRMf1\n", "\n", "f(1)\n", "\n", "\n", "RRf0\n", "\n", "f(0)\n", "\n", "\n", "RMf0\n", "\n", "f(0)\n", "\n", "\n", "RMf1\n", "\n", "f(1)\n", "\n", "\n", "Rf2\n", "\n", "f(2)\n", "\n", "\n", "Rf2->RRf1\n", "\n", "\n", "\n", "\n", "Rf2->RRf0\n", "\n", "\n", "\n", "\n", "RMf2\n", "\n", "f(2)\n", "\n", "\n", "RMf2->RRMf1\n", "\n", "\n", "\n", "\n", "RMf2->RMf0\n", "\n", "\n", "\n", "\n", "Rf3\n", "\n", "f(3)\n", "\n", "\n", "Rf3->RMf1\n", "\n", "\n", "\n", "\n", "Rf3->RMf2\n", "\n", "\n", "\n", "\n", "Rf4->Rf2\n", "\n", "\n", "\n", "\n", "Rf4->Rf3\n", "\n", "\n", "\n", "\n", "\n" ] } ], "prompt_number": 45 }, { "cell_type": "code", "collapsed": false, "input": [ "%%dot --format svg -- \n", "digraph G { \n", " f5->f3; f5->f4; \n", " f3->f2; f3->f1;\n", " f4->f3; f4->f2;\n", " f2->f1; f2->f0;\n", " f2->f1; f2->f0;\n", " f3->f2; f3->f1;\n", " f2->f0; f2->f1;\n", "}" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "output_type": "display_data", "svg": [ "\n", "\n", "\n", "\n", "\n", "\n", "G\n", "\n", "\n", "f5\n", "\n", "f5\n", "\n", "\n", "f3\n", "\n", "f3\n", "\n", "\n", "f5->f3\n", "\n", "\n", "\n", "\n", "f4\n", "\n", "f4\n", "\n", "\n", "f5->f4\n", "\n", "\n", "\n", "\n", "f2\n", "\n", "f2\n", "\n", "\n", "f3->f2\n", "\n", "\n", "\n", "\n", "f3->f2\n", "\n", "\n", "\n", "\n", "f1\n", "\n", "f1\n", "\n", "\n", "f3->f1\n", "\n", "\n", "\n", "\n", "f3->f1\n", "\n", "\n", "\n", "\n", "f4->f3\n", "\n", "\n", "\n", "\n", "f4->f2\n", "\n", "\n", "\n", "\n", "f2->f1\n", "\n", "\n", "\n", "\n", "f2->f1\n", "\n", "\n", "\n", "\n", "f2->f1\n", "\n", "\n", "\n", "\n", "f0\n", "\n", "f0\n", "\n", "\n", "f2->f0\n", "\n", "\n", "\n", "\n", "f2->f0\n", "\n", "\n", "\n", "\n", "f2->f0\n", "\n", "\n", "\n", "\n", "\n" ] } ], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ "# EXERCISE: Write a recursive Fibonacci function!\n", "def fibonacci(n):\n", " return\n", " # put your code here!" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 47 }, { "cell_type": "code", "collapsed": false, "input": [ "# EXERCISE: Write a recursive factorial function\n", "# Recall: factorial(x) = factorial(x-1) * x\n", "# factorial(1) = 1\n", "def factorial(x):\n", " return" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "# This is the test for the fibonacci code. \n", "# Run this after you've written your fibonnacci sequence code\n", "# it will fail if your code is wrong!\n", "for ii,ff in zip(range(9),[0,1,1,2,3,5,8,13,21]):\n", " assert fibonacci(ii) == ff, \"Failed to get fibonacci #%i: %i\" % (ii,ff)\n", "print \"Success!\"" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [ { "ename": "AssertionError", "evalue": "Failed to get fibonacci #0: 0", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m# it will fail if your code is wrong!\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mii\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mff\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m13\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m21\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----> 5\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mfibonacci\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mii\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mff\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Failed to get fibonacci #%i: %i\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mii\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mff\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m\"Success!\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAssertionError\u001b[0m: Failed to get fibonacci #0: 0" ] } ], "prompt_number": 49 }, { "cell_type": "code", "collapsed": false, "input": [ "# This is the test for the factorial code. \n", "# Run this after you've written your factorial code\n", "# it will fail if your code is wrong!\n", "for ii,ff in zip(range(1,9),[1,2,6,24,120,720,5040,40320]):\n", " assert factorial(ii) == ff, \"Failed to get factorial #%i: %i\" % (ii,ff)\n", "print \"Success!\"" ], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": { "slideshow": { "slide_start": false } }, "outputs": [] }, { "cell_type": "raw", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "" ] } ], "metadata": {} } ] }