diff --git a/README.md b/README.md index 65a9c73..49735bd 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # lectures Presentations for our courses +changed buy Luigi diff --git a/data_exercise.txt b/data_exercise.txt new file mode 100644 index 0000000..7a35341 --- /dev/null +++ b/data_exercise.txt @@ -0,0 +1,48 @@ + + + + + +######################### firts snip +colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral','blue'] +shown=st[:len(colors)-1] +others=st[len(colors)-1:] +other_sum=others['core_hours'].sum() +values=shown['core_hours'].values.tolist()+[other_sum] +labels=shown.index.tolist()+['others'] +print labels +print values + +######################### display plain snip +plt.rcParams['figure.figsize'] = 5, 5 + +plt.pie(values, labels=labels, colors=colors, + autopct='%1.1f%%', shadow=True, startangle=90) +# Set aspect ratio to be equal so that pie is drawn as a circle. +plt.axis('equal') + +plt.show() + + +######################### display explode snip + + +plt.rcParams['figure.figsize'] = 5, 5 + +explode = [0] * (len(colors)-1) +[0.1] +plt.pie(values, explode=explode, labels=labels, colors=colors, + autopct='%1.1f%%', shadow=True, startangle=90) +# Set aspect ratio to be equal so that pie is drawn as a circle. +plt.axis('equal') + +plt.show() + + + + + + + + + + diff --git a/pydata/MatPlotLib_hystogram.ipynb b/pydata/MatPlotLib_hystogram.ipynb new file mode 100644 index 0000000..63057fc --- /dev/null +++ b/pydata/MatPlotLib_hystogram.ipynb @@ -0,0 +1,231 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# This line configures matplotlib to show figures embedded in the notebook, \n", + "# instead of opening a new window for each figure. More about that later. \n", + "# If you are using an old version of IPython, try using '%pylab inline' instead.\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from pylab import *\n", + "import matplotlib.pyplot as plt\n", + "from collections import OrderedDict\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# skip site cert check\n", + "#http://stackoverflow.com/questions/27835619/ssl-certificate-verify-failed-error\n", + "import ssl\n", + "ssl._create_default_https_context = ssl._create_unverified_context\n", + "#ssl.create_default_context(capath=False)\n", + "Cluster = pd.read_csv(\n", + " \"https://hpc-forge.cineca.it/files/Visualization_School/public/20150315.jobs\",\n", + " sep=';',\n", + " header=None,\n", + " names=['date',\n", + " 'jobid',\n", + " 'wcl',\n", + " 'cpu',\n", + " 'aff',\n", + " 'mem',\n", + " 'queue',\n", + " 'elapsed',\n", + " 'waited',\n", + " 'status',\n", + " 'account',\n", + " 'username','unknown'],\n", + " parse_dates=['date'])\n", + "\n", + "#print Cluster\n", + "\n", + "xyvalues = OrderedDict([\n", + " ('all',Cluster[['elapsed','waited']].values)\n", + " ])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sel = Cluster[['elapsed','waited', \"queue\"]]\n", + "#from bokeh.sampledata.iris import flowers\n", + "#print flowers\n", + "#print sel\n", + "\n", + "#setup = (flowers, 'species',\"petal_length\",\"petal_width\")\n", + "setup = (sel, 'queue',\"elapsed\",\"waited\")\n", + "\n", + "grouped=setup[0].groupby(setup[1])\n", + "#n_group = len(grouPed)\n", + "pdict = OrderedDict()\n", + "hist_data = []\n", + " \n", + "\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "\n", + "count = 0;\n", + "c = 0;\n", + "for q in grouped.groups:\n", + " c = c + 1\n", + " count = count + 100\n", + " group = grouped.get_group(q)[[setup[2],setup[3]]] \n", + "\n", + " #xx=grouped.get_group(q)[[setup[2]]].values\n", + " #yy=grouped.get_group(q)[[setup[3]]].values\n", + " xx=group[[setup[2]]].values\n", + " yy=group[[setup[3]]].values\n", + "\n", + " #print plt.cm.RdYlBu(count)\n", + " ax.scatter(x=xx, y=yy, color=plt.cm.RdYlBu(count))\n", + " #pdict[q]=group.values\n", + " #pdict[q]=group[[setup[2]]].values\n", + " #print pdict[q]\n", + " #print pdict[q]\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from collections import Counter\n", + "sel = Cluster[['elapsed','waited', \"queue\"]]\n", + "#from bokeh.sampledata.iris import flowers\n", + "#print flowers\n", + "#print sel\n", + "\n", + "#setup = (flowers, 'species',\"petal_length\",\"petal_width\")\n", + "setup = (sel, 'queue',\"elapsed\",\"waited\")\n", + "\n", + "grouped=setup[0].groupby(setup[1])\n", + "#n_group = len(grouPed)\n", + "pdict = OrderedDict()\n", + "hist_data = []\n", + "\n", + "count = 0;\n", + "c = 0;\n", + "for q in grouped.groups:\n", + " c = c + 1\n", + " count = count + 100\n", + " group = grouped.get_group(q)[[setup[2],setup[3]]] \n", + "\n", + " #xx=grouped.get_group(q)[[setup[2]]].values\n", + " #yy=grouped.get_group(q)[[setup[3]]].values\n", + " xx=group[[setup[2]]].values\n", + " yy=group[[setup[3]]].values\n", + "\n", + " #print plt.cm.RdYlBu(count)\n", + " #ax.scatter(x=xx, y=yy, color=plt.cm.RdYlBu(count))\n", + " #pdict[q]=group.values\n", + " #pdict[q]=group[[setup[2]]].values\n", + " #print pdict[q]\n", + " #print pdict[q]\n", + " #hist_data.append(len(grouped.get_group(q)))\n", + " hist_data.append(q)\n", + " \n", + "hist_queue = Cluster['queue'].tolist()\n", + "#print hist_queue\n", + "\n", + "labels, values = zip(*Counter(hist_queue).items())\n", + "#print labels\n", + "#print values\n", + "\n", + "indexes = np.arange(len(labels))\n", + "#print indexes\n", + "width = 1\n", + "\n", + "plt.bar(indexes, values, width)\n", + "plt.xticks(indexes + width * 0.5, labels)\n", + "plt.show()\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/pydata/images/pie.png b/pydata/images/pie.png new file mode 100644 index 0000000..20fce10 Binary files /dev/null and b/pydata/images/pie.png differ diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb new file mode 100644 index 0000000..55da6e8 --- /dev/null +++ b/pydata/pico_jobs.ipynb @@ -0,0 +1,1717 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"http://matplotlib.org/index.html\",width=1000,height=700)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"http://stanford.edu/~mwaskom/software/seaborn/\",width=1000,height=700)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import IFrame\n", + "IFrame(\"http://bokeh.pydata.org/en/latest/\",width=1000,height=700)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Some demos\n", + "\n", + "http://nbviewer.ipython.org/gist/knightofni/801d8773d0bb0a85888b\n", + "http://matplotlib.org/examples/pie_and_polar_charts/pie_demo_features.html\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Real example\n", + "original data: jobs logs from cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first 3 of 151\n", + "20150112.jobs.bz2\n", + "20150113.jobs.bz2\n", + "20150114.jobs.bz2\n" + ] + } + ], + "source": [ + "import socket\n", + "import os\n", + "import sys\n", + "import bz2\n", + "\n", + "if sys.version_info[0] < 3:\n", + " from StringIO import StringIO\n", + "else:\n", + " from io import StringIO\n", + "\n", + "#print os.path.dirname(sys.argv[0])\n", + "\n", + "def printlogs(files=[],limit=3):\n", + " print \"first \"+str(limit)+\" of \" + str(len(files)) \n", + " for fname in files[:limit]:\n", + " print fname \n", + "\n", + "folder='/statistics/pico' \n", + "if socket.gethostname().find('.')>=0:\n", + " my_hostname=socket.gethostname()\n", + "else:\n", + " my_hostname=socket.gethostbyaddr(socket.gethostname())[0]\n", + "if len(my_hostname.split('.')) > 1 :\n", + " if my_hostname.split('.')[1] == 'pico' :\n", + " folder=\"/cineca/usr/acct/statistics\"\n", + "jobs=os.listdir(folder)\n", + "jobs.sort()\n", + "printlogs(jobs)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "now we filter file jobs, decompress into string and look at the first line" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first 3 of 11\n", + "20150601.jobs.bz2\n", + "20150602.jobs.bz2\n", + "20150603.jobs.bz2\n", + "20150601;47552;43200;20;1;129024;rcm_visual;2953;0;15;interactive;lavaldi0;0;0\n", + "20150602;47609[1];86400;1;1;4096;epigen;86486;1;15;EPIGE_prod;a07epg01;0;0\n", + "20150603;48574;21600;20;1;122880;parallel;21647;56147;15;IscrC_RASIB;mfratell;0;0\n" + ] + } + ], + "source": [ + "\n", + "\n", + "startstring='201506'\n", + "selected_jobs = [j for j in jobs if j.endswith('.bz2') and \n", + " j.startswith(startstring)]\n", + "printlogs(selected_jobs)\n", + "\n", + "for f in selected_jobs[:3]:\n", + " bzf=bz2.BZ2File(os.path.join(folder,f))\n", + " content=bzf.read()\n", + " bzf.close()\n", + " lines=content.split('\\n')\n", + " print lines[0]\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now merge all lines into the same dataframe, with predefined fields" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of records: 6546\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "fields=['date',\n", + " 'jobid',\n", + " 'wcl',\n", + " 'cpu',\n", + " 'aff',\n", + " 'mem',\n", + " 'queue',\n", + " 'elapsed',\n", + " 'waited',\n", + " 'status',\n", + " 'account',\n", + " 'username',\n", + " 'dummy1',\n", + " 'dummy2']\n", + "\n", + "Cluster=pd.DataFrame()\n", + "for f in selected_jobs:\n", + " bzf=bz2.BZ2File(os.path.join(folder,f))\n", + " content=bzf.read()\n", + " bzf.close()\n", + " DATA=StringIO(content)\n", + " #print DATA\n", + " df_day=pd.read_csv(\n", + " DATA,\n", + " sep=';',\n", + " header=None,\n", + " names=fields,\n", + " parse_dates=['date']\n", + " )\n", + " Cluster=pd.concat([Cluster,df_day])\n", + "print \"number of records: \"+str(len(Cluster))\n", + "#Cluster.info()\n", + "#Cluster.head()\n", + "#Cluster.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compute another new column representing core hours" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datejobidwclcpuaffmemqueueelapsedwaitedstatusaccountusernamedummy1dummy2core_hours
02015-06-014755243200201129024rcm_visual2953015interactivelavaldi00016.405556
12015-06-0147579[1]828004123552epigen350500EPIGE_proda07epg01003.894444
................................................
5002015-06-1153214[1]1260005131744epigen_dbio89910EPIGE_proda07epg01001.248611
5012015-06-1153214[2]1260005131744epigen_dbio80010EPIGE_proda07epg01001.111111
\n", + "

6546 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " date jobid wcl cpu aff mem queue elapsed \\\n", + "0 2015-06-01 47552 43200 20 1 129024 rcm_visual 2953 \n", + "1 2015-06-01 47579[1] 82800 4 1 23552 epigen 3505 \n", + ".. ... ... ... ... ... ... ... ... \n", + "500 2015-06-11 53214[1] 126000 5 1 31744 epigen_dbio 899 \n", + "501 2015-06-11 53214[2] 126000 5 1 31744 epigen_dbio 800 \n", + "\n", + " waited status account username dummy1 dummy2 core_hours \n", + "0 0 15 interactive lavaldi0 0 0 16.405556 \n", + "1 0 0 EPIGE_prod a07epg01 0 0 3.894444 \n", + ".. ... ... ... ... ... ... ... \n", + "500 1 0 EPIGE_prod a07epg01 0 0 1.248611 \n", + "501 1 0 EPIGE_prod a07epg01 0 0 1.111111 \n", + "\n", + "[6546 rows x 15 columns]" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.set_option('max_rows', 5)\n", + "Cluster['core_hours'] = Cluster['cpu'] * Cluster['elapsed'] / 3600\n", + "Cluster.sort_index(by='jobid')\n", + "Cluster\n", + "\n", + "#Cluster.tail()" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "count unique values for label fields" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "field jobid type object 6546 1 1.0 1 \n", + "field queue type object 31 4 211.161290323 4310 \n", + "field account type object 22 1 297.545454545 1883 \n", + "field username type object 59 1 110.949152542 1860 \n" + ] + } + ], + "source": [ + "for f in Cluster.columns.values.tolist(): \n", + " s= \"field \"+f+\" type \"+ str(Cluster[f].dtype)\n", + " if str(Cluster[f].dtype) == 'object' :\n", + " v=Cluster[f].value_counts()\n", + " print s+\" \"+str(len(v))+\" \"+\\\n", + " str(v.min())+\" \"+\\\n", + " str(v.mean())+\" \"+\\\n", + " str(v.max())+\" \"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'num_jobs': 0, 'tot_core_hours': 1}" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=dict()\n", + "d['num_jobs']=[10,11]\n", + "d['tot_core_hours']=[1000,22]\n", + "mydf=pd.DataFrame.from_dict(d)\n", + "mydf\n", + "\n", + "a=dict()\n", + "count=0\n", + "for f in mydf.columns :\n", + " a[f]=count\n", + " count = count + 1\n", + "a\n" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "parallel\n", + "rcm_visual\n", + "epigen\n", + "meteo\n", + "meteoser\n", + "R47051\n" + ] + } + ], + "source": [ + "#group_fields=['queue','account','username']\n", + "group_fields=['queue']\n", + "stats=dict()\n", + "for f in group_fields :\n", + " g=Cluster.groupby(f)\n", + " stats[f]=pd.concat(\n", + " [g['jobid'].count(),g['core_hours'].sum(), g['elapsed'].mean(), g['waited'].mean(), g['cpu'].mean(), g['mem'].mean()],\n", + " names=['num_jobs','tot_core_hours','mean_elapsed','mean_waited','mean_cpu','mean_mem'],\n", + " axis=1)\n", + " stats[f]=stats[f].sort_index(by='core_hours',ascending=False)\n", + "#stats['queue'].tail()\n", + "#print stats['queue'][-3:]\n", + "for queue in stats['queue'][:6].index :\n", + " print queue\n" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
jobidcore_hourselapsedwaitedcpumem
queue
parallel431036389.5061111199.6385159939.23016244.854292160041.221346
rcm_visual29517492.42777810673.3457630.28135620.000000129024.000000
.....................
epigen_dbio23979.922778226.20920511.9539753.74058620929.874477
serial8526.938889666.011765398.8941181.7411766800.564706
\n", + "

31 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " jobid core_hours elapsed waited cpu \\\n", + "queue \n", + "parallel 4310 36389.506111 1199.638515 9939.230162 44.854292 \n", + "rcm_visual 295 17492.427778 10673.345763 0.281356 20.000000 \n", + "... ... ... ... ... ... \n", + "epigen_dbio 239 79.922778 226.209205 11.953975 3.740586 \n", + "serial 85 26.938889 666.011765 398.894118 1.741176 \n", + "\n", + " mem \n", + "queue \n", + "parallel 160041.221346 \n", + "rcm_visual 129024.000000 \n", + "... ... \n", + "epigen_dbio 20929.874477 \n", + "serial 6800.564706 \n", + "\n", + "[31 rows x 6 columns]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_stats(Data,class_field,sort_field,ascending=False) :\n", + " g=Cluster.groupby(class_field)\n", + " stats=pd.concat(\n", + " [g['jobid'].count(),g['core_hours'].sum(), g['elapsed'].mean(), g['waited'].mean(), g['cpu'].mean(), g['mem'].mean()],\n", + " axis=1)\n", + " stats=stats.sort_index(by=sort_field,ascending=ascending)\n", + " return stats\n", + "#for queue in get_stats(Cluster,'queue','core_hours')[:6].index :\n", + "# print queue\n", + "st=get_stats(Cluster,'queue','core_hours')\n", + "st" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Drawing bars with matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# This line configures matplotlib to show figures embedded in the notebook, \n", + "# instead of opening a new window for each figure. More about that later. \n", + "# If you are using an old version of IPython, try using '%pylab inline' instead.\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "Here we import matplotlib " + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from pylab import *\n", + "import matplotlib.gridspec\n", + "import matplotlib.pyplot as plt\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n9T1N3M9Pcn2r97kkTxxZN9XzPeVx3tYvmNd3Wz9Z3M9N8qV05+azkuw8su5+cSfZP8ln053Pv5rk\n5JHtPzZy7NyaZHUPYc/1ee2Ydryubv+X524t7pF9Lvjnu5X/aZKvp3tPOqmVTXo+T/KQdv/6tv07\nR/az4D63tPXbEvfPJvl8kh9lku+USXZuj3XJSNkeSa5K8o0kVybZfb5indCWOYu7lW/r+9jKtv/x\n19NR8xTqFrbz9T2Xn1Pn9zivKm893YCdp1n3SuDP2/LbgN/byr62us1CvwH7AB+f432ufKD/X3ak\nG/Bb48f1jnQbMi5gp3nY5/dHls+a+BoCTgf+eqqYgU8AL2/Lzwcua8uHA9eObHcrsMck9X8WeDLw\nWeDpPf4vp4x7dN2EOgcBj5sYC7AcuHiS7R8P/AuwS7t/AfDKtvwr488n8C7gXQ+0uNu6nYG/A/4W\neNFI+dnAq9vyEuCRI+v2B66Y6phYQHFfCBzXls8Afrst/xnwR235Z4CrR+pMdZw/B7gKeFC7/5ih\n425l2/L63h24Ediv3X/0yHa/CBwMrJlQfwz41bb8POCzD8C4t+e8tuBe31PF3WL4mbb8OuCjM3i+\np3ztLrTX92Rx012M/zfgSe3+29l8vpo0bmAv4KC2/HDg68DPTdKW/wm8dei42fbz2sNGtjkQuGUm\ncT8Qnu9W9irgrJH7j2l/pzufP7T9XQJcCzyr3V9wn1u2I+7HAD8P/I+J+2nrf7ft6+KRsvcAb27L\nf8DCPq9NFff2vI+9Dfjdvp7nmcQ9zet7Lj+nzutxbo+obZRu8vObkvxVy65+PMmuSf443RW/NUn+\ncmT7sSSnJfkC8IYkL0hybZIvt4zyT2/l8Z6Y5PIkX0x3pe5neogxSeb9FwWr6ptV9ZK53u0c7+8n\nkry8XRlZneR/tysFP0jyvpZRvzrJo9u2ZyV5UVt+frqrol9Md0X1klb+sJZ5v64dD0e38t9qWe/L\n2xWHXq6aT2XkmP9ou6rw10mOTPL/tfYdOlks6a6w/QlwfPufvWSamB/S9n9DK1++I8eV5Ckjx9JX\n0q4+T3KM7dTKf5Dkfya5HnjG5BHNmc8Do1fDDwF+Grhyso2TPAJ4LjB+NeZougQEVXUdsHuSPUer\nTNxHVd1UVd+Yk9Zvvy3inkpVXV9V/zrF6snOm98D7gUemmQJ8FC6X3Wlqq6qqvvadtcB+21zq2dv\n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\n467AmEyNuwJjMjXuCsxmxbgrMEIHAbdW1e0AST4MHA58eZyVksYhSY1x2yeNa9uSJEmSpKVl2baI\nAnYH7uiNr29l0gSqMb1OGuO2JUmSJElLTaqW5xe2JK8EDq2qN7Tx1wIHV9Wbe/Msz+AlSZIkSZLG\nqKoyW/lyfjRvA7Bnb3xPulZRD5rrnyJJkiRJkqTFt5wfzbsaWJlk7ySPAo4CLhhznSRJkiRJkibW\nsm0RVVX3J3kT8BngEcD7qsqOyiVJkiRJksZk2fYRJUmSJEmSpKVlOT+at01J8gtJ/qwNn5zkNzYz\n/2bn0fgkOSXJS8ddj3FL8sNJfmLc9Vhsyy2uJP+Z5Jok1yX5eJLHz5j+hCTrp69Rrezv2jLXJNmQ\n5BOtPElOT3JLki8l2a+3zO1tG9ckWdsrf3WSG1s99h8i5rbdOePuTbsmySd75W9KcmuSB5Ls1Cuf\nSvKt3jK/15t2Yovv+iTnJnl0K/+TJF9u/6ePJ3nithZ3b/qBSe5P8ope2Y5JPtpiXJfk+TOW+Y25\n1jcKWxn305Jc2Y7nDyd5ZCv/gSSfaPvuyiTP6S0z63Hepr25/T9uSHLquONu0xd8frdpU638hiRr\neuXvT7IxyfUz1n9QkrVtmauSHDjCcPvbHfd1bcmd3/PE/ZNJrm3LfS7JM3rT5trfcx7nbfqSOb/b\n9NnifkmSL6a7Np+V5BG9ad8Xd5I9k1ye7np+Q5Lje/N/uHfs3JbkmgHCXuzr2uHteL2m/V9esrm4\ne+tc8vu7lf9hkq+ke096cyub9Xqe5DFt/No2/x/11rPkPre06VsS97OSfCHJ9zLLd8okj2jb+lSv\nbKckq5PcnOSSJDuOKtYZdVm0uFv5lr6PndzWP30+HTqiUB9iK8/vxfycOtrjvKp8DfQCHjHPtGOA\nP2vDJwG/sZl1bXaepf4CdgP+ZpHXefK2/n9ZTi/gF6aP6+X0GmdcwHYjWOe9veGzZp5DwGnAh+aK\nGfgo8No2/JPARW34YOCK3ny3ATvNsvyzgH2Ay4H9B/xfzhl3f9qMZfYFnjozFmAKuGCW+fcG/gl4\ndBv/CHBMG37Z9P4E3gW8a1uLu017BPBZ4G+BV/bKzwZe34ZXAE/sTdsTuHiuY2IJxX0+cGQbPhP4\nlTb8J8Dvt+EfAi7tLTPXcf5iYDXwyDb+lHHH3cq25PzeEbgR2KONP7k3348C+wHXz1h+DfDyNvwT\n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\nFzO4eSxm3O8FTqiqasfI9L5fAewPvKmqrkryXuCEdH1svI3usaVpQ91l3JK4rwPunWdd7wJOa+u7\nHriG7jyFuY/zFcAPVNXz0/WTdD7w9MUMcA6LeX4/km6/vpQuQf6FJFdU1S3zbP99wPFV9Ykkrwbe\nz0P3/6gsievaEjq/Z427fZH7IN0Ns6va+9h7gDcw//7+vriBL7L0zu9Z427XrKOB96S7QXQJm750\nz3ucp+un5aPAW3rJymk/Cwy1r2Fxr2tU1SeBTyb5Ubrj4sEnMWbGne7mwjaxv5tHA99t32N+hu5a\n9F+Y53peVf8J7Juule9nkkxV1ZrRhjavxYx7VukaU9xVVddknicU2jk0sidRZljMuLfmfexMNrWu\negdd4ubYhx/WZi2Jz6mjYouordM/6dLG/xx4RWv58Jd0iYpp/aaufwac3ub7Zbovm3PZDvhma3Ux\n/XrOPPM/XP9cVWvp3lDeX1XfA6iqe3rzXND+3gDcUFUbq+o/6BJqe8220uqa8/5gkl2T/DBdTDOT\nKp8H3taSeXtPb3sez03XoeZ1dK1GVm1BnFvr7N5+eHZVnTJj+vSx0DdzfOZF8hW9de5dVTe18n/v\nzfOfdM2Bx6lfnweA/+gNTye0Z4tltjeouWKeq1XgKI0lrqo6D/hp4LvARUle3Kb1j7FnVdX0m973\nqmqU/4/vVtcK66nA9+hauED3GOCbktxG15LhdWktJAHSPYp6IHBhb10b6PqLmLYHm5r4frX9/Trw\nCeCgkUSzcHPFTVV9rf29ja6Pm/1mW0Fv/nurNeGvqk8Dj0zyJLr+Fz5fVXdX1f10yeoXTC+X5Bfo\nmr+/5vvXOjKLFjdd8vTD7Rh5JXBGukdT76C7S35Vm++jdB/8nkH3YedLbZk9gC9mM4+pL5Itjftu\nukewpj8r9Y/le6vq9e1cfR1dXxv/1KbNdZyvp92saP+XB9oxMmqLeX7fAVxSVd+tqruBv6NrwTuf\ng6pqurPzjzLceT/269oSO7/nivvJwKN65+r5bLpGzbm/54j76Sy983vO/V1VV1TVf6muNfPn6Po+\ngnniTvd4/seAv25Jmwelu5H6Mzz0BvSoLdp1ra8lU1dMX6PmiHspXs/nO78fvAbTfQl/Hsx/PZ9W\n3aPlF9K9p4/TosU9jxfQ3YS9je4G+kuSnNOmbUyyC0CSXeluyg9hMePe4vexqrqrGrrHFcf9PjbY\n59RRMhG1dfbKpl//+Tng79vw3e1uwcx+j/pfRJ9A1+wNug6PZxMg1bWIuS3Jq+DBvps2d/F4OKYT\nZsXcdzSmv7g/wPd/iZ8vWfI3dM2ejwQ+PHPiHF/M7+ehx+j2bEoAnAUc1xJ6pzB/Qm8xXAa8qt35\nm/7ViKe2+k3v75+j+yAzreg+1Dy9zQtwFJti+Ay9Zs/Z9Cs8s/3vx/1c8ubMFcu9wA4LmO9ztA/q\nSfahS2p+hfEbSVxJnl5Vt1XVn9G1LHwusx9jsyZ3R6WqvksXxx8mSVW9tqqeWlVPo3tc8Zyqeltv\nkVcBn2rJ6GkXAK8DaNfJe6pqY5LHJtmhlT+OrhXZbC3eBj/WZ8ad7tfepn8x5Ml0LdtunGXRfquC\nnafvxqVr2p/2AecrwPPT9SUY4MeBdW2+Q+mavh++gOT7oluMuKvq6VX1tHaMfBR4Y1VdUF3T/Tva\ncQ9d3DdW1Q1VtXNvmfV0HWAO9WF2oXGvax84L2fTNf4YWp9BSZ6Y9vhwuseS/le1FgLzHOefpHt0\nd/p68Kh2jAxikc7v/wm8KN3jKo+l67h7c4+q3Jrkx9rwS4BB+1UZ13VtqZ3f88T9r3R9g6xsi76M\nTft01v09V9xL8fyeb3/33m8fTddVxnRrg7niDl0Lv3VV9d5ZNv/jwJenk3RDWqTr2jN672P7t/Xe\nPVfcVXX9trS/6V2DgR+jfc6c53r+5LSnQtJ1AfIyutZSM439c8vWxN3zkPpX1duqas+2rqOBz7YE\nHXTXwmPa8IPHzlAWKe4tfh9rSbdpP8Pon9h4iHF9Tp1rXYvFRNTW+Qrwq+kemXoiXXO9v6RrJXQx\n3/+8eL8lw8l0Td6upuvYtXrzzDb8GuDYdM8n30DXSdxs611Mq4FfbBddkvzAIqzzI3TNlV9Fl5R6\niDm+mN9J15Jqp3ay/VRvkccDd6a7Q/NaNv0vRvJmUFVfBn4PuCTJl+gSD7vQJe8OSteX1RS9TvHa\nct+jazZ6cdvn324v6Jp2PjJdX1w30CXU4KH7n17ZOM1Xn2LuWC4HVqV16j3PfGcA26Vr4fZhul9r\n+L7OE0dgXHG9Ol0H99cAz6F745x5jF3CpsdTR73/H1x/dS0Yb6VLGs85X3MUMzpkraqLgH9Kcivw\nF3THP3SxfK5dy64E/raqLgFI8jPp+iZ5PnBhkk8//JAWZLa4j6LruPSqVtfP0nUwfVOr6/GtrrsD\n1yWZfnzn1cD1bZn30n14m17vOcDVwHQfGtPL/BndtWx1O5ZG0gfgLBYz7vm8GfhQO56fB7xzlnmG\nvLZtcdx0vwr060luAX6A7ssYbZnr0z2O9HLgLa18Z+Y4zukeC3h6e784j5bYGMBint830X3OuY4u\nvr+s1mdKkvPoWjfvk+SOJL/YFvsl4I/b/+S/sunx9FEb63WNpXV+zxl3dX0FvR44v8XxGroE2nz7\ne764Z63LALZmf/9W+yz/Jbpfk1rTlp8r7hfSfeZ8cTb9BPpP9Nb3fcfOABbzuvZKuuvaNXS/QnZ0\nK58t7tl+vn6p7+93Aa9sn8n+EPh/W/kqZr+e70r3yNP0cf6pqroMltznlq2KO8kuLYa3Ar+X5F/S\nNajY3LpeluRmuiTPu2aZfxQWLe6tfB87tX3G/xJdUuutixncPMb6OXXUx3lqpE97LD/pOun7VHWd\nki8bLa4LqmthRJLfofuQ/B/AhVX1e0kup/vZyH9Id3fzN6pq+tfBHpw2zzauA75eVS+duc0kJ9C9\nyd1H9ws7P1dV9yR5M90bwgbgH4Hbq+oPkvwK3d2rr9NdRB5fVa9P15n5vdV1DD9ySe6tqh02M8/j\nqv0SSZI/B26uqtOGqJ8kSZIkSUuJiagtNDNho8mW5NtV9YTNzPNrdM1XH0XXUdwbxtFMX5IkSZKk\ncTMRJUmSJEmSpEGs2Pws0sKk63n/0lkmvbSqvjF0fSRJkiRJ0tJiiyhJkiRJkiQNwl/NkyRJkiRJ\n0iBMREmSJEmSJGkQJqIkSZIkSZI0CBNRkiRJkiRJGoSJKEmSJEmSJA3CRJQkSZIkSZIGYSJKkiRJ\nkiRJgzARJUmSJEmSpEGYiJIkSZIkSdIgTERJkiRJkiRpECaiJEmSJEmSNAgTUZIkSZIkSRqEiShJ\nkiRJkiQNwkSUJEmSJEmSBmEiSpIkSZIkSYMwESVJkiRJkqRBjDwRleT2JNcluSbJ2la2U5LVSW5O\nckmSHXvzn5jkliQ3JTmkV35AkuvbtNN65Y9O8pFWfkWSp/amHdO2cXOS1406VkmSJEmSJM1tiBZR\nBUxV1X5VdVArOwFYXVX7AJe1cZKsAo4CVgGHAmckSVvmTODYqloJrExyaCs/Fri7lb8HOLWtayfg\n7cBB7XVSP+ElSZIkSZKkYQ31aF5mjB8GnN2GzwaOaMOHA+dV1X1VdTtwK3Bwkl2BHapqbZvvnN4y\n/XV9DHhpG345cElV3VNV9wCr6ZJbkiRJkiRJGoOhWkRdmuTqJG9oZTtX1cY2vBHYuQ3vBqzvLbse\n2H2W8g2tnPb3DoCquh/4VpInzbMuSZIkSZIkjcGKAbbxwqr6WpKnAKuT3NSfWFWVpAaohyRJkiRJ\nksZo5Imoqvpa+/v1JJ+g669pY5JdqurO9tjdXW32DcCevcX3oGvJtKENzyyfXmYv4KtJVgBPrKq7\nk2wApnrL7Al8tl83E2CSJEmSJEmLr6pmdtMEjDgRleSxwCOq6t4kjwMOAU4BLgCOoetY/Bjgk22R\nC4Bzk7yb7jG6lcDa1mrq20kOBtYCPw+c3lvmGOAK4FV0nZ8DXAK8s3VQHuBlwO/MrONc/5hRS3Jy\nVZ08jm2Pk3FPFuMey7YnNsHu9XxYxj2WbU/s+S1J0rZsEj+nzve5ZdR9RO0MfC7JtcCVwN9W1SXA\nu4CXJbkZeEkbp6rWAecD64BPA8dV1XTljwP+CrgFuLWqLm7l7wOelOQW4Ndov8BXVd8A3gFcRZe8\nOqV1Wi5Jy1yN6XXSGLctTYpJPb+N27iN27iN27i35bjVN9IWUVV1G7DvLOXfAH58jmXeCbxzlvIv\nAs+dpfzfgSPnWNcHgA9sWa0lSZIkSZI0CkP8ap5mt2bcFRiTNeOuwJisGXcFxmTNuCswJmvGXYHx\nmBp3BcZlzbgrMCZrxl2BMVkz7gqMx9S4KzAmU+OuwJhMjbsCYzI17gqMydS4KzAmU+OuwJhMjbsC\nYzI17gqMy5pxV2A22fTk2+RJUuN6VlOSRqF7FnsSr+sZ27P30lAm+fw27kli3JPFuCfL5MY9iZ9T\n58u32CJKkiRJkiRJgzARJUmSJEmSpEGYiJIkSZIkSdIgTERJkiRJkiRpECaiJEmSJEmSNAgTUZIk\nSZIkSRqEiShJkiRJkiQNwkSUJEmSJEmSBmEiSpIkSZIkSYMwESVJkiRJkqRBmIiSJEmSJEnSIFaM\nuwKSJC2GJDXuOkiSJEkz+Tn1oUxESZKWiUl8fw/GPUky7gpIkqSt4ueWPh/NkyRJkiRJ0iBMREmS\nJEmSJGkQJqIkSZIkSZI0CPuIkpa5Se4Yr6rsUEWSJEmSlhATUdJEmMRclDkoSZIkSVpqfDRPkiRJ\nkiRJgzARJUmSJEmSpEGYiJIkSZIkSdIgTERJkiRJkiRpECaiJEmSJEmSNAgTUZIkSZIkSRqEiShJ\nkiRJkiQNwkSUJEmSJEmSBmEiSpIkSZIkSYMYeSIqySOSXJPkU218pySrk9yc5JIkO/bmPTHJUDwn\nOAAAIABJREFULUluSnJIr/yAJNe3aaf1yh+d5COt/IokT+1NO6Zt4+Ykrxt1nJIkSZIkSZrfEC2i\n3gKsA6qNnwCsrqp9gMvaOElWAUcBq4BDgTOSpC1zJnBsVa0EViY5tJUfC9zdyt8DnNrWtRPwduCg\n9jqpn/CSJEmSJEnS8EaaiEqyB/CTwF8B00mlw4Cz2/DZwBFt+HDgvKq6r6puB24FDk6yK7BDVa1t\n853TW6a/ro8BL23DLwcuqap7quoeYDVdckuSJEmSJEljMuoWUe8Bfgt4oFe2c1VtbMMbgZ3b8G7A\n+t5864HdZynf0Mppf+8AqKr7gW8ledI865IkSZIkSdKYjCwRleSngLuq6ho2tYZ6iKoqNj2yJ0mS\nJEmSpGVsxQjX/QLgsCQ/CTwGeEKSDwIbk+xSVXe2x+7uavNvAPbsLb8HXUumDW14Zvn0MnsBX02y\nAnhiVd2dZAMw1VtmT+Czs1Uyycm90TVVtWZLA5UkSZIkSZpca9pr89I1ShqtJD8G/GZV/XSSP6br\nYPzUJCcAO1bVCa2z8nPpOhffHbgUeGZVVZIrgeOBtcCFwOlVdXGS44DnVtUbkxwNHFFVR7fOyq8G\n9qdrjfVFYP/WX1S/XlVVs7bWkpaLJDWZDQ/DJJ7fk7y/jXuSGPdkMe7JYtyTxbgni3FPlrm/j42y\nRdRM0//5dwHnJzkWuB04EqCq1iU5n+4X9u4HjqtNWbLjgLOA7YGLquriVv4+4INJbgHuBo5u6/pG\nkncAV7X5TpmZhJIkSZIkSdKwBmkRtVTZIkqTYJJbyEzi+T3J+9u4J4lxTxbjnizGPVmMe7IY92SZ\n+/vYqH81T5IkSZIkSQJMREmSJEmSJGkgJqIkSZIkSZI0CBNRkiRJkiRJGoSJKEmSJEmSJA3CRJQk\nSZIkSZIGYSJKkiRJkiRJgzARJUmSJEmSpEGYiJIkSZIkSdIgTERJkiRJkiRpECaiJEmSJEmSNAgT\nUZIkSZIkSRqEiShJkiRJkiQNwkSUJEmSJEmSBmEiSpIkSZIkSYMwESVJkiRJkqRBmIiSJEmSJEnS\nIExESZIkSZIkaRAmoiRJkiRJkjQIE1GSJEmSJEkahIkoSZIkSZIkDcJElCRJkiRJkgZhIkqSJEmS\nJEmDMBElSZIkSZKkQZiIkiRJkiRJ0iBMREmSJEmSJGkQJqIkSZIkSZI0CBNRkiRJkiRJGoSJKEmS\nJEmSJA3CRJQkSZIkSZIGMbJEVJLHJLkyybVJ1iX5o1a+U5LVSW5OckmSHXvLnJjkliQ3JTmkV35A\nkuvbtNN65Y9O8pFWfkWSp/amHdO2cXOS140qTkmSJEmSJC3MyBJRVfU94MVVtS/wPODFSV4EnACs\nrqp9gMvaOElWAUcBq4BDgTOSpK3uTODYqloJrExyaCs/Fri7lb8HOLWtayfg7cBB7XVSP+ElSZIk\nSZKk4Y300byq+rc2+CjgEcA3gcOAs1v52cARbfhw4Lyquq+qbgduBQ5OsiuwQ1WtbfOd01umv66P\nAS9twy8HLqmqe6rqHmA1XXJLkiRJkiRJYzLSRFSS7ZJcC2wELq+qG4Gdq2pjm2UjsHMb3g1Y31t8\nPbD7LOUbWjnt7x0AVXU/8K0kT5pnXZIkSZIkSRqTFaNceVU9AOyb5InAZ5K8eMb0SlKjrIMkSZIk\nSZKWhpEmoqZV1beSXAgcAGxMsktV3dkeu7urzbYB2LO32B50LZk2tOGZ5dPL7AV8NckK4IlVdXeS\nDcBUb5k9gc/OVrckJ/dG11TVmi2PUJIkSZIkaVKtaa/NS9VoGiQleTJwf1Xdk2R74DPAKXT9N91d\nVacmOQHYsapOaJ2Vn0vXufjuwKXAM1urqSuB44G1wIXA6VV1cZLjgOdW1RuTHA0cUVVHt87Krwb2\nBwJ8Edi/9RfVr2NVVZCWsa7V4SQ2PAyTeH5P8v427kli3JPFuCeLcU8W454sxj1Z5v4+NsoWUbsC\nZyfZjq4vqg9W1WVJrgHOT3IscDtwJEBVrUtyPrAOuB84rjZlyY4DzgK2By6qqotb+fuADya5Bbgb\nOLqt6xtJ3gFc1eY7ZWYSSpIkSZIkScMaWYuobYEtojQJJrmFzCSe35O8v417khj3ZDHuyWLck8W4\nJ4txT5a5v4+N9FfzJEmSJEmSpGkmoiRJkiRJkjQIE1GSJEmSJEkahIkoSZIkSZIkDWKzv5qX5AeA\n1wF79+avqjp+hPWSJEmSJEnSMrPZRBRwEfAF4DrgASa3y3dJkiRJkiQ9DAtJRD26qn595DWRJEmS\nJEnSsraQPqLOTfJLSXZNstP0a+Q1kyRJkiRJ0rKykBZR3wP+BPhdukfzoHs07+mjqpQkSZIkSZKW\nn1TN391TktuAA6vqX4ep0nCSVFVl3PWQRilJTWa3bmESz+9J3t/GPUmMe7IY92Qx7sli3JPFuCfL\n3N/HFvJo3i3Adxe3QpIkSZIkSZo0C3k079+Aa5NcDvx7K6uqOn501ZIkSZIkSdJys5BE1Cfba7ot\n2aS2K5MkSZIkSdLDsNk+ogCSPBbYq6puGn2VhmMfUZoEk9xn0CSe35O8v417khj3ZDHuyWLck8W4\nJ4txT5aH0UdUksOAa4CL2/h+SS5Y3ApKkiRJkiRpuVtIZ+UnAwcD3wSoqmuAp4+wTpIkSZIkSVqG\nFpKIuq+q7plR9sAoKiNJkiRJkqTlayGdld+Y5DXAiiQrgeOBz4+2WpIkSZIkSVpuFtIi6s3AKuB7\nwLnAt4C3jLJSkiRJkiRJWn4Wkoha1V4rgMcAhwNXjbJSkiRJkiRJWn4W8mjeh4DfBG7AvqEkSZIk\nSZK0lRaSiPp6VV0w8ppIkiRJkiRpWUtVzT9DcghwFHAp8B+tuKrq4yOu28glqarKuOshjVKSgvnP\n8+UpTOL5Pcn727gniXFPFuOeLMY9WYx7shj3ZJn7+9hCWkQdA/xQm7f/aN42n4iSJEmSJEnScBaS\niPoR4Fm1uaZTkiRJkiRJ0jwW8qt5n6f71TxJkiRJkiRpqy2kRdT/DVyb5Dbg31tZVdXzRlctSZIk\nSZIkLTcLSUQdOvJaSJIkSZIkadnbbCKqqm4foB6SJEmSJEla5hbSR9RWS7JnksuT3JjkhiTHt/Kd\nkqxOcnOSS5Ls2FvmxCS3JLkpySG98gOSXN+mndYrf3SSj7TyK5I8tTftmLaNm5O8bpSxSpIkSZIk\naX4jTUQB9wFvrarnAM8HfjXJs4ETgNVVtQ9wWRsnySrgKLrO0Q8FzkiStq4zgWOraiWwMsn0I4PH\nAne38vcAp7Z17QS8HTiovU7qJ7wkSZIkSZI0rJEmoqrqzqq6tg1/B/gysDtwGHB2m+1s4Ig2fDhw\nXlXd1x4JvBU4OMmuwA5VtbbNd05vmf66Pga8tA2/HLikqu6pqnuA1djflSRJkiRJ0tiMukXUg5Ls\nDewHXAnsXFUb26SNwM5teDdgfW+x9XSJq5nlG1o57e8dAFV1P/CtJE+aZ12SJEmSJEkag0ESUUke\nT9da6S1VdW9/WlUVUEPUQ5IkSZIkSeOz2V/Ne7iSPJIuCfXBqvpkK96YZJequrM9dndXK98A7Nlb\nfA+6lkwb2vDM8ull9gK+mmQF8MSqujvJBmCqt8yewGdnqd/JvdE1VbVmi4OUJEmSJEmaWGvaa/PS\nNUgajdbR+Nl0nYm/tVf+x63s1CQnADtW1Qmts/Jz6ToX3x24FHhmVVWSK4HjgbXAhcDpVXVxkuOA\n51bVG5McDRxRVUe3zsqvBvYHAnwR2L/1FzVdj6qq6c7QpWUpSU1mo8Mwief3JO9v454kxj1ZjHuy\nGPdkMe7JYtyTZe7vY6NuEfVC4LXAdUmuaWUnAu8Czk9yLHA7cCRAVa1Lcj6wDrgfOK42ZcqOA84C\ntgcuqqqLW/n7gA8muQW4Gzi6resbSd4BXNXmO6WfhJIkSZIkSdKwRtoiaqmzRZQmwSS3kJnE83uS\n97dxTxLjnizGPVmMe7IY92Qx7sky9/exwX41T5IkSZIkSZPNRJQkSZIkSZIGYSJKkiRJkiRJgzAR\nJUmSJEmSpEGYiJIkSZIkSdIgTERJkiRJkiRpECaiJEmSJEn/h717j7etruv9/3rLVgRRiTBUQPEC\nCh5SQMBjmagnIx8dsLzgrTQ5nl+SYmUXMEusU0qWhpbWsRRMRfF6NBEBc6bnKLcE2QgIlBR7E1vD\n+zmZIJ/fH+O72GMv51r7stYaY+01X8/HYz3WmN9xmd/PHN8x5pyf8R3fKUmDMBElSZIkSZKkQZiI\nkiRJkiRJ0iBMREmSJEmSJGkQJqIkSZIkSZI0CBNRkiRJkiRJGsS6sSswtiQ1dh3GUFUZuw6SJEmS\nJGm2zHwiCmYxD2UOSpIkSZIkDc9b8yRJkiRJkjQIE1GSJEmSJEkahIkoSZIkSZIkDcJElCRJkiRJ\nkgZhIkqSJEmSJEmDMBElSZIkSZKkQZiIkiRJkiRJ0iBMREmSJEmSJGkQJqIkSZIkSZI0iHVjV0Dj\nSFJj12EMVZWx6yBJkiRJ0qwyETWzZjEPZQ5KkiRJkqQxeWueJEmSJEmSBmEiSpIkSZIkSYMwESVJ\nkiRJkqRBmIiSJEmSJEnSIExESZIkSZIkaRArmohK8rYkm5Ks75XtleSCJNclOT/Jnr15pya5Psm1\nSZ7cKz8iyfo274xe+a5J3tvKL0rywN6857fnuC7JL6xknJIkSZIkSdq6le4R9Xbg2HllpwAXVNVB\nwCfbY5IcApwAHNLWeXOStHXeApxYVQcCByaZ2+aJwK2t/A3A6W1bewG/CxzV/l7VT3hJkiRJkiRp\neCuaiKqqzwBfn1d8HHBWmz4LeGqbPh44u6puq6obgRuAo5PcD7hnVV3SlntHb53+tj4APKlN/xRw\nflV9o6q+AVzADybEJEmSJEmSNKAxxojap6o2telNwD5t+v7Aht5yG4B9p5RvbOW0/zcBVNXtwDeT\n/PAi25IkSZIkSdJIRh2svKoKqDHrIEmSJEmSpGGsG+E5NyW5b1Xd0m67+0or3wjs31tuP7qeTBvb\n9PzyuXUeANycZB1w76q6NclG4JjeOvsDfze9Oqf1po+Zt5okSZIkSZIWN2l/W5euU9LKSXIA8NGq\nOrQ9/iO6AcZPT3IKsGdVndIGK3833eDi+wIXAg+tqkpyMXAycAnwMeCNVXVekpOAQ6vqxUmeBTy1\nqp7VBiu/DDgcCPAPwOFtvKh+3Wo2O2SFWY27qrL15daWWW7n7u9ZMrvnNeOeJcY9W4x7thj3bDHu\n2TK7cS/0fWxFe0QlORt4PLB3kpvofsnutcA5SU4EbgSeCVBVVyc5B7gauB04qTZnyU4CzgR2A86t\nqvNa+V8Df5PkeuBW4FltW19L8vvApW25V89PQkmSJEmSJGlYK94jajWz58CssYfMbHF/z5bZPa8Z\n9ywx7tli3LPFuGeLcc+W2Y17oe9jow5WLkmSJEmSpNlhIkqSJEmSJEmDMBElSZIkSZKkQZiIkiRJ\nkiRJ0iBMREmSJEmSJGkQJqIkSZIkSZI0CBNRkiRJkiRJGoSJKEmSJEmSJA3CRJQkSZIkSZIGYSJK\nkiRJkiRJgzARJUmSJEmSpEGYiJIkSZIkSdIgTERJkiRJkiRpECaiJEmSJEmSNAgTUZIkSZIkSRqE\niShJkiRJkiQNwkSUJEmSJEmSBmEiSpIkSZIkSYMwESVJkiRJkqRBmIiSJEmSJEnSIExESZIkSZIk\naRAmoiRJkiRJkjQIE1GSJEmSJEkahIkoSZIkSZIkDcJElCRJkiRJkgZhIkqSJEmSJEmDMBElSZIk\nSZKkQZiIkiRJkiRJ0iDWjV0BaUhJauw6SJIkSZI0q9Z0j6gkxya5Nsn1SX5r7PpoNagZ/JMkSZIk\naXVYs4moJLsAfwYcCxwCPDvJwePWqm8ydgVGMhm7AiOZjF2BkUxGffYkNWt/o77gtvMZMxm7AiOZ\njF2BkUzGrsBIJmNXYCSTsSswksnYFRjJZOwKjGQydgVGMhm7AiOZjF2BkUzGrsBUazYRBRwF3FBV\nN1bVbcB7gONHrlPPZOwKjGQydgVGMhm7AiOZjPz8Y/VCe9WIzz2mycjPP5bJ2BUYyWTsCoxkMnYF\nRjIZuwIjmYxdgZFMxq7ASCZjV2Akk7ErMJLJ2BUYyWTsCoxkMnYFRjIZuwJTreVE1L7ATb3HG1qZ\nJEmSJEmSRrCWE1Fjdw2QJEmSJElST6rWZr4myWOA06rq2Pb4VOCOqjq9t8zaDF6SJEmSJGlEVZVp\n5Ws5EbUO+BLwJOBm4BLg2VV1zagVkyRJkiRJmlHrxq7ASqmq25O8BPgEsAvw1yahJEmSJEmSxrNm\ne0RJkiRJkiRpdVnLg5XvVJK8IMmb2vRpSV6+leW3uozGk+TVSZ40dj3GluSRSX567Host7UWV5Lv\nJ7k8yZVJPphkj3nz75Vkw9w5qpV9uq1zeZKNST7UypPkjUmuT/KFJIf11rmxPcflSS7plT8jyRdb\nPQ4fIub2vAvG3Zt3eZIP98pfkuSGJHck2atXfkySb/bWeWVv3qktvvVJ3p1k11b+uiTXtNfpg0nu\nvbPF3Zt/ZJLbk/xcr2zPJO9vMV7dxm7sr/Pyhba3EnYw7gclubi15/ckuWsr/6EkH2r77uIkj+it\nM7Wdt3kvba/HVUlOZwDLeXy3ece08quSTHrlb0uyKcn6eds/KsklbZ1Lkxy5guH2n3fs89qqO74X\nifspSa5o630myUN68xba3wu28zZ/1Rzfbf60uJ+Y5B/SnZvPTLJLb94PxJ1k/ySfSnc+vyrJyb3l\n39NrO19OcvkAYS/3ee341l4vb6/LE7cWd2+bq35/t/I/SPKldO9JL21lU8/nSe7eHl/Rln9Nbzur\n7nNLm789cT88yeeSfDdTvlMm2aU910d7ZXsluSDJdUnOT7LnSsU6ry7LFncr3973sdPa9ueOp2NX\nKNQt7ODxvZyfU1e2nVeVfwP9AbssMu/5wJva9KuAl29lW1tdZrX/AfcH3rfM2zxtZ39d1tIf8IK5\ndr2W/saMC7jLCmzz273pM+cfQ8AZwLsWihl4P/C8Nv0U4Nw2fTRwUW+5LwN7TVn/4cBBwKeAwwd8\nLReMuz9v3jqPAh44PxbgGOAjU5Y/APgnYNf2+L3A89v0T87tT+C1wGt3trjbvF2AvwP+Fnhar/ws\n4IVteh1w7968/YHzFmoTqyjuc4Bntum3AL/Upl8H/E6bfhhwYW+dhdr5E4ALgLu2x/cZO+5Wtj3H\n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\n/SYejXt7YtzbF+PevtiYeSkHK5ckSZIkSdIgtulEVJIDk1yY5OIkfzjv8kiSJEmSJG3PttlEVJKb\nA38HHAjsBzwnyb3nW6pxC/MuwFwkOWDeZZgH496+bK9xb6/1mnFvbxbmXYA5WZh3AeZkYd4FmJOF\neRdgThbmXYA5WZh3AeZkYd4FmJOFeRdgThbmXYA5WZh3ASbaZhNRwP7AJVV1WVVdC7wPeMqcyzRm\nYd4FmJcD5l2AOTlg3gWYkwPmXYA5OWDeBZiPhXkXYE4W5l2AOVmYdwHmZGHeBZiThXkXYE4W5l2A\nOVmYdwHmZGHeBZiThXkXYE4W5l2AOVmYdwHmZGHeBZiThXkXYKJtORF1F+DysddX9HmSJEmSJEma\ng235qXnb43D8krp5P+I8yevm+fmSJEmStBalatvM1yR5OHB4VR3YX78auL6q3ji2zLYZvCRJkiRJ\n0hxVVSbN35YTUeuArwOPA74FnA48p6oumGvBJEmSJEmStlPbbNe8qrouycuATwE3B95uEkqSJEmS\nJGl+ttkWUZIkSZIkSVpbtuWn5t2kJPm1JG/p04cn+d1NLL/JZTQ/SV6f5HHzLse8Jbl/kifNuxyz\ntq3FleSnSc5KcnaSDye59ZL3b5PkilEd1ef9S1/nrCTrk3ykz0+SNye5OMnXkjxwbJ3L+mecleT0\nsfnPSnJeL8eDhoi5f+7UuMfeOyvJCWPzX5bkkiTXJ9ltbP4BSX4wts5rx957dY/vnCTvTbJTn//X\nSS7of6cPJ7ntTS3usfcfmuS6JE8fm7drkg/2GM/vYzeOr/O707a3GrYy7rsnOa0fz+9LskOff7sk\nH+n77rQk9xlbZ+Jx3t97ef97nJvkjQxglud3f++APv/cJAtj89+RZEOSc5Zsf/8kp/d1zkjy0FUM\nd/xz512vrbnze5m4fznJV/t6n0tyj7H3pu3vqcd5f3/NnN/9/UlxPzbJl9Pq5ncmufnYezeKO8me\nST6bVp+fm+QVY8u/b+zYuTTJWQOEPet67Sn9eD2r/10eu6m4x7a55vd3n/8XSb6e9p308j5vYn2e\n5Bb99Vf78n85tp01d93S39+SuO+V5ItJfpwJvymT3Lx/1sfG5u2W5JQkFyU5OcmuqxXrkrLMLO4+\nf0u/xw7v2x+dTweuUqgb2crze5bXqat7nFeV/wb6B9x8mfdeBLylT78O+N1NbGuTy6z1f8CdgQ/M\n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\ntGajn+z7/If9H7SmnTukjcV1Li2hBhvvf8bmzdNy5Smmx/JZYL/0Qb2XWe6twM3SWri9j/a0hhsN\nnrgK5hXXs9IGuD8LuA/ti3PpMXYyi91TV3v/37D9ai0YL6Eljacu1x3EkgFZq+ok4JtJLgH+gXb8\nQ4vlc70uOw34p6o6GSDJ09LGJnk48PEkn1h5SJtlUtwH0QYuPaOX9TO0AaYv7GV9RS/rXYCzk4y6\n7zwLOKevcyTt4m203WOBM4HRGBqjdd5Cq8tO6cfSqowBOMEs417Oy4H39OP5fsAbJiwzZN22xXHT\nngr0O0kuBm5H+zFGX+ectO5IvwS8ss/fnSnHOa1bwN79++I4emJjALM8vy+kXeecTYvv6OpjpiQ5\njta6ed8klyd5cV/t14G/6n+TP2exe/pqm2u9xto6v6fGXW2soJcAx/c4nkdLoC23v5eLe2JZBrA1\n+/v3+7X812hPk1ro60+L+xdo15yPyeIj0J80tr0bHTsDmGW99gxavXYW7SlkB/f5k+Ke9Pj6tb6/\njwCe0a/J/gL4733+fkyuz+9E6/I0Os4/VlWnwpq7btmquJPcscfwKuC1Sf4trUHFprb1hCQX0ZI8\nR0xYfjXMLO6t/B57Y7/G/xotqfWqWQa3jLlep672cZ5a1d4e2560Qfo+Vm1Q8m1Gj+vEai2MSPKH\ntIvknwAfr6rXJvks7bGRX0m7u/m7VTV6OtgN7y3zGWcD36mqxy39zCSH0b7krqU9Yee5VfX9JC+n\nfSGsB74BXFZVf5rkN2h3r75Dq0RuXVUvSRvM/JpqA8OvuiTXVNUum1jmVtWfRJLk74GLquqoIcon\nSZIkSdJaYiJqCy1N2Gj7luSHVXWbTSzz27TmqzvSBop76Tya6UuSJEmSNG8moiRJkiRJkjSIdZte\nRNo8aSPvf3rCW4+rqu8OXR5JkiRJkrS22CJKkiRJkiRJg/CpeZIkSZIkSRqEiShJkiRJkiQNwkSU\nJEmSJEmSBmEiSpIkSZIkSYMwESVJkiRJkqRB/H+KY4jR4WbWEgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "plt.rcParams['figure.figsize'] = 20, 20\n", + "fig = plt.figure() \n", + "\n", + "st= get_stats(Cluster,'queue','core_hours')[:18]\n", + "labels=st.index\n", + "indexes = np.arange(len(labels))\n", + "plot_fields=['core_hours','jobid','mem','elapsed','waited']\n", + "gs = matplotlib.gridspec.GridSpec(len(plot_fields),1)\n", + "\n", + "count=0\n", + "for f in plot_fields:\n", + " width = 1\n", + " values=st[f].values\n", + " ax = plt.subplot(gs[count,0])\n", + " ax.set_ylabel(f)\n", + " ax.bar(indexes, values, width)\n", + " ax.set_xticklabels(labels)\n", + " ax.set_xticks(indexes + width * 0.5)\n", + " count=count+1\n", + "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exercise : make a pie chart with matplotlib" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First: matplotlib pie-chare demo " + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVMAAAEpCAYAAAAu8sHTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VEXbh+/ZXlNJgIRA6CSE3qRIABUEEVG6CAr27vv6\nWV+72DvFCnbpvaO0KCBFhQDSewuhJJuebDvfH7sgCEkoyZZk7uvaK9nJnD3P2Zz97ZTfPCMURUEi\nkUgkV4fK3wFIJBJJRUCKqUQikZQBUkwlEomkDJBiKpFIJGWAFFOJRCIpA6SYSiQSSRkgxVQi8SNC\niFx/xyApG6SYSiT+RRq9KwhSTCWSAEMI0VwIsVYIkSqEmCmECPOWtxFCbBZCbBRCvCeE2OItbyyE\nWOctTxVC1PPvFVROpJhKJIHH98BTiqI0A7YAL3vLvwHuVRSlBeDkn1btA8An3vJWwBEfxytBiqlE\nElAIIUKBUEVRfvMWfQd09pZbFEVZ5y2fCAjv72uA54UQTwPxiqIU+jRoCSDFVCIJdERp5YqiTAJu\nBgqAhUKIrr4ITHI+UkwlkgBCUZQsIFMI0clbNAxY6S3PEUK09ZYPPnOMEKKOoij7FUUZA8wBmvg0\naAkAGn8HIJFUckxCiMPnPP8AuBP4XAhhAvYCI7x/uxv4SgjhBlKALG/5QCHEHYADSAPe8EnkkvMQ\nMgWfRBIcCCHMiqLkeX9/FqiqKMp//ByWxItsmfoIIYQL2HxO0S2KohzyVzySoOQmIcRzeD63B4C7\n/BqN5Dxky9RHCCFyFEWxFvM3AaDIf8YFeN8bIxB6kUeY928qQA00AAqBg4ALj33IBeQBp/71yJXv\nt6QskS1TPyGEiAeWAGvxeAN7CSEeBW7E4x8cpSjKVCGEChgLdAUO4xkX+1pRlBlCiLfxzOI6gZ8V\nRXnK5xdylXjHBWsBNYGaKjW1DWZ1IyGo7XIosSoVEQjQGVR2g0ntNJhVbpNVgylELcwharXepFar\n1EKlVsOfi7M0CdZqokm1ag6H26243G630+1WcouK3Cfy8lyn8vLILCjQZBcV6d1uN2adLkenVmep\nVKpTKMqJAqfzYIHDsQXY7n2ckIIruVSkmPoOoxBio/f3fcB/gXrAMEVR1gsh+gHNgKZAFLBBCPEr\n0AmopShKghCiKp4P+QQhRCTQV1GURgBCiBAfX89l4f1SqA00FSqamazq9i6n0lSlpoo1XFsQWV3n\njqqh00bHGYyR1XUiopqOiOpawqJ06Awq8LRAS2TvH/mum+skqB5q315XWt18u52MgoLw0/n54Rn5\n+fGn8vI4npPD1vT0gr/T0+37MjIMLrfbHWEy7Xe53Vuyi4r+BHbgef/3K4riusq3RFLBkGLqOwq8\nK1SAsy3Tg4qirPcWdQQmeltCJ4QQKUAbb/lUAEVR0oUQK7z1bUChEGICMN/7CBiEENHAtTqD6nqN\nTiSrNaKO0aJyxtYzumonmc01GhjVNeobiY4zoNGKiw5/XAGXbPUz6XSYdDpqhIb++09GwKgoCqfz\n89l58mTi7lOnErefPHnr5rS0gt2nTqmzCgt1ESbT1tyiooUOtzsF+P3MxJCk8iLF1L/8+wNYqkH7\nDIqiuLyew+uA/sAj3t99jndcsxbQ2WBWdQe66vQisnYTc1Fi+xBr3aZmUaO+EZNVo/dHfFeCEIIq\nZjNVzGY6xscD6LwPsgoLWX/4cMtVBw40XbZnz6M7T50yhRuNewudziWFTudyYJWiKBl+DF/iB+QE\nlI/49wSUt2U6T1GUJt7ntwL3A72ASGAD0BbojMd32AeIBrYB9+IZbzUrinLCu9Rwr6IoVXx4PXog\nWW9UDQD6qtTCXL+FxZnY3mqt38JCbF0jKnVx3w3lw5uDdyr31ekkHmrf3qfnLXA4+PPoUdYcPOhe\numdPbuqxYwa9RpPmcrt/yXM4pgMrFEWx+zQoic+RLVPfcbFvrbNliqLMEkK0B1K95U95hXIGnhbn\nNjwTUH/hMWtbgTlCCAOelmu5+w2947S9TFb1EI1WdK0Wb7C36R5uaZYcqqpex4DXlFDpMGq1dIqP\np1N8vOrp5OQQp8vF5uPHa6Xs2zdy+tatA/ecOqUNMxqXZRUW/gQs8q5mklQwZMs0CDhj1vaK2Tqg\ng6IoJ3x07ggEg0xW9f32QndCw1YWe+vuEZYmnUIIidD6IoRLxl8t09JIz8lh8a5dTNuyJWf94cN6\no1a7OquwcAIwV1GUHH/HJykbZMs0OJjvzWmpA14rbyEVQmiBG41W9UManejauH2Is1PfSHNiuxC0\nelWpM+WS86lqtXJnq1bc2aqVNauwkIU7dnSduGlT6/WHD08IMxpXZhUWfolnyMfh71glV44U0yBA\nUZRyzwLknURqoTeq7tXqxdBq8QalS/+okFY3hAXVxFGgE2owMKR5c4Y0b27NzM9n3o4dPcZv2NBh\nz6lTTr1GM8bucn2hKMoxf8cpuXxkN7+SI4TQAQONFtWLWp0q9trbqujb947URMcFn34Gajf/Uth6\n/DhfrFtXOG3LFqFTq5dlFxW9B6TIRQPBgxTTSooQIkqjFQ+p1OKJuIZGdc8R1axJHUNQqYJ3EimY\nxfQM2YWFTN68WRmzenWeraAgM8/heM+tKN/LSavAR4ppJUMI0dRgUj3jcim3tbo+XOk+rKqxRv1S\nFxcFBRVBTM+gKAprDh5k3O+/5y3bu1elVamm5trtryuKstffsUkujhwzrSQIIa4xWtTvmqzq1tcP\njdYl96+itoYH1my85B+EEHSMj6djfLz5eE4O4zdsGPrp778PCtHrZ+TY7S8oinLA3zFKzke2TCs4\nQoj2Rov6PbVWtOhzfzVjx1uqCK2uYm6wUJFaphfDVlDA6DVrHJ+tXetSCzE5125/SVGUw6UfKfEF\nFfNTJUEI0dxk1aywhGmW3vZYTId3FyWZugyIrrBCWhkIMxp56brrtFufeMIwonXr241a7U6LXv+F\nEKK6v2OTSDGtcAgh6hot6nlGi3pNnweqdX5nUZIpuV+U0Gjlv7qiEGk283r37rrNjz9uHNaixV1G\njWavWacb400uI/ET8hNWQRBCWHQG1bs6g2pLj+FVe767OMl43ZCqKtkSrbhEWSy83bOn7q/HHjMO\nbtbsXoNGc8Cg1b7izZsg8THykxbkCA9DdAbVwabXhj46anai8aZ7qqv1RrW/Q5P4iOohIXzYu7d+\n/SOPGDvFxz9l0en2CCH8kkGsMiNn84MYIURzg1n1dViUtuHwF2uZ6jW3+DskiR+pGRbGjDvuMC3a\nudP02Ny5c0MMhp9ziooeVBTluL9jqwzIlmkQIoQINZjVEwxm1e/9Ho9t/srURCmkkrP0bNiQTY8/\nbhrRqlUvo0azR6dWPyaEkF2VckaKaZAhhOiuM6j2tuwWdsdb85MMyf2ihK/zhkoCH7NOx2vdu+tW\n3HefuWn16m9adbqtQog2/o6rIiPFNEgQQoQYzOofrOGaOQ99UCdyxKvxOnOIHKWRlEyj6GiW3nOP\n+d1evRqG6PUpFr1+ghBltk2M5BykmAYBQojuOqNqX8tuYYNGzW5sSLwmoPfOkwQYQgiGNG8uNj/x\nhPGmRo1uN2m1O4UQ1/g7roqGFNMARghhNZjU31nCNHMefLdO5IhX47VGixz6klwZYUYjX952m+Hz\nW2+tbtXplhu12teFELJ7U0ZIMQ1QhBBN9SbVjuZdQoeMmt3Y0LiDbI1KyoY+iYmsf+QRY4uYmP+Y\ndbr9QoiO/o6pIiDFNMAQQgi1RtytN6rW3f5sXPW7R9XWmqyyNSopW6qHhPBU585ml6LU0OgMS4QQ\nff0dU7AjxTSAEEKYDWbVtIhquk+f+76hof1NkXKaXlIunMzNZeT06XR96DXu/Wqp2RwR/ZPeZPnM\nmyxccgVIMQ0QhBAJBrNqR1LH0FtenpKgi6lTMXKMSgIPt9vNXdOnK2H1mrg63/kkNZu05b8zNptq\nNe8wXG+ybhRC1PZ3jMGIFNMAQKjEAJ1B9Vf//8TG3vtmvEYuBZWUJ+PWrmXLydOM+OKXszeaKTSC\nEWPnm667/4WGWoMxVQjR2Z8xBiNSTP2IEELoTepR1jDNj8983cDQ+dYoUVn3npf4hk3HjvHmihUM\n+miW0BlN5/1NCMG1w/6jHv7RTKvOZFksVKohfgozKJFi6ieEEDqjVT0nsrru6RcnJejiGppKP0gi\nuQpyi4q4ffJkmvW9mzqti2941mt3HQ9+k2I0hUaO1xqML8hv+EtDiqkfEEJEGK3qjXWbmHs+/31D\nbViU3D5EUv48Pm8e7tAqyi3PjS61brX6TXhs8gZTWLW4Z3Umy7fSj1o6Ukx9jEol6htMql0dekc0\neuSTunJ8VOITpm3ezOLdexgxYeUltzJDo2N55Me15tiElv31JutSuQy1ZKSY+hC1RnTSGlSb+z0e\nGzHo/+JUwbytsiR4OJCRwRPz59P7pS8JqVLtso7Vm63c/ekiU+Pr+rbTmSx/CCFiyinMoEeKqY/Q\nG1U9tTrV8vvfrm1I7h8lVVTiExwuF7dPnkyt9t2V5j0HX9FrqLVa+r8y3pB85//V0RpMm4QQSWUc\nZoVAiqkPMFrUg4RKzH34w7raJp1C/R2OpBLx2rJlHHcqyu3vT7uqL3AhBN3ufV5z24ufVdEajL8L\nIbqWVYwVBSmm5YzJqrkb+PGJsfU0jdrKISeJ70jZt4/xG/5g+Be/CLW6bMbmm/ccIu78ZI5FZzTP\nl17U85FiWo6YQzSPAp8/+UUDTd1mMhO+xHecysvjzmnT6Pzgy1Stm1imr123TReGfTjDpDWYFgoh\n2pXpiwcxUkzLCUuo5hkEHz01vr6mVoL0kEp8h6IojJw+nbA6iUqXu54ql3PUa9eN29+ZaNYaTL8I\nIZqXy0mCDCmm5YAlTPMfBG8883VDdY36UkglvuXTtWvZdOKkcteXS8t1orPRtb0Y8NrXFq3BtFII\nUbbN3yBEimkZE1pF+4DLqbz338/rq6vXNvg7HEklY3NaGqOWL2fgBzOE3mgu9/M1uf42cev/xoVo\nDabfhBD1yv2EAYwU0zIkMkY/vCjfPebRT+qp4xrIFqnEt+TZ7QyZPJmmt4ygblvfTba3uGmo6P3k\n+6Fao2mNEKKWz04cYEgxLSOqxOpvzrM5x9/3dm1N/RZysknie56YNx+nNULp+/xYn5+7bb971D0e\nfi1CZzT/XlmN/VJMy4DoOH2nXJtz2h3/i5M+UolfmL5lCwt37WLkhBV+WxDS8fbH1F1GPhOlM1rW\nCCGi/BWHv5BiepXE1DE2zrW5Ft/6cIyuXc9If4cjqYQcyMzk8XnzuOmFzwmJ8m+jsOvdz2raD34o\nRm+yrhBCVKpJAymmV0H9lpZquTbnsk59I43dBkfLJaISn+NwuRg6eTI1212ntLjpdn+HA0CPR17X\n1mnTpY7OZPm6MqXvk2J6hTRLDgs9ddS+pEYDY2S/x2Ll+yjxC68vX84xu1O5/YMZASNaQggGvfGd\n0RpZtY9aq3vE3/H4CikCV0Cz5DD9sb0FP2q0IvGBd+toVOqAuY8llYhf9+/nq/XrGfbFL0KjCax0\no3qThZHjFpg1OsPbQohkf8fjC6SYXibNksPEicNFo/KynD2fGFdfY7TIfKQS33M6L487p07l2vte\npHq9wEziFFGjDkPfm2zSGkxzhBA1/R1PeSPF9DLJTLcPz0y3P/7Ae3XU0XF6f4cjqYQoisLIGTMI\niW+kdL37WX+HUyL1r7me6+5/wawzWZYIISr0lrtSTC+D+i0tbU+n2cf2fShGk9A2xN/hSCopn69b\nx1/HT3DXV8uCYnyp8/AnNQ3a31BLZ7J8X5EnpKSYXiLNksNiTh+z/5TYzmroNlgmdw5mHp49m/rv\nvUeHTz89W5aZn0/f77+n1ejR3Pr999gKCi567NLdu2kzZgwtR4/m41Wrzpa//MsvdPzsMx6YNets\n2ZTUVD5bu7ZMY99y/DivLVvGgPenYjAFx+IQIQQDXvvGGBIV01Ot0//X3/GUF1JML4FmyWHW4wcK\nvxCC+OEv1dJU4C/XSsHQFi2Yfscd55V9tGoVXevU4c/HHiO5Tp3zhPIMLrebpxYuZPodd7Du4YeZ\nvmULO0+eJKuwkM1paax+8EF0ajXb0tMpcDiYuGkT97VtW2Zx59ntDJk0iSY3D6f+NdeX2ev6Ap3R\nxMhx880anf51IcR1/o6nPJBiWgrNksNU2RmOZzPS7L0eeK+OxmCSE07BTodatQgznO8nX7RzJ0Oa\nezLJDWnWjAU7dlxw3J9Hj1InIoJa4eFo1Wr6JSWxcMcO1ELgcLtRFIUChwOtWs2YNWu4v1071Kqy\n+4g9uWABdnOYcusLn5XZa/qS8Jh4hr0/zag1GGdUxBVSUkxL53qDSV3XaFUf+u7Vg46TR4r8HY+k\nHDiRl0e0xdNtjrZYOJGXd0GdtOxsYkP/WS4cExLCsZwcLHo93evXp/MXX1DNasWq1/Pn0aP0atSo\nzOKbuXUr83bsYORl7C4aiNRt25W2t91j1JutE/wdS1kjxbQEmiWH1QGG6AyqffGNTd8V5ruXvzZk\nu3PdotP+Dk1SjgghuKhilTC881jHjvz2wAO83r07b65Ywf+6duX7P/9kxLRpvP/rr1cVzyGbjUfn\nzuXG58cRWjX2ql4rEOjxyCidwRrWTQjR39+xlCVSTIuhWXKYAPoDOsAuhCC2nnFttXjDhIlvH8n+\n6vn9zsJ8l5+jLBu+ffUgT96wmVcGbjtbNveLYzzdcwuv376d12/fztY1WRc9duuaLF687W9e6Ps3\ni789frZ8xuijvDZ4O9+8dOBs2dqFp1k28US5XcfVEG02k56TA8DxnByizBfmAo2xWjma9c/7cDQ7\nm9iQ810dqWlpANSLjGTOtm18M2AA+zMy2Hf6yr6And7dReNad1Va3zz8il4j0NAajAx56yez1mAa\nX5G6+5VSTFUq8ZAQosSZgdQUmwJ8AawHauMRVUKraI/HJ5nG7f4rd/vL/bc5Dm7PL/+Ay5mOfSJ5\nfMz5eX2FENwwNJoXJybw4sQEkjpcmA3L7VKY9M4RHh9bj1emJbJ+SSZp+wvIz3FxaEc+L01OQK0V\nHN1TgL3QzZp5GXQdFJifnZ4NGzIpNRWASZs2cdNFuugtYmLYm5HBwcxM7E4nM7dupWfDhufVOdMq\ntbtcuBQFAJUQFDidVxTXqBUrOFpoV4Z+PCuou/f/plaza2jb7x6j3mz92t+xlBWVTkyFEB0sJj6w\nmFip14nnhBDFvgepKbYsYAzwHVANiATQ6lT2mgmmmVq9au779+6yL/n+uNvtVnxzAeVA/RYWTCEX\nTqwppVzS/r/ziI7TUyVGj0YraNM9nE0rs1CpweVUUBQFe6EbtUbw8w/pdBscRSAsvb17+nR6TJjA\n7lOnaPzhh/y4cSP/6dSJFXv30mr0aH7dv58nOnUCPOOkA3/6CQCNWs17vXrR78cfaTduHLclJdEw\n6p8vhwU7dtAyJoaqVithRiNNqlWjw6efUuRy0bhq1cuO87f9+/li3TqGff5zwC0XLQt6PPy6zmAN\n6yqEGODvWMoCoZT2iakg9OkmxG9/EOZwsv2n96javBHc9hh5uw+yKSeP/oqiHC/p+GbJYTWBh4Bo\n4AjgBsjLcoYdP1A4pEZ9Y/i9b9bWhkRqy/9iyoFTx4oY+8ReXpnq2cpn3pdprJl7GqNFTa1EEwP+\nE4vJev4H+s+lmfz9ezbDX/QkV1+78DT7t+Yz5Ok4lnyfzvrFGSS0tXL90Kr8+MZBHvm4fHe1eHPw\nTuW+Op3EQ+3bl+t5fEFGfj6txoyh1Z1Pc919//N3OOXGoc3rGP9A92xHYUF9RVECcwzoEqlMLdOW\nRgO/DuxJ6C3XQa1YWDcF82PDaGsysEMI0bOkg1NTbIeAV4EUIB4wAZhDNbbaSeYvThwp2vDygG2O\nbWuzy/1CfEFy/yq8Oa8xL05qRGgVLdM+OnphpRIamT2GV+XFiQn0f6IGcz8/xi0PxvDbrFN8+ew+\nFkxIK7/AKwCKonD3jBlYajVUKrKQAtRs2o52/e8zVITufqUQ0z7dROT+I7yuUtFozP84azDUaGDU\n42gXfkFolXCmW0xirBCi2AX3qSm2AuB7YDQQClQFUKmFO66B6ZewKO2kz57aVzDlg8Mup8Nd3pdV\nroREaD2z2kLQqW8k+7deaBUKj9aRme44+zzzuIPw6PNb5od2eMaUo2sa+GuZjfversPJI3ZOHC4s\n3wsIYr5av54/0o4zspx3Fw0Uuj/8us4YEt5FCDHQ37FcDRVeTPt0E+qCQh46eIxu37+NxnyRfe6S\n28KOBZiubcUIq5lUIUSD4l4vNcWmpKbY/gBexNPdjwc0AJEx+v3xjU1j1y/OPDRq6A5HMAuG7eQ/\nIrlxhY0a9S7MUVErwUT6oUJOHSvC6XCz4ZdMmiWfP1F1plXqcro5M66sEmAvrBzDS5fL3+npvLx0\nKf3fnYLBUjnyP2j1Boa8PdGsNRi/CubZ/QovpkC3XQcZdks31N2uKb5SZDgs/BLTW/+hvsnARo1a\njCgpKUNqiu0E8C4wG4gDQgD0RnV+fGPT9/ZC97LXb9/hXLsw8D2pXz2/n3dG7CL9YBHP9NrCqjmn\nmDnmKK8O2sZrg7ez689cBj5ZAwDbSTujH9sDgFojGPJMHJ88soeX+2+nzQ3hVK/9j+huWmkjPtFM\naBUtJquGuAZGXh20DYdDoUb9Cp1A6IrI9y4XTbppqNKgQ3d/h+NTajZpS8vew/Q6o3mUv2O5Uir0\nBFSfbqJq2gm+2nuEnnsWo4kIu7TjtuyCWx4i75SNX3LyuFNRlBIHQpslhzUCHsQzjnoMUACyTjmq\nnjhcNKTxNSHm4S/W1BjMcilqeRLsE1APzZ7N0vQM5fF5u4SqDJehBgu5mSd5t3eDAkdBXjNFUXb7\nO57LpcL+x/p0EyqHkxF7D9P185cvXUgBmjSArfMwD+jBjWYjO4UQ7Uqqn5pi24Gn278ZT7dfDxBa\nRZteu7Fp3J5Nudte6r/NcWDbheOOEgnAnG3bmLN9OyO/TqmUQgpgCY+i68intXpzyMf+juVKqMj/\ntWt27mdI6yT0A268/INNRpjwBobv36aa1cwKg178rxRPajYwDvgWj30qEkCjUzlqJphm6YyqOR/c\nt9u++Lvg9qRKyp7DNhsPzZ5Nj2dGV4jloldDx9sf16g1mi5CiBIG5QKTCimmfbqJsIwsHjmZQeKE\nUWivJmPebd1h61yMSfV5zmpmlRCienF1U1Ns7tQU2wo8FqpcoCbe97haLcPfNRoaP1vyXfrJD+7f\n7cg65SjuZSSVCKfLxdApU6jRMllp03eEv8PxOzqjiZ5PvG3Um0M+C7ZE0hVOTPt0EwIYvP8I1z57\nL6q4YqXv0qkZA2snY358OK1NBrYLIXqVVN/rSX2Nf3tSQzS22k3MX546VrTu5QHbnH+vqRieVMmV\n89bKlRzOL1LuGD0nqISjPGnZe5gwh1epB9zi71guhwonpkCTo+nc6nJR9ckRZXd9Gg28/hjaxV8R\nGhXBNItJfHaJntRP8Mz0ezypKuGOa2BaFl5V99Pnz+wrmPx+8HtSJVfG6gMH+HTtWu74bHGFXC56\npajUavo884lFZ7KMFUIEzZLCCiWmfboJvVvhzoPHaP3Rc2gN5bDf3bWtPZ7U5DYMt5jYLIRoWFxd\nryf1TzyTU4fxJEzxeFKr6w7ENzaN/WNJ5sHXb9/hSD8UvJ5UyeWTmZ/PsKlT6TDyWWIaNfd3OAFH\ngw7dqV6/SZhQqe7xdyyXSoUSU6DzvkO0iYnGMrjEjvjVEREG8z/H9O7/Uc9k4C+NWowsxZN6Eo8n\ndSZQA8/qKfRGdX6txqYfHEXupaOG7nCsmXdKzkxVAhRF4Z6ZMzHXqKdcf/+L/g4nIBFCcPPTH5s1\nOv1bQgirv+O5FCqMmPbpJkIcTgYdSaf1Zy+jK++hayHgwSGo1k3BFB/LaKuZWUKIC/PUeUlNsTlT\nU2xzgLfwrGqPBYQQgpi6xvXVahsmTPngaPbnz+xzFORWjDypkoszYcMG1h9LY+T45XKctARiE1rQ\nsFMvrUZvDOz9rL1UGDEFbtp1gBZd2qLp2NJ3J01qAFvmYh7cix5eT2qJlo7UFNtO4CUglXM9qZHa\n9NpJpnH7UvO2vdx/m+Nia+Elwc+29HRe/OUX+r0zqdIsF70abnx0lAmUx4UQF2brDjAqhJj26SZi\nCovoffwUTT56Fp8PWBsN8OVrGH54h6pWM8uNBvGiEKLY5U5eT+qnwDd4PKlVADRalaNmgmm23qSa\n/cEDu+2LvpGe1IpEgcPBkEmTSew5RGnY8QrMz5WQyLi61GnVGYQI+G0Ggl5MvVaoAXsO0vCWboi6\nNf0Xy603wN/zMDZpwDMhHk9qTHF1vZ7UlcArQDZQC+//o2otw7aaDY2f/vJj+on379vlODfpiCR4\neWrhQvINFuW2l76U3fvLoMuIZ8w6o7nERTOBQEAHd4k0KLLT9kQGTV55GL/7S+Kqw++TMP/nLlp5\nPam9S6qfmmI7jMeTuhxPt98MYArRZMUnmb/KSLOvfWXANueW1Rffg0kSHMzbvp1Zf29j5ISVlXa5\n6JUS37ITIVExoUBAN+eD+r/qbZX2232Q2jd0RDSo7e+IPKjV8MojaJeMJyQqgilWs/hcCGEorn5q\niq0Q+BH4CLDg2SIFlUq4azQwLQ+vpvvxq2f3F0x695DLYZee1GDjSFYWD86aTfenPyGsepy/wwk6\nhBB0vfsZi8Ea+oK/YymJoBZToJ7DScKJ07R87VHfj5WWRqdWsHMhpi5tGWY1s0UIkVBcXa8ndSMe\nT+pBzs2TWl13sFZj05g/l9oOvD5kuyP9oPSkBgsut5s7pkwhpkUnpe1tI/0dTtDStPtAUGguhGjs\n71iKI2jF1Nsq7bvrAPHXtkbVpNh0zv4lPBTmforp/aepYzLyh0Yt7inFk3oKeA+YgSdP6hlPakGt\nRNOPTofyy6g7djhWzz2lVOT0iRWFt1eu5EBegTLsE7lc9GrQ6PR0vP1Rrc5kecbfsRRH0IopEO90\n0eRkBq1Y4rElAAAgAElEQVRHPR54rdJzEQLuG4hqw1RM8TX42GpmjhCi2KSAXk/qPOANb1EN/vGk\nbqhe2zB+2odHsz5/ep8zP0d6UgOV3w8eZOzvv3uWi+p0/g4n6Llm4AMat9M5QAhRxd+xXIxgFtOb\n9x0mtllDVK0CtuF/Pon1YMsczENu4gavJ7VDSfVTU2y78HhSN+JZiqoHCInUnohPMn26f0v+1pf7\n/+3Yt0V6UgMNW0EBw6ZOpf1dTxHbqIW/w6kQWCKiSbr+NkWt1T3k71guRlCKaZ9uoibQMiOLJk/d\nTVB95RsN8MWrGH56j2irmaVGg3i5FE9qDh5P6gQu9KTOMVjUMz96cLd94YQ06UkNEBRF4d6ZMzFU\nr63c8OAr/g6nQtF5+H+NKrXmCSFEwH3ug1JMgV7pp7EICLsp2d+hXBm3XAfb5mNs2pCnrGbWCCFq\nFFfXOzmVArwMZHFOntSqNQ074hoaP1068UT6e/fscthO2n1zAZJi+fbPP1l75Cgj5HLRMqd6g6ZU\nq5ekAW71dyz/JujEtE83EQm0PZpOg0fuQK0O4m2ValSDNRMxPzmCFkYD24QQJeZvTE2xHQFeB5bh\nMfmf60kdn5luX/ty/+3Ozb9JT6q/2HHiBM8vWcJtb0/CFHIZe+VILpl2/e+zGq1hd/s7jn8TdGIK\ntC8sQpuRRcJ9A4Iy/vNQq+Hlh9Eu/RprdCQTLWbx5SV4UidSjCc1Mkb3w/j/7c+f+Lb0pPqaQoeD\nwZMmkdB9oNLo2p7+DqfCktjlZuxFBZ0DLZtUUIlRn25CC/TYfZDqN16LUjUg5/SujA4tPJ7U665h\nqMXEViFEYnF1vd3+TcALwAHOyZMaUU13qFaieexfy237Xx+y3ZG2X3pSfcUzixaRpzO5+706QXbv\nyxFjSDi1mrW3Azf7O5ZzCSoxBZIUBYsth7b/vTOw7VBXQlgIzB6L6aPnqG0yskGrEfeX4kk9DbwP\nTOO8PKmqglqJpp+cDuXnN4ftcKyaLT2p5c3CHTuYtvVvRkxYqZLLRcufVjcPC7iufrD91288mo41\nzIrel2n2fIkQcE9/VH9Mw1S7Bh+EmJknhAgvrr7Xkzqfi3tS/6he1/DV9I+P2j77v32O/BynT66h\nsnEsO5v7Z82i+/99SHhMLX+HUylISL4Ze2F+x5JyCPuaoBHTPt1ELNDgRAZ17u53dTuOBgMJdWHz\nHMx39OF6rye1Y0n1U1Nsu/F4Uv/C0+03AIREaE/GJ5k+PbAtf8tL/bY59m7OLf/gKxFnlotWa9pB\nadf/Xn+HU2kwWsOo3bKTHejj71jOEDRiClzrcuHKzKbxkJuo4FLqwaCHcS+hn/QBUSEWfjEaxGuX\n4En9DBiPx48aBaDRqpw1G5nmmazqGR8/tMc+/6s0t9slu/1lwXu//sq+nDxl+Jh5leKeDCRa3jzc\narSGBUzCg6AQU+/EU+dDaVjq1EDxZ85Sf3BzV48ntXkC/7WaWXcJntRf8XhSMzknT2p0TcPOuEam\nccsnnzz+7j27HJknpCf1alh36BCfrF7N0E8XyeWifiChc28cRQXtS1qa7UuCQkyBBoAxM4ukEbcF\n14qnsiK2Kqz6EfPTd9PM5PGk9i2pfmqK7SgeT+ovnJsn1arOjk8yjbeddKx5ZcB2Z+qvtnKPvSJi\nKyjgjilTaDf8SWoktvJ3OJUSgyWE2q06O4AS/dm+IljE9BqnE2dGFg0H96ocXfyLoVbDCw+iWfYN\n1qqR/GQ1iwlCCGNx9VNTbEWpKbaJwAd4xLQ6gEollBr1jSsjY3TfT3jhQP5Pbx5yOYqkJ/VSURSF\n+2fNQlc9Xunx8Gv+DqdS0/LmYRZjSHhAbAcd8GLap5swAO32HyGsaUPcMdH+jsj/XNMcdi7CdH0H\nhlhM/F1ajsfUFFsqnjype/FMTmkBIqrpDsc3No/ZuNK279XB2x1p+wvKP/gKwPd//cXqw0cYOX5F\npf1iDxQSrr0Je0F+WyGE33cnDHgxBRoBmuw8mlbWLv7FCLXCzNEYP36eeLOR9VqNePASPKkfAFPx\nbDMdBqAzqAprJZomKm5l8ZvDdjp+nXlSelJLYOfJkzy3eDG3vvmDXC4aAOjNVqo3aFoIXOvvWIJB\nTDu53BRlZlG7dxd/hxJYCAF390P8OQNT3Tjes5pZIISIKK5+aorNlZpiWwCMAlyc40mtXsf4V0xd\nw5czxxyzffqk9KRejEKHgyGTJtHghv5KYnJALb6p1DTq3Mui0Rt7+DuOgBbTPt2EGWiedgJ9TFWU\n2Kr+jigwaVgbUudgHn4L3bye1BK/pVNTbHvwzPb/wTmeVGuE9lTtJPOnB7fnb37ptm2OvanSk3ou\nzy1ZQrbGoAx47RvZvQ8g6rbpqtLo9L38HUdAiymeWXz1yQzq3dLN/zuPBjJ6HYx9Ef2UD6kSamWJ\nySjeEEIU+56lpthygS+AL/F4UqsAqDXCWbORab4pVD3j44f3FM37UnpSARbt3MmUzVsYMWGF3F00\nwKjRuDXOooK4knplviDQ74rmQFGRg8TeXQI+1oDgpi6wfT7Glgk87vWkFuvK9XpSV+FZOXXGk6oG\niI4z7KyZYBq3YurJtHdG7nRkpldeT2padjb3zZzJDU++T0RsgGyBKzmLRqujRuPWhYBfsxsHrED1\n6SZUQMvcfApz8wjrKHd+uGSqR8OvP2J+9l6amgxsFULcVlL91BTbMTzjqD/jEVQLgNGizolvbJqQ\nddq5+pWB252bVlY+T6rL7eaOqVOplnSNcs2A+/0djqQYGnbsadUaTDf4M4aAFVM8kyOmw8eJ69QK\nl1xgcnmoVPD8/WiWf4u1ehQ/WM3iGyGEqbj6Xk/qJDxZqEyc70lNqRKr++7rlw7k/fDGQae9sPJ4\nUj/47Tf2ZOcqw8ctkOOkAUytZu2FRqfv6s8YAllMGwCioJCE226QlqgrpV0z2L4AU49ODPJ6UpNK\nqp+aYtuMJ0/qeZ7U8Kq6I/GNzWNTU7L2vTZ4u+PYvorvSd1w+DAfrVrF0LEL5HLRACc2sRVF+bl1\nS1rEUt4Espi2A7Jz86jVtZ2/QwluQq0w7WOMo/9HLbORdTqteLgUT2oGHk/qFC70pE5SFGXRW8N3\nOlKmV1xPalZhIUOnTKHt0CeIS2rj73AkpaAzmoisUacA8Nva3oAUU68lqk52Li6XG12DeH9HFPwI\nASNuQ/zl8aS+YzWzWAgRWVx9ryd1IZ71/S4gjn88qRtj6hm+nDXuWOa4/+x15GVXLE+qoig8MGsW\n2ug4942PvVH6AZKAoE6bLnoQ7f11/oAUU6AOINJPE9syEVdFz13qSxrUhk2zMY+4jWSTx5Na4gxo\naoptL57Z/g2c60kN156qnWT+7NDOgtSX+m1z7N5YcTypP2zcyG+HDjNywopA/XxILkLtlp30xpAw\nv5n3A/VmqQO4c/KI69pOjpeWNXodfPI8+mkfERlqZZHJUKonNQ+PJ/ULIBJvnlSvJ3WBOVQzffSj\ne4rmfHbMFeye1N2nTvHsokXc+sb3mEL9aluUXCbV6zfF7XKVmKeiPAlUMU0Cclwu6nRoUXmzRJU3\nvZI9ntRWjXncamaDEKLYPTe8ntTVeFqppzjPk6rfVTPBNC5lxqm0t0fsdGQcD05PapHTyeBJk6h/\n3a1KYpeASeAuuUQiatTBUZhXRQjhl/3hAk5MvYmga7vc5GZkEdWuqb8jqthUj4aUHzD/7wGSjB5P\nav+S6qem2NLw7De1BKjJ+Z7Ur3MynKteHbjNuXF58HlSn1+yhCyVThk46nv5BR6EaHR6TKGRhXjy\n9/qcgBNTPP5GceI0UTFRuEIDamfsiolKBc/cg2bld1iqR/Gd1Sy+K8WTak9NsU3G40k1co4nNba+\n8dcqNfTfffPKgbzvXw8eT+qSXbuYlJrKXeOXy+WiQUxkzXouPLZKnxOId00NQHUqk9j2sovvU9o2\nhR0LMfW8lgEWE9uEECX2C1JTbFvweFJ3829PapJ5zOZVWXtfHbTNcXRPYHtSj+fkcO+MGVz3xLtE\nxtX1dziSq6BavSQDUkzPkgAUOpxUb5OEX8Y+KjMhFpj6McZxL1HTbOR3nVY8WoonNRP4CJiMx5Ma\nDqDTq4pqJZgmI1j49l07HSumnghIT6rb7WbY1KlENW7j7jD4IX+HI7lKousk6vVmq18GBwNRTBOB\nLLebmMb1/R1K5WX4LYiNMzHVq8lbVjM/X4IndRHwGuDg3DyptY2bYuoZv5j7WVrGmMf3OvKyAsuT\n+uGqVeyyZSvDxy4MxM+C5DKpUqs+ao22iT/OHVA3kNesHw4UZucSmSTF1K/Uj4dNszCP7Ednrye1\nS0n1U1Ns+/DkSV3PeZ5Uzen4JPNnR3YXbHqx3zbHrr9yyjv0S+KPI0f44LffuH30PKEzGPwdjqQM\niKpVH6e9yC+pvQJKTIFoQMkrwKgoqKtH+TsciU4HHz+HbuZoIsNCWGg2ircvwZP6FfA553tSXTUb\nmRZawzXTxjy2t2j2uGNul9N/3f6swkKGTp5M6yGPUrPZNX6LQ1K2hFaNw2kvCilpArW8CDQxjQJE\nRhaRtWJxypVPgUOPTh5PauskHrWa+VMIEV9cXa8ndQ0X8aRG1dDvrplgGvvbrFNH375rp+N0mu89\nqYqi8PDs2aijYt29nnjb5+eXlB8qtZqQqOr5QD2fn9vXJyyFOMCVk0tkQh05kx9oVIuCFd9heuFB\nGpsMbBFCDCyp/jme1EWc70nNjU8yfZNrc/z66qBtzj+XZZZ/8Ofw06ZNrDxwkLu/Tgm0+19SBkTF\nNwQ/zOgH2s1UC8gvLKJKkwZyJj8QUang6btRp/yAJTaab6xm8YMQwlxcfa8ndSrwHp4x1BgAIYQS\nW9+0KipO/+13rx7M/faVA86igvL3pO45dYqnFy7kllHfyeWiFZSo+IYGPGP2PiXQxDQWyBcqourG\nyZZpINM6CbYvxNS7C/28ntRmJdVPTbFtBV4EdnKuJzVad7R2knns379n73l10DbHkd3l50k9u1y0\nyy1KUre+5XYeiX8xhVfRCZXK5/twB4yY9ukmdHhm8otcLkLk5FPgYzXDpA8wfvoycV5P6uOX4En9\nGJiIp4UaDqDVq4pqJpimCBUL3hmx07F8cvl4Ul/4+WcyhVYZ+NaP8ou6AmOwhKLVG32uIAEjpkAE\n4AYosmOJifZzNJJLZlgfxKZZGBvE84bVzFIhRJXi6no9qUvweFLtnJsntbYxNba+8fN5X6RljH50\nryPXVnae1F927+anTZvk7qKVAIMlBLVGW6wvurwIpLsq5MwveQUYZcs0uKhXC/6agfneAXQyGdgp\nhOhWUv3UFNt+PJ7UtXi6/UYAS5gmI76J+bNj+wo2vtRvm2Pnn1fvSU3PyeHu6TPo9thbcrloJcBg\nDkGoVD4fEA8kMbUCwu5A63ajCgsptb4kwNDp4INn0M0aS0R4CPPMRvFuSenQUlNs+cB44DM8Xf5o\nALVauOIamhZZIzRTxz6xt3DW2KNX7El1u90MnzqNqMRWSsfbH72i15AEFwZLKHi32vElgSSmFkCV\nk4clIlR6TIOZ7h09CVPaNuVhrye12JlVryf1dzye1HQ86dPOeFL31EowjVs1+/SRt+7c4TidVnTZ\nsXy8ejU7bDZl+LhF8o6qJBgsobjdbp83xwJJTKsAzrwCrNGRBF5GDMllER0Jy77B9NJDJJoMbFap\nxKCS6qem2I4DbwEL8HhSrQAGszo3Psn0bV6WK+XVQdudf/xy6Z7Uv44e5b1ff2XwJ3PlctFKhN4S\nguJ2WXx93kAS0yigqKAQS6ycfKoQqFTwfyNR//Yjlthovg6xiJ8uwZM6DXgX0HGeJ9W4Orqm/psf\nRh3M+eblA86iAleJ584uLGTIpMm0GvQw8c07lOVlSQIcgzUUl9NR7H1WXgSSmEYAdqcTfXhoQMUl\nuUpaNobtCzD17sKtFhPbhRAtSqqfmmL7G48ndQeeySkdQFiU7lh8knnstrU5u14ZsN1xeFd+sa/x\n6Ny5qKpUd9/033fL8EokwYDBEorLbjeWZNMrDwJJtCIBu8uN1mqWhv2KhsUME9/H+Pmr1DAbWa3X\nif+W4km14fGk/oQnk38EgFanstdKNE1TacT8d0buciydmH6BJ3Xipk0s27efkRNWBtL9LfERGq0O\noVK58TpEfEUg3WwhgN3lQmsxBVRckjJkaG/E5jkYG9bmNauZ5UKIYk1wqSk2d2qK7WfgVaAQrycV\noHptw+Ya9Y2fLxyfbvvk4b3unEyPJ3VfRgb/t2ABfV79Gkt4sXZXSQVHazA5gFBfnjMgRKtPN6HG\ns7zQ7XKjDbEERlyS8qFOHPw5HfN9A+ng9aReV1L91BTbAeAV4Hf+5Umt28g6JXufcurlftscuTan\nmLBhA3WTb1aa3NCvvC9DIjmPQBEtDXhm8FUq9CY58Vrh0Wrh/afRzRlHeHgo88xG8cEleFInAOM4\nx5OqUgt3/ejIozWNUSuzM11EREYz+O2JcpiokuN2OlR4ejM+I1DEVItXTIWQYlqZuL4D7FyI8Zrm\nPGA185cQok5xdb2e1HV4JqeO4/GkakBooyKiqrtVGmffUT8gl4tKXE6HmkovpqA3+XTYWOJvoiJg\n6deYXnmEBKPHkzqkpPqpKbZ0PJ7UeQpEuYUh/LhLydZbQpS6bbv4JGZJ4KIoCm6XUwNc/iqPqyCQ\nxBQABbR6nT9DkfgDIeC/d6Fe/RPmGlUZH2IRk4QQxRqvU1NsjtQU2wyVq9qUQp2p8HhmhrtZj0Eq\nH7thJAGIy+lAqFQuRVHKP0HuOQSSmJ7xt7hdJfuxJRWYFomwbT6mPl3pazTwd0njqABOVYw+zxix\nzl6Y36Rp9wFqX8UpCVycRYWo1Bqfb4MbSGJ6BpcjsHYDlvgYixnu7ItBryVPURRHcfUSk3urHFp9\ny+yc7HyEMMU1aevLMCUBitNeiFCpir1vyotid5n0MeeKulOKqWTyQgpz8viulGo1gZCs9KPxTa7v\np5ITTxIAp70IlUrtczENlLvv3LEN2TKt5LhcMP1nFJeb6aVUbQq4HUWFzZr1GCi7+BLgbMvU59ve\nBoqYnh0lVRRcdp9/p0gCiVV/ghAcUxRlb3F1EpN7C6Bzfnamy+Wwh8S36OTDCCWBjLOoECF8L6aB\n0s3/p2Wq4HBIMa3UTFlEUX4B35dSLRaIyDp+OK5xt76o1LJhKvHgsBchVCqf2qIgEFumsptfqXG7\nYcoiXA4n00qp2hTAUVTYvNmNgwKlUSAJAOx5OQgh8nx93kARUzfeBBYC7Dl5Mjl0ZWX9ZnC6OK0o\nyvbi6pzp4hfmZtsdhflhdVt38V2AkoDHln4YRVH2+/q8gfKN7sLrM9VqyT9+Cifn26UklYSpi3EU\n2fmxlGrVgOjMtIPVG3W+SVFr5a0i+Qdb2mGlKD93h6/PGygtUxfelqleR376aXy6ckESGCgKTJyP\nvcjOlFKqNgFw2ouaN79xsFRSyXmcPrynwO10HPD1eQNFTAs5R0xPnPZzNBK/sHEb5BeSA2wuro63\ni39tUX5uUVFedlS9a673XYCSoOD04b0O4JCvzxsoYlqEp5svjHryT9v8HY7EH0xdgtPpZNIFqfPP\nJwqIzTx2IK5B++5urV6mGJOcj+34YRVw0NfnDQgxnbtcUYAcQGs0kG/LQfpcKhmKAj/No7CgiMml\nVE0CcBYVNW/ea4js4kvOQ1EUcjNOGIHDvj53QIipl2xAazJSkJuP2i1HTSsV2/ZAZhZFwIZSqnay\nF+YXFeTaqjXo0MMXoUmCiDzbKVQqlV1RlBxfnzvgxFStwq3X4szM8nc4El8ybQkuYGpJXfzE5N6R\nQO3Moweq12ndxaUz+nw3X0mAk5V2GK3eeNwf5w4kMbXhtUOZTeQdPObnaCQ+5Yc55OcVMLGUaomA\n4igqaN6i1xCZ9VZyAbbjhxAqlc8nnyBAxVSvI2OPX94OiT/YfQCOn8INrCml6rWOosKiguzMGo2u\nvckHkUmCjcy0QzjtRbv9ce5AEtMM/jHqp0sxrTxM/xm3SsWMkjKjJyb3DgPqZR47ULVW8w4ugyXE\nhxFKgoWMo/vs9oI8KaZ4E57oNJzetgeZ7qSS8P0ccnPzS+3iJwDYC/Obteg1VHbxJRflUOraAkrw\nKZcngSamAFjMZOzYL1dBVQYOHoUDR1EBKaVUvdblsBcWZGXWSkju7YvQJEGG2+Uife/fRkp3hJQL\ngSSmmXhXQYVayPB+wAKWwiJoNwia3wqJveG5Dz3lGTa4YSQ0uBG63w227Isfv/g3aNQL6veAd776\np/yZ96FZX7jz2X/KfpwLn5SWkC5ImfEzilbDHEVRis0Vlpjc2wo0zDh2sEpsYkunKTTChxFKgoWT\nB3ei1ugyFUXJKL122RNIgpULOAB1qJXsrBzUBT7d9fryMOhhxbewaRZsng0r1nmSGr/9FdzQAXYt\nhuuu8Tz/Ny4XPDIKFn8F2+bDpIWwfS9k5cDG7ZA6G3Ra2LoLCgrh21nwyFCfX6JP+H4OOTl5/FRK\ntQRA2PNzmrXoNVTvi7gkwceRrX+g0mjW++v8ASOm3lVQxwGjSoUSYiFv1wE/B1UKJqPnp90BLjeE\nh8DcFXBnX0/5nX1h9rILj1u/GerVhPhY0GphcC+YsxzUKnA4PauB8gs9f3v/a3hsGFTE3MfHTsDO\n/WiAi7xL59HB5XQW5Wdl1kns2scXoUmCkIObfy8syM5c4a/zB4yYejkGGAGMBo5tLDajZWDgdnu6\n+VU7Qde20Lg+pJ+GqlU8f69axfP83xw9AXHV/nleoyocTffsytmrM7TsBzHREGKG9VugTzffXI+v\nmfkLik7HYkVRit1iIjG5txloYks7GF61XmOXNbKqDyOUBBMH/lplB2TL1MshvGKqEhxcm/pPBv5A\nRKXydPOPrIRf//B09c9FCM/j31ys7AxP3Q0bZ8J7T8FLY+D1x2D8NBj0H3jj8zIN3+/8MIec7Fx+\nKKVaI0BVmJvdpMVNsosvuThOexGnj+wzARv9FUOgienZZWDhoaT9vpGg2MAk1Ao3JcOff0PVSDh+\n0lOedgKiLzJXEhsNh89Z8Hb4uKd1ei4bt3l+NoiH6T/DlI9g72HY4/NcOOXDyQxI3YEOWFJK1Wvc\nLldhfnZm/aTrbvVFaJIgJG3XZnRG82FFUfL9FUOgiWka3oz70RGk7TyA1hmgcnoq85+Z+oJC+GUN\ntEiAPl3hu9me8u/mQN/rLjy2dRLsPggHjoLdDlMWXdiVP9MqtTs8E1YAKgEFPt8mrHyYvRSMBpYp\nilJQXJ3E5N5GoLnt+KHQKjXruUOjY30YoSSYOPL3Hyhud2kr6MqVQBPTk3iy7quNBoqMBvJ37PN3\nSBcn7SR0u8szZtpuENzcFa5rD8/e6xHWBjfC8rWe5+CZbLnpfs/vGg2MfQF63AOJN8OgnpBQ95/X\nnrMM2iRBtSgIC4HmCdD0FiiyQ5MGPr/UcuGHueTYckrdgbQBoC7ItjVucZM06oPHSzl6SBu+e9wz\ny7n089d468bajB7ShtFD2rBz9cUb+jtXL+HD25J4/5ZEUr5972z5ok+e45NBrZj60sizZRsX/MTq\niWPK90LKmAObVucV5WWX5lUuVwJlDygA5i5XXH26iQN4EgBnmY2k/bWN+kkBKCBNGsBfMy8sjwiD\npd9cWB4TDQu++Od5z86ex8W45TrP4wzvPeV5VBQys2DdZnTAwlKqtnO73faCHFujpOtuLWGkufKw\netIYouskYM/zZpgTgk53PM61dzxR7DFul4u57zzBPZ8vIiQqlnHD2pPQuTchUTEc25nK41P+ZObr\nD3B8z1Yia9Tlz3k/MHLcAh9dUdlwMPV3N34y658h0FqmADsBK4BKcCDQJ6Ekl8+8FWAyskpRlNzi\n6iQm99YDrbPSj5hDq9VQImJr+zDCwCQr/Qg7Vy2mTd+RnM1UqCieRwkc3rqByLi6hMfEo9Zqadpj\nINtS5iHUatxOB4qiYC/MR63R8usPH9JhyMOogsiLl5V+hLyMkypgqz/jCEQx3Y93JVRkGIeXrQ2O\nSSjJpfPjPHJs2XxXSrX6gCY/63Rii163yy4+MP+D/6PXE28hVOd8bIVgzeRP+WRQK2a8eh8FORfu\n+ZN98ihh1WqcfR4aHUv2iWPoTRYadryRMbe3JaRKDHpzCEe2biAx+WZfXE6ZseO3hWh0+p9LWkXn\nCwJRTNPO/BITzdGDx9CczvRnOJKyJCcPfv0DHTCvlKptFEVxFOZmJza5vl+l7+Jv/3UBlvBoYhq1\nOK8les2A+3l6/i4em/wH1irVWPjh0xccK0rw4nW+80kem7SBXv95m6Wfv8oND73ChllfM/GZ21kx\n/q1yuZayZvOSqdmFuVml7Whb7gSimJ7AOwmlVuOOCOXoCr/ZcCVlzYKVYDKwQVGUYrdNTEzurQXa\nZZ84ajCHVVFFxTf0XYAByqHU39n+63ze7d2Ayc8PY++GlUx9cQSWiGiEEAghaHPrSA7/feGwYUhU\nLLbjR84+z0o/QmjV850Rx3Z47JlVajZgy9KZ3P7ORE4f2cepQ3vK98KuEntBHgc3rzMAi/0dS8CJ\n6dzligvYDoQBaDTsWPSb7OpXFH6aT25mNt+WUq0eoMvNPNmoea/b5aZ5QI9HR/Hson08PX8Xg9/6\nkbptujDw9W/IPnm2I8ffy+dQrV7SBcfGJrbi9OE9ZB47gNNhZ/PP00jofH7mrV8+e5UbHnwFl9OO\n4vZMUwiVCmdRsc61gGD32qXojKZURVH8vtFRQM3mn8NfQBPgdNVI9v+8WqbjqwjkF8DSNWiBOaVU\nba0oirMoLzep6Q2yi38BinK2677ok+c4vmszCEFEbDx9//cpANknjzHz9Qe5a/Qc1BoNfZ75mK8f\nvgm3y02bvncRXSfh7MttWzmXGo1bY63iWeNcvUEzPhnYkmoNmlKtfhPfX99lsHXZrPyCHNuP/o4D\nQCQ5aUoAACAASURBVJS8Rbl/6NNNxAGvAofcbsSKdTy7cxG6GtVKO1ISyMz6Be5+gQ0ZWUrb4uok\nJvfWAJ9kn0wz5pxOH/rson26ksb8JJUXt9vNa8nRBUV52Y0VRdnv73gCrpvv5ShQBGhVKpTwEA4t\nW+vvkCRXy8T55GVmcxEX7nnUAYy5p9MbNrtxkEYKqaQ4jmzdgBDiRCAIKQSomM5drriBVLzjpjot\nO+Ysl9uYBDNFdljwKxpgVilVWyiK4ioqyGvatPuAgLw/JYHB3yvnOJ32wqn+juMMgXyzbsKbQSou\nhl1LVqGyF5uoTRLoLF0DBh07FUUpdk/zxOTeaqBjbsYJodHq9LEJLX0YoSTY2PLz9AKnvegi6xD9\nQyCL6dmme6iFHIuRzBS/LhaTXA2TFlBgyym1i18LsOScOl6/afeBKtnFlxRHxtH95J5OV/Bj/tJ/\nU6KYCiFy//X8LiGErzIgnMCzL5QJQK8jdepiaZEKRhwOmL0coSiU1opoAbjthfnNmvYYEDzrGSU+\n5695PziFWj29pO3BfU1pLdN/T/X7bOrfu43JaiACoEY1tk//+Z90dJLgIWUDaNUcUBTlUHF1EpN7\nq4BOebbTCgqmuCbtfBihJJhwu1z8PvUzuz0/d7S/YzmXy+3mn+13CSHihRDLhRCpQoilQog4b3ld\nIcRaIcRmIcQoIUSOt7y6EOJXIcRGIcQWIUSnSzhf6pkYq4RzWq0iZ9WflxmxxO9MXkhhTl6pRv04\nIDQr/WjdJtffplKpAnkESuJPdq5ejNvpPKAoSqq/YzmX0u5Yo1f8NgohNuLxfp5pnY4BvlEUpRnw\nE3DmW+IT4CNFUZoCh8+pfzuwWFGUFkBTPBNMpXEAyAd0ACYDG3+aL7v6wYTLBdOXoLjcTC+lajNA\ncRQVNGvaY6Ds4kuKZfXE0bmFuVnv+zuOf1OamBYoitLizAN4iX9ap9cAE72//wh0Oqd8mvf3SefU\nXw+MEEK8DDQtKf3aGbxLS9cAVQDiqvH3tMUQqNn3JRey+i9AkKYoyt7i6iQm9xZA5/zsTKfLYQ+J\nb3EpnRZJZcR2/DAHN/2uAvye2OTfXHE3v5jnxaIoym/AtXgM+d8KIYZd4qF/4F32GhlOhk5LxqLf\nLvWsEn8zZRFF+QWlZtSPBSJsxw/XbtztFtSaQF3lLPE362eMd6rU6p/8uddTcVzNwNSa/2/vzsOj\nLM/Fj3/fmSyTjSwkIYQkQFgzQNhccGsUd8xJa61ai0vbc9RaK/XY0/5qj/5srbWbtdZdSyuIoKIg\nDJFFJRhEQBFlkSDIkpANCMkks8/7zsxz/nhfEJVkEJKZTPJ8rmuuK0yezNyjyX096/0A3ze+ngms\nNb7eCHzP+Pro91EUpQhoEULMBmajr9yejL3oQ/1EgNQUNjw+D7njNAaEQvDqCoJa4NhIpTOlAAG/\nb9LEy6+XmVQ6oWAgwMbXnlVVr7tX3qlyKqv5R5+7C33YvhU9mf7ceP5u4B5FUbYAI4Cj1VwuArYo\nivIxcB363GpYxlD/PYyh/sgiat7/GFPjoZP5aSmaNm0HLUCrEKKmszbGEP8Cn8uhaj5PZvGZF0Yu\nQCmm7Fq3HBEK7RNCbI92LCfSZTIVQgz4yr/nCiFmGV8fEEJcLISYKIS4VAhxtGBioxBimhBiEvod\n1puO+9kJQogpQogyIcQ3ubR4A8ZQPzEBNSuDHf9eLCtJ9XavrkDzq4Sr6JMH5Nmb64rGXjBDxMXL\novrSia2b/7izNy48HdUT+0+mKoqyxeix/gT4RTe8Zr3xSAfIy+bDZ14mGJLptNcSAhZUovpVwp2d\nHgeIgN83eeKV35e1S6UTsjfVUv/phyYI+/sUNd2eTIUQ64QQk4we64VCiNO+rNnYwL8Ko/DJ4Bya\nVA3Xmg9O95WlnrJlJ7i9uND3Cp+QMcQv83tcqt/tzBk17dLIBSjFlI2vPaeZTOZ5QoheW606lnZG\nbwECQJyiQGoyG594SVaS6q0WriIQDPKy6Lpgbg5QYG+qHTLq3EtD8YmWSIUnxRCvs52NC58Nql53\nrx3iQwwlU1uVcKPvIMgBGDWUrW+vhwNN0Y1LOrH5NnxeP6+EaaYP8VX/pElX3iCH+NIJrZv/eEAx\nmWxd7VXuDWImmRrWYpyGSrLgz8rg47/8G3lav5ep2QNtHfgJX9HnAs3n9Xmd7YPHnHdFJEKTYozP\n5WDdS48F/G7n/dGOJZxYS6b7gENAGsDwAta/sBjR1uk9l1I0LFxJEFjY1RDfWlaeBQxra6rNL55a\nFkxISolcgFLMWP/KU0FFMa0QQuyOdizhxFQyNRailmJUkspIw5GZxq4nF8htUr3JSzY8bi8vh2k2\nDkDzeSZNmnGD3A8lfY3f42Lt3EdUv9txX7RjORkxlUwNmwEXRhX+IXlU/30OIa8vukFJuj110NSC\nQJ/f7sr5AdXv9zrsBSUXXBWJ0KQYs27+P4KgvN3VoY/eJOaSqa1KqIANYyFq0EBaLIk0zF0S3bgk\n3etvETKbWCSE6HQu21pWngGMamuszS2aeE7QkpYewQilWOBub2XtnEc0v9vxP9/k5xRFCRpV7j41\n9rvfo0ToyoaYS6aGDejbpOIBBg1kzUPPoslqUtH34lJcLg/zwzQrARTV5544ecZMOcSXvubdf/1J\nQ1EWCiE+/4Y/6jGq3I0HLgWuBB7o/gi/LiaTqa1KuNA38Q8CKBzMAVXjyBzZO42qukaobcAEVIdp\nel5QU73eDvuwkrLySIQmxZCOw41sfP35oOpx/eZ0XkcI0QLcBvwMQFEUi6IoLxiF6z9WFOVC4/lk\nRVEWKoqyQ1GUxUZx+6mKopgURZljFLPfpijK3V29X0wmU8O76PGbFQUKBrH83kfR5Nxp9Cx6CxEf\nzzIhRKdjBGtZeRpgbWuqy8kvmRxIyRgYwQilWPD2M7/zK4ryrBCi8XRfSwixHzAripIL3AkEjcL1\nNwBzFUVJBH4KtAohxgH3A1PRCzpNBvKNmiKl0PWFkDGbTG1VohW9mtQggII8GuLjOPD4S5G7p0r6\nsnk2nA5X2MImYwFUj6t0ylU3JkYgLCmGNO78hG0rX1U1n+ehHnj589AL2SOE2AXUAaON518xnt8B\nbDPa7wWKFUV5XFGUywFHVy8es8nU8CZgxqgoVZTPyoefI9je5UeWekLzYdi5j3hgdZim5wYDAb+n\no63YelFFJEKTYkQwEGDhfT/0aKpvlhCitTteU1GUYvTe6OGjT3XW9KtPCCHa0a/TeRe9aNPsrt4r\nppOprUocBt4GBgPkZnEkLZmdDz8v951G2uK3EZZEVggh/J21sZaVpwCl7c11GYNGWINpAwdFMEKp\nt9vwylOi43DjDoSY2x2vpyhKDvAs+n11oI9kZxrfGw0UAbvQb0G+znjeCkwwvh4ImIUQi9GH/1O6\ner+YTqaGFUAQ45hpcRHvPL2AUNPhrn9I6l7zbDg7nMwL02wMoPhcjgmTr5oph/jSMe0H63nr6Qf8\nfrfjpjDFccI5egnop+gdrZXAg8b3ngZMiqJsQx/W3yKEUI3ncxRF2QH8HtiBXtR+CLDGuEx0HvDr\nrt445q+IsFWJjorpig24BqjLSMORlc5H9z7KGXP/FPufLxa0tMGWnSSg77DoyjmhYFD1Ouyjx198\ndSRCk2LE4t/f4RMi9FdjLvOUCSE6/Zs3Rk0/PsG3fMCNQgi/oigj0JNwnbGQOvVk37sv9EwBqtDv\niUoCGD2c6sVvE9h4MpdJS6dt6WpIslDVVa1Ja1m5BZjUfvBAWlZhcSh9UEEEI5R6sx1VS6jbur4l\n4Pf9IUohpADrjKuWFgN3dLUjpTN9IpnaqoQHeB3IBUi24Bucw/Jb7pUb+SNhng1nuzPsDaRjALPX\n0T5uylU3yo36EqBXhVr8+zt8qsd1Y1fz7T1JCOEUQpx5XFH7cCOsE+oTydTwPnAE42qTMcPZ3u7g\nkNwq1bPaHbBxKwnA8jBNzxahkOp1tpeMv+S7ETneJ/V+Kx//jRbU1EVCiLXhW/dufSaZGmf256JX\nlFIUBYoLWfLAEwTlTaY9Z9kaSElinRDC2Vkba1l5IjC1/VBDSvqgApE1ZHgEI5R6q/pPN/Fx5Ute\nv8c5K9qxdIc+k0wNO4APMLZK5WTRmpXOxjsflNeb9JSXluG0Owi3lWUUEO/paCuR5fYkgICmsvC+\nH3o1v/enQoi2aMfTHfpUMjXqnb5q/DMRoGQE1Ws+RF21Lnpx9VVON1RvIhFYFqbpGUIIzefsGDfh\nkmvkEF/izb/9MuA8cvB9hFgQ7Vi6S59KpnDsmOmrGL3ThHgChXksueXXaB2dDkSlU7G8GpItbDJO\nipyQtaw8HpjmONyYmJI50JQ7fGwEI5R6o09Xv8HHy160+z3O605zT2mv0ueSqaEaaMCoyF9cyJ64\nOGpu/y1ybb8bza/EZXcwJ0yzkUCCy36kZNKVP5CX5vVzrfV7ee2B//SrXvdVQgh7tOPpTn0ymdqq\nRACYAwxAP7vPuJG8uXIt3tdPadOD9FVeH7y9nnggXOHDqUKIgN/tHD/hUjnE7880v4+5P/+OGlD9\n/08IsSna8XS3PplMAWxVYg/6iZwhAIkJaMVFvPpf9xFolkdNT9uqdZCUyHYhxJHO2ljLyuOAc5yt\nB+MSk1Pj8kZNiGCEUm+z9I93BRwtzVWhgPZ4tGPpCX02mRreQL/NNAugYBCN6Wls+MEv0frOTE10\nzK/E0+7sur4jMBywuFoPj5l4xfVxEbo9QuqFPnlzAdvfWdTmdzuu70vzpMfr08nUViV8wHPoV0PH\nA4wfxbvbd9P+1AK5mf9U+VV4sxqzELwRpukUIUTI73GVTrjs2j79uyZ17vC+nSx5+E6/6nFdJoTo\nswUy+/wvuK1K1KIfNR0CYDYTGjWUV+99lMC20yqp0H+t3gCWBHYLIZo7a2MtKzcD57ntLSZzXHxi\ngfWk60VIfYjqdTP37qvVgOqfJYTYGu14elKfT6aGVcDnGFX5c7JozcuhcsZtaPaO6AYWi15+E2+H\nK+wq/lAg1dHSPLL0smtNcojf/wghWPTg7QG3/ciboWDgn9GOp6f1i2RqrO7PRi85aAEoKWaborD1\n2rvRQrKU9EkLBGDJapRQiNfDNJ0MhDSfZ2Lp5deZIxGb1Lusfv6h0K73VjR2Q43SmNAvkimArUoc\nQt8ulY/xuUvHsGLrLo488CSd3vEufVn1JoiLo04IcaCzNtaychNwnru9NSSESCkqnRbBCKXe4INF\n/xTvzft7h9/jPEcI4Y52PJHQb5KpYT3wDlAI+vzpuJEseGwuauWa6AYWK15+E5/LHfYsfiGQ0XGo\nYcT4i7+LydTffs36tx1rlrL80V/5VK/77K7m1fuafvVbbpzdfwXYB+QBDEjFNXIoC2b+ksCeuqiG\n1+sFg/D6KkQgyGthmpYCQvP7Jk28/Dp520E/sn/zeyy870eaEOJSEQp9Hu14IqlfJVM4VqrvaUBD\nPyFFYR4N2Vm8dcWtaPJm086t/wRQOCiE2NNZG2tZuQJ8y+uwB4OaOmDYlAsiF6AUVc27tzH37qsD\nQoSuVb3u96MdT6T1u2QKx4qhPIm+mT8BwDqCTX6VrVfciuZXoxper/XqClSvL2xF/SHAwPaD9cOs\nF1ZgjpMd0/7A3lTL7J9cHhCh4B2q17002vFEQ79MpgC2KrELmA8UYBSTnjiW5XVN1H7/FwTkCv+X\nhULwynICqsbCME0nACKg+idNvOJ6mUn7AZe9hef/6+JAKKA95Pe4urxbvi/rt8nUsBr9Lu0iAJMJ\nMamEhes203L3H+UK//E2bQctQJsQoqazNkeH+D63Q1O97qwRZ10UwQilaPB7XMy+/fKA3+Oa63V2\n/C7a8URTv06mtioRQr/qZCd6D5X4OAKlY5g3bymuR/6N7J8aFq5EU1Xmh2k2CMizN9UVjTn/ylBc\nvCyq35f5PS5e+Fl5wHG46S2vw35rtOOJtn6dTOHYgtRTQDPGCamUJLzjR/PCg0/jfzXcNXH9gBCw\noBLVpx67xaAz49GH+JMnzbhB1i7tw9ztrTz7o7JAS+2uNV5H27f7w6b8cPp9MgWwVQk38HfABwwE\nyBxAx9jhzP3P+1CXV0c1vKjb+hm4PbiALWGalqlet9/vcuSMmnZpJEKToqDjcCNP33RuwNV66M3k\nAVmXn8od832RTKYGW5VoA/6GXl0qDSAvh0OjhzHv+nvQ3up3Gz2+8NoqAoEQL3fV+7CWlecAQ9oa\nawtGnXNJKD7REsEIpUhpqdvNUzPPCQZU/6LC8Wde3VK3u9/3SI+SyfQ4tirRADwKZAJJAAV5NIws\nYt41s9BWb4hqeFHzkg2v18crYZqNBwiovkmTrpRD/L6o6bNPeOaWC4KK2fz8kJLJN9RUV8pEehyZ\nTL/CViV2o+9BzcNIqIWDqS8uZP53fob2dj/rodbsgdZ2NCDcNRPnaz6vz+tsHzz6vCsiEZoUQfs3\nv8fzt14STEhK/sOQsZPulIn062QyPQFblfiYLxKqBWBoPnUjinjpu7PQVqyNangR9doqgsBCIUSn\nOxusZeVZwPC2ptr84VO+FUxMTo1cgFKP21ldyZxZFQFLavp/tx9seEAm0hOTybQTtiqxCXiG4xJq\n0WAOjBzKi9fejfrG21ENL2JesuFxe3k5TDMrgObzTpx81Q/kfqg+ZPOyF8Urv7lZS84Y+MP2g/VP\nRDue3kwm0y7YqsRG9GtPvhjy59Ewtpg5N/8a3xPz+/bVJ3sPQONhBBBucuP8gOr3ex1thSUXXBWJ\n0KQeFgoGWfnEfaFlf/lvf0pW9nfsTXXh9hj3ezKZhmGrEhvQ96EOwkio+bk0l47h+fsfw/WrRwj2\n1R12r79FKM7MYiFEp6fBrGXl6cDotqba3KLSaUFLWnoEI5R6gsvewj9vuyTw0ZIXWtIHFZzf1rBf\n7rY+CTKZngRjyP8EkAukAgzMwD5lHM/+exGtN/yCgNoHi6O8uASX0x321FMJgOp1l06eMVMO8WPc\ngW0f8Nj3JgXaD9ZvzRs57oxDe2s2RzumWCGT6UmyVYnNwF/Qy/ZlAaQm4zljPLPf/ZADF/8YzeGK\naojd6kAT7GvADIQ7snB+UFP93g778JIL/yMSoUk9QAjB+leeEv+644pAcnrW64NHTbh8z4drGqId\nVyyRyfQbsFWJncBDgMA4epoQjzZ1PPP317PjrOvQ6vtIXfFFbyES4lkmhNA6a2MtK08FrPamuoH5\nYycGUjIGRjBCqbuoXjcLfnVDYPVzv3flFpf8Jrto5A9rqitbox1XrJHJ9BuyVYkD6Am1naPXR5sI\nTbay1K+ytvQ7BNZ8ENUQu8U8G06Hi3lhmpUAit/jKp1SflNiJOKSuldL7S7+cf3UQP32Dw4MHl1a\nkTZw0CM11ZX+aMcVi2QyPQW2KtECPIx+/UkRRj3UCaNZVzCIlyt+iv8vswnF6sLUwRbYuZc49BKF\nXTk3FAx4PY62EdYLKyIRmtSNtr+ziKduOjegKEpV3qgJF+35cM27cg/pqZPJ9BTZqoQT/ejpR8Aw\n9GukGV7AvkljeebPs2m7+mdorhi8l/GNdyAxkVVCiE57KNay8mRggr2pLjO3uCSYlp0XwQil0+F1\n2Fl4/48Cix/8iS+roPjvucPHXvPZuhWd3jYrnRyZTE+DrUr40fehvo5+I2cqQGY6HWeV8tymT9k1\n6Wq03fujGeU3N3cJjg5n2CH+WMDsczsmTJ4xUw7xY4AQgu3vLOKv3y4J7P/4vf35YyfNzBhU8Oua\n6so+tHQaPTKZniZblQjaqsQy4BH0ZJoLepHpKVYWAW+dcS3agspoRnnyjthhy2ckAKvCNJ0WCgb9\n3g776PEXXx2J0KTT0HG4kTl3/Yf2xkN3uLLyhy4dPGpCxd5N7y6uqa6UBdC7iUym3cRWJbYDDwCt\nHDePah3JR6OH8cJPH8RxzSwC9o7oxhnO0tWQZGGNEMLTWRtrWbkFmNx+sD4tq7A4lJFXGMEIpW8i\nFAqxceGz4tHvTggcqft8Z+H4s/4wICf/tprqys+iHVtfI5NpN7JViUPoC1MbgeEYN5/m59I8bSJP\nfrCNrWNm9O5SfvNsONsdzA3TbAxg9jrs4+RG/d6rpXYXz9x8nvbOcw/a80aOWzRohPUOc1z8X2qq\nK9uiHVtfJJNpN7NVCS/wT/S7pfIwKvcnxKNNsVKZm8WrV/8M710PEfD1sg0o7Q7YuJUEINzxwbNE\nKKT6XB1jJ1zyXSUSsUknL6CprH7+odCTM6dpPpfjk8JxZ96XkpH9k5rqyvVyWN9zFHl1S8+pmK4U\nAbcD+UAD6Deeur0k1ezhO8kWhi98jPip46IZ5RfmLYWfP0xVW4e4uLM21rLyBOCJ9uYDSZrfd/0v\nluyQPdNeQgjBrnUrWPbXezTN52nNLhq53JKa/g9gu9zy1PNkz7QHGRv8HwRWoK/2DwD9wr4zxvOy\nyUxl2U2oP/ktwQ5nNCPVvbQMlz38EH8UEO/uaLPKS/N6j30fVfPED85SF97/Y0e8JWndkJIp/2NJ\nTZ9VU125TSbSyJA90wipmK6UALeh3y/ViH4kFbeXpF37uMLrx/rk/cR9fwYoURg4u9yQfS6qXyVP\nCGHvrJ21rPyHQohz9m1ee/OdL75vyS0uiWSY0lfU7/iI5Y/+Uj34+adaWnbe5oEFxRsVk2l2TXXl\n59GOrb+RyTSCKqYrqcANwPnAEeBYf7S+mcIDzVxtHUHqvx4ifvTwyMa2cAXc8Tveb20X53fWxlpW\nHg883nGoMcnrtN/wq8rP5RA/Sg7t3cHyx+7Vaj9ZF0wbmPdR9tCRu00msw1YUVNd2QdrmPV+cdEO\noD+xVQlXxXRlNvp9SrcAQ9F7qYHCwdTnD+LJmj1Mm3INF866EfNvbseUmhKZ2OZX4m7rYE6YZiOA\nRJe9ZeyU8hvl704UtNbvZdWT92u71q0QqQMHfTxs0rm7zXHx7wDLZXGS6JI90yipmK4kATOAcsAL\nHD76vXYnA/bWcaXXz8jf3YX59utQEnqwD+j1QdY0/D4/hUKIls7aWcvKZwohymo/WTfzttmrkweP\nnthzQUlf0ta4n6rZfwxsW7VQpGblbssuGvlZXEJiNWCrqa48FO34JJlMo65iulIA3IR+PPMQcGyz\nfNNhBjcc5AqzmcGP/Ir4668EUw8sGS55B378v2xu6xBndNbGWlZuBv7hPHIwqaOl6cZ7V9YmKNGY\n3O1HhBDs2/Qu1XMfUWs/eV9JycyuyS4cuTPekrQBWFxTXSnrjfYicqgWZbYq0VAxXfkzcDZwI/q+\n1IOAlp9Lc34uL9Q2MmzWH5jx4NOkP3YvCZed172LVAvexNPu5IUwzYqBZOeRg6MnXn59nEykPUf1\netiy4mWq5zyieh1t3qQBmR8Pn3xekzk+YSuwqKa6cl+0Y5S+TvZMe5GK6UoacBlwJfpq/0GMvalC\nwOd1lBxq5YrRQ7E8OKt7kqqqQubZ+D0+ioUQTZ21s5aVXyeEuLRuy/rrf/TUm2mF4888vTeWvubg\n59vZsPDZ4JblC0RCcmpDWlbutvS8wjZFUfYBrwG75Dan3ksm016oYroyEH0u9UJARU+qAiAYwrRr\nP+PtHVw0MIPkB+4k4borIP4Ud3yuWAszf8n2tg5R2lkba1m5CXjM1XY4ua1x/83/+05jvOyZdg/V\n62bbW6/z/oLH1bbG/aGkAZmbs/KHNVhSB3iA7cBK9CQqTy71cnKY3wvZqkQrMLdiuvI2cDVwJvpc\n6mGziZB1BNuEYNv+Bkbe82cuuudP5Pz6NuJu/R7KN139f3k53g5X2FX8YUCqo6V5ROll15pkIj09\nPmcHu9avZOvKheqeD1abLakD6pMHZG0ZPuWCDpPJpKIX5a6uqa48GO1YpZMne6YxoGK6Ugxci35N\niBdoAY71VBoPMaS5hTKXh+E/vQHT7ddjGl4Q/nUDAcg8G5/Lw1ghRF1n7axl5VcDV9Vt3XDNt275\nRca5N9xFfKLldD9Wv+JoaWZn9TK2rHjF37BjU1zSgKyG+ETL9sz8ofaEpJQg+uLjCuCjmurKGCwp\nLslkGiMqpisKeg/xSvSeagD9DzBwtM0RO1n1zZzT5qB0cgnMupGEb18MiZ1sq1q9Ab73c3bbHWJM\nZ+9rLStXgL+JUCjQvOfTSUHVX+pzO7NHnHlhsPSyaxPGXjCD5PSs7vugfUhL7S52VC0VW1e+oh6p\n32NOHpC1JyE55dPMwUMPxSUkpqD/v1sPrAX2yfnQ2CaTaQyqmK7kARcDFwEKelI9dupFCxC39wBj\nHS7O8frJvfnbKHd8H7N15Jdf59b/j3/OYh7UAuLhzt7LWlZeBPwWOHathd/jSmlvPjBaU30TvB1t\nRTnDxwZGnjU9ftiU801FpdNIzczpzo8bM9z2I9R/+iH7Nq8NbX/rtYDHYQ9ZUtN3JqVl7MjIK3CY\nzHFJRtP9wLvAJ7LKfd8hk2kMq5iuZAAXoG/+T0Q/nvqlc/Wt7WTWNzPV7mDqiEKUH19D4vcuh7xs\nyJqGt8PJRCFEp+e4rWXllwI3A37jtb80BA1oarzjcFOh19leJELBkV6HfVBKZnZo2OQLlBFnXhg/\ndOI5ZA8bg6knNshGUVDTOPj5dg5s/4B9m6u1A1s3Cnd7qzk5PfOQyWTem5qVuyctZ7BfUZRE9CmZ\nGvRe6K6a6spOax9IsUsm0z6gYrpiASYAl6Mf+Qyiz6seq5gaDGGqbWBEh4vJbe2MHpqPv/kIh9od\norir1zY26xcZr38ecLTb6TAeX1plFqGQ4mo7nOu2HykMBgMjVI+rKBQMJhSMmxocefbFCUWl05Ts\noaNIyx4cMwlWCIGjpYn67R9Qu2V9aP9Ha7VD+3bGJyanOuMSLQfM8fG1KRk5DamZ2Q7FZBoImAEN\n2Ix+dHi3nAft+2Qy7UOMedXBwDnAdCAZvSfZirG1CsjRAuxZ+R57ALMQYsnJvr4xfzoIfSFsTau0\nFgAAAxpJREFUGnriVtBLOXqADo6bbjjK53KkOVsPFqpe99BQMDhM9bjSg5oaPyA3X8sqHEHu8JK4\nnKGjzQMLR5BVUEzm4KGYT3Wv1ynye1zYG/fT1lSLvbGW1vq9wZbaXYG2xv04WpriFEUJJaVlNism\n0z5Lanp9WvagxvjEJDN6WcWjs9JuYAPwCbBXFhzpX2Qy7aMqpisJgBV9bvVo+Wkn+h//U7Yq8dHp\nvodRKDofvWDLePQjsUc3ZwXQk6uHLxL5MQHVl+B1tGf63c4s1efOFIJcEQrmaD5vhup1JSVnZGtZ\nQ4aJ1IF5iiV1gGJJyzBZUtPNlpQ0EpJSSUhOITEljcSkVBJS0khMSiEuIRFN9aH5vGheD6rPjebz\noHo9+nM+D5rPg9/rFn63I2RvPhBoa9hHx6EGc0D1mywpaa64BEsHinJEUZQj8ZZke2JyarslNb09\n3pKkKYoy4LjPZ0Kvp7AT+Ay9+HdzTXVl8HT/u0qxSSbTfqBiupKOnlC/BRQAv7ZViW5f+DB6rtno\n0wKj0RPsYPRkakIf+nqNh58TJFmAUDBg9jo70n2ujqygpiaFgoHEUDCYEAoGExSTkqQoJgtgEUIk\nilAwMRQKJYQCWrwIhcwmszmomM2ayWTWFMWkKYqioSgqoCKEXwjhB1TFZNLiEi3OxKSU9sTU9PbE\n5FSXsX/WBFiMRxL6kF0Yse8CPkVfjGuUi0fS8WQy7WcqpiupPZFIO2MtK09Bv2UgGxiC3pPNR69B\nIPgi0YbQk6zPePRUD09BX6w7miwT+PK8r0CvNXsQvTziPvReZ4s8hSR1RSZTKSqsZeVxQAaQBWSi\nz8UWovdkB6InO3Hc46sUvpiv/Wq7rtqDPod8CGgGmtB3KdiBdsApk6Z0KmQylXolY8ogHr0XmXDc\n46v/Ptqz1E7y4ZfzmlJPkMlUkiSpG8TGRj9JkqReTiZTSZKkbiCTqSRJUjeQyVSSJKkbyGQqSZLU\nDWQylSRJ6gYymUqSJHUDmUwlSZK6gUymkiRJ3UAmU0mSpG4gk6kkSVI3kMlUkiSpG8hkKkmS1A3+\nD+CpIwdQ7RgmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\"\"\"\n", + "Demo of a basic pie chart plus a few additional features.\n", + "\n", + "In addition to the basic pie chart, this demo shows a few optional features:\n", + "\n", + " * slice labels\n", + " * auto-labeling the percentage\n", + " * offsetting a slice with \"explode\"\n", + " * drop-shadow\n", + " * custom start angle\n", + "\n", + "Note about the custom start angle:\n", + "\n", + "The default ``startangle`` is 0, which would start the \"Frogs\" slice on the\n", + "positive x-axis. This example sets ``startangle = 90`` such that everything is\n", + "rotated counter-clockwise by 90 degrees, and the frog slice starts on the\n", + "positive y-axis.\n", + "\"\"\"\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.rcParams['figure.figsize'] = 5, 5\n", + "\n", + "# The slices will be ordered and plotted counter-clockwise.\n", + "labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'\n", + "sizes = [15, 30, 45, 10]\n", + "colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']\n", + "explode = (0, 0.1, 0, 0) # only \"explode\" the 2nd slice (i.e. 'Hogs')\n", + "\n", + "plt.pie(sizes, explode=explode, labels=labels, colors=colors,\n", + " autopct='%1.1f%%', shadow=True, startangle=90)\n", + "# Set aspect ratio to be equal so that pie is drawn as a circle.\n", + "plt.axis('equal')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exercise: show the pie chart of distribution of core hours among queues using the following stats data to produce somethng like:\n", + "\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
jobidcore_hourselapsedwaitedcpumem
queue
parallel431036389.5061111199.6385159939.23016244.854292160041.221346
rcm_visual29517492.42777810673.3457630.28135620.000000129024.000000
.....................
epigen_dbio23979.922778226.20920511.9539753.74058620929.874477
serial8526.938889666.011765398.8941181.7411766800.564706
\n", + "

31 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " jobid core_hours elapsed waited cpu \\\n", + "queue \n", + "parallel 4310 36389.506111 1199.638515 9939.230162 44.854292 \n", + "rcm_visual 295 17492.427778 10673.345763 0.281356 20.000000 \n", + "... ... ... ... ... ... \n", + "epigen_dbio 239 79.922778 226.209205 11.953975 3.740586 \n", + "serial 85 26.938889 666.011765 398.894118 1.741176 \n", + "\n", + " mem \n", + "queue \n", + "parallel 160041.221346 \n", + "rcm_visual 129024.000000 \n", + "... ... \n", + "epigen_dbio 20929.874477 \n", + "serial 6800.564706 \n", + "\n", + "[31 rows x 6 columns]" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st= get_stats(Cluster,'queue','core_hours')\n", + "st" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Prepare needed structure from data" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['parallel', 'rcm_visual', 'epigen', 'meteo', 'others']\n", + "[36389.506111111354, 17492.427777777786, 4763.839444444445, 3314.0444444444456, 10399.959444444446]\n" + ] + } + ], + "source": [ + "######################### firts snip\n", + "colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral','blue']\n", + "shown=st[:len(colors)-1]\n", + "others=st[len(colors)-1:]\n", + "other_sum=others['core_hours'].sum()\n", + "values=shown['core_hours'].values.tolist()+[other_sum]\n", + "labels=shown.index.tolist()+['others']\n", + "print labels\n", + "print values\n" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.rcParams['figure.figsize'] = 5, 5\n", + "\n", + "plt.pie(values, labels=labels, colors=colors,\n", + " autopct='%1.1f%%', shadow=True, startangle=90)\n", + "# Set aspect ratio to be equal so that pie is drawn as a circle.\n", + "plt.axis('equal')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "improve the plot by exploding the other slice" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n/gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.rcParams['figure.figsize'] = 5, 5\n", + "\n", + "explode = [0] * (len(colors)-1) +[0.1]\n", + "plt.pie(values, explode=explode, labels=labels, colors=colors,\n", + " autopct='%1.1f%%', shadow=True, startangle=90)\n", + "# Set aspect ratio to be equal so that pie is drawn as a circle.\n", + "plt.axis('equal')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup Bokeh plotting libraries\n", + "This is a higher level library, more suited for active web pages... see below" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " BokehJS successfully loaded.\n", + "
\n", + "

Warning: BokehJS previously loaded

" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " BokehJS successfully loaded.\n", + "
\n", + "

Warning: BokehJS previously loaded

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy\n", + "import bokeh\n", + "import bokeh.charts\n", + "import bokeh.plotting\n", + "from bokeh.models import HoverTool \n", + "bokeh.charts.output_notebook()\n", + "bokeh.plotting.output_notebook()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "function for an individual jobs scatter plot" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def individual_jobs_scatter_plot(Data,stats,class_field,x_field,y_field,size_field,desc_field ,width=500,height=500,sort_field='') :\n", + "\n", + " if not sort_field : sort_field=size_field\n", + " count=0\n", + " field_index=dict()\n", + " for f in Data.columns :\n", + " field_index[f]=count\n", + " count = count + 1\n", + " colors=['#ff0000','#00ff00','#0000ff','#ff00ff','#00ffff','#ffff00']\n", + " tools=\"reset,hover,pan,wheel_zoom,resize,box_zoom\"\n", + " plot_fields=[x_field,y_field,size_field,desc_field]\n", + " s=dict()\n", + " ctot=0\n", + " fig = bokeh.plotting.figure(tools=tools,\n", + " x_axis_label=x_field,\n", + " y_axis_label=y_field)\n", + " stats=get_stats(Data,class_field,sort_field)\n", + " for i in stats[:len(colors)].index :\n", + " a=Data[(Data[class_field] == i)][plot_fields].values\n", + " x=a[:,0]\n", + " y=a[:,1]\n", + " size=a[:,2]/100\n", + " source = bokeh.plotting.ColumnDataSource(\n", + " data=dict(\n", + " val=a[:,2],\n", + " desc=a[:,3],\n", + " )\n", + " )\n", + " if ctot < len(colors) :\n", + " color = colors[ctot]\n", + " else:\n", + " color='#000000'\n", + " ctot = ctot +1\n", + "\n", + " s= fig.scatter(width=width,height=height,\n", + " x=x,\n", + " y=y,\n", + " color=color,\n", + " size=size,\n", + " source=source,\n", + " legend=i+ ' '+str(len(a)))\n", + " s.select(dict(type=HoverTool)).tooltips = {plot_fields[3]:\"@desc\",plot_fields[2]:\"@val\"}\n", + " return fig\n", + " \n", + "fig= individual_jobs_scatter_plot(Cluster,stats,'queue','cpu','elapsed','core_hours','account' )\n", + "bokeh.charts.show(fig)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig0= individual_jobs_scatter_plot(Cluster,stats,'queue','cpu','elapsed','core_hours','account',width=400,height=500 )\n", + "fig1= individual_jobs_scatter_plot(Cluster,stats,'queue','elapsed','waited','core_hours','account',width=400,height=500 )\n", + "fig2= individual_jobs_scatter_plot(Cluster,stats,'queue','mem','waited','core_hours','account',width=400,height=500 )\n", + "fig3= individual_jobs_scatter_plot(Cluster,stats,'account','cpu','mem','core_hours','queue',width=400,height=500 )\n", + "fig4= individual_jobs_scatter_plot(Cluster,stats,'account','core_hours','waited','elapsed','queue',width=400,height=500 )\n", + "p=bokeh.io.hplot(fig0,fig1,fig2,fig3,fig4)\n", + "bokeh.charts.show(p)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/pydata/prova_scatter.ipynb b/pydata/prova_scatter.ipynb new file mode 100644 index 0000000..0c11da0 --- /dev/null +++ b/pydata/prova_scatter.ipynb @@ -0,0 +1,672 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " BokehJS successfully loaded.\n", + "
\n", + "

Warning: BokehJS previously loaded

" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " BokehJS successfully loaded.\n", + "
\n", + "

Warning: BokehJS previously loaded

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "#import bokeh.plotting as bp\n", + "import bokeh\n", + "import bokeh.charts\n", + "import bokeh.plotting\n", + "from bokeh.models import HoverTool \n", + "bokeh.charts.output_notebook()\n", + "bokeh.plotting.output_notebook()\n", + "#bp.output_file('test.html')\n", + "#import matplotlib.pyplot as plt\n", + "\n", + "import numpy\n", + "import random\n", + "from collections import OrderedDict\n", + "import pandas as pd\n", + "\n", + "# skip site cert check\n", + "#http://stackoverflow.com/questions/27835619/ssl-certificate-verify-failed-error\n", + "import ssl\n", + "ssl._create_default_https_context = ssl._create_unverified_context\n", + "#ssl.create_default_context(capath=False)\n", + "Cluster = pd.read_csv(\n", + " \"https://hpc-forge.cineca.it/files/Visualization_School/public/20150315.jobs\",\n", + " sep=';',\n", + " header=None,\n", + " names=['date',\n", + " 'jobid',\n", + " 'wcl',\n", + " 'cpu',\n", + " 'aff',\n", + " 'mem',\n", + " 'queue',\n", + " 'elapsed',\n", + " 'waited',\n", + " 'status',\n", + " 'account',\n", + " 'username','unknown'],\n", + " parse_dates=['date'])\n", + "\n", + "sel = Cluster[['elapsed','waited', \"queue\"]]\n", + "#print sel\n", + "grouped_df=sel.groupby(\"queue\")\n", + "pdict = OrderedDict()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig1 = bokeh.plotting.figure(tools=\"reset,hover,pan,wheel_zoom\")\n", + "x1 = np.linspace(0,2*np.pi)\n", + "x2 = np.linspace(0,2.3*np.pi)\n", + "y1 = np.sin(x1)\n", + "y2 = np.cos(x2)\n", + "s1 = fig1.scatter(x=x1,y=y1,color='#0000ff',size=10,legend='sine')\n", + "#s1.select(dict(type=HoverTool)).tooltips = {\"x\":\"$x\", \"y\":\"$y\"}\n", + "s2 = fig1.scatter(x=x2,y=y2,color='#ff0000',size=10,legend='cosine')\n", + "#s2.select(dict(type=HoverTool)).tooltips = OrderedDict([(\"x\",\"@x\"),(\"y\",\"@y\")])\n", + "s3 = fig1.scatter(x=x2,y=y1,color='#00ffff',size=10,legend='sineooo')\n", + "#s3.select(dict(type=HoverTool)).tooltips = {\"xx\":\"$x\", \"y\":\"$y\"}\n", + "s4 = fig1.scatter(x=x1,y=y2,color='#ffff00',size=10,legend='cccosine')\n", + "s4.select(dict(type=HoverTool)).tooltips = OrderedDict([(\"ddx\",\"@x\"),(\"y\",\"@y\")])\n", + "bokeh.charts.show(fig1)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = bokeh.plotting.figure(tools=\"reset,hover,pan,wheel_zoom\")\n", + "#fig.background_fill = \"black\"\n", + "s=dict()\n", + "ctot=0\n", + "colors=dict()\n", + "colors[0]='#ff0000'\n", + "colors[1]='#00ff00'\n", + "colors[2]='#0000ff'\n", + "colors[3]='#ff00ff'\n", + "colors[4]='#00ffff'\n", + "colors[5]='#ffff00'\n", + "for i in grouped_df.groups.keys():\n", + "# print i\n", + "# if i =='debug' or i == 'smallpar':\n", + "# if i =='debug' :\n", + "# if i =='debug' or i == 'longdebug':\n", + "# if i =='debug' or i == 'serial':\n", + "# if i =='parallel' or i == 'smallpar':\n", + "# if i =='serial' or i == 'bigpar' or i == 'longdebug':\n", + "# if i =='serial' or i == 'smallpar' or i == 'longdebug':\n", + "# if i =='debug' or i == 'smallpar' or i == 'longdebug':\n", + "# if i =='debug' or i == 'smallpar' or i == 'bigpar':\n", + "# if i =='serial' or i == 'smallpar' or i == 'bigpar':\n", + " ctot = ctot +1\n", + " p = sel[(sel.queue == i)][['elapsed','waited']]\n", + " a=p.values\n", + "# x=p[['elapsed']].values\n", + "# y=p[['waited']].values\n", + " x=a[:,0]\n", + " y=a[:,1]\n", + " #print len(a)\n", + " #print x\n", + " #c=plt.cm.RdYlBu((ctot*100)%256)\n", + " #cc=(int(c[0]*256),int(c[1]*256),int(c[2]*256),c[3])\n", + " s[i] = fig.scatter(x=x,\n", + " y=y,\n", + " color=colors.get(ctot,'#000000'),\n", + " size=5,\n", + " legend=i+ ' '+str(len(a)))\n", + " s[i].select(dict(type=HoverTool)).tooltips = {\"x\":\"@x\", \"y\":\"$y\"}\n", + " \n", + "bokeh.charts.show(fig)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.9" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/start_image.sh b/start_image.sh new file mode 100755 index 0000000..3312a88 --- /dev/null +++ b/start_image.sh @@ -0,0 +1,2 @@ +#/bin/bash +docker run -d -v $(pwd)/pydata:/data -v /tmp/statistics/:/statistics -p 80:8000 cineca/jupydatanb diff --git a/sync_with_upstream.sh b/sync_with_upstream.sh new file mode 100755 index 0000000..d2874d1 --- /dev/null +++ b/sync_with_upstream.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +#git clone forked repository specifying milano branch +#git clone -b milano https://github.com/luigi-calori/lectures.git lectures_milano + +#set up username and mail +#git config --global user.name "luigi-calori" +#git config --global user.email "l.calori@cineca.it" + +#find where is the remote to push +#git remote show origin + +#suppose we edited README, than status show but we have to add it +#git add README.md +#git commit -m " changed README " + +#define upstream repo into local +#git remote add upstream https://github.com/cineca-scai/lectures.git + +#here are the step to keep it in sync with upstream +git pull +git fetch upstream milano +git checkout milano +git merge upstream/milano -m "sync from upstream fork" +git push origin milano