Skip to content

Instantly share code, notes, and snippets.

@eteq
Last active August 29, 2015 13:57
Show Gist options
  • Save eteq/9744953 to your computer and use it in GitHub Desktop.
Save eteq/9744953 to your computer and use it in GitHub Desktop.
Object-Oriented Programming intro for Astronomers (For Yale Overarching Discussion of Astro/YODA)
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"kernelspec": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"display_name": "IPython (Python 2)",
"language": "python",
"name": "python2"
},
"name": "",
"signature": "sha256:0cbcc6837d40914cc848632956dac852c275d6d8ff01a1eb7a5541ace37c85bf"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Intro to Object-Oriented Programming for Astronomers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Author: Erik Tollerud (@eteq)"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"When should you use Object-Oriented Programming?"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Recap"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Built around the concept of \"Objects\":\n",
"\n",
"* Fundamentally, they are things with both data and functions that operate on that data\n",
"* Like a C or IDL \"struct\", but with attached functions\n",
"* Objects also have \"inheritance\" (more later)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"OOP Languages:\n",
"\n",
"* C++ (but *not* C)\n",
"* Java (all OOP all the time)\n",
"* Python (important, but not required)\n",
"* Javascript (most \"dynamic\" web pages)\n",
"* Most other languages since the 90s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some terminology:\n",
"\n",
"* **object** - a thing that has data and can do something. An \"instance\" of a \"class\"\n",
"* **class** - The \"description\" of an object - defines what it does and (sometimes) what data it holds\n",
"* **method** - A function associated with (\"bound to\") an object - the object's possible actions\n",
"* **instantiate** - To create a new object of a class\n"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"So when should you actually use this?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some important guidelines:\n",
"\n",
"* There is *not* a right answer. Every code/project will have different pieces that might be simpler one way than the other.\n",
"* Classes and object-oriented design are tools to help organize code better, but they often require extra mental \"bandwidth\" to do right.\n",
"* Simpler approaches are often easier for simple tasks, or for one-off more complex ones.\n",
"* But beware thinking that *anything* will be used just once."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Example 1: Andrew's stuff"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you know in advance that you are developing something that:\n",
"\n",
"* Has a lot of hierarchical structure\n",
"* Will need to be extended by other people who shouldn't be altering the base classes\n",
"* Is just going to be a lot of similar stuff\n",
"\n",
"Then OO is usually going to be a lot easier."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Example 2: when it's needlessly complicated"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# some preliminary imports and setup\n",
"import numpy as np\n",
"\n",
"import matplotlib\n",
"from matplotlib import pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"matplotlib.rcParams['figure.figsize'] = (10,8)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = np.linspace(-1, 2, 100)\n",
"y = x*2.3 + 2 + np.random.randn(len(x))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class PlotMaker(object):\n",
" def __init__(self, x, y):\n",
" self.x = x\n",
" self.y = y\n",
" \n",
" def plot_data(self):\n",
" return plt.scatter(self.x, self.y, lw=0, marker='s')\n",
" \n",
"pm = PlotMaker(x, y)\n",
"pm.plot_data()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 26,
"text": [
"<matplotlib.collections.PathCollection at 0x1112467d0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nzTRnUY623YAddbTtBuygo203YEcdbbsBO+po2w3YUUfbbsAOOtp2Aw7JtEL1j5J82yYaAgCwr64d\nqKrqZUk+3t0PbbA9AAB7p7r7/AerHkhy9xkPfXuSNyT56u7+par6mSR/qLt//oxjnP8EAAA7prvr\nqr9zYaA695eqfl+SH0vyK6u7np3kE0me392fuvIBAQD22LUC1RMOcqdC9Qe7+9PzJgEA7JdNXYfK\ntB4AsFgbqVABACzZxq+UXlV/pqo+WFW/WlXPu2C/j1XVQ1X1YFX91023Y9dcoV9eUlWPVNVHquq1\nt9nGbaiqZ1TVA1X14ap6V1U9/Zz9Dn68rPPeV9V3rR5/f1U997bbuA2X9UtVHVXVL67GxoNV9R3b\naOdtqqrvqarHquoDF+yzxLFyYb8sdKzcU1XvXp1/fqqqvuWc/RY1XtbplyuPl+7e6E+SL0/ynCTv\nTvK8C/b7mSTP2PTz7+rPOv2S5ElJPprk3iRPTvK+JL97222/4X75+0m+bXX7tUneuMTxss57n+Sl\nSd65uv2Hk/yXbbd7R/rlKMn9227rLffLH03y3CQfOOfxxY2VNftliWPl7iR/YHX7aUl+2v9b1u6X\nK42XjVeouvuR7v7wmrtf+WOJ+2rNfnl+ko9298e6+zNJfiDJy26+dVv1p5K8ZXX7LUm+7oJ9D3m8\nrPPef76vuvs9SZ5eVc+83WbeunX/TRzy2HiC7v5PSf73Bbsscays0y/J8sbKJ7v7favbv5zk4STP\nOrXb4sbLmv2SXGG8bPPLkTvJj1bVe6vqVVtsxy75kiSPntj++Oq+Q/bM7n5sdfuxJOf9Iz708bLO\ne3/WPs++4XZt2zr90kn+yGqq4p1V9XturXW7a4ljZR2LHitVdW/uVPDec+qhRY+XC/rlSuPlrms+\n+XkX/HxDd79jzcN8ZXf/bFX9tiQPVNUjq78u9tYG+uUgPyFwyQViP6+7+4ILwR7ceDll3ff+9F9L\nBzlmTljn9f1kknu6+1eq6muSvD13pteXbmljZR2LHStV9bQkb0vymlVF5gm7nNpexHi5pF+uNF6u\nFai6+8XX+b1Tx/jZ1X9/rqr+be6U9vf6BLmBfvlEkntObN+TO38p7LWL+mW1gPTu7v5kVX1xkjMv\nDHuI4+WUdd770/t87oK6h+zSfunu/3Pi9g9X1T+tqmf0sq+Lt8SxcqmljpWqenKSH0zyr7r77Wfs\nssjxclm/XHW83PSU35lzj1X11Kr6LavbX5Dkq5Oc+2mVA3TenOx7k3xZVd1bVU9J8vIk999es7bi\n/iSvWN1+Re78BfA4Cxkv67z39yf55iSpqhck+YUT06WH6tJ+qapnVlWtbj8/dy4Hc9AnyDUscaxc\naoljZfV635zkQ939pnN2W9x4WadfrjperlWhuqSRfzrJdyX5oiT/vqoe7O6vqapnJfnu7v4TuTP9\n80Ordt6V5K3d/a5Nt2WXrNMv3f3Zqnp1kh/JnU83vbm7H95is2/DG5P866r6S0k+luTPJsnSxst5\n731V/ZXV4/+su99ZVS+tqo8m+b9JXrnFJt+Kdfolydcn+atV9dnc+Tqsb9hag29JVX1/khcm+aKq\nejTJd+bOpyAXO1aSy/slCxwrSb4yyZ9P8lBVPbi67w1Jfnuy6PFyab/kiuPFhT0BAIa2+Sk/AICD\nIFABAAwJVAAAQwIVAMCQQAUAMCRQAQAMCVQAAEO/DgUxCawOAUD6AAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x11108d190>"
]
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#better: \n",
"def my_scatter(x, y):\n",
" return plt.scatter(x, y, lw=0, marker='s')\n",
"\n",
"my_scatter(x, y)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 27,
"text": [
"<matplotlib.collections.PathCollection at 0x1114198d0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nzTRnUY623YAddbTtBuygo203YEcdbbsBO+po2w3YUUfbbsAOOtp2Aw7JtEL1j5J82yYaAgCwr64d\nqKrqZUk+3t0PbbA9AAB7p7r7/AerHkhy9xkPfXuSNyT56u7+par6mSR/qLt//oxjnP8EAAA7prvr\nqr9zYaA695eqfl+SH0vyK6u7np3kE0me392fuvIBAQD22LUC1RMOcqdC9Qe7+9PzJgEA7JdNXYfK\ntB4AsFgbqVABACzZxq+UXlV/pqo+WFW/WlXPu2C/j1XVQ1X1YFX91023Y9dcoV9eUlWPVNVHquq1\nt9nGbaiqZ1TVA1X14ap6V1U9/Zz9Dn68rPPeV9V3rR5/f1U997bbuA2X9UtVHVXVL67GxoNV9R3b\naOdtqqrvqarHquoDF+yzxLFyYb8sdKzcU1XvXp1/fqqqvuWc/RY1XtbplyuPl+7e6E+SL0/ynCTv\nTvK8C/b7mSTP2PTz7+rPOv2S5ElJPprk3iRPTvK+JL97222/4X75+0m+bXX7tUneuMTxss57n+Sl\nSd65uv2Hk/yXbbd7R/rlKMn9227rLffLH03y3CQfOOfxxY2VNftliWPl7iR/YHX7aUl+2v9b1u6X\nK42XjVeouvuR7v7wmrtf+WOJ+2rNfnl+ko9298e6+zNJfiDJy26+dVv1p5K8ZXX7LUm+7oJ9D3m8\nrPPef76vuvs9SZ5eVc+83WbeunX/TRzy2HiC7v5PSf73Bbsscays0y/J8sbKJ7v7favbv5zk4STP\nOrXb4sbLmv2SXGG8bPPLkTvJj1bVe6vqVVtsxy75kiSPntj++Oq+Q/bM7n5sdfuxJOf9Iz708bLO\ne3/WPs++4XZt2zr90kn+yGqq4p1V9XturXW7a4ljZR2LHitVdW/uVPDec+qhRY+XC/rlSuPlrms+\n+XkX/HxDd79jzcN8ZXf/bFX9tiQPVNUjq78u9tYG+uUgPyFwyQViP6+7+4ILwR7ceDll3ff+9F9L\nBzlmTljn9f1kknu6+1eq6muSvD13pteXbmljZR2LHStV9bQkb0vymlVF5gm7nNpexHi5pF+uNF6u\nFai6+8XX+b1Tx/jZ1X9/rqr+be6U9vf6BLmBfvlEkntObN+TO38p7LWL+mW1gPTu7v5kVX1xkjMv\nDHuI4+WUdd770/t87oK6h+zSfunu/3Pi9g9X1T+tqmf0sq+Lt8SxcqmljpWqenKSH0zyr7r77Wfs\nssjxclm/XHW83PSU35lzj1X11Kr6LavbX5Dkq5Oc+2mVA3TenOx7k3xZVd1bVU9J8vIk999es7bi\n/iSvWN1+Re78BfA4Cxkv67z39yf55iSpqhck+YUT06WH6tJ+qapnVlWtbj8/dy4Hc9AnyDUscaxc\naoljZfV635zkQ939pnN2W9x4WadfrjperlWhuqSRfzrJdyX5oiT/vqoe7O6vqapnJfnu7v4TuTP9\n80Ordt6V5K3d/a5Nt2WXrNMv3f3Zqnp1kh/JnU83vbm7H95is2/DG5P866r6S0k+luTPJsnSxst5\n731V/ZXV4/+su99ZVS+tqo8m+b9JXrnFJt+Kdfolydcn+atV9dnc+Tqsb9hag29JVX1/khcm+aKq\nejTJd+bOpyAXO1aSy/slCxwrSb4yyZ9P8lBVPbi67w1Jfnuy6PFyab/kiuPFhT0BAIa2+Sk/AICD\nIFABAAwJVAAAQwIVAMCQQAUAMCRQAQAMCVQAAEO/DgUxCawOAUD6AAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x11108d490>"
]
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#or just\n",
"plt.scatter(x, y, lw=0, marker='s')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 28,
"text": [
"<matplotlib.collections.PathCollection at 0x110c8a7d0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nzTRnUY623YAddbTtBuygo203YEcdbbsBO+po2w3YUUfbbsAOOtp2Aw7JtEL1j5J82yYaAgCwr64d\nqKrqZUk+3t0PbbA9AAB7p7r7/AerHkhy9xkPfXuSNyT56u7+par6mSR/qLt//oxjnP8EAAA7prvr\nqr9zYaA695eqfl+SH0vyK6u7np3kE0me392fuvIBAQD22LUC1RMOcqdC9Qe7+9PzJgEA7JdNXYfK\ntB4AsFgbqVABACzZxq+UXlV/pqo+WFW/WlXPu2C/j1XVQ1X1YFX91023Y9dcoV9eUlWPVNVHquq1\nt9nGbaiqZ1TVA1X14ap6V1U9/Zz9Dn68rPPeV9V3rR5/f1U997bbuA2X9UtVHVXVL67GxoNV9R3b\naOdtqqrvqarHquoDF+yzxLFyYb8sdKzcU1XvXp1/fqqqvuWc/RY1XtbplyuPl+7e6E+SL0/ynCTv\nTvK8C/b7mSTP2PTz7+rPOv2S5ElJPprk3iRPTvK+JL97222/4X75+0m+bXX7tUneuMTxss57n+Sl\nSd65uv2Hk/yXbbd7R/rlKMn9227rLffLH03y3CQfOOfxxY2VNftliWPl7iR/YHX7aUl+2v9b1u6X\nK42XjVeouvuR7v7wmrtf+WOJ+2rNfnl+ko9298e6+zNJfiDJy26+dVv1p5K8ZXX7LUm+7oJ9D3m8\nrPPef76vuvs9SZ5eVc+83WbeunX/TRzy2HiC7v5PSf73Bbsscays0y/J8sbKJ7v7favbv5zk4STP\nOrXb4sbLmv2SXGG8bPPLkTvJj1bVe6vqVVtsxy75kiSPntj++Oq+Q/bM7n5sdfuxJOf9Iz708bLO\ne3/WPs++4XZt2zr90kn+yGqq4p1V9XturXW7a4ljZR2LHitVdW/uVPDec+qhRY+XC/rlSuPlrms+\n+XkX/HxDd79jzcN8ZXf/bFX9tiQPVNUjq78u9tYG+uUgPyFwyQViP6+7+4ILwR7ceDll3ff+9F9L\nBzlmTljn9f1kknu6+1eq6muSvD13pteXbmljZR2LHStV9bQkb0vymlVF5gm7nNpexHi5pF+uNF6u\nFai6+8XX+b1Tx/jZ1X9/rqr+be6U9vf6BLmBfvlEkntObN+TO38p7LWL+mW1gPTu7v5kVX1xkjMv\nDHuI4+WUdd770/t87oK6h+zSfunu/3Pi9g9X1T+tqmf0sq+Lt8SxcqmljpWqenKSH0zyr7r77Wfs\nssjxclm/XHW83PSU35lzj1X11Kr6LavbX5Dkq5Oc+2mVA3TenOx7k3xZVd1bVU9J8vIk999es7bi\n/iSvWN1+Re78BfA4Cxkv67z39yf55iSpqhck+YUT06WH6tJ+qapnVlWtbj8/dy4Hc9AnyDUscaxc\naoljZfV635zkQ939pnN2W9x4WadfrjperlWhuqSRfzrJdyX5oiT/vqoe7O6vqapnJfnu7v4TuTP9\n80Ordt6V5K3d/a5Nt2WXrNMv3f3Zqnp1kh/JnU83vbm7H95is2/DG5P866r6S0k+luTPJsnSxst5\n731V/ZXV4/+su99ZVS+tqo8m+b9JXrnFJt+Kdfolydcn+atV9dnc+Tqsb9hag29JVX1/khcm+aKq\nejTJd+bOpyAXO1aSy/slCxwrSb4yyZ9P8lBVPbi67w1Jfnuy6PFyab/kiuPFhT0BAIa2+Sk/AICD\nIFABAAwJVAAAQwIVAMCQQAUAMCRQAQAMCVQAAEO/DgUxCawOAUD6AAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x111432990>"
]
}
],
"prompt_number": 28
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Example 3: Visualization/basic analysis of HI data cube"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from astropy import units as u\n",
"from astropy.io import fits"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def get_xyz_of_obj(datacube, ra, dec, vel):\n",
" from astropy.wcs import WCS\n",
" \n",
" wcs = WCS(datacube[0].header)\n",
" return wcs.wcs_world2pix([[ra.to(u.deg).value, dec.to(u.deg).value, vel.to('m/s').value]],0)[0]\n",
"\n",
"def show_image_around(datacube, x, y, side, z):\n",
" subcube = datacube[0].data[z, y-side//2:y+side//2, x-side//2:x+side//2]\n",
" plt.imshow(subcube, interpolation='nearest')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 128
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def spectrum_plot(datacube, x, y, vlower, vupper):\n",
" from astropy.wcs import WCS\n",
" \n",
" wcs = WCS(datacube[0].header)\n",
" data = datacube[0].data\n",
" \n",
" ra, dec = wcs.wcs_pix2world([[x, y, 0]],0)[0][:2]\n",
" zlower = wcs.wcs_world2pix([[ra, dec, vlower.to('m/s').value]],0)[0][-1]\n",
" zupper = wcs.wcs_world2pix([[ra, dec, vupper.to('m/s').value]],0)[0][-1]\n",
" \n",
" zs = np.arange(len(data))\n",
" zrange = (zlower<=zs)&(zs<=zupper)\n",
" vs = wcs.wcs_pix2world(np.array([[x]*len(zs), [y]*len(zs), zs]).T,0)[:, -1]\n",
" print(vs.shape)\n",
" \n",
" plt.step(vs[zrange]/1000, data[zrange, y, x], where='mid')"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"datacube1 = fits.open('/Users/erik/astrodata/galfa-hi/GALFA_HI_RA+DEC_004.00+10.35_W.fits.gz')\n",
"\n",
"ra1 = 3.69179166667*u.deg\n",
"dec1 = 10.8130583333*u.deg\n",
"\n",
"x, y, z = get_xyz_of_obj(datacube1, ra1, dec1, 240*u.km/u.s)\n",
"\n",
"plt.figure()\n",
"show_image_around(datacube1, x, y, 40, z)\n",
"\n",
"plt.figure()\n",
"spectrum_plot(datacube1, x, y, 200*u.km/u.s, 300*u.km/u.s)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(2048,)\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nBQxcAAAq+P+rovJmWaQiNwAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x116054910>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n/tbQXN29OxeW4vsPVfV/k/xgktfNDlN3a6aqPqOq3p8L+eSd3f1rWVJuGRq+ZpOtvjXJd3T3H8zv\n6wvtdgeN/ndnwArN6u4nc6HuPj73+vcl+ePu/m8HvF3drdh8/SV5Osn3Jnn9/CEHvF39rdjC398f\n5EI3yPHufkmSf5kLd57vR/2t0B7XzruSfHt3f3aS70zypgPeru5WqLuf7u4vyoWenZdW1Vcs7D90\nbhkWvuYmW/3x/vRkq09U1fNm++cnan08F8ajXPSCfLpplsH2myi3qv5Rklck+bq5w9Xdmtmj/j43\nF8YkfKCqfiMX6uhXqur6qL+1s8/f32NJfipJuvv+JE9X1XOj/tbKPnV3c3f/9Oz5T+bTXVPqbk11\n9+8n+bkkfzlLyi2j7nbcb7LV/SZqvSfJa6rq2qr6nCQ3JXnviLJyqf3qrqpO5cL/cd/S3X809xZ1\nt0b2qr/u/lB3X9/dn9Pdn5ML/5B/yawpXf2tkQOunW9L8rLZMS9Mcm13fyzqb20cUHcPV9XfmD1/\nWZKPzp6ruzVSVc+9eCdjVf2pXLjJ7H1ZUm45cHmhJfqyJF+f5INV9b7Za6/Lhbvk3lJV35zZRK1J\n0t0frqq3JPlwkqeSfOuseY/x9qq7703yw7kwCPG+C9eYvKu7v1XdrZ0966+7f37umE/Vj/pbO/td\nO9+U5E1V9aEkf5zkGxL1t2b2u3Z+S5L/VFV/IsknZ9vqbv18VpI3V9Vn5EJD1Y939y/O6nJybjHJ\nKgDAQMPvdgQA2GXCFwDAQMIXAMBAwhcAwEDCFwDAQMIXAMBAwhcAwED/H4Z62YkoisCJAAAAAElF\nTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x1163faa50>"
]
}
],
"prompt_number": 130
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"datacube2 = fits.open('/Users/erik/astrodata/galfa-hi/GALFA_HI_RA+DEC_020.00+10.35_W.fits.gz')\n",
"\n",
"ra2 = 19.7987916667*u.deg\n",
"dec2 = 11.1217277778*u.deg\n",
"\n",
"x, y, z = get_xyz_of_obj(datacube2, ra2, dec2, 610*u.km/u.s)\n",
"\n",
"plt.figure()\n",
"show_image_around(datacube2, x, y, 40, z)\n",
"\n",
"plt.figure()\n",
"spectrum_plot(datacube2, x, y, 550*u.km/u.s, 680*u.km/u.s)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(2048,)\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nuL8qZf+WOR0tRd77P/P8uvTUdG+heraVpnsH1TXbr9/LpeneQXXtK033DqrqSOlfp3sLVZd/4PaX\nsn/LnI6VnpjuLVTVr0vbpnsL1bO9NN07qK7Zfv3KpeneQXX1lqZ7B1X1cql7urdQdbykDABABgxc\nAAAysJRSdRY2q87CAAC8jqWUbKzLqzZwAQDAb/CSMgAAGTBwAQDIgIELAEAGWQeuma0zs2fMbI+Z\nfSLn987BzPaZ2dNm9pSZbZ3u/ZwOM/uGmQ2Y2Y5TLmsys0fM7Fkze9jMor899HVjnOvXZWb7K8fv\nKTNbN517PB1m1mJmj5nZz8xsp5l9pHL5jD+GE1y3WXH8zKzOzJ4ws21mtsvMPle5fMYfO2nC6zcr\njt9Esr1pysxqJO2WtFbS85L+VdKNKaWfZ9lABmb2nKSOlNLgdO/ldJnZ2zX6a76/lVJaVrnsbyUd\nTCn9beV/mN6YUvrkdO5zqsa5fp+RNJxS+vK0bu4MMLNFkhallLaZ2XxJT0q6XtIHNcOP4QTX7f2a\nPcdvXkrpiJm9QaO/5v7jkt6jGX7sThrn+l2tWXL8xpPzGe4VknpSSvtSSsclfVvSezN+/1zGfDv4\nTJNS+qmkF1918Xsk3VX5+C6NPsjNSONcP2n2HL/+lNK2yseHJf1c0mLNgmM4wXWTZs/xO1L5sFZS\njUbP1Rl/7E4a5/pJs+T4jSfnwF0sqe+Uz/frN3eS2SJJ2mhm3Wb2J9O9mSoopJQGKh8PSCpM52aq\n5DYz225md87Ul+xezcwukvRWSU9olh3DU67byRLzWXH8zGyOmW3T6DF6LKX0M82iYzfO9ZNmyfEb\nT86Bezb8wO/qlNJbJf2BpD+rvGw5K6XRf4uYbcf0a5IulrRC0q8kfWl6t3P6Ki+5PiDpoyml4VO/\nNtOPYeW63a/R63ZYs+j4pZRGUkorJDVLeoeZXfWqr8/oYzfG9StqFh2/8eQcuM9Lajnl8xaNPsud\nNVJKv6r8998kPajRl9Fnk4HKv5/JzC6QdGCa93NGpZQOpApJd2iGHz8zO0ejw/bulNKGysWz4hie\nct3uOXndZtvxk6SU0iFJP5DUoVly7E51yvXrnI3H79VyDtxuSZea2UVmVitpvaTvZfz+VWVm88ys\nvvLxeZLeKWnHxH9rxvmepJsrH98sacME2Rmn8iB20g2awcfPzEzSnZJ2pZS+csqXZvwxHO+6zZbj\nZ2YLTr6cambnSrpG0lOaBcdOGv/6nfyfiYoZe/wmkrXa0cz+QNJXNPqP5HemlD6X7ZtXmZldrNFn\ntZL0Bkn/OJOvn5ndK+lKSQs0+u8sn5b0XUn/JOlCSfskvT+lNDRdezwdY1y/z0gqavTlrCTpOUm3\nnvJvZjOKma2R9BNJT+s3Lz3+paStmuHHcJzr9leSbtQsOH5mtkyjb4qaU/lzd0rp78ysSTP82EkT\nXr9vaRYcv4nQpQwAQAY0TQEAkAEDFwCADBi4AABkwMAFACADBi4AABkwcAEAyICBCwBABv8fnPEG\ngCt00lQAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x10fc71a50>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nezM207fZDovkFiu0AwAMJFwBAAwkXAEADCRcAQAMJFwBAAwkXAEADCRcAQAMJFwBAAwkXAEADCRc\nAQAMJFwBAAwkXAEADCRcAQAMJFwBAAwkXAEADCRcAQAMJFwBAAwkXAEADCRcAQAMJFwBAAwkXAEA\nDHTTqhsAABvqWlX6+u2VtoS1Ut09/6wRT1TV3V2n8mQAAAtYJLeYFgQAGEi4AgAYSLgCABhIuAIA\nGEi4AgAYSLgCABhIuAIAGEi4AgAYSLgCABhIuAIAGEi4AgAYSLgCABhIuAIAGEi4AgAYSLgCABhI\nuAIAGEi4AgAYSLgCABhIuAIAGEi4AgAYSLgCABhIuAIAGEi4AgAYSLgCABhobriqqjur6tGqeqyq\n7jvgnP80efx9VfWF45tJVV1YdRs2lb5bjP5bjP5bjP47OX23OoeGq6o6k+QNSe5M8nlJXl1Vn7vv\nnK9P8tndfXuS70zyo0tq6667sOoGbLALq27Ahruw6gZsuAurbsCGu7DqBmywC6tuwK6aN3J1Psnj\n3f1Edz+T5MEkd+075xuT/ESSdPcvJXlJVb1seEsBADbAvHB1a5Inp46fmtw375xPX7xpAACb56Y5\nj/cRr1NH+bqqOur1mKGqXr/qNmwqfbcY/bcY/bcY/Xdy+m415oWrq0nOTR2fy97I1GHnfPrkvht0\n9/4ABgCwdeZNCz6S5Paquq2qbk5yd5JL+865lORbk6SqXpHkD7r794e3FABgAxw6ctXdz1bVvUke\nSnImyQPdfaWq7pk8fn93v72qvr6qHk/yx0n+/tJbDQCwpqpbGRQAwCjDVmivqieq6v1V9d6qes++\nx763qj5eVbdM3fe6ycKjj1bV14xqx6Y6qP+q6rVVdaWqPlBVPzR1v/6bMqv/qup8Vb1nct/DVfVF\nU+frv4mqeklVvXnye/bBqvriqrqlqt5VVb9RVT9XVS+ZOl/fTZnRf6+oqh+eHL+vqt5SVZ86db7+\nmzKr/6Ye895xiFl/u5P7vW8cwQF/u+cn7xeLvW9095B/SX47yS0z7j+X5J3Tj2dvQdJfTfKiJLcl\neTzJJ4xqyyb+m9V/Sb4yybuSvGhy/Of137H673KSr53c/rokv6D/ZvbdTyR5zeT2TUk+Ncm/S/J9\nk/vuS/KD+u5Y/fc3rvdLkh/Uf8frv8lt7x0n6DvvGwv335D3jdF7C876ROB/SPJ9++67K8lPdfcz\n3f3EpJHnB7dlE+3vv+9K8m97bwHXdPeHJvfrv9n299/vZu+PJUlekuc/xar/JiYjKl/W3T+W7NVZ\ndvdHM7U48OT/V05u67spB/Vfd7+ruz8+Oe2X8vzaf/pvyiG/f4n3jkMd0nfeN47gkP4b8r4xMlx1\nkp+vqkeq6h9MGn9Xkqe6+/37zv2LuXFJh1mLk+6aF/RfktuTfHlV/WJVXa6qvza5X/+90Kz++/4k\n/76q/m+SH07yusn9+u95n5nkQ1X141X1K1X1xqr6pCQv6+c/9fv7Sa7vuqDvbjSr/16875zXJHn7\n5Lb+u9HM/vPecSQH/e163ziag/52h7xvjAxXX9rdX5i9YbR/WFVfNmnU9AJmh611teuV9bP676Yk\nZ7v7FUn+WZI3HfL1+u+F/fdAku/p7s9I8k+S/NghX7+r/XdTkpcn+c/d/fLsfeL3+6dP6L0x8cP6\nZ1f7LpnTf1X1L5L8WXf/t0Ouof9u7L8fiPeOozjod8/7xtHM6r/XZdD7xrBw1d2/O/n/Q0nemuQr\nspcM31dVv529YfFfrr19B4+08OgumdF/57OXjN8yuf/hJB+vqpdG/73AAf13vrvfOjnlzXl+CFf/\nPe+p7I0QPDw5fnP2XnB+r6o+LUmq6i8k+X+Tx/XdjQ7qv1TVtyf5+iTfMnW+/rvRrP77wuzVtHjv\nONxBffdkvG8cxUF/u0PeN4aEq8kw7idPbn9Skq9J8p7ufll3f2Z3f+bkG3n5ZKrhUpJXVdXNVfWZ\n2RvGfM9B1992B/TfryX5mSRfNbn/c5Lc3N0fjv67wQH994Ekj1fVV0xO+6okvzG5rf8muvv3kjw5\n+f1KkjuS/J8kP5vk2yb3fVv2fhcTfXeDg/qvqu7M3qjBXd39p1Nfov+mHNB/v9zdn+a943CH/O2+\nLd435jqk/x4b8b4xb/ubo3pZkrdW1fVr/mR3/9y+c54bPuvuD1bVm5J8MMmzSb57MvWwq2b2X1W9\nKMmPVdWvJfmzTFbC138vMKv/HqqqjyT5kar6xCQfS/Kdif6b4bVJfrL2dmH4zewtBHwmyZuq6juS\nPJHkmxJ9d4D9/feaJA8nuTnJuya/l+/u7u/WfzPN+v2b5r3jYLP67k/ifeOoZvXfmzLgfcMiogAA\nA41eigEAYKcJVwAAAwlXAAADCVcAAAMJVwAAAwlXAAADCVcAAAP9f0nk4ozhim7kAAAAAElFTkSu\nQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x10fc67b90>"
]
}
],
"prompt_number": 136
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"The danger..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from astropy.coordinates import SkyCoord, Angle\n",
"from IPython.html.widgets import interact"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"hi22coo = SkyCoord('00h14m46.03s +10d48m47.01s')\n",
"hi23coo = SkyCoord('01h19m11.71s +11d07m18.22s')\n",
"v22 = 237 * u.km/u.s\n",
"v23 = 617 * u.km/u.s"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"galfacubes = {}\n",
"galfawcses = {}\n",
"def load_galfa_fn(objname, fn=None):\n",
" from astropy.wcs import WCS\n",
" \n",
" if fn is None:\n",
" f = galfacubes[objname]\n",
" wcs = galfawcses[objname]\n",
" else:\n",
" if fn in galfacubes:\n",
" if galfacubes.get(objname, None) is not galfacubes[fn]:\n",
" raise ValueError('objname \"{0}\" and file \"{1}\" do not match'.format(objname, fn))\n",
" f = galfacubes[fn]\n",
" wcs = galfawcses[fn]\n",
" else:\n",
" f = galfacubes[fn] = fits.open(fn)\n",
" galfacubes[objname] = f\n",
" \n",
" wcs = galfawcses[fn] = WCS(f[0].header)\n",
" galfawcses[objname] = wcs \n",
" \n",
" return f, f[0].data.T, wcs"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def get_xyz_of_obj(objnameorfn, coo, vel):\n",
" wcs = galfawcses[objnameorfn]\n",
" return wcs.wcs_world2pix([[coo.ra.degree,coo.dec.degree, vel.to('m/s').value]],0)[0]\n",
"\n",
"def show_target(objnameorfn, coo, vel, npix=50, vmin=None, vmax=None, box=3, imsum=None, jyax=False, smooth=1, showall=False):\n",
" datcube = load_galfa_fn(objnameorfn)[1]\n",
" x, y, z = get_xyz_of_obj(objnameorfn, coo, vel)\n",
" \n",
" if showall:\n",
" xslice = yslice = slice(None)\n",
" edges = None\n",
" else:\n",
" xslice = slice(x - npix/2 + 1, x + npix/2 + 1)\n",
" yslice = slice(y - npix/2 + 1, y + npix/2 + 1)\n",
" edges = np.floor(x-npix/2)+.5, np.floor(x+npix/2)+.5, np.floor(y-npix/2)+.5, np.floor(y+npix/2)+.5\n",
" \n",
" if imsum is None or imsum==1:\n",
" data = datcube[xslice, yslice, z].T\n",
" else:\n",
" if not hasattr(imsum, 'unit'):\n",
" imsum = imsum*u.km/u.s\n",
" lz = get_xyz_of_obj(objnameorfn, coo, vel - imsum/2)[-1]\n",
" uz = get_xyz_of_obj(objnameorfn, coo, vel + imsum/2)[-1]\n",
" data = datcube[xslice, yslice, lz:uz]\n",
" data = np.sum(data,axis=-1).T\n",
" \n",
" \n",
" plt.subplot(1,2,1)\n",
" plt.imshow(data,interpolation='none',origin='lower', vmin=vmin, vmax=vmax, extent=edges)\n",
" plt.colorbar()\n",
" \n",
" plt.axvline(x-box/2, color='k')\n",
" plt.axvline(x+box/2, color='k')\n",
" plt.axhline(y-box/2, color='k')\n",
" plt.axhline(y+box/2, color='k')\n",
" \n",
" if showall:\n",
" plt.xlim(x - npix/2, x + npix/2)\n",
" plt.ylim(y - npix/2, y + npix/2)\n",
" \n",
" plt.title(objnameorfn)\n",
" \n",
" plt.subplot(1,2,2)\n",
" dspec = datcube[x-box/2+1:x+box/2+1, y-box/2+1:y+box/2+1]\n",
" print('Used',np.prod(dspec.shape)/dspec.shape[-1],'pix')\n",
" dspec = dspec.sum(axis=0).sum(axis=0)\n",
" vs = galfawcses[objnameorfn].wcs_pix2world(0, 0, np.arange(dspec.shape[-1]),0)[-1]/1000\n",
" \n",
" if smooth>1:\n",
" kernel = np.hanning(smooth+2)\n",
" kernel = kernel / np.sum(kernel)\n",
" dspec = np.convolve(dspec, kernel, mode='same')\n",
" \n",
" plt.step(vs, dspec, where='mid')\n",
" \n",
" lv, uv = (vel-100*u.km/u.s).value, (vel+100*u.km/u.s).value\n",
" plt.xlim(lv, uv)\n",
" plt.ylim(np.min(dspec[(lv<vs)&(vs<uv)])-.05,np.max(dspec[(lv<vs)&(vs<uv)]) +.1)\n",
" plt.xlabel('$v$ [km/s]')\n",
" plt.ylabel('$T_b$ [K]')\n",
" \n",
" plt.axvline(vel.to('km/s').value,color='k', ls='--')\n",
" \n",
" if jyax:\n",
" if jyax is True:\n",
" jyax = 1*u.arcmin**2\n",
" ktojy = (1*u.K).to(u.Jy, u.brightness_temperature(jyax, 21*u.cm)).value\n",
" realax = plt.gca()\n",
" yl = plt.ylim()\n",
" plt.twinx()\n",
" plt.ylim(yl[0]*ktojy, yl[1]*ktojy)\n",
" plt.ylabel('Jy')\n",
"\n",
" plt.axes(realax)\n",
" \n",
" return vs,dspec\n",
"\n",
"def fit_flux(vs, dspec, lv, uv, baselinevs=None, plotlines=False):\n",
" vmsk = (lv<vs)&(vs<uv)\n",
" if baselinevs:\n",
" bldat = []\n",
" blvs = []\n",
" for lb, ub in baselinevs:\n",
" blvs.extend(vs[(lb<vs)&(vs<ub)])\n",
" bldat.extend(dspec[(lb<vs)&(vs<ub)])\n",
" \n",
" baseline = np.poly1d(np.polyfit(blvs, bldat, 1))\n",
" else:\n",
" baseline = lambda v: np.zeros_like(v)\n",
" \n",
" intspec = np.sum(dspec[vmsk]-baseline(vs[vmsk]))\n",
" dv = np.diff(vs[vmsk]).mean()\n",
" \n",
" if plotlines:\n",
" oxls = plt.xlim()\n",
" oyls = plt.ylim()\n",
" \n",
" if baselinevs:\n",
" for lb, ub in baselinevs:\n",
" plt.axvline(lb, color='k', ls=':')\n",
" plt.axvline(ub, color='k', ls=':')\n",
" \n",
" plt.axvline(lv, color='k')\n",
" plt.axvline(uv, color='k')\n",
" plt.plot(vs, baseline(vs), color='r')\n",
" \n",
" plt.xlim(*oxls)\n",
" plt.ylim(*oyls)\n",
" \n",
" return intspec * dv * u.K * u.km/u.s"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data = load_galfa_fn('HI22', '/Users/erik/astrodata/galfa-hi/GALFA_HI_RA+DEC_004.00+10.35_W.fits.gz')[1]\n",
"\n",
"def plot_and_line_flux(vplt=v22.to('km/s').value, box=8, smooth=1, imsum=40):\n",
" vs, dspec = show_target('HI22', hi22coo, vplt*u.km/u.s, 31, box=box,imsum=imsum, jyax=True, smooth=smooth)\n",
" \n",
" tbdv = fit_flux(vs, dspec, 215,255,[(190, 215), (260,290)],plotlines=True)\n",
" flxdv = (tbdv/(u.km/u.s)).to(u.Jy, u.brightness_temperature((1*u.arcmin)**2, 21*u.cm))*u.km/u.s\n",
" plt.title('{0:.4}, {1:.4}'.format(tbdv, flxdv))\n",
"interact(plot_and_line_flux, vplt=(150,350), box=(1, 20), smooth=(1,9),imsum=(1,100))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"('Used', 121.0, 'pix')\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x10eec0110>"
]
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What I could have done if I'd planned ahead and foreseen this:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class HIDataCube(object):\n",
" def __init__(self, filename):\n",
" ...\n",
" \n",
" def show_near(self, ra, dec, size):\n",
" ...\n",
" \n",
" def spectral_plot(self, ra, dec, vlower, vupper):\n",
" ...\n",
" \n",
" def line_flux(self, velocity, width):\n",
" ...\n",
" \n",
" def fancy_interact_thingie(self):\n",
" ...\n",
" use self.show_near(...), self.spectral_plot(...), self.line_flux(...), etc.\n",
" ...\n",
" \n",
" \n",
"dc = HIDataCube('/Users/erik/astrodata/galfa-hi/GALFA_HI_RA+DEC_004.00+10.35_W.fits.gz')\n",
"dc.plot_near(ra, dec, 50)\n",
"dc.spectral_plot(ra, dec, vlower, vupper)\n",
"dc.fancy_interact_thingie(ra, dec, firstvguess)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Example 4: Fitting a model to data"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from astropy.io import ascii\n",
"from astropy.modeling import Fittable1DModel, Parameter\n",
"from astropy.modeling import fitting"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def arctan_model(x, offset, lower_slope, upper_slope, transition_x, transition_width):\n",
" dx = x - transition_x\n",
" first_term = dx * (lower_slope + upper_slope) / 2\n",
" second_term = -dx * (lower_slope - upper_slope) * np.arctan(dx / transition_width) / np.pi\n",
" return first_term + second_term + offset\n",
" \n",
"# ... but then you have to use your own fitter/keep track of every parameter, etc."
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"class ArcTanTransitionModel(Fittable1DModel):\n",
" \n",
" offset = Parameter(default=0)\n",
" lower_slope = Parameter(default=1)\n",
" upper_slope = Parameter(default=2)\n",
" transition_x = Parameter(default=0)\n",
" transition_width = Parameter(default=1)\n",
"\n",
" @staticmethod\n",
" def eval(x, offset, lower_slope, upper_slope, transition_x, transition_width):\n",
" dx = x - transition_x\n",
" first_term = dx * (lower_slope + upper_slope) / 2\n",
" second_term = -dx * (lower_slope - upper_slope) * np.arctan(dx / transition_width) / np.pi\n",
" return first_term + second_term + offset"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"model = ArcTanTransitionModel()\n",
"print model\n",
"\n",
"x = np.linspace(-3,3,1000)\n",
"\n",
"plt.plot(x, model(x))\n",
"\n",
"model.upper_slope = 5\n",
"plt.plot(x, model(x))\n",
"\n",
"print model"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model: ArcTanTransitionModel\n",
"Inputs: 1\n",
"Outputs: 1\n",
"Model set size: 1\n",
"Parameters:\n",
" offset lower_slope upper_slope transition_x transition_width\n",
" ------ ----------- ----------- ------------ ----------------\n",
" 0.0 1.0 2.0 0.0 1.0\n",
"Model: ArcTanTransitionModel\n",
"Inputs: 1\n",
"Outputs: 1\n",
"Model set size: 1\n",
"Parameters:\n",
" offset lower_slope upper_slope transition_x transition_width\n",
" ------ ----------- ----------- ------------ ----------------\n",
" 0.0 1.0 5.0 0.0 1.0\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x111432fd0>"
]
}
],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"rlm = ascii.read('yoda-oo-rlm.dat')\n",
"\n",
"plt.scatter(rlm['logreff'], rlm['loglum'], lw=0)\n",
"\n",
"fitter = fitting.LevMarLSQFitter()\n",
"fitmodel = fitter(model, rlm['logreff'], rlm['loglum'])\n",
"print fitmodel\n",
"\n",
"\n",
"x = np.sort(rlm['logreff'])\n",
"plt.plot(x, fitmodel(x), color='r', lw=2)\n",
"None"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Model: ArcTanTransitionModel\n",
"Inputs: 1\n",
"Outputs: 1\n",
"Model set size: 1\n",
"Parameters:\n",
" offset lower_slope upper_slope transition_x transition_width\n",
" ------------- ------------- -------------- -------------- ----------------\n",
" 9.81336897625 4.88214960912 0.597155270839 0.399607582875 0.173581599732\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHfCAYAAACmi1eOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm0XHWV9//3TkgYREAcGGQSFEgQUSACamts5dcog/I4\noN1qq90aukFRHkREUZQWRRlEkSbYYuOEOODA8Kg4RO1WMWHGhElUgsqgIKjMsH9/nLqkbqXuvafG\nU8P7tVYW91SdOrVzF0s/7O8+3xOZiSRJkmY2q+oCJEmShoXBSZIkqSSDkyRJUkkGJ0mSpJIMTpIk\nSSUZnCRJkkqaNjhFxBkRcUtEXNnkvf8bEQ9HxIa9K0+SJGlwzNRx+gywV+OLEbE5sCfw214UJUmS\nNIimDU6Z+RPgjiZvnQgc3pOKJEmSBlTLM04R8RLgpsy8ogf1SJIkDaw1Wjk5ItYBjqRYpnvk5SnO\n9VkukiRpaGRm00xTr6XgBGwDbAVcHhEAmwEXR8QzM/PWdgpQ90TE0Zl5dNV1jBN/5/3n77z//J33\nn7/z/ivb8GkpOGXmlcBGdV/ya2CXzLy9tfIkSZKGz0zbEZwF/BTYNiJWRsQbGk5xOU6SJI2NaTtO\nmfnqGd7furvlqENLqi5gDC2puoAxtKTqAsbQkqoLGENLqi5AzUVmb5pGEZHOOEmSpGFQNrf4yBVJ\nkqSSDE6SJEklGZwkSZJKMjhJkiSVZHCSJEkqyeAkSZJUksFJkiSpJIOTJElSSQYnSZKkkgxOkiRJ\nJRmcJEmSSjI4SZIklWRwkiRJKsngJEmSVJLBSZIkqSSDkyRJUkkGJ0mSpJIMTpIkSSUZnCRJkkoy\nOEmSJJVkcJIkSSrJ4CRJklSSwUmSJKkkg5MkSVJJBidJkqSSDE6SJEklGZwkSZJKMjhJkiSVZHCS\nJEkqyeAkSZJUksFJkiSpJIOTJElSSQYnSZKkkgxOkiRJJRmcJEmSSjI4SZIklWRwkiRJKsngJEmS\nVJLBSZIkqSSDkyRJUkkGJ0mSpJIMTpIkSSUZnCRJkkoyOEmSJJVkcJIkSSrJ4CRJklSSwUmSJKkk\ng5MkSVJJBidJkqSSDE6SJEklGZwkSZJKMjhJkiSVZHCSJEkqyeAkSZJU0ozBKSLOiIhbIuLKutc+\nGhErIuLyiDgnItbvbZmSJEnVK9Nx+gywV8Nr3wV2yMydgGuBd3W7MEmSpEEzY3DKzJ8AdzS8dmFm\nPlw7vAjYrAe1SZIkDZRuzDi9EbigC9eRJEkaaGt08uGIeDdwf2Z+cYr3j647XJKZSzr5PkmSpG6I\niIXAwpY/l5llLr4VcG5m7lj32uuBNwEvyMx7m3wmMzNaLUiSJKnfyuaWtjpOEbEX8A7gec1CkyRJ\n0iiaseMUEWcBzwMeB9wCvI/iLrq5wO21036Wmf/e8Dk7TpIkaSiUzS2llup6WYAkSVLVyuYWdw6X\nJEkqyeAkSZJUksFJkiSpJIOTJElSSQYnSZKkkgxOkiRJJRmcJEnqggjmRTCv6jrUWwYnSdLI6leY\nieA0YDmwvPazRpTBSZI0kvoVZmrBbFHdS4vsPI0ug5MkaeQYZtQrBidJ0tAahLmiJK7Zg59+6dV8\nkV1ZCrA4kxVV1qTe8Vl1kqSumQgx/QgOteW3ia7S4kwObOX9Nr80gC2BXYEFtX/uAqwPcBNP/MJm\nedNrOv4e9Z0P+ZUk9VU7QaXVoNXQXVre8Pb8ies0dqFmuv6UdURswqqANPHPxzW5xO+AZcDXyTxz\nxr+IBk7Z3LJGP4qRJI22KWaKzs3k/Gk+80jQipg5aDUEs7NLnlf6uo/lj7wpvn7+p3jzz1kVlDZt\n8pE/AkspgtJS4GIyfz/dd2h02HGSJHWsFpwaO0AwRXCZ4vz5U3WGpjj/bOCA+u8pfd2I9YGdV7D9\n3ley4/9dwFKexG+affVdrApIE/+8kV79n6cq41KdJI2hfs4YNfnu+k5PvdWCS5eC0/yJHxqW6Cad\ntwvLdl7GgnWYvNy2XeN3/I11uISd2YrffHZzbvoORVC6nsyHm9Wk0WJwkqQx05Nh6NZrWASr7Zm0\nT7MluzaW1G4HHlM7vCOTDZuctOa+fOuLm3HT/9mVZezJhbdvwcoNWP0u8vuBy4GlH+Co+V/mlQuv\nZnseYo1Kfm+qnsFJksZIqx2cktcr1bmqP7fNTlKZ4e29gfPqX3s0d+13F+v/llVdpF2BnYA5DR9/\nCLiKyUtuV5J5f6t1aHQ5HC5J2hpaDwKtDG03OzeCxUzuJE1ZQ9mgMpf74kn8ml1ZxgKWsivL2I2L\nvgKs2XhJir9zfUi6jMx7pru+gUll2XGSpBExxYxRS0tPrXSMpju3ow5OsVfSVkzeBmAX4NFNzr4B\nWLqceTcuZ/6VL+dr3yTzrpa/U2PPjpMkCYptAU7ud0dluu9bLVRFPJHJg9u7Ao9t8tGbfssWK3/D\nVtc9jx9/AVhG5u21wPiO2jmLE2eU1Dt2nCRpBEyzHQC0OOvUytB2qwPeW8cN/70d1/zzApayL+f+\ndgHL5gKbNDn1NoqltonltmVk3tzk+7s626Xx5XC4JI2RVvdRKnm9lofDG97YgGKJbVdgwf3M2WMu\nDzTbUPLPTISjVUFpZZm9kgxO6haDkySNmSY7a7+/bwEi4lHAM5g8l/SUxtP+yqO4hJ1ZygKWsSvb\nc/Ve7+MD3+1kQ8lB2IZBw8/gJEljqC+31UesBTyNyXNJ81l9r6T7gMuo6yTN4f63PsicN9fe71rI\ncTsBdcrgJElqWZPB7TnADkwOSTuy+l5JDwJXMnm57SoyH5jxO6QBYHCSpAE3aAFijXjwtCdz/aIF\nLOXlfPWql/CtvwJPB9ZqOHVir6T657ddMdNeSdIgMzhJ0gCrfC6n2CtpS4ou0oK7ePTzgGeux1+a\nnX09kztJl5D5136VKvWDwUmSBlQld4JFbEQtJLFqye3xjaetZDOWsoClLGAPfvYv+3Hu18m8o2d1\nSQPCDTAlaQh1Zfmu2AZgYiPJiaC0eZMz/8SqvZKWbss1L7+ObV9Xe29xJme0XYM0ouw4SVIFmi3V\ntbV8F7EOq7YBmPiz2jYAwF+Ai5m8qeRvGrcBGLS5K6lfXKqTpAFXH1JKLd8Vd7jtyOSQtAMwu+Fz\nE9sALK37cw2ZD/fgryGNBJfqJGnATdfVmcVDfITDtyFOfCarQtJOwJoNpz4EXM6q4e2lFNsA3N+b\nqldnl0rjxOAkSVWLiIR7D+e4Cx/PbXsuYCm78/MH1uK+c5ucfS2TO0mXkXl3X+utU7+8GOGu3Rp9\nLtVJUr9FbMLkR5MsAB7b5MyVTA5JF5P5536VOROfE6dR4lKdJA2CiMcwOSAtAJ7Y5MzbmBySlpF5\nS7/KlFSOwUmSuqV40O3OTA5KT25y5l1MvsNtKXBjJw+6rUJtqH0xk+8EtNukkeZSnSS1I2IuxYNu\n6ztJzR50ey9wKZOHt68dpTvcHA7XKHA7AkkDbaj+zzZiNrA9k0PSTsDchjMfonjQbX0n6ZfNHnQr\nabA44yRpYDXeiQWcDAMSoopnuG3N5JC0M/CoJmdfw+p3uPmgW2mE2XGS1BVlO0hT3Ik14ZHb2fvW\nkYrYlNWf4bZhkzN/y+SQdAmZd/a0Nkl941KdpL5p5VEhMwQnKOaEDqm/Ht3qSEVsyOrbAGza5Mxb\nWf0Ot1s7+m5JA83gJKkv2tnLpyFoNdoHOG+K98pvsBixLsUSW303aesmZ97JqsHtiX+uHLY73CR1\nxhknSQOr9kDbc1k9IJ0N3DDNRxdFcPJqoSxiTVa/w20eq9/hdg/FHW713aTrR+kON0m9ZXCS1KlD\nGo7L7uXTLCC9v8neQJM8httnEY9tfNDt04A5Dac+SPEMt8Y73B4sUZskNeVSnaS2dfrIjQh+STHT\nNOFsVoWneXO5j6dy1XuewnX/+Ex+wYu54ObtuWY9YJ2GSyVwNZND0uVk3tvO30vS+HGpTtKMqtxL\nqfbd9aGJtbn7gAUsPeC0OOuiZPHNwB7AE+pO2bj2z9+w+h1ud/W+aknjzuAkjakuPdW+2bB1KXO5\njyfyO/bgZ4/82YnLWYOHAHarO/WPwEXAL1h1h9tt7X6vJHXCpTppDHXjqfbT3BnX/DrFc9x2pegi\n7QHszuRuEg8ymyt4Gj9jD3bh4iN256KvAb/yDjdJveZSnaRWvQ94VZkTa8GrWWgqBsNX7b49EZD2\noHhEyez6kx9k9h0X8OLHTPSclrKAu4sNuhdnclwHfxdJ6gk7TtKYiuBLwAENL5fqOjV2rNbkXhaw\nlE/xphO355on06SbRPEctyuAn038WZN7597Pmo2dr30yOb/Fv44kdcQNMCVNq5PlujXjvnm7cdHp\nz+XHz9mTC9mNi1iL+xpPu426kEQxm/S3hu/fGngtqwJcu7NWktQRl+qkEdTlu+BaG+yOWAt4/nns\n/dHruGKHLVg56e3fssWftuTGs1kVlG6YajapyXzUI9sQtFSTJPWZHSdpSEz1PLh2wlTpwe6ITYC9\nKR6Dsid1+yf9gY05j304n735Mc/lDjZsa5mvzj7ADYYnSVVwqU4aIVMtq9HwMNwyy1zTBJflSTwV\neDqwL0WQWVB/wt2sveKjvGPeuezLJexMTn6iSanZpBIP+e0oFEpSO7oSnCLiDIr/2rw1M3esvbYh\nRVt9S4pN6F6ZmX9utwBp3JUJB1OEjWYPw52x69N4rTncz55cyL6cy7/w6Vvm8OBGdaffC3yv9j3n\nkfm7CK4Htmly6VZ2DJ/uIb/QZiiUpHaVzS2ND8Bs9Blgr4bXjgAuzMxtge/XjiW1oRYglgPLaz83\nVQski+teWjzVuSUcArAxf+AY3sONbMH57MOBLKYWmn4PnA7sBzyWzH3JXFwLTfNoHprO7nJXaGsm\nB6tFEwFTkqo0bXDKzJ8AdzS8vB9wZu3nM4GX9qAuaeQ12Qtp2nBQ67jMZ9VjShq7TaW+c0t+s+gU\nDuLXPIn38EE25hauYgdO501XUWxQuRmZi8g8l8y7S156ta7zdDUwfbdpMc0fACxJlZup49TMRpl5\nS+3nW4CNpjtZ0pRaflxJXVdnuuAxpaXs+rJr2I6DOJW1uI+v81L+jh+zI1eyiNNfSebF0+3S3aTz\nNaHTjtA+1EJhJgc267A55yRpEHS0HUFmZkRM+T+yEXF03eGSzFzSyfdJo2KKzSc7DQdTfz5iDnDi\nrnAwwFm8imM4ihWTn7FbSiYH1kLSc9spMpMVESxmcvjbFzi5yfecPPGZdr5LkqYSEQuBhS1/bqa7\n6iJiK+DcuuHwq4GFmXlzFLcq/zAzt2/yOYfDpSamCE2ld8ue4vMw9TPiHgt8BXj+A6zx8Js5fdZ/\n84Zmly67nUCz7z87s9zjWmrXmO7OOvd0ktR33RoOb+ZbwD/Xfv5n4BttXEMaS7XA0Cz0lJrpmSY0\nTfWBHYGlFKHpj8/lx1OFplLdrmnq/1zpmmZ2ADMMy0tSVaYNThFxFvBTYLuIWBkRbwA+DOwZEdcC\nf187ltRj04QWaBZ8Ivan2MH7ScCywzj+FT9nj2af3acLt/q3NMw9zaxUPe+kkzRw3ABT6rN2H647\nw/LWqs9HzAKOAo6uvfcF4E1k3tPpMmEn9U9xrYlgVL9nU8fXlaRW9XKpTlJnGm/dL7VMVqpLE7Eu\nxTzT0cDDwDuA15J5T+2M9zf51HktLos1u8b7Wvj8IzJZUfszsdXC2XVveyedpIFjx0nqowj2po3d\nvus+P1XXaX4S9wLfBHYE7gReRea3S36+1Tq61nVqcm0fsyKp7+w4SQOm1tVptmlly/s5NTqH/Xej\nGALfEbgG2K0xNHVZs65TV0x0oXp1fUnqREf7OEkqZ4bdsjvYJTs5liMv2Z9v/BcwG7gA+Ecy72zx\nQi6LSVIJdpykav2qxcAyadPJt3MS7+LDO1OEpuOA/doITe3ouEsmScPI4CT1xyFTvL5N2Vvua0t9\njwxx7815HM9hE4dvIPMIMh9qs77St/5PseRox0rSWDA4ST1W4qG2M3ZvGq/xFK7lC/wTs0hOY9GV\nZP53mVpmuDOv5TpqurEPlCQNBYOTVL3XtnLyuvyFr7M/63MX57A//8Z/7tjKRpG1kLNPk7fanbXq\nYEZLkoaLwUnqsRL7Lx0wU/BZdY3kDN7IDixnOfP4Z84EWt/1o7bhZX1N7e4l5RKdpLHiPk5Sn9TC\n0QnAi5q8XWoPpItjl/fswiXH3Ml6PJNfcC3bTby1uJ3lstq+UrSyc3jtc+61JGmklM0tBiepT6bZ\nfLJc6InY5mHiilnkOv/IFziLf2w8o6UNKGtD3hPzSm0FL0kaFW6AKQ2HcoPVEbOBM2eR65zNKzmL\nV3f0pU2GvH2griSVYHCS+qfZlgT7lvzsO4BnA384jOP/u8lc09kum0lS77lUJ/VBR8+Ii3g68Atg\nDrAXmd+p6w69j1XPjGtpuc2lOklaxRknaYC0HZwi1gKWATsAp5J50AzXbHXOySFvScIZJ2mg1ILJ\nVIPh04WW/6AITdcBh/eiLkOTJJVncJL6oNbZmd/w8vSD4RHPAw4FHgJeS+bf6t92TyVJ6r81qi5A\nUhMR6wOfpZgC/yCZFzU7LZMDIzi59rOhSZJ6zI6T1AdT7B5+Xm1Au5mTgS0o5pv+Y6ZrG5okqT8c\nDpf6qLZT93kNL08e6I7YHzgHuBd4BplX969CSRpPDodLg2n6B+JGbAScXjs63NAkSYPF4CT1UYmB\n7lOAxwHfAz7Zz9okSTNzqU6qQNP9kyJeCnwd+Bswn8wbq6lOksZP2dziXXVSBVYb5i7uopvoML3L\n0CRJg8mlOmkwHAdsCvwMOLXiWiRJU3CpTqpaxHOBHwEPUNxF98uKK5KkseNdddIwKJ5F96na0bGG\nJkkabAYnqVpHANsCK4APVVyLJGkGLtVJVYnYDrgCmAs8l8yfVFyRJI0tl+qkQRYRFEPgc4EzDE2S\nNBzsOElViHgN8DngT8D2ZP6x4ookaazZcZIGVcSGwIm1o8MMTZI0PAxOUv99CHg88GPgzIprkSS1\nwKU6qZ8ingX8L8WeTTuRuWKGT0iS+sClOmnQRMwBTqsdfcTQJEnDx+AkdUkE8yYe3juFtwE7AjcA\nH+xPVZKkbjI4SV0QwWnAcmB57efJQSpiS+Do2ukHkXlPFXVKkjqzRtUFSMOuFo4W1b20KIINgAMA\nZsXDix+GJwLrAF8m89sVlClJ6gKDk8Qj4YdMujV3dMDEDy/hmxOh6i7g7V26viSpAi7Vaew1W2Zr\nRS1sLa576eyJH9blL3yct04cvpvM33dSqySpWm5HoLFW6zQtb3h5fjudp/quVS2ALTqBQzmUkwCW\nAbuT+VCnNUuSus/tCKQ+y2TFRODK5MDTWPSyt3PSw8DDwCJDkyQNPztOGnsT3aHa4eJMDuzCRWcD\nPwWeCZxM5tt6MEclSeqSsrnF4CTRg+HwiH8DTgV+B8wL8qN0O5xJkrrG4CRVJeLxwLXABsArgvwl\nXZqjkiT1hjNOUp802TH8OIrQ9F3ga1N8bOueFyZJ6jqDk9SB1bYyiHg28AbgfuBgMrPJdgUA57Wz\n9YEkqVou1UltatzKYDYPchfrXb0O92wPfJDM99SdB0WX6byGy7hkJ0kDwKU6qc/+nVOphabfAsfC\n5I4U8NoKy5MkdYEdJ6kDE1sZbMwf+BXb3L8O98wFXkLmt6bYXLORHSdJGgB2nKQ+qG0rMP9ydvpW\nLTSdD5xbcVmSpB4xOEnTaHLH3GqSeMITuG0/4F7grWRm3Wfqh8IXNx7bbZKk4WJwkqZQ6uG/EXOA\nT9aOPkTmDQ1zTQDzKZbkDpzoUE0cT/G9M4Y1SVI1nHGSmpjp4b8R7A2QxPbA8fcx98Y1uX+7IJ80\n3edKfG/3H/8iSZqRM05Sj0RwPXDepvzuvL+w7vEAL+UbWwT5sRKfnbKbVHt9Ud1Li+w8SdJgaTs4\nRcS7IuKXEXFlRHwxItbsZmFSlZpsWrk4kxURXABsA3Aih/Jo/so57M+3eRHUdYoaPwcll/4kSQOt\nraW6iNgK+AEwLzPvi4izgQsy88y6c1yq09Crf/hv/fLdC/ge32NP7mZttudqVrLFxEfm151LXWia\ndumv7vtcqpOkCpTNLWu0ef27gAeAdSLiIWAdiqfASyOl2WzSXO7jFA4G4EO8676VbDHRbX2ku9Tu\n3XKZHBjByZ1cQ5LUO20t1WXm7cAJwI3A74E/Z+b3ulmYNGgmlu8O5US25xpuZPO/HcN712OGu+Tq\nP1v30pRbEWSywtAkSYOp3aW6bSg2+fs74E7gK8BXM/MLdeck8P66jy3JzCUdVStVLWKLh4lrZpFr\nAXvS4n8wNC7hSZKqERELgYV1L72vzFJdu8HpAGDPzPzX2vFrgd0z86C6c5xx0uiJOAfYH/gymQdU\nXY4kqTt6vR3B1cDuEbF2RATwQmZ+Jpc03CJeBOz/ELPuBg6tuhxJUv+1O+N0OfBZYBlwRe3l07tV\nlDRwIta6hSd8CeBwPrJOkEdVXZIkqf/cOVwq4bp4ysefwvVvuYodeAaX8iBzoIUdwSVJg63X2xFI\n4yNi622INwMcxCcnQpMkaQz5yBVpOsUM38dnkWv+kIXX/ZjnTbwz5XYCkqTR5VKdNJ2I/YBvUmz6\nul2QjwG3E5CkUeNSndSpiHWAj9eOjiLz5oSbqyxJklQtl+qkqR0JbAlcBpxacS2SpAHgUp3UTMS2\nwJXAXOBZZP6s4ookST3U6w0wpdFVDIR/giI0nWFokiRNsOMkNYp4OcXzF+8AtiPztoorkiT1mB0n\nqR0R6wIn1Y6ONDRJkuoZnKTJjgI2o3ic0KcqrkWSNGBcqpMmRMwHLgdmA7uRubTiiiRJfeJSndSK\nYiD8FIq9zU43NEmSmrHjJAFEvBr4IvAnYFsyb6+4IklSH9lxksqKWA84oXb0TkOTJGkqBicJ3gts\nAlwEfKbiWiRJA8ylOo23yQPhu5J5ScUVSZIq4FKdNJPJA+GnGZokSTOx46TxFfEq4CwcCJeksWfH\nSZpOxKNZNRB+hKFJklSGwUnj6ihgU+AXwBkV1yJJGhIu1Wn8RMwDrqAYCH8mmcsqrkiSVDGX6qRm\nioHwT1AMhH/K0CRJaoUdJ42XiFcAXwZupxgI/1PFFUmSBoAdJ6lRxLrAibWjIw1NkqRWGZw0Tt4N\nbAZcDPxXxbVIkoaQS3UaDxHbAVdSzDbtTuYvKq5IkjRAXKqTJhQD4R8H5gCf7jQ0RTAvgnldqU2S\nNFQMThoH/wf4/4A7gHd1cqEITgOWA8trP0uSxohLdRptEY8CVgCbA/9O5n+2fynmUYSmevMzWdFB\nhZKkAeBSnVQ4kiI0XQKcXnEtkqQhZ3DS6Ip4CnBY7ehgMh/q5HK1ztLiupcW222SpPHiUp1GUzEQ\nfgGwF/AZMt/YvUsXg+GGJkkaHWVzi8FJoynipcDXgT8D25F5a8UVSZIGmDNOGl8R6wAfqx0dZWiS\nJHWLwUmj6AhgS+BycMsASVL3uFSn0RLxZOAqYE3gOWT+b8UVSZKGgEt1Gj/FQPjJFKHpTEOTJKnb\n7DhpdETsB3wTuJNiIPyWiiuSJA0JO04aLxFrU3SbAN5raJIk9YLBSaPincBWwBXAqdWWIkkaVS7V\nafhFbE3xDLk1geeS+ZOKK5IkDRmX6jROPkYRmj5vaJIk9ZIdJw23iL2B84C/UAyE/6HiiiRJQ8iO\nk0ZGBPMmng/X8MZawMdrR+8zNEmSes3gpIEWwWkU80vLaz/XewewNfBL4JR+1yZJGj8u1Wlg1bpM\nyxtenp/JCiK2AlYAawELyfxRn8uTJI0Ql+o06j5GEZq+aGiSJPWLwUkDK5MVwOK6lxbXuk0vAl4C\n/JViuU6SpL5wqU4Db2IwvBaa1qR4iO+TgcPIPKHS4iRJI6FsblmjH8VInah1niYcRhGalrPqjjpJ\nkvrCjpOGR8SWFAPhawN/T+YPK65IkjQiHA7XKDqRIjSdbWiSJFXBjpMG2iPzTcTmwHeAvwHbk3lT\npYVJkkaKM04aerUNLxfN5T7+wMZ3bsLNAB8wNEmSqtL2Ul1EbBARX42IFRGxPCJ272ZhGm+1TtMi\ngLdzEptw8/r3suYNFPs3SZJUiU5mnE4GLsjMecDTYNKdT1JXbMZKjuIYAL7DP3yQzPsrLkmSNMba\nmnGKiPWBSzNz62nOccZJHYngtC/zikWv4Kv8L8+64dn5v9tUXZMkaTSVzS3tBqenU+zovBzYCbgY\nOCQz7261AGlKES8ELnyYuGcWuR2ZK6suSZI0mno9HL4GsDNwcGYujYiPAUcA720o4ui6wyWZuaTN\n79O4iZgLnAIwi/yAoUmS1E0RsRBY2PLn2uw4bQz8LDOfVDt+DnBEZu5Td44dJ7Uv4nDgOOBaYEdn\nmyRJvdTTDTAz82ZgZURsW3vphcAv27mWtJqIzVjVvXyLoUmSNCg62cfpLcAXolhS+RXwhu6UJHE8\n8CjgHDK/W3UxkiRNcOdwDZaI5wM/AO6h2CH8xoorkiSNAZ9Vp+ETMYfaQDjwQUOTJGnQGJw0SN4K\nzAeup1iukyRpoLhUp8EQsSlwDbAu8CIyv11xRZKkMeJSnYbN8RSh6RuGJknSoLLjpOoVm5D9ELgX\nmEfmbyqtR5I0duw4aThMHgg/1tAkSRpkBid1XQTzIphX8vSDgR0o9gL7aO+qkiSpcwYndVUEp1E8\n/Hl57efpTt4EeH/t6BAy7+1xeZIkdcQZJ3VNrcu0vOHl+ZmsmOIDnwNeA5xL5n49Lk+SpCk546TB\nFvF3FKHpPuBtFVfTthaXJSVJQ87gpK6pdZYW1720uGm3KWIN4JO1ow+TeUMfyuu6lpYlJUkjwaU6\ndd1EB2aaJbq3AicDvwZ2IPOe/lXXHS0vS0qSBlrZ3LJGP4rReJk2PERsDBxTO3rbMIYmSdL4cqlO\n/XYcsB5wPnBuxbW0rfSypCRppLhUp/6JeDbwPxQD4TuQ+avJb8+wxDeAhrFmSdLqvKtOg2XyQPhH\nmoSmng5a9+rut0xWGJokaXwYnNQvBwI7Ab8FPlz/Ri3QLKp7aVE3Q453v0mSusXgpN6LeALwH7Wj\nt5F5d/8N0O8SAAAREklEQVS+urehTJI0XgxO6ocPA+sD3wa+2fimg9aSpGHhcLh6K2IP4KfA/cBT\nybxu6lN7M2hdW56b6DotzuTAbl5fkjT8yuYWg5N6J2I28AtgZ+BYMt9dXSne/SZJmprBSdWL+Dfg\nVGAlMI/Mv1VckSRJTRmcVK2IxwPXAhsALyfzaxVXNC07UpI03tzHSVX7EEVo+i5wTuObvdpXqR1u\nVyBJKsuOk7ovYjfg58ADFAPh105+e3CGtX1YryQJ7DipKsVA+MQO4Sc0CU3uqyRJGloGJ3XbvwK7\nADexatPLgeUeUpKkVrhUp+6JeCzFQPiGwCvJ/Erz0wZnqW6Cw+GSNN68q079F7EYeDPwfWBPpvmX\ny6AiSRokBif1V8SuFJtdPgQ8jUwDkSRpaDgcrra0tU1AxCyKgfAATjI0SZJGlcFJj+hgP6M3As8E\nfg8c04vaJEkaBC7VCehgP6OIDSkGwh8LvJrML/WmQkmSeselOvXLBylC0w+BsyuuRZKknjI4CWhz\nP6OIXSi2FXgQOHi6u+gkSRoFLtVpktLbBBQD4T8FdqPYIfyw3lcnSVJvuB2BeivijcCngT8A25H5\nl4orkiSpbc44qXciHgMcVzs6zNAkSRoXBie14xjgccCPgLMqrkWSpL5xqU6tiXg6cDGQwNPJvKri\niiRJ6phLdeq+VTuEzwI+YWiSJI0bO04qL+L1wGeAWygGwu+stiBJkrrDjpO6K2ID4CO1o3cYmiRJ\n48jgpLI+ADwe+B/g8xXXIklSJVyq08widgIuoRgI35nMKyquSJKkrnKpTt0REcApFP+ufNLQJEka\nZ3acNL2I1wKfBW6lGAj/c8UVSZLUdXac1LmI9YGP1o4ONzRJksadwUnTORrYiOJhvp+rthRJkqrn\nUp2ai9gRuBQIYBcyL6u4IkmSesalOrVv1UD4bOA/DU2SJBXsOGl1Ef9EsVfTbRQD4Xf0/iuZB5DJ\nil5/lyRJjew4qT0R6wHH146O6FNoOg1YDiyv/SxJ0kCy46TJIk4ADgV+DjybzId7+3XMowhN9ebb\neZIk9ZMdJ7UuYgfgEIodwg/qdWiSJGnYdBScImJ2RFwaEed2qyBVZPJA+GlkXtKPr611lhbXvbTY\nbpMkaVB1tFQXEYcCuwCPzsz9Gt5zqW6YRLwKOAv4E7Atmbf39+sdDpckVafnS3URsRnwYuC/KPb6\n0bCKeDRwQu3oiH6HJigCk6FJkjToOlmqOwl4B+AczPA7CtgU+AVwRsW1SJI0sNZo50MRsQ9wa2Ze\nGhELpznv6LrDJZm5pJ3vUw9FzAPejgPhkqQxUssvC1v+XDszThFxLPBa4EFgLWA94GuZ+bq6c5xx\nGnTFQPiFwAuA08lcVHFFkiRVomxu6Xgfp4h4HnBYZu7bTgGqUMQrgbOB2ykGwv9UcUWlOEguSeq2\nfu/j1JtdNNU7EesCJ9aOjhyi0OQu45Kkyrhz+LiK+DDwTmAZsDuZD1Vc0YzcZVyS1CvuHK6pRWxH\n8ViViYHwSkJTBPMmlt0kSRoGBqdxUwyEfwKYA3yazF9UU0brS27uMi5JqppLdeMm4mXAV4E7KAbC\n/9j/EjpbcnM4XJLUbWVzS1v7OGlIRTyKYuNSgHdXEZq6wcAkSaqKS3Xj5Uhgc+AS4PRmJ/Rj7sgl\nN0nSsHKpbgSUWrqKeApwFTAXeBaZP2tyndOAiU0wF2dyYPernfR9LrlJkgaCd9WNiVJD1qsGwucC\nn5kiNM1jVWgCWNSPzpOhSZI0TAxOQ6yFsPNS4B+APwNH9KM2SZJGkcFp1EWsA3ysdnQUmbc2O825\nI0mSZuaM05CbcS4p4hjgPcBlwAIyH5zhes4dSZLGTt8e8ttpAerclGEn4snALylmm55N5k/7X50k\nSYPPfZzGSNPuUDEQfjJFaDrT0CRJUufsOI2qiP2AbwJ3AtuReUvFFUmSNLDcjmCcRaxN0W0CeK+h\nSZKk7jA4jaZ3AlsBVwCnVluKJEmjw6W6UROxNcWGmGsCzyXzJ927tHfcSZJGk0t1YyiCeXewwacp\nQtPnuxyaZt6hXJKkEWfHaUREcNrenLfoPPblHtZ6YG3u3ZLMP3Tp2vMoQlO9+XaeJEmjwo7TGIlg\n3prcu+hkDgHgSI6dE+QGFZclSdLIMTiNiMP5CNtwA1fyVE7h4K5e28exSJJUcAPMEZDEvfcz5yFg\n9kF8kgeZ0/Vgk8mBEcUWB4YmSdK4csZpFER8A3jJbTzuvCdw2+EGG0mSWuOz6sZFxIuAC4C/UuwQ\n/vuKK5Ikaeg4HD4OItYEPl47OtrQJElSbxmchtthwJMptgr4+AznSpKkDrlUN6witgRWAGsDf0/m\nDyuuSJKkoeVS3eg7iSI0nW1okiSpP+w4DaOIfwC+DfwN2J7MmyquSJKkoWbHaVQVA+GfqB19wNAk\nSVL/GJyGz6HAU4CrgY9VXIskSWPFpbphErEFxUD4OsALyfx+xRVJkjQSXKobTSdQhKavGJokSeo/\nO07DIuKFwIXA3RQD4SsrrkiSpJFhx2mURMwFTqkdHWNokiSpGganKUQwL4J5VddR8zZgO+Ba4MSK\na5EkaWwZnJqI4DSKx5gsr/1cZTGbAe+tHb2FzPurLEeSpHHmjFODWpdpecPL8zNZUUU9RJwNvBI4\nh8yXVVKDJEkjzhmnURDxAorQdA/w9oqrkSRp7BmcGtQ6S4vrXlpcSbepGAif2CH8g2Te2PcaJEnS\nJC7VTWFiMLzCJbrDgI8C1wNPJfO+SuqQJGkMlM0tBqdBFLEpcA2wLvAiMr9dcUWSJI00Z5yG2/EU\noekbhiZJkgaHHadBE7EQ+CFwLzCPzN9UWo8kSWPAjtMwipjDqh3CjzU0SZI0WAxOg+VgYAfgVxSD\n4ZIkaYC4VDcoIjahGAh/NLAPmedXXJEkSWPDpbrh81GK0HSuoUmSpMFkx2kQRDwX+BFwHzCfzBsq\nrkiSpLFix2lYRKzBqoHwDxuaJEkaXAanFkUwb2JX8S45CNgR+DVwXBevK0mSuszg1IIITgOWA8tr\nP3d6wY2BD9SODiHzno6vKUmSesYZp5JqXablDS/P7+hZdhFnAq8Dzidznw7KkyRJHXDGadBFPJsi\nNN0HHFJxNZIkqQSDU0m1ztLiupcWt91tKgbCP1k7+giZv+qwPEmS1Acu1bVoYjC8wyW6g4FPAL+l\n2H7g7u5UJ0mS2lE2t7QdnCJic+CzwBOABE7PzI+3WsDYidiIYofw9YH9yfxGxRVJkjT2yuaWNTr4\njgeAt2fmZRGxLnBxRFyYme13YsbDhylC07eBb1ZciyRJakHbM06ZeXNmXlb7+a/ACmDTbhU2kiL2\nAF4P3A+8lV6tk0qSpJ7oynB4RGwFPAO4qBvXG0kRs1k1EH48mddVWY4kSWpdJ0t1ANSW6b4KHFLr\nPNW/d3Td4ZLMXNLp9w2xRRTh8kbg2IprkSRprEXEQmBhy5/rZLUoIuYA5wH/LzM/1vCew+ETIh4P\nXAtsALyMzHMqrkiSJNXp+QaYERHAp4HljaFJq/kQRWj6LvD1imuRJElt6mQ7gucAPwauoNiOAOBd\nmfnt2vt2nAAidgN+TnEX4lPJvLbiiiRJUoOeb0eQmf+DO49Pb/JA+AmGJkmShpvBp7f+FdgFuAn4\nj4prkSRJHfKRK70S8TiKgfDHAK8k8ysVVyRJkqbQ8+FwzehYitD0fYrtGiRJ0pCz49QLEQsoNgN9\nCHgaPoZGkqSBZsepKhGzKAbCAzjJ0CRJ0ugwOHXfvwALgN8Dx1RciyRJ6iKDUzdFbEix2SXAoWT+\npcpyJElSdxmcuuuDwGOBHwBfrrgWSZLUZQ6Hd0vELsBSioHwnchcXnFFkiSpJIfD+2nyQPjJhiZJ\nkkaTHaduiHgjxQOP/wBs52yTJEnDxY5TvxQD4cfVjg4zNEmSNLoMTp07Bngc8CPgrIprkSRJPeRS\nXScingEsAxJ4OplXVVyRJElqg0t1vbZqIHwW8AlDkyRJo8+OU7siXg98BriFYiD8zmoLkiRJ7bLj\n1EsRGwAfqR0dZmiSJGk8GJza8wHg8cBPgC9UXIskSeoTl+paFbETcAnFQPjOZF5RcUWSJKlDLtX1\nQkSwaiD8k4YmSZLGix2nVkS8DjgTuJViIPzPFVckSZK6wI5Tt0Wsz6qB8MMNTZIkjR+DU3nvBzYC\nfgp8ruJaJElSBVyqKyNiR+BSIIBdyLys4ookSVIXuVTXLasGwmcD/2lokiRpfNlxmknEPwGfB26j\nGAi/o+KKJElSl9lx6oaI9YDja0fvNDRJkjTeDE7Tex+wMfBzim0IJEnSGHOpbioROwCXU4TLXcm8\npOKKJElSj7hU14liIPwUioHw0wxNkiQJ7Dg1F/Fq4IvAn4Btyby94ookSVIP2XHqzEbAfcARhiZJ\nkjTBjtNUIrYCbiTz4YorkSRJPVY2txicJEnS2HOpTpIkqcsMTpIkSSUZnCRJkkoyOEmSJJVkcJIk\nSSrJ4CRJklSSwUmSJKkkg5MkSVJJBidJkqSSDE6SJEklGZwkSZJKMjhJkiSVZHCSJEkqyeAkSZJU\nksFJkiSpJIOTJElSSQYnSZKkkgxOkiRJJRmcJEmSSjI4SZIklWRwkiRJKqnt4BQRe0XE1RFxXUS8\ns5tFqT0RsbDqGsaNv/P+83fef/7O+8/f+eBqKzhFxGzgFGAvYD7w6oiY183C1JaFVRcwhhZWXcAY\nWlh1AWNoYdUFjKGFVReg5trtOD0TuD4zf5OZDwBfAl7SvbIkSZIGT7vB6YnAyrrjm2qvSZIkjazI\nzNY/FPEyYK/MfFPt+DXAbpn5lrpzWr+wJElSRTIzZjpnjTav/Ttg87rjzSm6Ti19uSRJ0jBpd6lu\nGfCUiNgqIuYCBwDf6l5ZkiRJg6etjlNmPhgRBwPfAWYDn87MFV2tTJIkacC0NeMkSZI0jnq6c3hE\nfDQiVkTE5RFxTkSs38vvE0TEKyLilxHxUETsXHU9o8xNYPsrIs6IiFsi4sqqaxkXEbF5RPyw9r8p\nV0XEW6uuadRFxFoRcVFEXBYRyyPiQ1XXNC4iYnZEXBoR5053Xq8fufJdYIfM3Am4FnhXj79PcCWw\nP/DjqgsZZW4CW4nPUPy+1T8PAG/PzB2A3YGD/Pe8tzLzXuD5mfl04GnA8yPiORWXNS4OAZYD0y7F\n9TQ4ZeaFmflw7fAiYLNefp8gM6/OzGurrmMMuAlsn2XmT4A7qq5jnGTmzZl5We3nvwIrgE2rrWr0\nZebdtR/nUswR315hOWMhIjYDXgz8FzDtrgD9fMjvG4EL+vh9Ui+5CazGSkRsBTyD4j+C1UMRMSsi\nLgNuAX6YmcurrmkMnAS8A3h4phPb3cfpERFxIbBxk7eOzMxza+e8G7g/M7/Y6fep3O9cPeddFRob\nEbEu8FXgkFrnST1UW6l5em0u+DsRsTAzl1Rc1siKiH2AWzPz0jIPV+44OGXmnjMU9HqK9tcLOv0u\nFWb6nasvZtwEVhoFETEH+Brw+cz8RtX1jJPMvDMizgd2BZZUXM4oexawX0S8GFgLWC8iPpuZr2t2\ncq/vqtuLovX1ktrAm/rL3dt7x01gNfIiIoBPA8sz82NV1zMOIuJxEbFB7ee1gT2BS6utarRl5pGZ\nuXlmPgl4FfCDqUIT9H7G6RPAusCFtVv8Tu3x9429iNg/IlZS3AFzfkT8v6prGkWZ+SAwsQnscuBs\nN4HtrYg4C/gpsG1ErIyIN1Rd0xh4NvAaiju7Lq398c7G3toE+EFtxuki4NzM/H7FNY2baUcx3ABT\nkiSppH7eVSdJkjTUDE6SJEklGZwkSZJKMjhJkiSVZHCSJEkqyeAkSZJUksFJkiSppP8fI0XHvL5A\nwNwAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x1102900d0>"
]
}
],
"prompt_number": 33
}
],
"metadata": {}
}
]
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment