From f2327836eb0f1aaa736a6b7902812840eeebb962 Mon Sep 17 00:00:00 2001 From: Luigi Calori Date: Mon, 8 Jun 2015 17:23:03 +0200 Subject: [PATCH 01/13] added scatter viz of cluster jobs --- pydata/prova_scatter.ipynb | 672 +++++++++++++++++++++++++++++++++++++ 1 file changed, 672 insertions(+) create mode 100644 pydata/prova_scatter.ipynb 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 +} From af74d626a47dbbe31490ce23ac4e43af6ef206d2 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Mon, 8 Jun 2015 18:32:15 +0200 Subject: [PATCH 02/13] first --- README.md | 1 + 1 file changed, 1 insertion(+) 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 From 56ff31eef4ceeda02e2d6a17aea0ca98fbdd7389 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Tue, 9 Jun 2015 20:36:39 +0200 Subject: [PATCH 03/13] added pico_jobs --- pydata/pico_jobs.ipynb | 1365 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1365 insertions(+) create mode 100644 pydata/pico_jobs.ipynb diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb new file mode 100644 index 0000000..f28e738 --- /dev/null +++ b/pydata/pico_jobs.ipynb @@ -0,0 +1,1365 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Real example\n", + "original data: jobs logs from cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first 3 of 148\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", + "if socket.gethostname().find('.')>=0:\n", + " my_hostname=socket.gethostname()\n", + "else:\n", + " my_hostname=socket.gethostbyaddr(socket.gethostname())[0]\n", + "if my_hostname.split('.')[1] == 'pico' :\n", + " folder=\"/cineca/usr/acct/statistics\"\n", + "else:\n", + " print os.path.realpath(__file__)\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": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first 3 of 148\n", + "20150112.jobs.bz2\n", + "20150113.jobs.bz2\n", + "20150114.jobs.bz2\n", + "20150112;5932;360000;700;1;4300800;parallel;333959;0;0;cin_staff;mcestari\n", + "20150113;6222;259200;60;1;138240;parallel;92024;1;0;cin_staff;rpieri00\n", + "20150114;6293[1];259200;8;1;48128;epigen;119459;6526;0;EPIGE_prod;a07epg01\n" + ] + } + ], + "source": [ + "\n", + "\n", + "startstring='2015'\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": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of records: 65510\n", + "\n", + "Int64Index: 65510 entries, 0 to 561\n", + "Data columns (total 14 columns):\n", + "date 65510 non-null datetime64[ns]\n", + "jobid 65510 non-null object\n", + "wcl 65510 non-null int64\n", + "cpu 65510 non-null int64\n", + "aff 65510 non-null int64\n", + "mem 65510 non-null int64\n", + "queue 65510 non-null object\n", + "elapsed 65510 non-null int64\n", + "waited 65510 non-null int64\n", + "status 65510 non-null int64\n", + "account 65510 non-null object\n", + "username 65510 non-null object\n", + "dummy1 21997 non-null float64\n", + "dummy2 22230 non-null float64\n", + "dtypes: datetime64[ns](1), float64(2), int64(7), object(4)\n", + "memory usage: 7.5+ MB\n" + ] + }, + { + "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", + "
datejobidwclcpuaffmemqueueelapsedwaitedstatusaccountusernamedummy1dummy2
02015-01-12593236000070014300800parallel33395900cin_staffmcestariNaNNaN
12015-01-12618121600112048meteoser587115smr_proda07smr01NaNNaN
22015-01-126182216001401716800R6008257615smr_proda07smr01NaNNaN
32015-01-12618321600112048meteoser1378610smr_proda07smr01NaNNaN
42015-01-126184216001401716800R6008143300smr_proda07smr01NaNNaN
\n", + "
" + ], + "text/plain": [ + " date jobid wcl cpu aff mem queue elapsed waited \\\n", + "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 0 \n", + "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 1 \n", + "2 2015-01-12 6182 21600 140 1 716800 R6008 2 576 \n", + "3 2015-01-12 6183 21600 1 1 2048 meteoser 13786 1 \n", + "4 2015-01-12 6184 21600 140 1 716800 R6008 1433 0 \n", + "\n", + " status account username dummy1 dummy2 \n", + "0 0 cin_staff mcestari NaN NaN \n", + "1 15 smr_prod a07smr01 NaN NaN \n", + "2 15 smr_prod a07smr01 NaN NaN \n", + "3 0 smr_prod a07smr01 NaN NaN \n", + "4 0 smr_prod a07smr01 NaN NaN " + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "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": [ + "Do some inspection" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "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", + "
datejobidwclcpuaffmemqueueelapsedwaitedstatusaccountusernamedummy1dummy2
02015-01-12593236000070014300800parallel33395900cin_staffmcestariNaNNaN
12015-01-12618121600112048meteoser587115smr_proda07smr01NaNNaN
.............................................
5602015-06-08520496002561114688parallel1962210smr_prodvpoli00000
5612015-06-08520506002561114688parallel510smr_prodvpoli00000
\n", + "

65510 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " date jobid wcl cpu aff mem queue elapsed waited \\\n", + "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 0 \n", + "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 1 \n", + ".. ... ... ... ... ... ... ... ... ... \n", + "560 2015-06-08 52049 600 256 1 114688 parallel 196 221 \n", + "561 2015-06-08 52050 600 256 1 114688 parallel 5 1 \n", + "\n", + " status account username dummy1 dummy2 \n", + "0 0 cin_staff mcestari NaN NaN \n", + "1 15 smr_prod a07smr01 NaN NaN \n", + ".. ... ... ... ... ... \n", + "560 0 smr_prod vpoli000 0 0 \n", + "561 0 smr_prod vpoli000 0 0 \n", + "\n", + "[65510 rows x 14 columns]" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.set_option('max_rows', 5)\n", + "Cluster\n", + "\n", + "#Cluster.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "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", + " \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-01-12593236000070014300800parallel33395900cin_staffmcestariNaNNaN64936.472222
12015-01-12618121600112048meteoser587115smr_proda07smr01NaNNaN0.163056
................................................
5602015-06-08520496002561114688parallel1962210smr_prodvpoli0000013.937778
5612015-06-08520506002561114688parallel510smr_prodvpoli000000.355556
\n", + "

65510 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " date jobid wcl cpu aff mem queue elapsed waited \\\n", + "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 0 \n", + "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 1 \n", + ".. ... ... ... ... ... ... ... ... ... \n", + "560 2015-06-08 52049 600 256 1 114688 parallel 196 221 \n", + "561 2015-06-08 52050 600 256 1 114688 parallel 5 1 \n", + "\n", + " status account username dummy1 dummy2 core_hours \n", + "0 0 cin_staff mcestari NaN NaN 64936.472222 \n", + "1 15 smr_prod a07smr01 NaN NaN 0.163056 \n", + ".. ... ... ... ... ... ... \n", + "560 0 smr_prod vpoli000 0 0 13.937778 \n", + "561 0 smr_prod vpoli000 0 0 0.355556 \n", + "\n", + "[65510 rows x 15 columns]" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Cluster['core_hours'] = Cluster['cpu'] * Cluster['elapsed'] / 3600\n", + "Cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "different_values of date 148 442.635135135 47 2428 \n", + "different_values of jobid 65509 1.00001526508 1 2 \n", + "different_values of wcl 65 1007.84615385 1 21414 \n", + "different_values of cpu 51 1284.50980392 1 11907 \n", + "different_values of aff 1 65510.0 65510 65510 \n", + "different_values of mem 105 623.904761905 1 8821 \n", + "different_values of queue 310 211.322580645 1 33772 \n", + "different_values of elapsed 11420 5.73642732049 1 5691 \n", + "different_values of waited 8907 7.35488941282 1 18310 \n", + "different_values of status 4 16377.5 1 61356 \n", + "different_values of account 33 1985.15151515 1 20777 \n", + "different_values of username 97 675.360824742 1 21155 \n", + "different_values of dummy1 1 21997.0 21997 21997 \n", + "different_values of dummy2 3 7410.0 1 22228 \n", + "['parallel', 'epigen', 'meteoser', 'serial', 'epigen_dbio', 'rcm_visual', 'dcv_visual', 'meteo', 'R15024', 'bigmem', 'system', 'R38006', 'R45731', 'R32345']\n" + ] + } + ], + "source": [ + "relevant=dict()\n", + "for f in fields: \n", + " v=Cluster[f].value_counts()\n", + " print \"different_values of \"+\\\n", + " f+\" \"+str(len(v))+\" \"+\\\n", + " str(v.mean())+\" \"+\\\n", + " str(v.min())+\" \"+\\\n", + " str(v.max())+\" \"\n", + " #relevant[f]=v[()]\n", + "v=Cluster['queue'].value_counts()\n", + "v\n", + "relev=[]\n", + "for k in v.keys():\n", + " if v[k] > 0.1*v.mean() : relev.append(k)\n", + "print relev\n", + "#relevant=dict()\n", + "#for f in ['queue','account']: \n", + "# g=Cluster.groupby('queue')\n", + "#used_queue=[]\n", + "#for q in g.group\n" + ] + }, + { + "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": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "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 +} From cffb34e6078cb1fbc78ee7515ef3afe4be72453b Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Wed, 10 Jun 2015 11:25:22 +0200 Subject: [PATCH 04/13] adding commands for syncing with upstream scai repo --- sync_with_upstream.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 sync_with_upstream.sh diff --git a/sync_with_upstream.sh b/sync_with_upstream.sh new file mode 100755 index 0000000..4bd1ee1 --- /dev/null +++ b/sync_with_upstream.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +#clone forked repository specifying milano branch +#clone -b milano https://github.com/luigi-calori/lectures.git lectures_milano + +#set up username and mail +#config --global user.name "luigi-calori" +#config --global user.email "l.calori@cineca.it" + +#find where is the remote to push +#remote show origin + +#suppose we edited README, than status show but we have to add it +#add README.md +#commit -m " changed README " + +#define upstream repo into local +#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 From 7141a3d85f7d36b4e8cf87530be77ccaf3e3223d Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Wed, 10 Jun 2015 17:05:28 +0000 Subject: [PATCH 05/13] add start docker image command --- start_image.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100755 start_image.sh diff --git a/start_image.sh b/start_image.sh new file mode 100755 index 0000000..812168c --- /dev/null +++ b/start_image.sh @@ -0,0 +1,2 @@ +#/bin/bash +docker run -d -v $(pwd)/lectures/pydata:/data -v /tmp/statistics/:/statistics -p 80:8000 cineca/jupydatanb From b4c79541c78ebc285ce3e1e3d1b0d81906c2604e Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Wed, 10 Jun 2015 19:13:53 +0200 Subject: [PATCH 06/13] fix upstream sync and access --- pydata/pico_jobs.ipynb | 358 ++++++++++++++++++++--------------------- sync_with_upstream.sh | 16 +- 2 files changed, 186 insertions(+), 188 deletions(-) diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index f28e738..e6baf49 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -19,7 +19,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "first 3 of 148\n", + "first 3 of 149\n", "20150112.jobs.bz2\n", "20150113.jobs.bz2\n", "20150114.jobs.bz2\n" @@ -44,14 +44,14 @@ " for fname in files[:limit]:\n", " print fname \n", "\n", + "folder='/statistics' \n", "if socket.gethostname().find('.')>=0:\n", " my_hostname=socket.gethostname()\n", "else:\n", " my_hostname=socket.gethostbyaddr(socket.gethostname())[0]\n", - "if my_hostname.split('.')[1] == 'pico' :\n", - " folder=\"/cineca/usr/acct/statistics\"\n", - "else:\n", - " print os.path.realpath(__file__)\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" @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -75,7 +75,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "first 3 of 148\n", + "first 3 of 149\n", "20150112.jobs.bz2\n", "20150113.jobs.bz2\n", "20150114.jobs.bz2\n", @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -120,26 +120,26 @@ "name": "stdout", "output_type": "stream", "text": [ - "number of records: 65510\n", + "number of records: 66077\n", "\n", - "Int64Index: 65510 entries, 0 to 561\n", + "Int64Index: 66077 entries, 0 to 566\n", "Data columns (total 14 columns):\n", - "date 65510 non-null datetime64[ns]\n", - "jobid 65510 non-null object\n", - "wcl 65510 non-null int64\n", - "cpu 65510 non-null int64\n", - "aff 65510 non-null int64\n", - "mem 65510 non-null int64\n", - "queue 65510 non-null object\n", - "elapsed 65510 non-null int64\n", - "waited 65510 non-null int64\n", - "status 65510 non-null int64\n", - "account 65510 non-null object\n", - "username 65510 non-null object\n", - "dummy1 21997 non-null float64\n", - "dummy2 22230 non-null float64\n", + "date 66077 non-null datetime64[ns]\n", + "jobid 66077 non-null object\n", + "wcl 66077 non-null int64\n", + "cpu 66077 non-null int64\n", + "aff 66077 non-null int64\n", + "mem 66077 non-null int64\n", + "queue 66077 non-null object\n", + "elapsed 66077 non-null int64\n", + "waited 66077 non-null int64\n", + "status 66077 non-null int64\n", + "account 66077 non-null object\n", + "username 66077 non-null object\n", + "dummy1 22564 non-null float64\n", + "dummy2 22797 non-null float64\n", "dtypes: datetime64[ns](1), float64(2), int64(7), object(4)\n", - "memory usage: 7.5+ MB\n" + "memory usage: 7.6+ MB\n" ] }, { @@ -272,7 +272,7 @@ "4 0 smr_prod a07smr01 NaN NaN " ] }, - "execution_count": 56, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -325,7 +325,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 6, "metadata": { "collapsed": false, "scrolled": true @@ -357,128 +357,125 @@ " \n", " \n", " \n", - " 0\n", - " 2015-01-12\n", - " 5932\n", - " 360000\n", - " 700\n", + " 562\n", + " 2015-06-09\n", + " 52547[1]\n", + " 82800\n", + " 4\n", " 1\n", - " 4300800\n", - " parallel\n", - " 333959\n", + " 16384\n", + " epigen\n", + " 2394\n", + " 0\n", + " 0\n", + " EPIGE_prod\n", + " a07epg01\n", " 0\n", " 0\n", - " cin_staff\n", - " mcestari\n", - " NaN\n", - " NaN\n", " \n", " \n", - " 1\n", - " 2015-01-12\n", - " 6181\n", - " 21600\n", - " 1\n", + " 563\n", + " 2015-06-09\n", + " 52547[2]\n", + " 82800\n", + " 4\n", " 1\n", - " 2048\n", - " meteoser\n", - " 587\n", - " 1\n", - " 15\n", - " smr_prod\n", - " a07smr01\n", - " NaN\n", - " NaN\n", + " 16384\n", + " epigen\n", + " 3826\n", + " 0\n", + " 0\n", + " EPIGE_prod\n", + " a07epg01\n", + " 0\n", + " 0\n", " \n", " \n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", + " 564\n", + " 2015-06-09\n", + " 52548[0]\n", + " 43200\n", + " 3\n", + " 1\n", + " 16384\n", + " epigen_dbio\n", + " 1\n", + " 0\n", + " 0\n", + " EPIGE_prod\n", + " a07epg01\n", + " 0\n", + " 0\n", " \n", " \n", - " 560\n", - " 2015-06-08\n", - " 52049\n", - " 600\n", - " 256\n", + " 565\n", + " 2015-06-09\n", + " 52548[1]\n", + " 43200\n", + " 3\n", + " 1\n", + " 16384\n", + " epigen_dbio\n", + " 1\n", " 1\n", - " 114688\n", - " parallel\n", - " 196\n", - " 221\n", " 0\n", - " smr_prod\n", - " vpoli000\n", + " EPIGE_prod\n", + " a07epg01\n", " 0\n", " 0\n", " \n", " \n", - " 561\n", - " 2015-06-08\n", - " 52050\n", - " 600\n", - " 256\n", + " 566\n", + " 2015-06-09\n", + " 52548[2]\n", + " 43200\n", + " 3\n", " 1\n", - " 114688\n", - " parallel\n", - " 5\n", + " 16384\n", + " epigen_dbio\n", + " 1170\n", " 1\n", " 0\n", - " smr_prod\n", - " vpoli000\n", + " EPIGE_prod\n", + " a07epg01\n", " 0\n", " 0\n", " \n", " \n", "\n", - "

65510 rows × 14 columns

\n", "" ], "text/plain": [ - " date jobid wcl cpu aff mem queue elapsed waited \\\n", - "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 0 \n", - "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 1 \n", - ".. ... ... ... ... ... ... ... ... ... \n", - "560 2015-06-08 52049 600 256 1 114688 parallel 196 221 \n", - "561 2015-06-08 52050 600 256 1 114688 parallel 5 1 \n", - "\n", - " status account username dummy1 dummy2 \n", - "0 0 cin_staff mcestari NaN NaN \n", - "1 15 smr_prod a07smr01 NaN NaN \n", - ".. ... ... ... ... ... \n", - "560 0 smr_prod vpoli000 0 0 \n", - "561 0 smr_prod vpoli000 0 0 \n", + " date jobid wcl cpu aff mem queue elapsed \\\n", + "562 2015-06-09 52547[1] 82800 4 1 16384 epigen 2394 \n", + "563 2015-06-09 52547[2] 82800 4 1 16384 epigen 3826 \n", + "564 2015-06-09 52548[0] 43200 3 1 16384 epigen_dbio 1 \n", + "565 2015-06-09 52548[1] 43200 3 1 16384 epigen_dbio 1 \n", + "566 2015-06-09 52548[2] 43200 3 1 16384 epigen_dbio 1170 \n", "\n", - "[65510 rows x 14 columns]" + " waited status account username dummy1 dummy2 \n", + "562 0 0 EPIGE_prod a07epg01 0 0 \n", + "563 0 0 EPIGE_prod a07epg01 0 0 \n", + "564 0 0 EPIGE_prod a07epg01 0 0 \n", + "565 1 0 EPIGE_prod a07epg01 0 0 \n", + "566 1 0 EPIGE_prod a07epg01 0 0 " ] }, - "execution_count": 61, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.set_option('max_rows', 5)\n", - "Cluster\n", + "#Cluster\n", "\n", - "#Cluster.tail()" + "Cluster.tail()" ] }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -564,65 +561,65 @@ " ...\n", " \n", " \n", - " 560\n", - " 2015-06-08\n", - " 52049\n", - " 600\n", - " 256\n", + " 565\n", + " 2015-06-09\n", + " 52548[1]\n", + " 43200\n", + " 3\n", + " 1\n", + " 16384\n", + " epigen_dbio\n", + " 1\n", " 1\n", - " 114688\n", - " parallel\n", - " 196\n", - " 221\n", " 0\n", - " smr_prod\n", - " vpoli000\n", + " EPIGE_prod\n", + " a07epg01\n", " 0\n", " 0\n", - " 13.937778\n", + " 0.000833\n", " \n", " \n", - " 561\n", - " 2015-06-08\n", - " 52050\n", - " 600\n", - " 256\n", + " 566\n", + " 2015-06-09\n", + " 52548[2]\n", + " 43200\n", + " 3\n", " 1\n", - " 114688\n", - " parallel\n", - " 5\n", + " 16384\n", + " epigen_dbio\n", + " 1170\n", " 1\n", " 0\n", - " smr_prod\n", - " vpoli000\n", + " EPIGE_prod\n", + " a07epg01\n", " 0\n", " 0\n", - " 0.355556\n", + " 0.975000\n", " \n", " \n", "\n", - "

65510 rows × 15 columns

\n", + "

66077 rows × 15 columns

\n", "" ], "text/plain": [ - " date jobid wcl cpu aff mem queue elapsed waited \\\n", - "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 0 \n", - "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 1 \n", - ".. ... ... ... ... ... ... ... ... ... \n", - "560 2015-06-08 52049 600 256 1 114688 parallel 196 221 \n", - "561 2015-06-08 52050 600 256 1 114688 parallel 5 1 \n", + " date jobid wcl cpu aff mem queue elapsed \\\n", + "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 \n", + "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 \n", + ".. ... ... ... ... ... ... ... ... \n", + "565 2015-06-09 52548[1] 43200 3 1 16384 epigen_dbio 1 \n", + "566 2015-06-09 52548[2] 43200 3 1 16384 epigen_dbio 1170 \n", "\n", - " status account username dummy1 dummy2 core_hours \n", - "0 0 cin_staff mcestari NaN NaN 64936.472222 \n", - "1 15 smr_prod a07smr01 NaN NaN 0.163056 \n", - ".. ... ... ... ... ... ... \n", - "560 0 smr_prod vpoli000 0 0 13.937778 \n", - "561 0 smr_prod vpoli000 0 0 0.355556 \n", + " waited status account username dummy1 dummy2 core_hours \n", + "0 0 0 cin_staff mcestari NaN NaN 64936.472222 \n", + "1 1 15 smr_prod a07smr01 NaN NaN 0.163056 \n", + ".. ... ... ... ... ... ... ... \n", + "565 1 0 EPIGE_prod a07epg01 0 0 0.000833 \n", + "566 1 0 EPIGE_prod a07epg01 0 0 0.975000 \n", "\n", - "[65510 rows x 15 columns]" + "[66077 rows x 15 columns]" ] }, - "execution_count": 89, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -634,7 +631,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -643,20 +640,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "different_values of date 148 442.635135135 47 2428 \n", - "different_values of jobid 65509 1.00001526508 1 2 \n", - "different_values of wcl 65 1007.84615385 1 21414 \n", - "different_values of cpu 51 1284.50980392 1 11907 \n", - "different_values of aff 1 65510.0 65510 65510 \n", - "different_values of mem 105 623.904761905 1 8821 \n", - "different_values of queue 310 211.322580645 1 33772 \n", - "different_values of elapsed 11420 5.73642732049 1 5691 \n", - "different_values of waited 8907 7.35488941282 1 18310 \n", - "different_values of status 4 16377.5 1 61356 \n", - "different_values of account 33 1985.15151515 1 20777 \n", - "different_values of username 97 675.360824742 1 21155 \n", - "different_values of dummy1 1 21997.0 21997 21997 \n", - "different_values of dummy2 3 7410.0 1 22228 \n", + "different_values of date 149 443.469798658 47 2428 \n", + "different_values of jobid 66076 1.00001513409 1 2 \n", + "different_values of wcl 65 1016.56923077 1 21543 \n", + "different_values of cpu 53 1246.73584906 1 12012 \n", + "different_values of aff 1 66077.0 66077 66077 \n", + "different_values of mem 108 611.824074074 1 8911 \n", + "different_values of queue 312 211.78525641 1 34018 \n", + "different_values of elapsed 11460 5.76588132635 1 5771 \n", + "different_values of waited 8921 7.40690505549 1 18501 \n", + "different_values of status 4 16519.25 1 61868 \n", + "different_values of account 34 1943.44117647 1 20950 \n", + "different_values of username 113 584.752212389 1 21328 \n", + "different_values of dummy1 1 22564.0 22564 22564 \n", + "different_values of dummy2 3 7599.0 1 22795 \n", "['parallel', 'epigen', 'meteoser', 'serial', 'epigen_dbio', 'rcm_visual', 'dcv_visual', 'meteo', 'R15024', 'bigmem', 'system', 'R38006', 'R45731', 'R32345']\n" ] } @@ -686,7 +683,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1166,6 +1163,7 @@ "import ssl\n", "ssl._create_default_https_context = ssl._create_unverified_context\n", "#ssl.create_default_context(capath=False)\n", + "'''\n", "Cluster = pd.read_csv(\n", " \"https://hpc-forge.cineca.it/files/Visualization_School/public/20150315.jobs\",\n", " sep=';',\n", @@ -1183,7 +1181,7 @@ " 'account',\n", " 'username','unknown'],\n", " parse_dates=['date'])\n", - "\n", + "'''\n", "sel = Cluster[['elapsed','waited', \"queue\"]]\n", "#print sel\n", "grouped_df=sel.groupby(\"queue\")\n", @@ -1203,7 +1201,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -1213,21 +1211,21 @@ "text/html": [ "\n", - "
\n", + "
\n", "\n" ] }, @@ -1254,7 +1252,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -1264,21 +1262,21 @@ "text/html": [ "\n", - "
\n", + "
\n", "\n" ] }, diff --git a/sync_with_upstream.sh b/sync_with_upstream.sh index 4bd1ee1..d2874d1 100755 --- a/sync_with_upstream.sh +++ b/sync_with_upstream.sh @@ -1,21 +1,21 @@ #!/bin/bash -#clone forked repository specifying milano branch -#clone -b milano https://github.com/luigi-calori/lectures.git lectures_milano +#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 -#config --global user.name "luigi-calori" -#config --global user.email "l.calori@cineca.it" +#git config --global user.name "luigi-calori" +#git config --global user.email "l.calori@cineca.it" #find where is the remote to push -#remote show origin +#git remote show origin #suppose we edited README, than status show but we have to add it -#add README.md -#commit -m " changed README " +#git add README.md +#git commit -m " changed README " #define upstream repo into local -#remote add upstream https://github.com/cineca-scai/lectures.git +#git remote add upstream https://github.com/cineca-scai/lectures.git #here are the step to keep it in sync with upstream git pull From 0dc962401098e46c6faeba1e3139ed227e6bdf1c Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Wed, 10 Jun 2015 17:16:23 +0000 Subject: [PATCH 07/13] fix docker startup --- start_image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start_image.sh b/start_image.sh index 812168c..3312a88 100755 --- a/start_image.sh +++ b/start_image.sh @@ -1,2 +1,2 @@ #/bin/bash -docker run -d -v $(pwd)/lectures/pydata:/data -v /tmp/statistics/:/statistics -p 80:8000 cineca/jupydatanb +docker run -d -v $(pwd)/pydata:/data -v /tmp/statistics/:/statistics -p 80:8000 cineca/jupydatanb From 939099b383970d85d1f4d7b1120c8d8db496e4e9 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Thu, 11 Jun 2015 10:52:43 +0000 Subject: [PATCH 08/13] evolve pico_jobs --- pydata/pico_jobs.ipynb | 666 ++++++++++++++++------------------------- 1 file changed, 252 insertions(+), 414 deletions(-) diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index e6baf49..8a0776c 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 158, "metadata": { "collapsed": false }, @@ -44,7 +44,7 @@ " for fname in files[:limit]:\n", " print fname \n", "\n", - "folder='/statistics' \n", + "folder='/statistics/pico' \n", "if socket.gethostname().find('.')>=0:\n", " my_hostname=socket.gethostname()\n", "else:\n", @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 159, "metadata": { "collapsed": false }, @@ -75,20 +75,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "first 3 of 149\n", - "20150112.jobs.bz2\n", - "20150113.jobs.bz2\n", - "20150114.jobs.bz2\n", - "20150112;5932;360000;700;1;4300800;parallel;333959;0;0;cin_staff;mcestari\n", - "20150113;6222;259200;60;1;138240;parallel;92024;1;0;cin_staff;rpieri00\n", - "20150114;6293[1];259200;8;1;48128;epigen;119459;6526;0;EPIGE_prod;a07epg01\n" + "first 3 of 9\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='2015'\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", @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 160, "metadata": { "collapsed": false }, @@ -120,161 +120,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "number of records: 66077\n", - "\n", - "Int64Index: 66077 entries, 0 to 566\n", - "Data columns (total 14 columns):\n", - "date 66077 non-null datetime64[ns]\n", - "jobid 66077 non-null object\n", - "wcl 66077 non-null int64\n", - "cpu 66077 non-null int64\n", - "aff 66077 non-null int64\n", - "mem 66077 non-null int64\n", - "queue 66077 non-null object\n", - "elapsed 66077 non-null int64\n", - "waited 66077 non-null int64\n", - "status 66077 non-null int64\n", - "account 66077 non-null object\n", - "username 66077 non-null object\n", - "dummy1 22564 non-null float64\n", - "dummy2 22797 non-null float64\n", - "dtypes: datetime64[ns](1), float64(2), int64(7), object(4)\n", - "memory usage: 7.6+ MB\n" + "number of records: 5605\n" ] - }, - { - "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", - "
datejobidwclcpuaffmemqueueelapsedwaitedstatusaccountusernamedummy1dummy2
02015-01-12593236000070014300800parallel33395900cin_staffmcestariNaNNaN
12015-01-12618121600112048meteoser587115smr_proda07smr01NaNNaN
22015-01-126182216001401716800R6008257615smr_proda07smr01NaNNaN
32015-01-12618321600112048meteoser1378610smr_proda07smr01NaNNaN
42015-01-126184216001401716800R6008143300smr_proda07smr01NaNNaN
\n", - "
" - ], - "text/plain": [ - " date jobid wcl cpu aff mem queue elapsed waited \\\n", - "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 0 \n", - "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 1 \n", - "2 2015-01-12 6182 21600 140 1 716800 R6008 2 576 \n", - "3 2015-01-12 6183 21600 1 1 2048 meteoser 13786 1 \n", - "4 2015-01-12 6184 21600 140 1 716800 R6008 1433 0 \n", - "\n", - " status account username dummy1 dummy2 \n", - "0 0 cin_staff mcestari NaN NaN \n", - "1 15 smr_prod a07smr01 NaN NaN \n", - "2 15 smr_prod a07smr01 NaN NaN \n", - "3 0 smr_prod a07smr01 NaN NaN \n", - "4 0 smr_prod a07smr01 NaN NaN " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -311,8 +158,8 @@ " )\n", " Cluster=pd.concat([Cluster,df_day])\n", "print \"number of records: \"+str(len(Cluster))\n", - "Cluster.info()\n", - "Cluster.head()\n", + "#Cluster.info()\n", + "#Cluster.head()\n", "#Cluster.tail()" ] }, @@ -320,12 +167,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Do some inspection" + "Compute another new column representing core hours" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 161, "metadata": { "collapsed": false, "scrolled": true @@ -353,59 +200,63 @@ " username\n", " dummy1\n", " dummy2\n", + " core_hours\n", " \n", " \n", " \n", " \n", - " 562\n", - " 2015-06-09\n", - " 52547[1]\n", - " 82800\n", - " 4\n", + " 0\n", + " 2015-06-01\n", + " 47552\n", + " 43200\n", + " 20\n", " 1\n", - " 16384\n", - " epigen\n", - " 2394\n", - " 0\n", + " 129024\n", + " rcm_visual\n", + " 2953\n", " 0\n", - " EPIGE_prod\n", - " a07epg01\n", + " 15\n", + " interactive\n", + " lavaldi0\n", " 0\n", " 0\n", + " 16.405556\n", " \n", " \n", - " 563\n", - " 2015-06-09\n", - " 52547[2]\n", + " 1\n", + " 2015-06-01\n", + " 47579[1]\n", " 82800\n", " 4\n", " 1\n", - " 16384\n", + " 23552\n", " epigen\n", - " 3826\n", + " 3505\n", " 0\n", " 0\n", " EPIGE_prod\n", " a07epg01\n", " 0\n", " 0\n", + " 3.894444\n", " \n", " \n", - " 564\n", - " 2015-06-09\n", - " 52548[0]\n", - " 43200\n", - " 3\n", - " 1\n", - " 16384\n", - " epigen_dbio\n", - " 1\n", - " 0\n", - " 0\n", - " EPIGE_prod\n", - " a07epg01\n", - " 0\n", - " 0\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", " \n", " \n", " 565\n", @@ -423,6 +274,7 @@ " a07epg01\n", " 0\n", " 0\n", + " 0.000833\n", " \n", " \n", " 566\n", @@ -440,42 +292,84 @@ " a07epg01\n", " 0\n", " 0\n", + " 0.975000\n", " \n", " \n", "\n", + "

5605 rows × 15 columns

\n", "" ], "text/plain": [ - " date jobid wcl cpu aff mem queue elapsed \\\n", - "562 2015-06-09 52547[1] 82800 4 1 16384 epigen 2394 \n", - "563 2015-06-09 52547[2] 82800 4 1 16384 epigen 3826 \n", - "564 2015-06-09 52548[0] 43200 3 1 16384 epigen_dbio 1 \n", - "565 2015-06-09 52548[1] 43200 3 1 16384 epigen_dbio 1 \n", - "566 2015-06-09 52548[2] 43200 3 1 16384 epigen_dbio 1170 \n", + " 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", + "565 2015-06-09 52548[1] 43200 3 1 16384 epigen_dbio 1 \n", + "566 2015-06-09 52548[2] 43200 3 1 16384 epigen_dbio 1170 \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", + "565 1 0 EPIGE_prod a07epg01 0 0 0.000833 \n", + "566 1 0 EPIGE_prod a07epg01 0 0 0.975000 \n", "\n", - " waited status account username dummy1 dummy2 \n", - "562 0 0 EPIGE_prod a07epg01 0 0 \n", - "563 0 0 EPIGE_prod a07epg01 0 0 \n", - "564 0 0 EPIGE_prod a07epg01 0 0 \n", - "565 1 0 EPIGE_prod a07epg01 0 0 \n", - "566 1 0 EPIGE_prod a07epg01 0 0 " + "[5605 rows x 15 columns]" ] }, - "execution_count": 6, + "execution_count": 161, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.set_option('max_rows', 5)\n", - "#Cluster\n", + "Cluster['core_hours'] = Cluster['cpu'] * Cluster['elapsed'] / 3600\n", + "Cluster.sort_index(by='jobid')\n", + "Cluster\n", "\n", - "Cluster.tail()" + "#Cluster.tail()" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "count unique values for label fields" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 162, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "field jobid type object 5605 1 1.0 1 \n", + "field queue type object 27 4 207.592592593 3994 \n", + "field account type object 20 1 280.25 1690 \n", + "field username type object 54 1 103.796296296 1687 \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": 163, "metadata": { "collapsed": false }, @@ -488,150 +382,83 @@ " \n", " \n", " \n", - " 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", - " core_hours\n", + " num_jobs\n", + " tot_core_hours\n", " \n", " \n", " \n", " \n", " 0\n", - " 2015-01-12\n", - " 5932\n", - " 360000\n", - " 700\n", - " 1\n", - " 4300800\n", - " parallel\n", - " 333959\n", - " 0\n", - " 0\n", - " cin_staff\n", - " mcestari\n", - " NaN\n", - " NaN\n", - " 64936.472222\n", + " 10\n", + " 1000\n", " \n", " \n", " 1\n", - " 2015-01-12\n", - " 6181\n", - " 21600\n", - " 1\n", - " 1\n", - " 2048\n", - " meteoser\n", - " 587\n", - " 1\n", - " 15\n", - " smr_prod\n", - " a07smr01\n", - " NaN\n", - " NaN\n", - " 0.163056\n", - " \n", - " \n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " ...\n", - " \n", - " \n", - " 565\n", - " 2015-06-09\n", - " 52548[1]\n", - " 43200\n", - " 3\n", - " 1\n", - " 16384\n", - " epigen_dbio\n", - " 1\n", - " 1\n", - " 0\n", - " EPIGE_prod\n", - " a07epg01\n", - " 0\n", - " 0\n", - " 0.000833\n", - " \n", - " \n", - " 566\n", - " 2015-06-09\n", - " 52548[2]\n", - " 43200\n", - " 3\n", - " 1\n", - " 16384\n", - " epigen_dbio\n", - " 1170\n", - " 1\n", - " 0\n", - " EPIGE_prod\n", - " a07epg01\n", - " 0\n", - " 0\n", - " 0.975000\n", + " 11\n", + " 22\n", " \n", " \n", "\n", - "

66077 rows × 15 columns

\n", "" ], "text/plain": [ - " date jobid wcl cpu aff mem queue elapsed \\\n", - "0 2015-01-12 5932 360000 700 1 4300800 parallel 333959 \n", - "1 2015-01-12 6181 21600 1 1 2048 meteoser 587 \n", - ".. ... ... ... ... ... ... ... ... \n", - "565 2015-06-09 52548[1] 43200 3 1 16384 epigen_dbio 1 \n", - "566 2015-06-09 52548[2] 43200 3 1 16384 epigen_dbio 1170 \n", - "\n", - " waited status account username dummy1 dummy2 core_hours \n", - "0 0 0 cin_staff mcestari NaN NaN 64936.472222 \n", - "1 1 15 smr_prod a07smr01 NaN NaN 0.163056 \n", - ".. ... ... ... ... ... ... ... \n", - "565 1 0 EPIGE_prod a07epg01 0 0 0.000833 \n", - "566 1 0 EPIGE_prod a07epg01 0 0 0.975000 \n", - "\n", - "[66077 rows x 15 columns]" + " num_jobs tot_core_hours\n", + "0 10 1000\n", + "1 11 22" ] }, - "execution_count": 7, + "execution_count": 163, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "Cluster['core_hours'] = Cluster['cpu'] * Cluster['elapsed'] / 3600\n", - "Cluster" + "d=dict()\n", + "d['num_jobs']=[10,11]\n", + "d['tot_core_hours']=[1000,22]\n", + "mydf=pd.DataFrame.from_dict(d)\n", + "mydf" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " jobid core_hours elapsed waited\n", + "queue \n", + "R46140 13 716.610000 2379.000000 413.846154\n", + "R46614 13 597.403333 1607.538462 457.769231\n", + "... ... ... ... ...\n", + "serial 68 18.706111 645.264706 498.514706\n", + "system 4 257.011111 401.750000 182.000000\n", + "\n", + "[27 rows x 4 columns]\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([g['jobid'].count(),g['core_hours'].sum(), g['elapsed'].mean(), g['waited'].mean()], axis=1)\n", + " #for k in g.keys\n", + " #df=pd.DataFrame([g['core_hours'].count(),g['core_hours'].sum()])\n", + " #print df\n", + " print stats[f]\n" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 168, "metadata": { "collapsed": false }, @@ -640,21 +467,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "different_values of date 149 443.469798658 47 2428 \n", - "different_values of jobid 66076 1.00001513409 1 2 \n", - "different_values of wcl 65 1016.56923077 1 21543 \n", - "different_values of cpu 53 1246.73584906 1 12012 \n", - "different_values of aff 1 66077.0 66077 66077 \n", - "different_values of mem 108 611.824074074 1 8911 \n", - "different_values of queue 312 211.78525641 1 34018 \n", - "different_values of elapsed 11460 5.76588132635 1 5771 \n", - "different_values of waited 8921 7.40690505549 1 18501 \n", - "different_values of status 4 16519.25 1 61868 \n", - "different_values of account 34 1943.44117647 1 20950 \n", - "different_values of username 113 584.752212389 1 21328 \n", - "different_values of dummy1 1 22564.0 22564 22564 \n", - "different_values of dummy2 3 7599.0 1 22795 \n", - "['parallel', 'epigen', 'meteoser', 'serial', 'epigen_dbio', 'rcm_visual', 'dcv_visual', 'meteo', 'R15024', 'bigmem', 'system', 'R38006', 'R45731', 'R32345']\n" + "different_values of date 9 622.777777778 55 1348 \n", + "different_values of jobid 5605 1.0 1 1 \n", + "different_values of wcl 32 175.15625 1 2205 \n", + "different_values of cpu 33 169.848484848 1 1785 \n", + "different_values of aff 1 5605.0 5605 5605 \n", + "different_values of mem 55 101.909090909 1 1665 \n", + "different_values of queue 27 207.592592593 4 3994 \n", + "different_values of elapsed 2098 2.67159199237 1 262 \n", + "different_values of waited 1703 3.291250734 1 1842 \n", + "different_values of status 3 1868.33333333 16 5367 \n", + "different_values of account 20 280.25 1 1690 \n", + "different_values of username 54 103.796296296 1 1687 \n", + "different_values of dummy1 1 5605.0 5605 5605 \n", + "different_values of dummy2 1 5605.0 5605 5605 \n", + "['meteo', 'serial', 'rcm_visual', 'epigen_dbio', 'meteoser', 'epigen', 'parallel']\n" ] } ], @@ -669,7 +496,7 @@ " str(v.max())+\" \"\n", " #relevant[f]=v[()]\n", "v=Cluster['queue'].value_counts()\n", - "v\n", + "v.sort()\n", "relev=[]\n", "for k in v.keys():\n", " if v[k] > 0.1*v.mean() : relev.append(k)\n", @@ -683,7 +510,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 169, "metadata": { "collapsed": false }, @@ -693,7 +520,7 @@ "text/html": [ " \n", " \n", " \n", " \n", " \n", - "
\n", + "
\n", "\n" ] }, @@ -1252,7 +1081,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 171, "metadata": { "collapsed": false }, @@ -1262,21 +1091,21 @@ "text/html": [ "\n", - "
\n", + "
\n", "\n" ] }, @@ -1329,6 +1158,15 @@ "bokeh.charts.show(fig)" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -1355,7 +1193,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.9" + "version": "2.7.10" } }, "nbformat": 4, From e3f1703a423d7e5020a84139dede3ed359937752 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Thu, 11 Jun 2015 15:20:48 +0000 Subject: [PATCH 09/13] fixing pico_jobs scatter plot --- pydata/pico_jobs.ipynb | 676 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 646 insertions(+), 30 deletions(-) diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index 8a0776c..7475470 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 158, + "execution_count": 172, "metadata": { "collapsed": false }, @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 173, "metadata": { "collapsed": false }, @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 174, "metadata": { "collapsed": false }, @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 161, + "execution_count": 175, "metadata": { "collapsed": false, "scrolled": true @@ -317,7 +317,7 @@ "[5605 rows x 15 columns]" ] }, - "execution_count": 161, + "execution_count": 175, "metadata": {}, "output_type": "execute_result" } @@ -340,7 +340,7 @@ }, { "cell_type": "code", - "execution_count": 162, + "execution_count": 176, "metadata": { "collapsed": false }, @@ -369,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 177, "metadata": { "collapsed": false }, @@ -407,7 +407,7 @@ "1 11 22" ] }, - "execution_count": 163, + "execution_count": 177, "metadata": {}, "output_type": "execute_result" } @@ -422,7 +422,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 233, "metadata": { "collapsed": false }, @@ -431,15 +431,23 @@ "name": "stdout", "output_type": "stream", "text": [ - " jobid core_hours elapsed waited\n", - "queue \n", - "R46140 13 716.610000 2379.000000 413.846154\n", - "R46614 13 597.403333 1607.538462 457.769231\n", - "... ... ... ... ...\n", - "serial 68 18.706111 645.264706 498.514706\n", - "system 4 257.011111 401.750000 182.000000\n", - "\n", - "[27 rows x 4 columns]\n" + "\n", + "Index: 6 entries, parallel to R47051\n", + "Data columns (total 6 columns):\n", + "jobid 6 non-null int64\n", + "core_hours 6 non-null float64\n", + "elapsed 6 non-null float64\n", + "waited 6 non-null float64\n", + "cpu 6 non-null float64\n", + "mem 6 non-null float64\n", + "dtypes: float64(5), int64(1)\n", + "memory usage: 336.0+ bytes\n", + "parallel\n", + "rcm_visual\n", + "epigen\n", + "meteo\n", + "meteoser\n", + "R47051\n" ] } ], @@ -449,11 +457,586 @@ "stats=dict()\n", "for f in group_fields :\n", " g=Cluster.groupby(f)\n", - " stats[f]=pd.concat([g['jobid'].count(),g['core_hours'].sum(), g['elapsed'].mean(), g['waited'].mean()], axis=1)\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", " #for k in g.keys\n", " #df=pd.DataFrame([g['core_hours'].count(),g['core_hours'].sum()])\n", " #print df\n", - " print stats[f]\n" + " #print stats[f]\n", + "#stats['queue'].tail()\n", + "#print stats['queue'][-3:]\n", + "stats['queue'][:6].info()\n", + "stats['queue'][:6].keys\n", + "for queue in stats['queue'][:6].index :\n", + " print queue\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup Bokeh plotting libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 265, + "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": [ + "Do a scatter plot" + ] + }, + { + "cell_type": "code", + "execution_count": 269, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#fig = bokeh.plotting.figure(tools=[hover])\n", + "fig = bokeh.plotting.figure(tools=\"reset,hover,pan,wheel_zoom,resize,box_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", + "\n", + "for i in stats['queue'][:len(colors)].index :\n", + "# print \"queue-->\"+i\n", + " ctot = ctot +1\n", + "# p = sel[(Cluster.queue == i)][['elapsed','waited']]\n", + "# p = sel[(Cluster.queue == i)][['elapsed','waited']]\n", + "# a=.values\n", + " a=Cluster[(Cluster.queue == i)][['cpu','elapsed','core_hours','account']].values\n", + " x=a[:,0]\n", + " y=a[:,1]\n", + " size=a[:,2]/100\n", + " source = ColumnDataSource(\n", + " data=dict(\n", + "# x=x,\n", + "# y=y,\n", + " val=a[:,2],\n", + " desc=a[:,3],\n", + " )\n", + " )\n", + "# fig.circle('x', 'y', size=20, source=source)\n", + " \n", + " s[i] = fig.scatter(x=x,\n", + " y=y,\n", + " color=colors.get(ctot,'#000000'),\n", + " size=size,\n", + " source=source,\n", + " legend=i+ ' '+str(len(a)))\n", + " s[i].select(dict(type=HoverTool)).tooltips = {\"account\":\"@desc\",\"core_hours\":\"@val\"}\n", + " \n", + "bokeh.charts.show(fig)" ] }, { @@ -510,7 +1093,7 @@ }, { "cell_type": "code", - "execution_count": 169, + "execution_count": 217, "metadata": { "collapsed": false }, @@ -1081,31 +1664,64 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 223, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R48654 \n", + "R48653 \n", + "R49627 \n", + "R49626 \n", + "meteoser \n", + "meteo \n", + "rcm_visual \n", + "serial \n", + "R50323 \n", + "R50324 \n", + "system \n", + "R50956 \n", + "R50955 \n", + "R51463 \n", + "epigen \n", + "epigen_dbio \n", + "parallel \n", + "bigmem \n", + "R47052 \n", + "R47051 \n", + "R47618 \n", + "R47617 \n", + "R46930 \n", + "R46931 \n", + "R46140 \n", + "R46615 \n", + "R46614 \n" + ] + }, { "data": { "text/html": [ "\n", - "
\n", + "
\n", "\n" ] }, @@ -1126,7 +1742,7 @@ "colors[4]='#00ffff'\n", "colors[5]='#ffff00'\n", "for i in grouped_df.groups.keys():\n", - "# print i\n", + " print i,type(i)\n", "# if i =='debug' or i == 'smallpar':\n", "# if i =='debug' :\n", "# if i =='debug' or i == 'longdebug':\n", From 6b7057a60de3061736459c4c9faf6a8c85d6ea12 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Thu, 11 Jun 2015 19:23:55 +0000 Subject: [PATCH 10/13] adding hystogram and improving scatter --- pydata/MatPlotLib_hystogram.ipynb | 231 ++++++++++++++++++++++++ pydata/pico_jobs.ipynb | 287 +++++++++++++++++++++--------- 2 files changed, 437 insertions(+), 81 deletions(-) create mode 100644 pydata/MatPlotLib_hystogram.ipynb diff --git a/pydata/MatPlotLib_hystogram.ipynb b/pydata/MatPlotLib_hystogram.ipynb new file mode 100644 index 0000000..34da145 --- /dev/null +++ b/pydata/MatPlotLib_hystogram.ipynb @@ -0,0 +1,231 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "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": 10, + "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": 11, + "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": 12, + "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": 13, + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index 7475470..404ab1b 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -111,7 +111,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true @@ -317,7 +317,7 @@ "[5605 rows x 15 columns]" ] }, - "execution_count": 175, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -340,7 +340,7 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -369,45 +369,18 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 6, "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", - "
num_jobstot_core_hours
0101000
11122
\n", - "
" - ], "text/plain": [ - " num_jobs tot_core_hours\n", - "0 10 1000\n", - "1 11 22" + "{'num_jobs': 0, 'tot_core_hours': 1}" ] }, - "execution_count": 177, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -417,12 +390,19 @@ "d['num_jobs']=[10,11]\n", "d['tot_core_hours']=[1000,22]\n", "mydf=pd.DataFrame.from_dict(d)\n", - "mydf" + "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": 233, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -431,17 +411,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Index: 6 entries, parallel to R47051\n", - "Data columns (total 6 columns):\n", - "jobid 6 non-null int64\n", - "core_hours 6 non-null float64\n", - "elapsed 6 non-null float64\n", - "waited 6 non-null float64\n", - "cpu 6 non-null float64\n", - "mem 6 non-null float64\n", - "dtypes: float64(5), int64(1)\n", - "memory usage: 336.0+ bytes\n", "parallel\n", "rcm_visual\n", "epigen\n", @@ -462,18 +431,44 @@ " 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", - " #for k in g.keys\n", - " #df=pd.DataFrame([g['core_hours'].count(),g['core_hours'].sum()])\n", - " #print df\n", - " #print stats[f]\n", "#stats['queue'].tail()\n", "#print stats['queue'][-3:]\n", - "stats['queue'][:6].info()\n", - "stats['queue'][:6].keys\n", "for queue in stats['queue'][:6].index :\n", " print queue\n" ] }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "parallel\n", + "rcm_visual\n", + "epigen\n", + "meteo\n", + "meteoser\n", + "R47051\n" + ] + } + ], + "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" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -483,7 +478,7 @@ }, { "cell_type": "code", - "execution_count": 265, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -708,8 +703,7 @@ "
\n", " \n", " BokehJS successfully loaded.\n", - "
\n", - "

Warning: BokehJS previously loaded

" + " " ] }, "metadata": {}, @@ -957,12 +951,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Do a scatter plot" + "function for an individual jobs scatter plot" ] }, { "cell_type": "code", - "execution_count": 269, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -972,21 +966,148 @@ "text/html": [ "\n", - "
\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": 18, + "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": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", "\n" ] }, @@ -996,29 +1117,28 @@ ], "source": [ "#fig = bokeh.plotting.figure(tools=[hover])\n", - "fig = bokeh.plotting.figure(tools=\"reset,hover,pan,wheel_zoom,resize,box_zoom\")\n", "#fig.background_fill = \"black\"\n", + "colors=['#ff0000','#00ff00','#0000ff','#ff00ff','#00ffff','#ffff00']\n", + "plot_fields=['cpu','elapsed','core_hours','account']\n", + "tools=\"reset,hover,pan,wheel_zoom,resize,box_zoom\"\n", + "\n", + "\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", + "fig = bokeh.plotting.figure(tools=\"reset,hover,pan,wheel_zoom,resize,box_zoom\",\n", + " x_axis_label=plot_fields[0],\n", + " y_axis_label=plot_fields[1])\n", "\n", "for i in stats['queue'][:len(colors)].index :\n", "# print \"queue-->\"+i\n", - " ctot = ctot +1\n", "# p = sel[(Cluster.queue == i)][['elapsed','waited']]\n", "# p = sel[(Cluster.queue == i)][['elapsed','waited']]\n", "# a=.values\n", - " a=Cluster[(Cluster.queue == i)][['cpu','elapsed','core_hours','account']].values\n", + " a=Cluster[(Cluster.queue == i)][plot_fields].values\n", " x=a[:,0]\n", " y=a[:,1]\n", " size=a[:,2]/100\n", - " source = ColumnDataSource(\n", + " source = bokeh.plotting.ColumnDataSource(\n", " data=dict(\n", "# x=x,\n", "# y=y,\n", @@ -1027,14 +1147,19 @@ " )\n", " )\n", "# fig.circle('x', 'y', size=20, source=source)\n", - " \n", + " if ctot < len(colors) :\n", + " color = colors[ctot]\n", + " else:\n", + " color='#000000'\n", + " ctot = ctot +1\n", + "\n", " s[i] = fig.scatter(x=x,\n", " y=y,\n", - " color=colors.get(ctot,'#000000'),\n", + " color=color,\n", " size=size,\n", " source=source,\n", " legend=i+ ' '+str(len(a)))\n", - " s[i].select(dict(type=HoverTool)).tooltips = {\"account\":\"@desc\",\"core_hours\":\"@val\"}\n", + " s[i].select(dict(type=HoverTool)).tooltips = {plot_fields[3]:\"@desc\",plot_fields[2]:\"@val\"}\n", " \n", "bokeh.charts.show(fig)" ] From b7c080c32a6798bf8f7b77a8a86cc7d77220dc57 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Thu, 11 Jun 2015 19:48:07 +0000 Subject: [PATCH 11/13] cleaning scatter --- pydata/pico_jobs.ipynb | 818 ----------------------------------------- 1 file changed, 818 deletions(-) diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index 404ab1b..86c1a5a 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -1081,824 +1081,6 @@ "bokeh.charts.show(p)" ] }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#fig = bokeh.plotting.figure(tools=[hover])\n", - "#fig.background_fill = \"black\"\n", - "colors=['#ff0000','#00ff00','#0000ff','#ff00ff','#00ffff','#ffff00']\n", - "plot_fields=['cpu','elapsed','core_hours','account']\n", - "tools=\"reset,hover,pan,wheel_zoom,resize,box_zoom\"\n", - "\n", - "\n", - "s=dict()\n", - "ctot=0\n", - "fig = bokeh.plotting.figure(tools=\"reset,hover,pan,wheel_zoom,resize,box_zoom\",\n", - " x_axis_label=plot_fields[0],\n", - " y_axis_label=plot_fields[1])\n", - "\n", - "for i in stats['queue'][:len(colors)].index :\n", - "# print \"queue-->\"+i\n", - "# p = sel[(Cluster.queue == i)][['elapsed','waited']]\n", - "# p = sel[(Cluster.queue == i)][['elapsed','waited']]\n", - "# a=.values\n", - " a=Cluster[(Cluster.queue == 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", - "# x=x,\n", - "# y=y,\n", - " val=a[:,2],\n", - " desc=a[:,3],\n", - " )\n", - " )\n", - "# fig.circle('x', 'y', size=20, source=source)\n", - " if ctot < len(colors) :\n", - " color = colors[ctot]\n", - " else:\n", - " color='#000000'\n", - " ctot = ctot +1\n", - "\n", - " s[i] = fig.scatter(x=x,\n", - " y=y,\n", - " color=color,\n", - " size=size,\n", - " source=source,\n", - " legend=i+ ' '+str(len(a)))\n", - " s[i].select(dict(type=HoverTool)).tooltips = {plot_fields[3]:\"@desc\",plot_fields[2]:\"@val\"}\n", - " \n", - "bokeh.charts.show(fig)" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "different_values of date 9 622.777777778 55 1348 \n", - "different_values of jobid 5605 1.0 1 1 \n", - "different_values of wcl 32 175.15625 1 2205 \n", - "different_values of cpu 33 169.848484848 1 1785 \n", - "different_values of aff 1 5605.0 5605 5605 \n", - "different_values of mem 55 101.909090909 1 1665 \n", - "different_values of queue 27 207.592592593 4 3994 \n", - "different_values of elapsed 2098 2.67159199237 1 262 \n", - "different_values of waited 1703 3.291250734 1 1842 \n", - "different_values of status 3 1868.33333333 16 5367 \n", - "different_values of account 20 280.25 1 1690 \n", - "different_values of username 54 103.796296296 1 1687 \n", - "different_values of dummy1 1 5605.0 5605 5605 \n", - "different_values of dummy2 1 5605.0 5605 5605 \n", - "['meteo', 'serial', 'rcm_visual', 'epigen_dbio', 'meteoser', 'epigen', 'parallel']\n" - ] - } - ], - "source": [ - "relevant=dict()\n", - "for f in fields: \n", - " v=Cluster[f].value_counts()\n", - " print \"different_values of \"+\\\n", - " f+\" \"+str(len(v))+\" \"+\\\n", - " str(v.mean())+\" \"+\\\n", - " str(v.min())+\" \"+\\\n", - " str(v.max())+\" \"\n", - " #relevant[f]=v[()]\n", - "v=Cluster['queue'].value_counts()\n", - "v.sort()\n", - "relev=[]\n", - "for k in v.keys():\n", - " if v[k] > 0.1*v.mean() : relev.append(k)\n", - "print relev\n", - "#relevant=dict()\n", - "#for f in ['queue','account']: \n", - "# g=Cluster.groupby('queue')\n", - "#used_queue=[]\n", - "#for q in g.group\n" - ] - }, - { - "cell_type": "code", - "execution_count": 217, - "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", - "'''\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": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 170, - "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": 223, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "R48654 \n", - "R48653 \n", - "R49627 \n", - "R49626 \n", - "meteoser \n", - "meteo \n", - "rcm_visual \n", - "serial \n", - "R50323 \n", - "R50324 \n", - "system \n", - "R50956 \n", - "R50955 \n", - "R51463 \n", - "epigen \n", - "epigen_dbio \n", - "parallel \n", - "bigmem \n", - "R47052 \n", - "R47051 \n", - "R47618 \n", - "R47617 \n", - "R46930 \n", - "R46931 \n", - "R46140 \n", - "R46615 \n", - "R46614 \n" - ] - }, - { - "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,type(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, From d4111f47b8ab3e809109d0bc61b3da3161817d77 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Fri, 12 Jun 2015 03:45:25 +0200 Subject: [PATCH 12/13] added matplotlib histogram to pico_jobs --- pydata/MatPlotLib_hystogram.ipynb | 16 +-- pydata/pico_jobs.ipynb | 199 ++++++++++++++++++++++-------- 2 files changed, 155 insertions(+), 60 deletions(-) diff --git a/pydata/MatPlotLib_hystogram.ipynb b/pydata/MatPlotLib_hystogram.ipynb index 34da145..63057fc 100644 --- a/pydata/MatPlotLib_hystogram.ipynb +++ b/pydata/MatPlotLib_hystogram.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": { "collapsed": true }, @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -30,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -68,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -77,7 +77,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFtJJREFUeJzt3XuwXWWZ5/Hvc3KSSBMFQ5RLiEAHsMFRJNgERLrTA0qQ\nmaaZchoRGMDuLmYoWqdIj0Cswoxd0jgzQaSsKO3Q0IMoXumGwSak1UxbIDfDJZIESbhMLgNyEUGJ\nJCd55o+9TrLOyc7JPuHsfc7Z7/dTtSt7rfXutd5377XXb633XfskMhNJUrl6RrsCkqTRZRBIUuEM\nAkkqnEEgSYUzCCSpcAaBJBWuY0EQEX8XEc9FxPIWyl4dEQ9Vj8cj4pedqKMklSg69TuCiDgR+DXw\nvzLz3cN43cXAezPzz9tWOUkqWMeuCDLzx8CAM/uImBkR/xQRD0bEv0TEO5u89GPANzpSSUkqUO8o\nb/9vgQszc3VEzAYWASf1L4yIg4CDgR+OTvUkqfuNWhBExBTgeODbEdE/e9KgYh8Fvp3+HQxJapvR\nvCLoAV7OzKOHKHMmcFGH6iNJRRq120cz8xXgqYj4CEA0vKd/eUT8HvDWzLx3tOooSSXo5O2j3wDu\nAd4ZEWsj4gLgbODPIuJh4GfAH9deciYOEktS23Xs9lFJ0tjkL4slqXAGgSQVrmN3DUWEfVCStBsy\nM3Zdavd19PbRdjdmNEXEgsxcMNr1aBfbN751c/u6uW3QmZNou4YkqXAGgSQVziAYOUtHuwJttnS0\nK9BmS0e7Am22dLQr0EZLR7sC410n/wx1dvMYgSS1QyeOnV4RSFLhDAJJKpxBIEmFMwgkqXAGgSQV\nziCQpMIZBJJUOINAkgpnEEhS4QwCSSqcQSBJhTMIJKlwLQVBRMyNiFUR8UREXNpk+bSIuDMiHo6I\nn0XE+SNeU0lSW+zyr49GxATgceBkYD3wAHBWZq6slVkATM7MyyNiWlV+38zsq5Xxr49K0jCNlb8+\neiywOjOfzszNwC3A6YPK/D/gLdXztwAv1kNAkjR2tfJ/Fk8H1tam1wGzB5X5KvDDiNgAvBn405Gp\nniSp3VoJglb+55r5wMOZOSciZgJLIuKozHy1XqjqQuq3NDOXtlxTSSpARMwB5nRym60EwXpgRm16\nBo2rgrr3A58DyMw1EfEU8E7gwXqhzFyw2zWVpAJUJ8hL+6cj4jPt3mYrYwQPAodFxMERMQk4E7ht\nUJlVNAaTiYh9aYTAkyNZUUlSe+zyiiAz+yLiYmAxMAG4PjNXRsSF1fLrgCuBGyLiERrh8qnMfKmN\n9ZYkjRD/83pJGsM6cexsZYxAGhGzZi+aD1wCTAKeA56i0Rc6pyqycNl9Fy0elcpJBfOKQB1RhcDn\ndlFsI3CGYSBtN1Z+UCaNhEtaKLMHMK/dFZE0kEEgSYUzCNQpV7dQZiOwsN0VkTSQYwTqGAeLpeHr\nxLHTIJCkMczBYklS2xkEklQ4g0CSCmcQSFLhDAJJKpxBIEmFMwgkqXAGgSQVziCQpMIZBJJUOINA\nkgpnEEhS4QwCSSqcQSBJhTMIJKlwBoEkFc4gkKTCGQSSVDiDQJIKZxBIUuEMAkkqnEEgSYUzCCSp\ncAaBJBXOIJCkwhkEklQ4g0CSCmcQSFLhWgqCiJgbEasi4omIuHQnZeZExEMR8bOIWDqitZQktU1k\n5tAFIiYAjwMnA+uBB4CzMnNlrczewN3AKZm5LiKmZeYLg9aTmRkj3QBJ6madOHa2ckVwLLA6M5/O\nzM3ALcDpg8p8DPhuZq4DGBwCkqSxq5UgmA6srU2vq+bVHQZMjYgfRcSDEXHuSFVQktRevS2UGbrv\nqGEiMAs4Cfgd4CcRcW9mPvFGKidJar9WgmA9MKM2PYPGVUHdWuCFzNwIbIyIfwGOAgYEQUQsqE0u\nzcylw62wJHWziJgDzOnoNlsYLO6lMVh8ErABuJ8dB4t/D/gScAowGbgPODMzV9TKOFgsScPUiWPn\nLq8IMrMvIi4GFgMTgOszc2VEXFgtvy4zV0XEncCjwFbgq/UQkCSNXbu8IhixDXlFIEnDNlZuH5Uk\ndTGDQJIKZxBIUuEMAkkqnEEgSYUzCCSpcAaBJBXOIJCkwhkEklQ4g0CSCmcQSFLhDAJJKpxBIEmF\nMwgkqXAGgSQVziCQpMIZBJJUOINAkgpnEEhS4QwCSSqcQSBJhTMIJKlwBoEkFc4gkKTCGQSSVDiD\nQJIKZxBIUuEMAkkqnEEgSYUzCCSpcAaBJBXOIJCkwhkEklQ4g0CSCmcQSFLhDAJJKlxLQRARcyNi\nVUQ8ERGXDlHu9yOiLyL+3chVUZLUTrsMgoiYAHwJmAscCZwVEUfspNzngTuBGOF6SpLapJUrgmOB\n1Zn5dGZuBm4BTm9S7i+B7wDPj2D9JElt1koQTAfW1qbXVfO2iYjpNMLhy9WsHJHaSZLarreFMq0c\n1K8BLsvMjIhgJ11DEbGgNrk0M5e2sG5JKkZEzAHmdHSbmUMf5yPiOGBBZs6tpi8Htmbm52tlnmT7\nwX8a8BrwF5l5W61MZqZjB5I0DJ04drYSBL3A48BJwAbgfuCszFy5k/I3ALdn5vcGzTcIJGmYOnHs\n3GXXUGb2RcTFwGJgAnB9Zq6MiAur5de1s4KSpPba5RXBiG3IKwJJGrZOHDv9ZbEkFc4gkKTCGQSS\nVDiDQJIKZxBIUuEMAkkqnEEgSYUzCCSpcAaBJBXOIJCkwhkEklQ4g0CSCmcQSFLhDAJJKpxBIEmF\nMwgkqXAGgSQVziCQpMIZBJJUOINAkgpnEEhS4QwCSSqcQSBJhTMIJKlwBoEkFc4gkKTCGQSSVDiD\nQJIKZxBIUuEMAkkqnEEgSYUzCCSpcAaBJBXOIJCkwhkEklS4loIgIuZGxKqIeCIiLm2y/OyIeCQi\nHo2IuyPiPSNfVUlSO0RmDl0gYgLwOHAysB54ADgrM1fWyhwPrMjMX0XEXGBBZh43aD2ZmTHSDZCk\nbtaJY2crVwTHAqsz8+nM3AzcApxeL5CZP8nMX1WT9wEHjmw1JUnt0koQTAfW1qbXVfN25s+A77+R\nSkmSOqe3hTJD9x3VRMQfAR8HTtjtGkmSOqqVIFgPzKhNz6BxVTBANUD8VWBuZv6y2YoiYkFtcmlm\nLm25ppJUgIiYA8zp6DZbGCzupTFYfBKwAbifHQeL3wH8EDgnM+/dyXocLJakYerEsXOXVwSZ2RcR\nFwOLgQnA9Zm5MiIurJZfB1wBvBX4ckQAbM7MY9tXbUnSSNnlFcGIbcgrAkkatrFy+6gkqYsZBJJU\nOINAkgpnEEhS4QwCSSqcQSBJhTMIJKlwBoEkFc4gkKTCGQSSVDiDQJIKZxBIUuEMAkkqnEEgSYUz\nCCSpcAaBJBXOIJCkwhkEklQ4g0CSCmcQSFLhDAJJKpxBIEmFMwgkqXAGgSQVziCQpMIZBJJUOINA\nkgrXO9oVkKTRMmv2olOAedXkwmX3XbR4NOszWiIzO7OhiMzM6MjGJI2IK+5YMeBA+dnTjuyaA2UV\nArcCe1SzNgJnjLUw6MSx066hcWDW7EXzZ81e9EL1mD/a9VEZqhC4Ffhg9bi1mtct5rE9BKiez9tJ\n2a5m19AYN2v2ohuA82uzPjdr9qK/Bp6tHi9S8CWt2mpnB0r3tS7jFcEYVl26nt9kUQ9wADCLxpna\n92fNXvTTqryk1iyk0R3Ub2M1rzgGwdjW6mVqD41QuNUwGNuuuGPFKVfcseKu6jHWP6uuPlBWV9Fn\nAEuqx5gbH+gUB4vboOrOObuavHnZfRdd0Opr64NzSxbevc/rv9k8a5ibX7Lsvos+NMzXqANqfe4D\nBifH8gBsNw8WjxedOHY6RjDCmvTpnz9r9iJ++vWNt1D7QsXMeQO+ULlm4SnLX9n/ygnx7qO35IQA\nOPpPDs97b35sK8O7ctvnDVRf7TXu+tyrA/+YrZ9GhkHwBg0+Y6Jpn36eD5zJ9oPAB3LNwjP6wyDX\nLDwFuHXZy9P32JITtr1q2sy3xekXHJSLb356w283xX4MDIQENgGTR7I9A2rdqNdOw0vjRzd8lu1o\nQ65ZOODqPWbOa/nqvZu0FAQRMRe4BpgA/M/M/HyTMtcCpwKvAedn5kMjWdGxqMml/gealwwY+kxw\n8JniNge9c0rP3Tf+9rGYOW/6rNmLTpm858Qr99jrTQcdctyBz6xYvJomXUcvDlHXli/x+8OJnYSX\ndstCGvtIvWvoDfe57+qzHa+f5RV3rJgPXAIw400v3f7nB+/8ZGoY69z2Xp2+36M5a2/q3ajn55qF\nlBgGuxwjiIgJwOPAycB64AHgrMxcWSvzYeDizPxwRMwGvpiZxw1aT9eNEVxxx4q7/vdnl36wlbJf\nuHZ//mDak02X3fNID1+7o5fXtkxkyqwj2WfmNAB6YwtnTV/GoVNeWBYz5x0zOHieX/3i5p9+a3lv\nX18jaSb25tarPrHp2Tnv2/pmGqENsPFb64/66WOvHnAy268oXgdOb3LA2PbFA34JHDqoqkuO+dge\nCxnGLzH95eZAwwnkod67/mWH/u6E2W87/oi3vLj+Nzx171oSePO037nxB989Z9vBLNcsvIvG3WV1\nSz6z6tQBn+Vw+/8H7S9Xx8x5VzYrd9O1X7zhxw/1nA1w4tFbbz73E5/c6YG2v117Tt3jkHfNPezQ\ntx86tX9rnDTt54O/Q7vcH/vX9479th5y7O9PnvF/Httz8uuv9UHC5D172XfyK6x8fAsAp57Qx3/9\nT32bY+a8ScN5H9qtE8fOVoLgeOAzmTm3mr4MIDOvqpX5CvCjzPxmNb0K+MPMfK5WpuuCYNbsRVto\nsf/+xHOO4JoPL9th/j2P9PBXX5jE65sab82kiXDquQdx0OFTOGHq0xw65QWA/iDY4Qs9Yd1TPHt/\n48txzml9vP+orQPWv/rX07hp3fuorkrqln32tCOP6Z+ovtSfG6oNi++ZsGz+lyYdQYu/xBwvv9wc\ni4Z673ZYFjQ6Cgf69LL7LroSmgfB8lf2X/adDe/d4bNsNQx2sr98enAY3HTtF29Y9O3e8/v378mT\nkov+fd+NzcJgcLt6ent435/+K/rDYI+eTVx2+A+2ld/V/tjkPdxVqzjtxL6tf/0/Pjlh12U7Z6z8\nsng6sLY2va6at6syB76xqo0LLQ/iPn7Phqbzv3ZH77YQANi0GZ69/0nOe8eD/SEAO+nuATjo8Cks\nmr+JRfM37RACAHe/dDBNQgDgoEHTlzQrVLNx4U0TYXi/xPSXm7tvqPdu4LLm53L1z3OH20D/6bkj\n+tfZbP2taLa/7DDvxw/1nF3fv1/fFPRfHTQxoF1b+7by5E+2H1YGNbOV/XGnXa7NBXfe3VvkLfWt\njBG0en/p4KPNDq+LiAW1yaWZubTFdY97e0/cuOtCzdX7kQf0MffGFk6Y+vTurveZFsq8Ctzbv+0X\nfxUexMehmDlvca5ZeAa1LpTfbJk87j7Lt0369Y1sPwlty/6Y2fLxrm0iYg4wp5PbbCUI1gMzatMz\naJzxD1XmwGreAJm5YJj1G+tavrXzL//k1abzzzmtj4d/3kP90vmc0/r6gEep/nxE/4DYZ087cvEV\nd6w4A5i354TX9zlj/0ffdeiUF4a8a+iEqU/z9GtT2cqAq93NwOC/WXQ1O17qXzXwUn8RDG+wsy2D\no4UY6r0bsKynB7bueDF4dX2i2oe2d/usWsEQ629Fs/3l6sGFTjx6683LV/cM6Bo68eitN+9knQPa\nFT2x+ZDZB26ksb9e/RcnfeDKgfdj7HJ/HPQeJs3PV2Pb8+lvzyU7qVvHVCfIS/unI+Iz7d5mK2ME\nvTQGi08CNgD3M/Rg8XHANSUMFkOzcYId388v/NWmF/9g1ta9q3IbgTfVX3PPIz154229m/q2sOnM\nD2154pT3b5nfyt0Qg26nW0rjLOIQYF9qg8X3vHTw7Yt/ccR7aHQHPQPMb9YX3Mrg33AHfx0s3n2t\nDBa/a+aWWf/xI31TVzwZ/P3tE/te+228AlzdPz4wlDf6Y7F2Dhb31+mN7l/1weK5J2w5YNnKnonP\nbOh5/vmX41ngxal7bZ368isxC2D623PJP9528Zj7tfeYGCyuKnIq228fvT4z/yYiLgTIzOuqMl8C\n5gK/AS7IzGWD1tGVQSBJ7TRmgmBENmQQSNKwjZW7hiRJXcwgkKTCGQSSVDiDQJIKZxBIUuEMAkkq\nnEEgSYUzCCSpcAaBJBXOIJCkwhkEklQ4g0CSCmcQSFLhDAJJKpxBMEKq/16ua9m+8a2b29fNbesU\ng2DkzBntCrTZnNGuQJvNGe0KtNmc0a5AG80Z7QqMdwaBJBXOIJCkwnX0v6rsyIYkqct0zf9ZLEka\nm+wakqTCGQSSVLjdDoKI+O8RsTIiHomI70XEXrVll0fEExGxKiI+VJt/TEQsr5Z9sTZ/ckR8s5p/\nb0QcVFt2XkT8vHr8h92tbztFxNyqrU9ExKWjXZ+diYgZEfGjiHgsIn4WEZ+o5k+NiCXVe3xXROxd\ne82IfZYdauOEiHgoIm7vwrbtHRHfqb53KyJidpe17/Jq31weEV+v6jNu2xcRfxcRz0XE8tq8jrRn\n2MfNzNytB/BBoKd6fhVwVfX8SOBhYCJwMLCa7WMR9wPHVs+/D8ytnl8ELKqenwncUj2fCqwB9q4e\na4C9d7fO7XgAE6o2Hly1+WHgiNGu107quh/w3ur5FOBx4AjgvwGfquZf2o7PsoNtvAS4Gbitmu6m\ntv098PHqeS+wV7e0r6rjk8DkavqbwHnjuX3AicDRwPLavLa3h904bo5Ug88AvlY9vxy4tLbsTuA4\nYH9gZW3+R4Gv1MrMru3gz1fPzwK+XHvNV4CPdmrnbLHtxwN31qYvAy4b7Xq1WPd/AE4GVgH7VvP2\nA1aN9GfZofYcCPwz8EfA7dW8bmnbXsCTTeZ3S/um0jgxeWu17dtpnGyO6/bROKjXg6Dt7WE3jpsj\nNUbwcRpJBXAAsK62bB0wvcn89dV8qn/XAmRmH/CriNhniHWNJdvqXhmLddxBRBxM42zlPho75nPV\noueAfavnI/VZTh35FjT1BeC/AFtr87qlbYcAz0fEDRGxLCK+GhF70iXty8yXgIXA/wU2AC9n5hK6\npH017W7Pbh03hwyCqi9reZPHv62V+TSwKTO/PtS6uti4u/82IqYA3wU+mZmv1pdl4xRiPLbp3wC/\nyMyHgKb3XI/XtlV6gVk0ugJmAb+hcfW5zXhuX0TMBP4zjTPoA4ApEXFOvcx4bl8zY6k9QwZBZn4w\nM9/d5NE/EHc+8GHg7NrL1gMzatMH0kik9dXzwfP7X/OOap29wF6Z+WKTdc1gYNKNBeOhjttExEQa\nIXBTZv5DNfu5iNivWr4/8Itq/kh9li+1oSmDvR/444h4CvgG8K8j4ia6o21UdViXmQ9U09+hEQzP\ndkn73gfck5kvVme336PR7dot7evX7v1xt46bb+Suobk0LsNPz8zf1hbdBnw0IiZFxCHAYcD9mfks\n8Ep1p0MA5wL/WHvNedXzjwA/qJ7fBXyoulvirTT6DBfvbp3b5EHgsIg4OCIm0Ri0uW2U69RU9b5f\nD6zIzGtqi+rv/3k0xg7654/UZ9lWmTk/M2dk5iE0+lF/mJnn0gVtA6jqtTYiDq9mnQw8RqMvfdy3\nj0bf+XERsUdVr5OBFXRP+/p1Yn8c/nHzDQyCPAE8AzxUPRbVls2nMeq9CjilNv8YYHm17Nra/MnA\nt6p13gscXFt2QTX/CeC8dg/u7OZ7cSqNga7VwOWjXZ8h6vkBGv3nD9c+t7k0Bur+Gfh5tRPtXXvN\niH2WHWznH7L9rqGuaRtwFPAA8AiNM+a9uqx9n6IRbstp3CE1cTy3j8aV6QZgE42+/As61R6Gedz0\nT0xIUuH8ZbEkFc4gkKTCGQSSVDiDQJIKZxBIUuEMAkkqnEEgSYUzCCSpcP8f6kyUYjIfX58AAAAA\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -127,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -136,7 +136,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -223,7 +223,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.9" } }, "nbformat": 4, diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index 86c1a5a..ed03a4c 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -19,7 +19,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "first 3 of 149\n", + "first 3 of 151\n", "20150112.jobs.bz2\n", "20150113.jobs.bz2\n", "20150114.jobs.bz2\n" @@ -75,7 +75,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "first 3 of 9\n", + "first 3 of 11\n", "20150601.jobs.bz2\n", "20150602.jobs.bz2\n", "20150603.jobs.bz2\n", @@ -120,7 +120,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "number of records: 5605\n" + "number of records: 6546\n" ] } ], @@ -259,62 +259,62 @@ " ...\n", " \n", " \n", - " 565\n", - " 2015-06-09\n", - " 52548[1]\n", - " 43200\n", - " 3\n", + " 500\n", + " 2015-06-11\n", + " 53214[1]\n", + " 126000\n", + " 5\n", " 1\n", - " 16384\n", + " 31744\n", " epigen_dbio\n", - " 1\n", + " 899\n", " 1\n", " 0\n", " EPIGE_prod\n", " a07epg01\n", " 0\n", " 0\n", - " 0.000833\n", + " 1.248611\n", " \n", " \n", - " 566\n", - " 2015-06-09\n", - " 52548[2]\n", - " 43200\n", - " 3\n", + " 501\n", + " 2015-06-11\n", + " 53214[2]\n", + " 126000\n", + " 5\n", " 1\n", - " 16384\n", + " 31744\n", " epigen_dbio\n", - " 1170\n", + " 800\n", " 1\n", " 0\n", " EPIGE_prod\n", " a07epg01\n", " 0\n", " 0\n", - " 0.975000\n", + " 1.111111\n", " \n", " \n", "\n", - "

5605 rows × 15 columns

\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", - "565 2015-06-09 52548[1] 43200 3 1 16384 epigen_dbio 1 \n", - "566 2015-06-09 52548[2] 43200 3 1 16384 epigen_dbio 1170 \n", + " 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", - "565 1 0 EPIGE_prod a07epg01 0 0 0.000833 \n", - "566 1 0 EPIGE_prod a07epg01 0 0 0.975000 \n", + "500 1 0 EPIGE_prod a07epg01 0 0 1.248611 \n", + "501 1 0 EPIGE_prod a07epg01 0 0 1.111111 \n", "\n", - "[5605 rows x 15 columns]" + "[6546 rows x 15 columns]" ] }, "execution_count": 4, @@ -349,10 +349,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "field jobid type object 5605 1 1.0 1 \n", - "field queue type object 27 4 207.592592593 3994 \n", - "field account type object 20 1 280.25 1690 \n", - "field username type object 54 1 103.796296296 1687 \n" + "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" ] } ], @@ -473,12 +473,97 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Setup Bokeh plotting libraries" + "Drawing bars with matplotlib" ] }, { "cell_type": "code", "execution_count": 9, + "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": 10, + "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": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABJMAAAR+CAYAAABkqXTYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X+8pWVd7//XG0Z+qAgRhvwSMYZy/GIQAT7McpCi0YcB\n5Q/INMv5esxJ8FhWYD8czzmp2FGCTnDONzEGCpQ0DQKRH7HLvgWjNeDIiEAxxYwwGCrq1ywmPt8/\n7mszazZ7b+7Ze61ZG/br+Xisx77WdV/3va7PXve611qf+7qvlapCkiRJkiRJ6mOXcXdAkiRJkiRJ\nTxwmkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktTbvJNJSXZN\nsi7JVe3+vkmuT3JnkuuS7DPQ9uwkdyW5I8lJA/XHJFnflp03UL97ko+2+puTHDrf/kqSJEmSJGnu\nhjEy6W3ABqDa/bOA66vqCODGdp8ky4DTgGXACuCCJGnrXAisrKqlwNIkK1r9SuDBVn8ucM4Q+itJ\nkiRJkqQ5mlcyKcnBwMuBDwGTiaGTgTWtvAY4tZVPAS6vqoeraiNwN3B8kgOAvapqbWt3ycA6g9v6\nOHDifPorSZIkSZKk+ZnvyKRzgV8FHhmo27+qtrTyFmD/Vj4Q2DTQbhNw0DT1m1s97e+9AFW1FXgo\nyb7z7LMkSZIkSZLmaM7JpCSvAB6oqnVsG5W0naoqtl3+JkmSJEmSpCe4JfNY90XAyUleDuwBPCPJ\npcCWJM+qqvvbJWwPtPabgUMG1j+YbkTS5laeWj+5zrOBLydZAuxdVV8d7EQSk1WSJEmSJElDVlXT\nDh5KN3hofpK8BHhHVf1kkvfTTZp9TpKzgH2q6qw2AfdlwHF0l6/dABxeVZXkFuBMYC1wNXB+VV2b\nZBVwZFW9JcnpwKlVdfqUx66Zghu1JKuravU4HnucjHtxMe7FxbgXF+NeXIx7cTHuxcW4FxfjXlzG\nGfds+Zb5jEyaajIr9T7giiQrgY3AawCqakOSK+h++W0rsKq2ZbJWARcDewLXVNW1rf4i4NIkdwEP\nAtslkiRJkiRJkrRzDSWZVFV/BfxVK38V+LEZ2r0HeM809X8PHDlN/b/TklGSJEmSJEkav/n+mtti\nNzHuDozJxLg7MCYT4+7AmEyMuwNjMjHuDozJxLg7MCYT4+7AmEyMuwNjMjHuDozJxLg7MCYT4+7A\nmEyMuwNjMjHuDozJxLg7MCYT4+7AmEyMuwNjMjHuDozJxLg7MJ2hzJk0TuOcM0mSJEmSJOnJaLZ8\niyOTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmS\nJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9LRl3B4Yh\nSY27D+NQVRl3HyRJkiRJ0uLypEgmwWLMJZlHkiRJkiRJO9+cL3NLskeSW5LcmmRDkve2+tVJNiVZ\n124vG1jn7CR3JbkjyUkD9cckWd+WnTdQv3uSj7b6m5McOtf+SpIkSZIkaf7mnEyqqu8AJ1TVUcAL\ngBOSvJhumNAHq+rodvsUQJJlwGnAMmAFcEGSyeE1FwIrq2opsDTJila/Eniw1Z8LnDPX/kqSJEmS\nJGn+5jUBd1V9uxV3A3YFvtbuT3cN1inA5VX1cFVtBO4Gjk9yALBXVa1t7S4BTm3lk4E1rfxx4MT5\n9FeSJEmSJEnzM69kUpJdktwKbAFuqqrb26IzktyW5KIk+7S6A4FNA6tvAg6apn5zq6f9vRegqrYC\nDyXZdz59liRJkiRJ0tzNd2TSI+0yt4OBH02ynO6StcOAo4D7gA/Mt5OSJEmSJElaGIbya25V9VCS\nq4EfqqqJyfokHwKuanc3A4cMrHYw3Yikza08tX5ynWcDX06yBNi7qr762B6sHigvbzdJkiRJkiT1\n0QYILe/Vtqrm+iD7AVur6utJ9gQ+DbwbuL2q7m9t3g4cW1WvbRNwXwYcR3f52g3A4VVVSW4BzgTW\nAlcD51fVtUlWAUdW1VuSnA6cWlWnT+lHdXN+Lzahqqabm0qSJEmSJGlektRMeYf5jEw6AFiTZBe6\ny+Uuraobk1yS5Ci6DM89wJsBqmpDkiuADcBWYFVty2StAi4G9gSuqaprW/1FwKVJ7gIeBLZLJEmS\nJEmSJGnnmvPIpIXCkUmSJEmSJEnDNdvIpHlNwC1JkiRJkqTFxWSSJEmSJEmSejOZJEmSJEmSpN5M\nJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnq\nzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmS\npN7mnExKskeSW5LcmmRDkve2+n2TXJ/kziTXJdlnYJ2zk9yV5I4kJw3UH5NkfVt23kD97kk+2upv\nTnLoXPsrSZIkSZKk+ZtzMqmqvgOcUFVHAS8ATkjyYuAs4PqqOgK4sd0nyTLgNGAZsAK4IEna5i4E\nVlbVUmBpkhWtfiXwYKs/Fzhnrv2VJEmSJEnS/M3rMreq+nYr7gbsCnwNOBlY0+rXAKe28inA5VX1\ncFVtBO4Gjk9yALBXVa1t7S4ZWGdwWx8HTpxPfyVJkiRJkjQ/80omJdklya3AFuCmqrod2L+qtrQm\nW4D9W/lAYNPA6puAg6ap39zqaX/vBaiqrcBDSfadT58lSZIkSZI0d0vms3JVPQIclWRv4NNJTpiy\nvJLUfB5DkiRJkiRJC8e8kkmTquqhJFcDxwBbkjyrqu5vl7A90JptBg4ZWO1guhFJm1t5av3kOs8G\nvpxkCbB3VX31sT1YPVBe3m6SJEmSJEnqI8lyeiZUUjW3gUNJ9gO2VtXXk+wJfBp4N/ATdJNmn5Pk\nLGCfqjqrTcB9GXAc3eVrNwCHt9FLtwBnAmuBq4Hzq+raJKuAI6vqLUlOB06tqtOn9KNgMQ5+ClWV\nx28nSZIkSZK0Y5LUTHmH+YxMOgBYk2QXurmXLq2qG5OsA65IshLYCLwGoKo2JLkC2ABsBVbVtkzW\nKuBiYE/gmqq6ttVfBFya5C7gQWC7RJIkSZIkSZJ2rjmPTFooHJkkSZIkSZI0XLONTJrXr7lJkiRJ\nkiRpcTGZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmS\nJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSS\nJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKm3OSeTkhyS5KYktyf5QpIzW/3qJJuSrGu3lw2sc3aS\nu5LckeSkgfpjkqxvy84bqN89yUdb/c1JDp1rfyVJkiRJkjR/8xmZ9DDw9qp6PvBC4JeSPA8o4INV\ndXS7fQogyTLgNGAZsAK4IEnati4EVlbVUmBpkhWtfiXwYKs/FzhnHv2VJEmSJEnSPM05mVRV91fV\nra38LeCLwEFtcaZZ5RTg8qp6uKo2AncDxyc5ANirqta2dpcAp7byycCaVv44cOJc+ytJkiRJkqT5\nG8qcSUmeAxwN3NyqzkhyW5KLkuzT6g4ENg2stoku+TS1fjPbklIHAfcCVNVW4KEk+w6jz5IkSZIk\nSdpx804mJXk68DHgbW2E0oXAYcBRwH3AB+b7GJIkSZIkSVoYlsxn5SRPobv87I+r6pMAVfXAwPIP\nAVe1u5uBQwZWP5huRNLmVp5aP7nOs4EvJ1kC7F1VX31sT1YPlJe3myRJkiRJkvpIspyeCZVU1Vwf\nJHTzGT1YVW8fqD+gqu5r5bcDx1bVa9sE3JcBx9FdvnYDcHhVVZJbgDOBtcDVwPlVdW2SVcCRVfWW\nJKcDp1bV6VP6Ud2c34tNqKrp5qaSJEmSJEmalyQ1U95hPiOTfhh4HfD5JOta3TuBn0lyFF2G5x7g\nzQBVtSHJFcAGYCuwqrZlslYBFwN7AtdU1bWt/iLg0iR3AQ8C2yWSJEmSJEmStHPNeWTSQuHIJEmS\nJEmSpOGabWTSUH7NTZIkSZIkSYuDySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJ\nktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJ\nkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvc05mZTkkCQ3Jbk9yReS\nnNnq901yfZI7k1yXZJ+Bdc5OcleSO5KcNFB/TJL1bdl5A/W7J/loq785yaFz7a8kSZIkSZLmbz4j\nkx4G3l5VzwdeCPxSkucBZwHXV9URwI3tPkmWAacBy4AVwAVJ0rZ1IbCyqpYCS5OsaPUrgQdb/bnA\nOfPoryRJkiRJkuZpzsmkqrq/qm5t5W8BXwQOAk4G1rRma4BTW/kU4PKqeriqNgJ3A8cnOQDYq6rW\ntnaXDKwzuK2PAyfOtb+SJEmSJEmav6HMmZTkOcDRwC3A/lW1pS3aAuzfygcCmwZW20SXfJpav7nV\n0/7eC1BVW4GHkuw7jD5LkiRJkiRpx807mZTk6XSjht5WVd8cXFZVBdR8H0OSJEmSJEkLw5L5rJzk\nKXSJpEur6pOtekuSZ1XV/e0Stgda/WbgkIHVD6YbkbS5lafWT67zbODLSZYAe1fVVx/bk9UD5eXt\nJkmSJEmSpD6SLKdnQiXd4KE5PUjo5jN6sKrePlD//lZ3TpKzgH2q6qw2AfdlwHF0l6/dABxeVZXk\nFuBMYC1wNXB+VV2bZBVwZFW9JcnpwKlVdfqUftTiHPwUqiqP306SJEmSJGnHJKmZ8g7zSSa9GPhr\n4PNsy+acTZcQuoJuRNFG4DVV9fW2zjuBNwJb6S6L+3SrPwa4GNgTuKaqzmz1uwOX0s3H9CBwepu8\ne7vgTCZJkiRJkiQNz0iSSQuFySRJkiRJkqThmi2ZNJRfc5MkSZIkSdLiYDJJkiRJkiRJvZlMkiRJ\nkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktTbknF3\nQHOXpMbdh3Goqoy7D5IkSZIkLVYmk57QFmMuyTySJEmSJEnj5GVukiRJkiRJ6s1kkiRJkiRJknoz\nmSRJkiRJkqTeTCZJkiRJkiSpN5NJkiRJkiRJ6m3OyaQkH06yJcn6gbrVSTYlWdduLxtYdnaSu5Lc\nkeSkgfpjkqxvy84bqN89yUdb/c1JDp1rXyVJkiRJkjQc8xmZ9EfAiil1BXywqo5ut08BJFkGnAYs\na+tckGTyN94vBFZW1VJgaZLJba4EHmz15wLnzKOvkiRJkiRJGoI5J5Oq6jPA16ZZlGnqTgEur6qH\nq2ojcDdwfJIDgL2qam1rdwlwaiufDKxp5Y8DJ861r5IkSZIkSRqOUcyZdEaS25JclGSfVncgsGmg\nzSbgoGnqN7d62t97AapqK/BQkn1H0F9JkiRJkiT1NOxk0oXAYcBRwH3AB4a8fUmSJEmSJI3RkmFu\nrKoemCwn+RBwVbu7GThkoOnBdCOSNrfy1PrJdZ4NfDnJEmDvqvrq9I+8eqC8vN0kSZIkSZLUR5Ll\n9EyoDDWZlOSAqrqv3f0pYPKX3q4ELkvyQbrL15YCa6uqknwjyfHAWuD1wPkD67wBuBl4FXDjzI+8\nephhSJIkSZIkLSpVNQFMTN5P8q6Z2s45mZTkcuAlwH5J7gXeBSxPchTdr7rdA7y5dWhDkiuADcBW\nYFVVVdvUKuBiYE/gmqq6ttVfBFya5C7gQeD0ufZVkiRJkiRJw5FtOZ0npiTV5a4Wm7BY466q6X4x\nUJIkSZIkDUmSmun79yh+zU2SJEmSJElPUiaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9mUyS\nJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJ\nJEmSJEmSJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9\nzTmZlOTDSbYkWT9Qt2+S65PcmeS6JPsMLDs7yV1J7khy0kD9MUnWt2XnDdTvnuSjrf7mJIfOta+S\nJEmSJEkajvmMTPojYMWUurOA66vqCODGdp8ky4DTgGVtnQuSpK1zIbCyqpYCS5NMbnMl8GCrPxc4\nZx59lSRJkiRJ0hDMOZlUVZ8Bvjal+mRgTSuvAU5t5VOAy6vq4araCNwNHJ/kAGCvqlrb2l0ysM7g\ntj4OnDjXvkqSJEmSJGk4hj1n0v5VtaWVtwD7t/KBwKaBdpuAg6ap39zqaX/vBaiqrcBDSfYdcn8l\nSZIkSZK0A5aMasNVVUlqVNvf3uqB8vJ2kyRJkiRJUh9JltMzoTLsZNKWJM+qqvvbJWwPtPrNwCED\n7Q6mG5G0uZWn1k+u82zgy0mWAHtX1Venf9jVw+q/JEmSJEnSolNVE8DE5P0k75qp7bAvc7sSeEMr\nvwH45ED96Ul2S3IYsBRYW1X3A99IcnybkPv1wJ9Ps61X0U3oLUmSJEmSpDFK1dyuREtyOfASYD+6\n+ZF+my4RdAXdiKKNwGuq6uut/TuBNwJbgbdV1adb/THAxcCewDVVdWar3x24FDgaeBA4vU3ePbUf\nBTvparoFJSzWuKsqj99OkiRJkiTNVZKa6fv3nJNJC4XJpMXGZJIkSZIkSaM2WzJp2Je5SZIkSZIk\n6UnMZJIkSZIkSZJ6M5kkSZIkSZKk3kwmSZIkSZIkqTeTSZIkSZIkSerNZJIkSZIkSZJ6M5kkSZIk\nSZKk3kwmSZIkSZIkqTeTSZIkSZIkSerNZJIkSZIkSZJ6M5kkSZIkSZKk3kwmSZIkSZIkqTeTSZIk\nSZIkSerNZJIkSZIkSZJ6M5kkSZIkSZKk3kaSTEqyMcnnk6xLsrbV7Zvk+iR3JrkuyT4D7c9OcleS\nO5KcNFB/TJL1bdl5o+irJEmSJEmS+hvVyKQCllfV0VV1XKs7C7i+qo4Abmz3SbIMOA1YBqwALkiS\nts6FwMqqWgosTbJiRP2VJEmSJElSD6O8zC1T7p8MrGnlNcCprXwKcHlVPVxVG4G7geOTHADsVVVr\nW7tLBtaRJEmSJEnSGIxyZNINST6X5E2tbv+q2tLKW4D9W/lAYNPAupuAg6ap39zqJUmSJEmSNCZL\n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\nndM+499Gl5h6+zCDm8VYP6eOej9PjfSqi4Up3cRzV1U30faTRovryupG+pDk1+k+6P4HcHVV/WaS\nm+h+kvAf0p1l/JWqmvzVqkeXzfIYnwe+UlUnTn3MJGfRvVE9TPfLL6+tqq8nOYPuoL4Z+EdgY1X9\ntyS/SHcW6St0B4KnV9Ub003Q/c3qJjsfuSTfrKq9HqfN06r9QkaSPwDurKrzdkb/JEmSJElaSBZz\nMunRpIsWtyTfqKpnPE6b/0o3FHQ3usnP3jSOIe+SJEmSJI3bokwmSZIkSZIkaW6WPH4TLSbpZoS/\nYZpFJ1bVV3d2fyRJkiRJ0sLiyCRJkiRJkiT1tph/zU2SJEmSJEk7yGSSJEmSJEmSejOZJEmSJEmS\npN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmS\nJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmS\nJEmSpN5MJkmSJEmSJKm3kSWTkuyaZF2Sq9r91Uk2tbp1SV420PbsJHcluSPJSQP1xyRZ35adN6q+\nSpIkSZIkqZ9Rjkx6G7ABqHa/gA9W1dHt9imAJMuA04BlwArggiRp61wIrKyqpcDSJCtG2F9JkiRJ\nkiQ9jpEkk5IcDLwc+BAwmRjKQHnQKcDlVfVwVW0E7gaOT3IAsFdVrW3tLgFOHUV/JUmSJEmS1M+o\nRiadC/wq8MhAXQFnJLktyUVJ9mn1BwKbBtptAg6apn5zq5ckSZIkSdKYDD2ZlOQVwANVtY7tRyJd\nCBwGHAXcB3xg2I8tSZIkSZKk0Voygm2+CDg5ycuBPYBnJLmkqn5uskGSDwFXtbubgUMG1j+YbkTS\n5lYerN889cGS1NQ6SZIkSZIkzU9VTTddEakaXS4myUuAd1TVTyY5oKrua/VvB46tqte2CbgvA46j\nu4ztBuDwqqoktwBnAmuBq4Hzq+raKY9RMwU3aklWV9XqcTz2OBn34mLci4txLy7GvbgY9+Ji3IuL\ncS8uxr24jDPu2fItoxiZtN1js+3X3N6f5Afa/XuANwNU1YYkV9D98ttWYFVty3CtAi4G9gSumZpI\nkiRJkiRJ0s410mRSVU0AE638+lnavQd4zzT1fw8cOaLuSZIkSZIkaQeN6tfcFouJcXdgTCbG3YEx\nmRh3B8ZkYtwdGJOJcXdgTCbG3YExmRh3B8ZkYtwdGJOJcXdgTCbG3YExmRh3B8ZkYtwdGJOJcXdg\nTCbG3YExmRh3B8ZkYtwdGJOJcXdgTCbG3YHpjHTOpJ1hnHMmSZIkSZIkPRnNlm9xZJIkSZIkSZJ6\nM5kkSZIkSZKk3kb9a247RZIn9rV6c+TlfZIkSZIkaWd7UiSTYDHmkswjSZIkSZKknc/L3CRJkiRJ\nktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1NrJkUpJd\nk6xLclW7v2+S65PcmeS6JPsMtD07yV1J7khy0kD9MUnWt2XnjaqvkiRJkiRJ6meUI5PeBmwAqt0/\nC7i+qo4Abmz3SbIMOA1YBqwALkiSts6FwMqqWgosTbJihP2VJEmSJEnS4xhJMinJwcDLgQ8Bk4mh\nk4E1rbwGOLWVTwEur6qHq2ojcDdwfJIDgL2qam1rd8nAOpIkSZIkSRqDUY1MOhf4VeCRgbr9q2pL\nK28B9m/lA4FNA+02AQdNU7+51UuSJEmSJGlMhp5MSvIK4IGqWse2UUnbqapi2+VvkiRJkiRJeoJY\nMoJtvgg4OcnLgT2AZyS5FNiS5FlVdX+7hO2B1n4zcMjA+gfTjUja3MqD9Zunf8jVA+Xl7SZJkiRJ\nkqQ+kiynZ0Il3SChkXXkJcA7quonk7wfeLCqzklyFrBPVZ3VJuC+DDiO7jK2G4DDq6qS3AKcCawF\nrgbOr6prpzxGLc5BTqGqph35JUmSJEmSNB9Jaqa8wyhGJk01mel5H3BFkpXARuA1AFW1IckVdL/8\nthVYVdsyXKuAi4E9gWumJpIkSZIkSZK0c410ZNLO4MgkSZIkSZKk4ZptZNKofs1NkiRJkiRJT0Im\nkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1\nZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJ\nUm9DTyYl2SPJLUluTbIhyXtb/eokm5Ksa7eXDaxzdpK7ktyR5KSB+mOSrG/Lzht2XyVJkiRJkrRj\nUlXD32jy1Kr6dpIlwN8A7wBOBL5ZVR+c0nYZcBlwLHAQcAOwtKoqyVrgrVW1Nsk1wPlVde2U9QuG\n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\nbkjy+la2vKp2tumdwPI2/TRge6/uduDgxWmmJEmSJEmSplo2gtd8UVV9KclTgY1Jbu3PrKpKUrPU\nnzZWTBEAACAASURBVG2eJEmSJEmSFtCiJ5Oq6kvt75eTfITutrWdSQ6sqruSHATc3RbfAazoVT+k\nlU1xZm96oj0kSZIkSZI0RJIJBiZUUrV4HX2SPB54dFXdl+QJwAbgLOBHgHuq6uwka4H9q2ptG4D7\nYrqE08HA1cCzq9forhfTOHZWClU1deypRzy3tyRJkiRJCy9JzfQ9dLF7Ji0HPpJk8rX/oqo2JLkB\nWJ9kNbANOAmgqrYmWQ9sBR4A1tRiZr8kSZIkSZL0EIvaM2kh2FNlvLi9JUmSJElaeLP1TBrFr7lJ\nkiRJkiRpL2UySZIkSZIkSYOZTJIkSZIkSdJgJpMkSZIkSZI0mMkkSZIkSZIkDbZs1A3Qnut+2UyS\nJEmSJGnxmEzaq41jLmnaXyWUJEmSJEmLxGSSpCVrnHvfVZWZU0mSJElLkskkSUvcOOaTzCNJkiRJ\nWrocgFuSJEmSJEmDmUySJEmSJEnSYCaTJEmSJEmSNJjJJEmSJEmSJA225JNJSY5LcmuS25P81qjb\n81CbRt2AEdk06gaMyKZRN2AkkkyMug2jsWnUDRiJcd3exj1ejHu8GPd4Me7xYtzjxbiXliWdTEry\naOC/A8cBq4CfTvKc0baqb9OoGzAim0bdgBHZNOoGjMrEqBswGptG3YBRmRh1A0ZkYtQNGJGJUTdg\nRCZG3YARmRh1A0ZkYtQNGJGJUTdgRCZG3YARmRh1A0ZkYtQNGJGJUTdgRCZG3YARmRh1A6azbNQN\nmMPRwB1VtQ0gyQeBE4DPjbJR0igkqRG+9hmjem1JkiRJ0tKypHsmAQcDd/aeb29l0hiqET3OGOFr\nS5IkSZKWmlQt3S9sSV4JHFdVr2/PXwMcU1Vv6i2zdAOQJEmSJEnaS1VVpitf6re57QBW9J6voOud\n9KCZApMkSZIkSdL8W+q3ud0ArExyaJLHAicDl4+4TZIkSZIkSWNrSfdMqqoHkrwR+DjwaOCCqnLw\nbUmSJEmSpBFZ0mMmSZIkSZIkaWlZ6re57VWS/HySP27TZyb5tTmWn3MZjU6Ss5K8bNTtGLUk35/k\nR0fdjvn2SIsryX8muTHJzUn+KskTp8z/jiTbJ89RrexvWp0bk+xI8pFWniTnJrk9yWeSHNGrs629\nxo1JNvfKX53ks60dRy5GzO11Z4y7N+/GJJf1yt+Y5I4k30pyQK98IsnXenV+pzfv9BbfliQXJ9mn\nlf9hks+1/9NfJXnS3hZ3b/7zkzyQ5Kd6Zfsn+XCLcWuSF0yp82szrW8h7GHcz0xyXdufP5jkMa38\nO5N8pG2765I8t1dn2v28zXtT+3/ckuTsUcfd5g8+vtu8iVZ+S5JNvfL3JdmZZMuU9R+dZHOrc32S\n5y9guP3XHfV5bckd37PE/WNJbmr1PpXku3vzZtreM+7nbf6SOb7b/OnifmmST6c7N1+Y5NG9ed8W\nd5IVST6Z7nx+S5LTest/sLfvfCHJjYsQ9nyf105o++uN7f/y0rni7q1zyW/vVv77ST6f7j3pTa1s\n2vN5kse15ze15f+gt54l97mlzd+duL83yd8l+Wam+U6Z5NHttT7aKzsgycYktyXZkGT/hYp1Slvm\nLe5WvrvvY2e29U8eT8ctUKgPsYfH93x+Tl3Y/byqfOzGA3j0LPNOBf64TZ8B/Noc65pzmaX+AJ4G\n/OU8r/PMvf3/8kh6AD8/uV8/kh6jjAt41AKs877e9IVTjyHgHOAvZooZ+DDwmjb9Y8CVbfoY4Nre\ncl8ADpim/vcChwGfBI5cxP/ljHH3502p8zzgGVNjASaAy6dZ/lDgH4F92vMPAae26ZdPbk/gncA7\n97a427xHA58A/hp4Za98HfC6Nr0MeFJv3grgqpn2iSUU93rgpDZ9PvBLbfoPgd9t098DXN2rM9N+\n/hJgI/CY9vypo467le3O8b0/8FngkPb8Kb3lfgg4Atgypf4m4BVt+keBT+6Fce/JeW3JHd8zxd1i\n+J42/Qbg/QO294zH7lI7vqeLm+6i+D8Dz27Pz2LX+WrauIEDgee16ScCnweeM01b/hvwO6OOm90/\nrz2ht8zhwB1D4t4btncr+wXgwt7zp7a/s53PH9/+LgOuBX6wPV9yn1v2IO6nAj8A/Nep62nzf7Wt\n6/Je2buA32zTv8XSPq/NFPeevI+dAfzqYm3nIXHPcnzP5+fUBd3Px7JnUroBvW9N8ucty/mXSfZN\n8rZ0V962JPmfveU3JXlPkuuBNyf58STXJvn7ltn9rjle77uTfCzJDemumH3PIsSYJAv+S3dV9cWq\nevV8r3ae1/egJK9pVyhuTPI/Wsb+G0ne3TLbVyd5Slv2wiSvbNM/lu7q5A3prmx+tJU/oWXAr2v7\n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\nyjj3TOofOGnP/wT4qdYD4U/pkg2T+t1G/xg4ty33i3RfGGfyKOCrrffD5OO5syz/cP1TVW2me1N4\nX1V9E6Cq7u0tc3n7ewtwS1XtrKr/oEuKPX26lVbXNfa7khyU5PvpYpqaGPlb4K0tIXfo5GvP4vB0\ng0TeTNd7Y9VuxLmn1vW2w3Oq6qwp8yf3hb6pz6ee6H6qt85Dq+rWVv7vvWX+k65r7Sj12/Mt4D96\n05OJ5elime5NZqaYZ+qdt5BGEldVXQL8BPBvwJVJXtLm9fex762qyTeub1bVQv4//q263lDPAL5J\n19MEulvq3pjkC3Q9Cl6b1lMRIN1tnc8Hruitawfd+AmTDmFXd9kvtr9fBj4CHL0g0Qw3U9xU1Zfa\n3y/QjflyxHQr6C1/X7Xu8FX1MeAxSZ5MNx7B31bVPVX1AF3C+YWT9ZL8PF1X8p/99rUumHmLmy4B\n+sG2j7wSOC/dbZ530l2tvr4t92G6D2/fTfeB5TOtziHApzPHLd/zZHfjvofudqbJzzv9ffm+qnpd\nO1ZfSzf2xD+2eTPt59tpFxza/+VbbR9ZaPN5fN8JbKiqf6uqe4C/oetJO5ujq2pyAO8Ps3jH/cjP\na0vs+J4p7qcAj+0dq+vZdY6acXvPEPezWHrH94zbu6quraofrq5X8afoxgKCWeJOd6v7pcCft8TL\ng9JdDP1JHnoReaHN23mtryVEl02eo2aIeymez2c7vh88B9N9kf4+mP18Pqm627SvoHtPH6V5i3sW\nL6S7kPoFuovgL01yUZu3M8mBAEkOoruwvhjmM+7dfh+rqrurobv1b9TvY4v2OXUhjXMy6enZ9as0\nPwP8nzZ9T8vaTx0HqP9l8jvoupBBN4jvdAKkup4pX0jyKnhwLKO5TgAPx2TSq5j5ysLkl+9v8e1f\nxGdLePwlXRfik4APTp05w5frB3jofrYvu77EXwisaUm5s5g9KTcfrgFe1a7ATf6awTNa+ya398/Q\nfRiZVHQfTJ7VlgU4mV0xfJxeF+Ls+nWY6f73o75Pdy4zxXIfsN+A5T5F+7Cd5DC6xOTnGb0FiSvJ\ns6rqC1X1x3Q9/A5n+n1s2gTtQqmqf6OL4/eTpKpeU1XPqKpn0t36d1FVvbVX5VXAR1tCedLlwGsB\n2nny3qrameTxSfZr5U+g6801Xc+zRd/Xp8ad7lfIJn/J4il0Pcw+O03V/tX95ZNXxdJ1k0/7kPJ5\n4AXpxtYL8CPA1rbccXTdyE8YkECfd/MRd1U9q6qe2faRDwNvqKrLq+sGf2fb76GL+7NVdUtVLe/V\n2U43qONifSAdGvfW9qHxk+w6x59KG0MnyZPSbsVNd4vP/652pX6W/fwyuttgJ88Hj237yKKYp+P7\nfwE/mO7Wj8fTDUY9120fdyR5cZt+KbCo44yM6ry21I7vWeL+F7qxMla2qi9n1zaddnvPFPdSPL5n\n296999t96IadmLzqP1Pcoetpt7Wq3jvNy/8I8LnJRNtimqfz2nf33seObOu9Z6a4q2rL3rS96Z2D\ngRfTPmfOcj5/StrdGemG03g5Xa+lqUb+uWVP4u55SPur6q1VtaKt6xTgEy3JBt258NQ2/eC+s1jm\nKe7dfh9ribNJP8nC3znxEKP6nDrTuubLOCeTPg/8crrbj55E1/XtT+l661zFt98/3e9RcCZd97Eb\n6AYrrd4y003/LLA63f26t9ANfDbdeufTRuAX2omTJN85D+v8EF3X31fRJZYeYoYv13fR9Wg6oB0w\nP96r8kTgrnRXSl7Drv/FgpzQq+pzwO8AG5J8hi55cCBdAu7odGM7TdAb6K3V+yZdF8yr2jb/entA\n103yMenGprqFLikGD93+9MpGabb2FDPH8klgVdpA1bMsdx7wqHQ9zT5I9ysC3zYg4AIYVVyvTjdo\n+43Ac+ne/KbuYxvYdavnQm//B9dfXU/CO+gSvzMu15zMlEFGq+pK4B+T3AH8T7r9H7pYPtXOZdcB\nf11VGwCS/GS6sTpeAFyR5GMPP6RBpov7ZLrBOK9vbf0E3aDJt7a2ntbaejBwc5LJW2FeDWxpdd5L\n9wFscr0XATcAk2NKTNb5Y7pz2ca2Ly3ImHjTmM+4Z/Mm4C/a/vx9wDumWWYxz227HTfdr9X8apLb\nge+k+0JFq7Ml3a09rwDe3MqXM8N+TtfF/lnt/eISWnJiEczn8X0r3eecm+ni+9NqY4gkuYSul/Fh\nSe5M8gut2n8B3tX+J/+VXbd6L7SRntdYWsf3jHFXN3bO64D1LY6fpUuCzba9Z4t72rYsgj3Z3r/R\nPst/hu5Xjja1+jPF/SK6z5wvya6f1/7R3vq+bd9ZBPN5Xnsl3XntRrpfxzqllU8X93Q/jb7Ut/c7\ngVe2z2S/D/zfrXwV05/PD6K7fWhyP/9oVV0DS+5zyx7FneTAFsNbgN9J8s/p/fT8LOt6eZLb6BI1\n75xm+YUwb3Hv4fvY2e0z/mfoElNvmc/gZjHSz6kLvZ+nFvSui6Up3cBzH61uoO1HjBbX5dX19CHJ\nb9F90P0P4Iqq+p0kn6T7ScK/T3eV8deqavJXqx6cN8tr3Ax8uapeNvU1k6yle6O6n+6XX36mqu5N\n8ia6k/oO4B+AbVX1e0l+ie4q0pfpTgRPrKrXpRug+77qBjtfcEnuq6r95ljmCdV+ISPJnwC3VdU5\ni9E+SZIkSZKWknFOJj2YdNF4S/L1qvqOOZb5FbquoI+lG/zs9aPo8i5JkiRJ0qiNZTJJkiRJkiRJ\ne2bZ3ItonKQbEf7qaWa9rKq+stjtkSRJkiRJS4s9kyRJkiRJkjTYOP+amyRJkiRJknaTySRJkiRJ\nkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJ\nkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJ\nkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mCDkklJtiW5OcmNSTa3sgOSbExyW5INSfbvLX96ktuT\n3Jrk2F75UUm2tHnn9Mr3SfKhVn5tkmf05p3aXuO2JK+dn7AlSZIkSZK0J4b2TCpgoqqOqKqjW9la\nYGNVHQZc056TZBVwMrAKOA44L0lanfOB1VW1EliZ5LhWvhq4p5W/Bzi7resA4G3A0e1xRj9pJUmS\nJEmSpMW1O7e5Zcrz44F1bXodcGKbPgG4pKrur6ptwB3AMUkOAvarqs1tuYt6dfrruhR4WZt+BbCh\nqu6tqnuBjXQJKkmSJEmSJI3A7vRMujrJDUle38qWV9XONr0TWN6mnwZs79XdDhw8TfmOVk77eydA\nVT0AfC3Jk2dZlyRJkiRJkkZg2cDlXlRVX0ryVGBjklv7M6uqktT8N0+SJEmSJElLyaBkUlV9qf39\ncpKP0I1ftDPJgVV1V7uF7e62+A5gRa/6IXQ9ina06anlk3WeDnwxyTLgSVV1T5IdwESvzgrgE/22\nmcSSJEmSJEmaf1U1dcgjYEAyKcnjgUdX1X1JngAcC5wFXA6cSjdY9qnAZa3K5cDFSd5Nd0vaSmBz\n67309STHAJuBnwPO7dU5FbgWeBXdgN4AG4B3tEG3A7wc+K2hwS20JGdW1ZmjeO1RMu7xYtwjee2x\n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\n4JNV9VlgeVXtbIvsBJa36acB23vVtwMHT1O+o5XT/t4JUFUPAF9L8uRZ1iVJkiRJkqQRWTbXgS/u\n2QAAIABJREFUAlX1LeB5SZ4EfDzJS6bMryS1UA2UJEmSJEnS0jFnMmlSVX0tyRXAUcDOJAdW1V3t\nFra722I7gBW9aofQ9Sja0aanlk/WeTrwxSTLgCdV1T1JdgATvTorgE9M17YkZ/aebqqqTUPjkiRJ\nkiRJ0qb2mFuqZu5UlOQpwANVdW+SfYGPA2fRjWd0T1WdnWQtsH9VrW0DcF9MN2D2wcDVwLNb76Xr\ngNOAzcAVwLlVdVWSNcDhVfWGJKcAJ1bVKW0A7huAI4EAnwaObOMn9dtYVRWkR7Cu9984dgAM43h8\nj/P2Nu5xYtzjxbjHi3GPF+MeL8Y9Xmb+PjZXz6SDgHVJHkU3vtIHquqaJDcC65OsBrYBJwFU1dYk\n64GtwAPAmtqVrVoDXAjsC1xZVVe18guADyS5HbgHOKWt6ytJ3g5c35Y7a2oiSZIkSZIkSYtr1p5J\newN7JmkcjHNPlXE8vsd5exv3ODHu8WLc48W4x4txjxfjHi8zfx+b89fcJEmSJEmSpEkmkyRJkiRJ\nkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJ\nkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJ\nkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJ\nkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAm\nkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mBzJpOSrEjyySSfTXJLktNa+QFJ\nNia5LcmGJPv36pye5PYktyY5tld+VJItbd45vfJ9knyolV+b5Bm9eae217gtyWvnL3RJkiRJkiTt\nriE9k+4H3lJVzwVeAPxykucAa4GNVXUYcE17TpJVwMnAKuA44Lwkaes6H1hdVSuBlUmOa+WrgXta\n+XuAs9u6DgDeBhzdHmf0k1aSJEmSJElaXHMmk6rqrqq6qU1/A/gccDBwPLCuLbYOOLFNnwBcUlX3\n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\nUgw23/+MlQ1pufoUS8fyOeCA9IGql1nu7cBt0nqanUT7FYFbDAg4B0PFdVjaoO3nAg+iffgtPsZO\nZdOjnvPe/zdvv1pPwstpid8ll+sOZ9Ego1V1CvDVJJcDf007/qHF8vnelp0J/ENVnQqQ5BlpY3U8\nCvhEkk9uf0hTmRT34bTBOM/udf0sbdDkS3pdX97ruhdwQZLRozCHAev7Om+hXYCNtvtu4BxgNKbE\naJ230dqy0/qxNJcx8SaYZdzLOQp4bz+efxz44wnLrGTbttVx036t5jeSXAbchfaFir7O+rRHe34G\neEUv35MljnNaF/v79s+LE+nJiRUwy/P7Etp1zgW0+N5ZfQyRJCfSehnvn+SqJL/YV/sl4E/73+QP\n2fSo97wN2q6xus7vJeOuNnbOS4CTexwvoCXBltvfy8U9sS4rYFv292/2a/nzab9ytNDXXyrun6Rd\ncz4+m35e+2fHtneLY2cFzLJdexatXTuX9utYz+3lk+Ke9NPoq31/vx54Vr8m+yPgf/byA5jcnt+D\n9vjQ6Dj/eFV9Blbddcs2xZ3k7j2GXwdek+TfM/bT88ts60lJLqUlal4/Yfl5mFnc2/g59oZ+jX8+\nLTH167MMbhmDXqfO+zhPzfWpi9UpbeC5j1cbaPtWo8f1sWo9fUjy27QL3R8An6iq1yT5HO0nCb+U\ndpfxlVU1+tWqm+ct8x4XANdW1RMXv2eSo2kfVDfQfvnl+VX1rSRH0Rr1DcC/AldW1e8n+WXaXaRr\naQ3BHarqJWkDdF9fbbDzuUtyfVXdcQvL3L76L2Qk+Uvg0qo6biXqJ0mSJEnSarKWk0k3J120tiX5\nTlXdaQvL/BqtK+htaYOfvXSILu+SJEmSJA1tTSaTJEmSJEmStG3WbXkRrSVpI8KfPmHWE6vqGytd\nH0mSJEmStLrYM0mSJEmSJElTW8u/5iZJkiRJkqStZDJJkiRJkiRJUzOZJEmSJEmSpKmZTJIkSZIk\nSdLUTCZJkiRJkiRpaiaTJEmSJEmSNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYySZIk\nSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1EwmSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskk\nSZIkSZIkTc1kkiRJkiRJkqa2zcmkJO9KsjHJ+rGyNya5OMn5ST6c5M5j845JclmSS5I8eaz8EUnW\n93nHjZXvkuT9vfyMJPfe1rpKkiRJkiRpNranZ9LfAocsKjsVeFBVPQS4FDgGIMkBwOGWk6wPAAAg\nAElEQVTAAX2dtydJX+cdwBFVtR+wX5LRNo8AruvlbwbesB11lSRJkiRJ0gxsczKpqj4PfHNR2WlV\ndVN/eSawd58+FDixqm6oqiuBy4FHJrkHcMeqOqsv927g6X36acAJffpDwBO3ta6SJEmSJEmajXmO\nmfQS4JQ+fU/g6rF5VwN7TSjf0Mvp/18FUFU3At9Osscc6ytJkiRJkqQtmEsyKcnvAD+oqvfNY/uS\nJEmSJEkaxrpZbzDJi4GnsPljaRuAfcZe703rkbSBTY/CjZeP1rkX8LUk64A7V9U3JrxfzazykiRJ\nkiRJAqCqMql8psmkPnj2bwKPq6rvj836GPC+JG+iPb62H3BWVVWS7yR5JHAW8PPAW8fWeRFwBvBs\n4DNLve9Swc1bkmOr6tgh3ntIxr22GPfaYtxri3GvLca9thj32mLca4txry1Dxr1c551tTiYlORF4\nHHDXJFcBr6X9etttgdP6j7V9saqOrKqLkpwMXATcCBxZVaNKHQkcD+wKnFJVn+rlfwP8XZLLgOuA\n525rXSVJkiRJkjQb25xMqqrnTSh+1zLL/zHwxxPK/wV48ITy/waes631kyRJkiRJ0uzN89fc1oKF\noSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaEr\nMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMEk2PW22Y0pSQ42ZJEmSJEmSdGu0XL7FnkmS\nJEmSJEmamskkSZIkSZIkTc1kkiRJkiRJkqZmMkmSJEmSJElTM5kkSZIkSZKkqZlMkiRJkiRJ0tRM\nJkmSJEmSJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJkiRJkiRJ\nUzOZJEmSJEmSpKmZTJIkSZIkSdLUTCZJkiRJkiRpauuGroC2TZIaug5DqaoMXQdJkiRJktYqk0k7\ntLWYTzKPJEmSJEnSkHzMTZIkSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1EwmSZIkSZIkaWrbnExK\n8q4kG5OsHyvbI8lpSS5NcmqS3cfmHZPksiSXJHnyWPkjkqzv844bK98lyft7+RlJ7r2tdZUkSZIk\nSdJsbE/PpL8FDllUdjRwWlXtD3ymvybJAcDhwAF9nbcnGf0s1zuAI6pqP2C/JKNtHgFc18vfDLxh\nO+oqSZIkSZKkGdjmZFJVfR745qLipwEn9OkTgKf36UOBE6vqhqq6ErgceGSSewB3rKqz+nLvHltn\nfFsfAp64rXWVJEmSJEnSbMx6zKQ9q2pjn94I7Nmn7wlcPbbc1cBeE8o39HL6/1cBVNWNwLeT7DHj\n+kqSJEmSJGkrzG0A7qoqoOa1fUmSJEmSJK28dTPe3sYkd6+qa/ojbF/v5RuAfcaW25vWI2lDn15c\nPlrnXsDXkqwD7lxV35j0pkmOHXu5UFUL2xuIJEmSJEnSWpHkYODgaZaddTLpY8CLaINlvwj46Fj5\n+5K8ifb42n7AWVVVSb6T5JHAWcDPA29dtK0zgGfTBvSeqKqOnXEckiRJkiRJa0bvmLMwep3ktUst\nm/Y02tZLciLwOOCutPGRfg/4e+BkWo+iK4HnVNW3+vKvBl4C3Ai8oqo+3csfARwP7AqcUlUv7+W7\nAH8HPAy4DnhuH7x7cT2qqrK4/NYuSa3NpwjDWtzfkiRJkiStpOXyLducTFotTCatNSaTJEmSJEma\nt+XyLXMbgFuSJEmSJEm3PiaTJEmSJEmSNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYy\nSZIkSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1EwmSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEma\nmskkSZIkSZIkTc1kkiRJkiRJkqZmMkmSJEmSJElTM5kkSZIkSZKkqZlMkiRJkiRJ0tRMJkmSJEmS\nJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmS\nJEmSpKnNJZmU5JgkX06yPsn7kuySZI8kpyW5NMmpSXZftPxlSS5J8uSx8kf0bVyW5Lh51FWSJEmS\nJEnTm3kyKcm+wEuBh1fVg4GdgOcCRwOnVdX+wGf6a5IcABwOHAAcArw9Sfrm3gEcUVX7AfslOWTW\n9ZUkSZIkSdL05tEz6TvADcBuSdYBuwFfA54GnNCXOQF4ep8+FDixqm6oqiuBy4FHJrkHcMeqOqsv\n9+6xdSRJkiRJkjSAmSeTquobwJ8D/05LIn2rqk4D9qyqjX2xjcCeffqewNVjm7ga2GtC+YZeLkmS\nJEmSpIHM4zG3+wG/BuxLSwjdIckLx5epqgJq1u8tSZIkSZKk+Vo3h23+BPCFqroOIMmHgf8PuCbJ\n3avqmv4I29f78huAfcbW35vWI2lDnx4v3zDpDZMcO/ZyoaoWZhCHJEmSJEnSmpDkYODgqZZtnYRm\n+uYPAd4LHAh8HzgeOAu4N3BdVb0hydHA7lV1dB+A+33AQbTH2E4H7l9VleRM4OV9/U8Ab62qTy16\nv6qqsMYkqbXZuSusxf0tSZIkSdJKWi7fMvOeSVV1fpJ3A+cANwFfAv43cEfg5CRHAFcCz+nLX5Tk\nZOAi4EbgyNqU4TqSlozaFThlcSJJkiRJkiRJK2vmPZNWmj2T1hp7JkmSJEmSNG/L5VtmPgC3JEmS\nJEmSbr1MJkmSJEmSJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJ\nkiRJkiRJU1s3dAUkaSlJaug6DKWqMnQdJEmSJGkSk0mSVrm1mE8yjyRJkiRp9fIxN0mSJEmSJE3N\nZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmSJEmSpKmZTJIkSZIkSdLUTCZJkiRJkiRpaiaTJEmSJEmS\nNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYySZIkSZIkSVMzmSRJkiRJkqSpmUySJEmS\nJEnS1EwmSZIkSZIkaWpzSSYl2T3JB5NcnOSiJI9MskeS05JcmuTUJLuPLX9MksuSXJLkyWPlj0iy\nvs87bh51lSRJkiRJ0vTm1TPpOOCUqnog8OPAJcDRwGlVtT/wmf6aJAcAhwMHAIcAb0+Svp13AEdU\n1X7AfkkOmVN9JUmSJEmSNIWZJ5OS3Bl4bFW9C6CqbqyqbwNPA07oi50APL1PHwqcWFU3VNWVwOXA\nI5PcA7hjVZ3Vl3v32DqSJEmSJEkawDx6Jt0HuDbJ3yb5UpJ3Jrk9sGdVbezLbAT27NP3BK4eW/9q\nYK8J5Rt6uSRJkiRJkgYyj2TSOuDhwNur6uHA/6M/0jZSVQXUHN5bkiRJkiRJc7RuDtu8Gri6qs7u\nrz8IHANck+TuVXVNf4Tt633+BmCfsfX37tvY0KfHyzdMesMkx469XKiqhe0NQpIkSZIkaa1IcjBw\n8FTLtk5CM6/APwH/s6ou7Yme3fqs66rqDUmOBnavqqP7ANzvAw6iPcZ2OnD/qqokZwIvB84CPgG8\ntao+tei9qqrCGpOk1mbnrrAW9/da5XEuSZIkScNYLt8yj55JAEcB701yW+BfgV8EdgJOTnIEcCXw\nHICquijJycBFwI3AkbUpw3UkcDywK+3X4TZLJEmSJEmSJGllzaVn0kqyZ9JaY4+NtcTjXJIkSZKG\nsVy+ZR4DcEuSJEmSJOlWymSSJEmSJEmSpmYySZIkSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1Ewm\nSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskkSZIkSZIkTc1kkiRJkiRJkqZmMkmSJEmSJElT\nM5kkSZIkSZKkqZlMkiRJkiRJ0tRMJkmSJEmSJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmS\nJE3NZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmSJEmSpKmZTJIkSZIkSdLUTCZJkiRJkiRpaiaTJEmS\nJEmSNLW5JZOS7JTk3CQf76/3SHJakkuTnJpk97Flj0lyWZJLkjx5rPwRSdb3ecfNq66SJEmSJEma\nzjx7Jr0CuAio/vpo4LSq2h/4TH9NkgOAw4EDgEOAtydJX+cdwBFVtR+wX5JD5lhfSZIkSZIkbcFc\nkklJ9gaeAvwfYJQYehpwQp8+AXh6nz4UOLGqbqiqK4HLgUcmuQdwx6o6qy/37rF1JEmSJEmSNIB5\n9Ux6M/CbwE1jZXtW1cY+vRHYs0/fE7h6bLmrgb0mlG/o5ZIkSZIkSRrIzJNJSZ4KfL2qzmVTr6TN\nVFWx6fE3SZIkSZIk7SDWzWGbjwaeluQpwO2AOyX5O2BjkrtX1TX9Ebav9+U3APuMrb83rUfShj49\nXr5h0hsmOXbs5UJVLcwiEEmSJEmSpLUgycHAwVMt2zoJza0ijwNeVVU/l+RPgeuq6g1JjgZ2r6qj\n+wDc7wMOoj3Gdjpw/6qqJGcCLwfOAj4BvLWqPrXoPaqqJvaAujVLUmuzc1dYi/t7rfI4lyRJkqRh\nLJdvmUfPpMVG3wRfD5yc5AjgSuA5AFV1UZKTab/8diNwZG3KcB0JHA/sCpyyOJEkSZIkSZKklTXX\nnkkrwZ5Ja409NtYSj3NJkiRJGsZy+ZZ5/ZqbJEmSJEmSboVMJkmSJEmSJGlqJpMkSZIkSZI0NZNJ\nkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmSJEmSpKmtG7oC0tZKUkPX\nYQhVlaHrIEmSJEmSySTtgNZiLsk8kiRJkiRpdfAxN0mSJEmSJE3NnkmSpFVhrT7Cupb5+K4kSdKO\nyWSSJGkVWYv5pLB245YkSdKOyGSSJEkaxFrtjWaPLEmStKMzmSRJkgayFnNJ5pEkSdKOzwG4JUmS\nJEmSNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYySZIkSZIkSVPz19wkSZKkOUiyFn+y\nEICq8qcLJelWzGSSJEnSClrLCYa1aS3u7nica00waaq1zGSSJEnSilqL37HD2o17rVqr+9u41w6T\npmuNycPNzXzMpCT7JPlcki8nuTDJy3v5HklOS3JpklOT7D62zjFJLktySZInj5U/Isn6Pu+4WddV\nkiRJkqRtU2vw31qOW+PmMQD3DcCvV9WDgEcBv5rkgcDRwGlVtT/wmf6aJAcAhwMHAIcAb08yyvi9\nAziiqvYD9ktyyBzqK0mSJEmSpCnNPJlUVddU1Xl9+rvAxcBewNOAE/piJwBP79OHAidW1Q1VdSVw\nOfDIJPcA7lhVZ/Xl3j22jiRJkiRJkgYw1zGTkuwLPAw4E9izqjb2WRuBPfv0PYEzxla7mpZ8uqFP\nj2zo5ZIkSZIkSSvGMbI2N7dkUpI7AB8CXlFV1296cg2qqtwRkrQ020hJkiRpNVmLl+dLjzk+l2RS\nkp1piaS/q6qP9uKNSe5eVdf0R9i+3ss3APuMrb43rUfShj49Xr5hifc7duzlQlUtbHcQkjQoP6wk\nSZIkraSF/m/LUjXbLyx98OwTgOuq6tfHyv+0l70hydHA7lV1dB+A+33AQbTH2E4H7t97L50JvBw4\nC/gE8Naq+tSi96u1+BN9rdfCWv2yuTbj9jhfS9bucW7ca4lxry3GvbYY99pi3GuLca8tS38PnUcy\n6THAPwEXsOmvfQwtIXQycC/gSuA5VfWtvs6rgZcAN9Iei/t0L38EcDywK3BKVb18wvuZTFpTPInX\nEo/ztca41xbjXluMe20x7rXFuNcW415bVjCZtNJMJq01nsRricf5WmPca4txry3GvbYY99pi3GuL\nca8tS38Pvc1KV0WSJEmSJEk7LpNJkiRJkiRJmprJJEmSJEmSJE1t3dAVkDSdNn6QJEmSJEnDMpkk\n7TDWYi5pzY05LkmSJEmrno+5SZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskkSZIkSZIkTe1W\nMQC3v3IlSZIkSZK0Mm4VySR/5UqSJEmSJGll+JibJEmSJEmSpmYySZIkSZIkSVMzmSRJkiRJkqSp\nmUySJEmSJEnS1EwmSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskkSZIkSZIkTc1kkiRJkiRJ\nkqZmMkmSJEmSJElTM5kkSZIkSZKkqZlMkiRJkiRJ0tRWfTIpySFJLklyWZLfHro+kiRJkiRJa9mq\nTiYl2Qn4C+AQ4ADgeUkeOGytxi0MXYGBLAxdgYEsDF2BgSwMXYGBLAxdgYEsDF2BgSwMXYGBLAxd\ngYEsDF2BgSwMXYGBLAxdgYEsDF2BgSwMXYGBLAxdgYEsDF2BgSwMXYGBLAxdgYEsDF2BiVZ1Mgk4\nCLi8qq6sqhuAk4BDB67TmIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCF\noSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSsw0WpPJu0FXDX2\n+upeJkmSJEmSpAGs9mRSDV0BSZIkSZIkbZKq1ZuvSfIo4NiqOqS/Pga4qareMLbM6g1AkiRJkiRp\nB1VVmVS+2pNJ64CvAE8EvgacBTyvqi4etGKSJEmSJElr1LqhK7CcqroxycuATwM7AX9jIkmSJEmS\nJGk4q7pnkiRJkiRJklaX1T4A9w4lyYuTvK1PH5vklVtYfovLaDhJXpfkiUPXY2hJHpLkZ4eux6zd\n2uJK8sMk5ya5IMmHk9xh0fw7Jbl61Eb1sn/q65ybZEOSj/TyJHlrksuSnJ/kYWPrXNnf49wkZ42V\nH5bky70eD1+JmPv7Lhn32Lxzk3x0rPxlSS5PclOSPcbKD07y7bF1XjM275ge3/ok70uySy9/Y5KL\n+9/pw0nuvKPFPTb/wCQ3JnnmWNnuST7YY7yoj2U4vs4rl9rePGxj3PdJcmY/nk9KsnMvv0uSj/R9\nd2aSB42tM/E47/OO6n+PC5O8gRUwy/O7zzu4l1+YZGGs/F1JNiZZv2j7ByU5q69zdpID5xju+PsO\n3a6tuvN7mbifkuS8vt7nk9xvbN5S+3vJ47zPXzXnd58/Ke4nJPmXtLb5+CQ7jc27RdxJ9knyubT2\n/MIkLx9b/qSxY+eKJOeuQNizbtcO7cfruf3v8oQtxT22zVW/v3v5HyX5Stpn0lG9bGJ7nuR2/fV5\n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\n50eP1kvyYlpX8hfccqtzM7O4aQnQk/ox8izg7WmPeV5Fu1t9dl/ug7SLt/vRLnfJ+1UAACAASURB\nVFjO7+vsDfxLtvDI94xsbdzX0R5nGl3vjB/L11fVS/q5+gu0sSe+2uctdZxfTb/h0P8uN/VjZN5m\neX5fBZxaVd+rquuAf6L1pF3OQVU1GsD7g6zceT94u7bKzu+l4r4rcNuxc/VkNrVRS+7vJeK+L6vv\n/F5yf1fVGVX1U9V6FX+eNhYQLBN32qPuHwLe0xMvN0u7GfoMNr+JPG8za9fG9YToulEbtUTcq7E9\nX+78vrkNpn2R/nFYvj0fqfaY9idon+lDmlncy3g07UbqFbSb4E9I8u4+b2OSuwMkuQftxvpKmGXc\nW/05VlVfr4726N/Qn2Mrdp06T2s5mXSvbPpVmucD/9ynr+tZ+8XjAI1/mbwTrQsZtEF8JwmQaj1T\nrkjybLh5LKMtNQDbY5T0Kpa+szD68n0Tt/wivlzC4wO0LsTPAU5aPHOJL9c3svlxtiubvsQfDxzZ\nk3KvY/mk3Cx8Bnh2vwM3+jWDe/f6jfb382kXIyNFuzC5b18W4HA2xfBpxroQZ9Ovw0z62w/9nO6W\nLBXL9cAdp1ju8/SL7ST70xKTX2F4c4kryX2r6oqqehuth9+DmXyMTUzQzktVfY8Wxx8lSVW9sKru\nXVX3oT369+6qevXYKs8GPt4TyiMfA34BoLeT36qqjUl2S3LHXn57Wm+uST3PVvxYXxx32q+QjX7J\n4q60HmZfnrDq+N39PUd3xdK6yadfpHwFeFTa2HoBfhq4qC93CK0b+aFTJNBnbhZxV9V9q+o+/Rj5\nIPArVfWxat3gr+rHPbS4v1xVF1bVnmPrXE0b1HGlLkinjfuiftH4OTa18S+ij6GT5M7pj+KmPeLz\nj9Xv1C9znH+U9hjsqD24bT9GVsSMzu+/Bx6T9ujHbrTBqLf02MflSR7Xp58ArOg4I0O1a6vt/F4m\n7v+kjZWxX1/1SWzapxP391Jxr8bze7n9PfZ5uwtt2InRXf+l4g6tp91FVfWWCW//08DFo0TbSppR\nu3a/sc+xh/ftXrdU3FW1fkfa34y1wcDj6NeZy7Tnd01/OiNtOI0n0XotLTb4dcu2xD1ms/pX1aur\nap++recCn+1JNmht4Yv69M3HzkqZUdxb/TnWE2cjz2D+T05sZqjr1KW2NStrOZn0FeBX0x4/ujOt\n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\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.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": [ + "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 }, @@ -703,7 +788,8 @@ "
\n", " \n", " BokehJS successfully loaded.\n", - "
" + " \n", + "

Warning: BokehJS previously loaded

" ] }, "metadata": {}, @@ -956,7 +1042,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -966,21 +1052,21 @@ "text/html": [ "\n", - "
\n", + "
\n", "\n" ] }, @@ -1039,7 +1125,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1049,21 +1135,21 @@ "text/html": [ "\n", - "
\n", + "
\n", "\n" ] }, @@ -1090,6 +1176,15 @@ "outputs": [], "source": [] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -1116,7 +1211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.9" } }, "nbformat": 4, From 0bbdc093b50cfc29f500c1f70a4369bb97091d56 Mon Sep 17 00:00:00 2001 From: luigi-calori Date: Fri, 12 Jun 2015 10:15:55 +0200 Subject: [PATCH 13/13] added pie exercise --- data_exercise.txt | 48 ++++ pydata/images/pie.png | Bin 0 -> 26040 bytes pydata/pico_jobs.ipynb | 552 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 573 insertions(+), 27 deletions(-) create mode 100644 data_exercise.txt create mode 100644 pydata/images/pie.png 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/images/pie.png b/pydata/images/pie.png new file mode 100644 index 0000000000000000000000000000000000000000..20fce10c965b53ce9d6d031ab0233c0d05d0583f GIT binary patch literal 26040 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 S2zd1hma?LnLZzHZ$o~PBditpV literal 0 HcmV?d00001 diff --git a/pydata/pico_jobs.ipynb b/pydata/pico_jobs.ipynb index ed03a4c..55da6e8 100644 --- a/pydata/pico_jobs.ipynb +++ b/pydata/pico_jobs.ipynb @@ -1,5 +1,119 @@ { "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": {}, @@ -10,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 63, "metadata": { "collapsed": false }, @@ -66,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 64, "metadata": { "collapsed": false }, @@ -111,7 +225,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 65, "metadata": { "collapsed": false }, @@ -172,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 66, "metadata": { "collapsed": false, "scrolled": true @@ -317,7 +431,7 @@ "[6546 rows x 15 columns]" ] }, - "execution_count": 4, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -340,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 67, "metadata": { "collapsed": false }, @@ -369,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 68, "metadata": { "collapsed": false }, @@ -380,7 +494,7 @@ "{'num_jobs': 0, 'tot_core_hours': 1}" ] }, - "execution_count": 6, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -402,7 +516,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 69, "metadata": { "collapsed": false }, @@ -439,22 +553,110 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "parallel\n", - "rcm_visual\n", - "epigen\n", - "meteo\n", - "meteoser\n", - "R47051\n" - ] + "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": [ @@ -465,8 +667,10 @@ " 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" + "#for queue in get_stats(Cluster,'queue','core_hours')[:6].index :\n", + "# print queue\n", + "st=get_stats(Cluster,'queue','core_hours')\n", + "st" ] }, { @@ -478,7 +682,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 71, "metadata": { "collapsed": true }, @@ -499,7 +703,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 72, "metadata": { "collapsed": true }, @@ -513,16 +717,16 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 73, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABJMAAAR+CAYAAABkqXTYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X+8pWVd7//XG0Z+qAgRhvwSMYZy/GIQAT7McpCi0YcB\n5Q/INMv5esxJ8FhWYD8czzmp2FGCTnDONzEGCpQ0DQKRH7HLvgWjNeDIiEAxxYwwGCrq1ywmPt8/\n7mszazZ7b+7Ze61ZG/br+Xisx77WdV/3va7PXve611qf+7qvlapCkiRJkiRJ6mOXcXdAkiRJkiRJ\nTxwmkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktTbvJNJSXZN\nsi7JVe3+vkmuT3JnkuuS7DPQ9uwkdyW5I8lJA/XHJFnflp03UL97ko+2+puTHDrf/kqSJEmSJGnu\nhjEy6W3ABqDa/bOA66vqCODGdp8ky4DTgGXACuCCJGnrXAisrKqlwNIkK1r9SuDBVn8ucM4Q+itJ\nkiRJkqQ5mlcyKcnBwMuBDwGTiaGTgTWtvAY4tZVPAS6vqoeraiNwN3B8kgOAvapqbWt3ycA6g9v6\nOHDifPorSZIkSZKk+ZnvyKRzgV8FHhmo27+qtrTyFmD/Vj4Q2DTQbhNw0DT1m1s97e+9AFW1FXgo\nyb7z7LMkSZIkSZLmaM7JpCSvAB6oqnVsG5W0naoqtl3+JkmSJEmSpCe4JfNY90XAyUleDuwBPCPJ\npcCWJM+qqvvbJWwPtPabgUMG1j+YbkTS5laeWj+5zrOBLydZAuxdVV8d7EQSk1WSJEmSJElDVlXT\nDh5KN3hofpK8BHhHVf1kkvfTTZp9TpKzgH2q6qw2AfdlwHF0l6/dABxeVZXkFuBMYC1wNXB+VV2b\nZBVwZFW9JcnpwKlVdfqUx66Zghu1JKuravU4HnucjHtxMe7FxbgXF+NeXIx7cTHuxcW4FxfjXlzG\nGfds+Zb5jEyaajIr9T7giiQrgY3AawCqakOSK+h++W0rsKq2ZbJWARcDewLXVNW1rf4i4NIkdwEP\nAtslkiRJkiRJkrRzDSWZVFV/BfxVK38V+LEZ2r0HeM809X8PHDlN/b/TklGSJEmSJEkav/n+mtti\nNzHuDozJxLg7MCYT4+7AmEyMuwNjMjHuDozJxLg7MCYT4+7AmEyMuwNjMjHuDozJxLg7MCYT4+7A\nmEyMuwNjMjHuDozJxLg7MCYT4+7AmEyMuwNjMjHuDozJxLg7MJ2hzJk0TuOcM0mSJEmSJOnJaLZ8\niyOTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmS\nJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9LRl3B4Yh\nSY27D+NQVRl3HyRJkiRJ0uLypEgmwWLMJZlHkiRJkiRJO9+cL3NLskeSW5LcmmRDkve2+tVJNiVZ\n124vG1jn7CR3JbkjyUkD9cckWd+WnTdQv3uSj7b6m5McOtf+SpIkSZIkaf7mnEyqqu8AJ1TVUcAL\ngBOSvJhumNAHq+rodvsUQJJlwGnAMmAFcEGSyeE1FwIrq2opsDTJila/Eniw1Z8LnDPX/kqSJEmS\nJGn+5jUBd1V9uxV3A3YFvtbuT3cN1inA5VX1cFVtBO4Gjk9yALBXVa1t7S4BTm3lk4E1rfxx4MT5\n9FeSJEmSJEnzM69kUpJdktwKbAFuqqrb26IzktyW5KIk+7S6A4FNA6tvAg6apn5zq6f9vRegqrYC\nDyXZdz59liRJkiRJ0tzNd2TSI+0yt4OBH02ynO6StcOAo4D7gA/Mt5OSJEmSJElaGIbya25V9VCS\nq4EfqqqJyfokHwKuanc3A4cMrHYw3Yikza08tX5ynWcDX06yBNi7qr762B6sHigvbzdJkiRJkiT1\n0QYILe/Vtqrm+iD7AVur6utJ9gQ+DbwbuL2q7m9t3g4cW1WvbRNwXwYcR3f52g3A4VVVSW4BzgTW\nAlcD51fVtUlWAUdW1VuSnA6cWlWnT+lHdXN+Lzahqqabm0qSJEmSJGlektRMeYf5jEw6AFiTZBe6\ny+Uuraobk1yS5Ci6DM89wJsBqmpDkiuADcBWYFVty2StAi4G9gSuqaprW/1FwKVJ7gIeBLZLJEmS\nJEmSJGnnmvPIpIXCkUmSJEmSJEnDNdvIpHlNwC1JkiRJkqTFxWSSJEmSJEmSejOZJEmSJEmSpN5M\nJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnq\nzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmS\npN7mnExKskeSW5LcmmRDkve2+n2TXJ/kziTXJdlnYJ2zk9yV5I4kJw3UH5NkfVt23kD97kk+2upv\nTnLoXPsrSZIkSZKk+ZtzMqmqvgOcUFVHAS8ATkjyYuAs4PqqOgK4sd0nyTLgNGAZsAK4IEna5i4E\nVlbVUmBpkhWtfiXwYKs/Fzhnrv2VJEmSJEnS/M3rMreq+nYr7gbsCnwNOBlY0+rXAKe28inA5VX1\ncFVtBO4Gjk9yALBXVa1t7S4ZWGdwWx8HTpxPfyVJkiRJkjQ/80omJdklya3AFuCmqrod2L+qtrQm\nW4D9W/lAYNPA6puAg6ap39zqaX/vBaiqrcBDSfadT58lSZIkSZI0d0vms3JVPQIclWRv4NNJTpiy\nvJLUfB5DkiRJkiRJC8e8kkmTquqhJFcDxwBbkjyrqu5vl7A90JptBg4ZWO1guhFJm1t5av3kOs8G\nvpxkCbB3VX31sT1YPVBe3m6SJEmSJEnqI8lyeiZUUjW3gUNJ9gO2VtXXk+wJfBp4N/ATdJNmn5Pk\nLGCfqjqrTcB9GXAc3eVrNwCHt9FLtwBnAmuBq4Hzq+raJKuAI6vqLUlOB06tqtOn9KNgMQ5+ClWV\nx28nSZIkSZK0Y5LUTHmH+YxMOgBYk2QXurmXLq2qG5OsA65IshLYCLwGoKo2JLkC2ABsBVbVtkzW\nKuBiYE/gmqq6ttVfBFya5C7gQWC7RJIkSZIkSZJ2rjmPTFooHJkkSZIkSZI0XLONTJrXr7lJkiRJ\nkiRpcTGZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmS\nJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSS\nJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKm3OSeTkhyS5KYktyf5QpIzW/3qJJuSrGu3lw2sc3aS\nu5LckeSkgfpjkqxvy84bqN89yUdb/c1JDp1rfyVJkiRJkjR/8xmZ9DDw9qp6PvBC4JeSPA8o4INV\ndXS7fQogyTLgNGAZsAK4IEnati4EVlbVUmBpkhWtfiXwYKs/FzhnHv2VJEmSJEnSPM05mVRV91fV\nra38LeCLwEFtcaZZ5RTg8qp6uKo2AncDxyc5ANirqta2dpcAp7byycCaVv44cOJc+ytJkiRJkqT5\nG8qcSUmeAxwN3NyqzkhyW5KLkuzT6g4ENg2stoku+TS1fjPbklIHAfcCVNVW4KEk+w6jz5IkSZIk\nSdpx804mJXk68DHgbW2E0oXAYcBRwH3AB+b7GJIkSZIkSVoYlsxn5SRPobv87I+r6pMAVfXAwPIP\nAVe1u5uBQwZWP5huRNLmVp5aP7nOs4EvJ1kC7F1VX31sT1YPlJe3myRJkiRJkvpIspyeCZVU1Vwf\nJHTzGT1YVW8fqD+gqu5r5bcDx1bVa9sE3JcBx9FdvnYDcHhVVZJbgDOBtcDVwPlVdW2SVcCRVfWW\nJKcDp1bV6VP6Ud2c34tNqKrp5qaSJEmSJEmalyQ1U95hPiOTfhh4HfD5JOta3TuBn0lyFF2G5x7g\nzQBVtSHJFcAGYCuwqrZlslYBFwN7AtdU1bWt/iLg0iR3AQ8C2yWSJEmSJEmStHPNeWTSQuHIJEmS\nJEmSpOGabWTSUH7NTZIkSZIkSYuDySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJ\nktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJ\nkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvc05mZTkkCQ3Jbk9yReS\nnNnq901yfZI7k1yXZJ+Bdc5OcleSO5KcNFB/TJL1bdl5A/W7J/loq785yaFz7a8kSZIkSZLmbz4j\nkx4G3l5VzwdeCPxSkucBZwHXV9URwI3tPkmWAacBy4AVwAVJ0rZ1IbCyqpYCS5OsaPUrgQdb/bnA\nOfPoryRJkiRJkuZpzsmkqrq/qm5t5W8BXwQOAk4G1rRma4BTW/kU4PKqeriqNgJ3A8cnOQDYq6rW\ntnaXDKwzuK2PAyfOtb+SJEmSJEmav6HMmZTkOcDRwC3A/lW1pS3aAuzfygcCmwZW20SXfJpav7nV\n0/7eC1BVW4GHkuw7jD5LkiRJkiRpx807mZTk6XSjht5WVd8cXFZVBdR8H0OSJEmSJEkLw5L5rJzk\nKXSJpEur6pOtekuSZ1XV/e0Stgda/WbgkIHVD6YbkbS5lafWT67zbODLSZYAe1fVVx/bk9UD5eXt\nJkmSJEmSpD6SLKdnQiXd4KE5PUjo5jN6sKrePlD//lZ3TpKzgH2q6qw2AfdlwHF0l6/dABxeVZXk\nFuBMYC1wNXB+VV2bZBVwZFW9JcnpwKlVdfqUftTiHPwUqiqP306SJEmSJGnHJKmZ8g7zSSa9GPhr\n4PNsy+acTZcQuoJuRNFG4DVV9fW2zjuBNwJb6S6L+3SrPwa4GNgTuKaqzmz1uwOX0s3H9CBwepu8\ne7vgTCZJkiRJkiQNz0iSSQuFySRJkiRJkqThmi2ZNJRfc5MkSZIkSdLiYDJJkiRJkiRJvZlMkiRJ\nkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktTbknF3\nQHOXpMbdh3Goqoy7D5IkSZIkLVYmk57QFmMuyTySJEmSJEnj5GVukiRJkiRJ6s1kkiRJkiRJknoz\nmSRJkiRJkqTeTCZJkiRJkiSpN5NJkiRJkiRJ6m3OyaQkH06yJcn6gbrVSTYlWdduLxtYdnaSu5Lc\nkeSkgfpjkqxvy84bqN89yUdb/c1JDp1rXyVJkiRJkjQc8xmZ9EfAiil1BXywqo5ut08BJFkGnAYs\na+tckGTyN94vBFZW1VJgaZLJba4EHmz15wLnzKOvkiRJkiRJGoI5J5Oq6jPA16ZZlGnqTgEur6qH\nq2ojcDdwfJIDgL2qam1rdwlwaiufDKxp5Y8DJ861r5IkSZIkSRqOUcyZdEaS25JclGSfVncgsGmg\nzSbgoGnqN7d62t97AapqK/BQkn1H0F9JkiRJkiT1NOxk0oXAYcBRwH3AB4a8fUmSJEmSJI3RkmFu\nrKoemCwn+RBwVbu7GThkoOnBdCOSNrfy1PrJdZ4NfDnJEmDvqvrq9I+8eqC8vN0kSZIkSZLUR5Ll\n9EyoDDWZlOSAqrqv3f0pYPKX3q4ELkvyQbrL15YCa6uqknwjyfHAWuD1wPkD67wBuBl4FXDjzI+8\nephhSJIkSZIkLSpVNQFMTN5P8q6Z2s45mZTkcuAlwH5J7gXeBSxPchTdr7rdA7y5dWhDkiuADcBW\nYFVVVdvUKuBiYE/gmqq6ttVfBFya5C7gQeD0ufZVkiRJkiRJw5FtOZ0npiTV5a4Wm7BY466q6X4x\nUJIkSZIkDUmSmun79yh+zU2SJEmSJElPUiaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9mUyS\nJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJ\nJEmSJEmSJPVmMkmSJEmSJEm9mUySJEmSJElSbyaTJEmSJEmS1JvJJEmSJEmSJPVmMkmSJEmSJEm9\nzTmZlOTDSbYkWT9Qt2+S65PcmeS6JPsMLDs7yV1J7khy0kD9MUnWt2XnDdTvnuSjrf7mJIfOta+S\nJEmSJEkajvmMTPojYMWUurOA66vqCODGdp8ky4DTgGVtnQuSpK1zIbCyqpYCS5NMbnMl8GCrPxc4\nZx59lSRJkiRJ0hDMOZlUVZ8Bvjal+mRgTSuvAU5t5VOAy6vq4araCNwNHJ/kAGCvqlrb2l0ysM7g\ntj4OnDjXvkqSJEmSJGk4hj1n0v5VtaWVtwD7t/KBwKaBdpuAg6ap39zqaX/vBaiqrcBDSfYdcn8l\nSZIkSZK0A5aMasNVVUlqVNvf3uqB8vJ2kyRJkiRJUh9JltMzoTLsZNKWJM+qqvvbJWwPtPrNwCED\n7Q6mG5G0uZWn1k+u82zgy0mWAHtX1Venf9jVw+q/JEmSJEnSolNVE8DE5P0k75qp7bAvc7sSeEMr\nvwH45ED96Ul2S3IYsBRYW1X3A99IcnybkPv1wJ9Ps61X0U3oLUmSJEmSpDFK1dyuREtyOfASYD+6\n+ZF+my4RdAXdiKKNwGuq6uut/TuBNwJbgbdV1adb/THAxcCewDVVdWar3x24FDgaeBA4vU3ePbUf\nBTvparoFJSzWuKsqj99OkiRJkiTNVZKa6fv3nJNJC4XJpMXGZJIkSZIkSaM2WzJp2Je5SZIkSZIk\n6UnMZJIkSZIkSZJ6M5kkSZIkSZKk3kwmSZIkSZIkqTeTSZIkSZIkSerNZJIkSZIkSZJ6M5kkSZIk\nSZKk3kwmSZIkSZIkqTeTSZIkSZIkSerNZJIkSZIkSZJ6M5kkSZIkSZKk3kwmSZIkSZIkqTeTSZIk\nSZIkSerNZJIkSZIkSZJ6M5kkSZIkSZKk3kaSTEqyMcnnk6xLsrbV7Zvk+iR3JrkuyT4D7c9OcleS\nO5KcNFB/TJL1bdl5o+irJEmSJEmS+hvVyKQCllfV0VV1XKs7C7i+qo4Abmz3SbIMOA1YBqwALkiS\nts6FwMqqWgosTbJiRP2VJEmSJElSD6O8zC1T7p8MrGnlNcCprXwKcHlVPVxVG4G7geOTHADsVVVr\nW7tLBtaRJEmSJEnSGIxyZNINST6X5E2tbv+q2tLKW4D9W/lAYNPAupuAg6ap39zqJUmSJEmSNCZL\n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\nndM+499Gl5h6+zCDm8VYP6eOej9PjfSqi4Up3cRzV1U30faTRovryupG+pDk1+k+6P4HcHVV/WaS\nm+h+kvAf0p1l/JWqmvzVqkeXzfIYnwe+UlUnTn3MJGfRvVE9TPfLL6+tqq8nOYPuoL4Z+EdgY1X9\ntyS/SHcW6St0B4KnV9Ub003Q/c3qJjsfuSTfrKq9HqfN06r9QkaSPwDurKrzdkb/JEmSJElaSBZz\nMunRpIsWtyTfqKpnPE6b/0o3FHQ3usnP3jSOIe+SJEmSJI3bokwmSZIkSZIkaW6WPH4TLSbpZoS/\nYZpFJ1bVV3d2fyRJkiRJ0sLiyCRJkiRJkiT1tph/zU2SJEmSJEk7yGSSJEmSJEmSejOZJEmSJEmS\npN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmS\nJEnqzWSSJEmSJEmSejOZJEmSJEmSpN5MJkmSJEmSJKk3k0mSJEmSJEnqzWSSJEmSJEmSejOZJEmS\nJEmSpN5MJkmSJEmSJKm3kSWTkuyaZF2Sq9r91Uk2tbp1SV420PbsJHcluSPJSQP1xyRZ35adN6q+\nSpIkSZIkqZ9Rjkx6G7ABqHa/gA9W1dHt9imAJMuA04BlwArggiRp61wIrKyqpcDSJCtG2F9JkiRJ\nkiQ9jpEkk5IcDLwc+BAwmRjKQHnQKcDlVfVwVW0E7gaOT3IAsFdVrW3tLgFOHUV/JUmSJEmS1M+o\nRiadC/wq8MhAXQFnJLktyUVJ9mn1BwKbBtptAg6apn5zq5ckSZIkSdKYDD2ZlOQVwANVtY7tRyJd\nCBwGHAXcB3xg2I8tSZIkSZKk0Voygm2+CDg5ycuBPYBnJLmkqn5uskGSDwFXtbubgUMG1j+YbkTS\n5lYerN889cGS1NQ6SZIkSZIkzU9VTTddEakaXS4myUuAd1TVTyY5oKrua/VvB46tqte2CbgvA46j\nu4ztBuDwqqoktwBnAmuBq4Hzq+raKY9RMwU3aklWV9XqcTz2OBn34mLci4txLy7GvbgY9+Ji3IuL\ncS8uxr24jDPu2fItoxiZtN1js+3X3N6f5Afa/XuANwNU1YYkV9D98ttWYFVty3CtAi4G9gSumZpI\nkiRJkiRJ0s410mRSVU0AE638+lnavQd4zzT1fw8cOaLuSZIkSZIkaQeN6tfcFouJcXdgTCbG3YEx\nmRh3B8ZkYtwdGJOJcXdgTCbG3YExmRh3B8ZkYtwdGJOJcXdgTCbG3YExmRh3B8ZkYtwdGJOJcXdg\nTCbG3YExmRh3B8ZkYtwdGJOJcXdgTCbG3YHpjHTOpJ1hnHMmSZIkSZIkPRnNlm9xZJIkSZIkSZJ6\nM5kkSZIkSZKk3kb9a247RZIn9rV6c+TlfZIkSZIkaWd7UiSTYDHmkswjSZIkSZKknc/L3CRJkiRJ\nktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1NrJkUpJd\nk6xLclW7v2+S65PcmeS6JPsMtD07yV1J7khy0kD9MUnWt2XnjaqvkiRJkiRJ6meUI5PeBmwAqt0/\nC7i+qo4Abmz3SbIMOA1YBqwALkiSts6FwMqqWgosTbJihP2VJEmSJEnS4xhJMinJwcDLgQ8Bk4mh\nk4E1rbwGOLWVTwEur6qHq2ojcDdwfJIDgL2qam1rd8nAOpIkSZIkSRqDUY1MOhf4VeCRgbr9q2pL\nK28B9m/lA4FNA+02AQdNU7+51UuSJEmSJGlMhp5MSvIK4IGqWse2UUnbqapi2+VvkiRJkiRJeoJY\nMoJtvgg4OcnLgT2AZyS5FNiS5FlVdX+7hO2B1n4zcMjA+gfTjUja3MqD9Zunf8jVA+Xl7SZJkiRJ\nkqQ+kiynZ0Il3SChkXXkJcA7quonk7wfeLCqzklyFrBPVZ3VJuC+DDiO7jK2G4DDq6qS3AKcCawF\nrgbOr6prpzxGLc5BTqGqph35JUmSJEmSNB9Jaqa8wyhGJk01mel5H3BFkpXARuA1AFW1IckVdL/8\nthVYVdsyXKuAi4E9gWumJpIkSZIkSZK0c410ZNLO4MgkSZIkSZKk4ZptZNKofs1NkiRJkiRJT0Im\nkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1\nZjJJkiRJkiRJvZlMkiRJkiRJUm8mkyRJkiRJktSbySRJkiRJkiT1ZjJJkiRJkiRJvZlMkiRJkiRJ\nUm9DTyYl2SPJLUluTbIhyXtb/eokm5Ksa7eXDaxzdpK7ktyR5KSB+mOSrG/Lzht2XyVJkiRJkrRj\nUlXD32jy1Kr6dpIlwN8A7wBOBL5ZVR+c0nYZcBlwLHAQcAOwtKoqyVrgrVW1Nsk1wPlVde2U9QuG\n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\nbkjy+la2vKp2tumdwPI2/TRge6/uduDgxWmmJEmSJEmSplo2gtd8UVV9KclTgY1Jbu3PrKpKUrPU\nnzZWTBEAACAASURBVG2eJEmSJEmSFtCiJ5Oq6kvt75eTfITutrWdSQ6sqruSHATc3RbfAazoVT+k\nlU1xZm96oj0kSZIkSZI0RJIJBiZUUrV4HX2SPB54dFXdl+QJwAbgLOBHgHuq6uwka4H9q2ptG4D7\nYrqE08HA1cCzq9forhfTOHZWClU1deypRzy3tyRJkiRJCy9JzfQ9dLF7Ji0HPpJk8rX/oqo2JLkB\nWJ9kNbANOAmgqrYmWQ9sBR4A1tRiZr8kSZIkSZL0EIvaM2kh2FNlvLi9JUmSJElaeLP1TBrFr7lJ\nkiRJkiRpL2UySZIkSZIkSYOZTJIkSZIkSdJgJpMkSZIkSZI0mMkkSZIkSZIkDbZs1A3Qnut+2UyS\nJEmSJGnxmEzaq41jLmnaXyWUJEmSJEmLxGSSpCVrnHvfVZWZU0mSJElLkskkSUvcOOaTzCNJkiRJ\nWrocgFuSJEmSJEmDmUySJEmSJEnSYCaTJEmSJEmSNJjJJEmSJEmSJA225JNJSY5LcmuS25P81qjb\n81CbRt2AEdk06gaMyKZRN2AkkkyMug2jsWnUDRiJcd3exj1ejHu8GPd4Me7xYtzjxbiXliWdTEry\naOC/A8cBq4CfTvKc0baqb9OoGzAim0bdgBHZNOoGjMrEqBswGptG3YBRmRh1A0ZkYtQNGJGJUTdg\nRCZG3YARmRh1A0ZkYtQNGJGJUTdgRCZG3YARmRh1A0ZkYtQNGJGJUTdgRCZG3YARmRh1A6azbNQN\nmMPRwB1VtQ0gyQeBE4DPjbJR0igkqRG+9hmjem1JkiRJ0tKypHsmAQcDd/aeb29l0hiqET3OGOFr\nS5IkSZKWmlQt3S9sSV4JHFdVr2/PXwMcU1Vv6i2zdAOQJEmSJEnaS1VVpitf6re57QBW9J6voOud\n9KCZApMkSZIkSdL8W+q3ud0ArExyaJLHAicDl4+4TZIkSZIkSWNrSfdMqqoHkrwR+DjwaOCCqnLw\nbUmSJEmSpBFZ0mMmSZIkSZIkaWlZ6re57VWS/HySP27TZyb5tTmWn3MZjU6Ss5K8bNTtGLUk35/k\nR0fdjvn2SIsryX8muTHJzUn+KskTp8z/jiTbJ89RrexvWp0bk+xI8pFWniTnJrk9yWeSHNGrs629\nxo1JNvfKX53ks60dRy5GzO11Z4y7N+/GJJf1yt+Y5I4k30pyQK98IsnXenV+pzfv9BbfliQXJ9mn\nlf9hks+1/9NfJXnS3hZ3b/7zkzyQ5Kd6Zfsn+XCLcWuSF0yp82szrW8h7GHcz0xyXdufP5jkMa38\nO5N8pG2765I8t1dn2v28zXtT+3/ckuTsUcfd5g8+vtu8iVZ+S5JNvfL3JdmZZMuU9R+dZHOrc32S\n5y9guP3XHfV5bckd37PE/WNJbmr1PpXku3vzZtreM+7nbf6SOb7b/OnifmmST6c7N1+Y5NG9ed8W\nd5IVST6Z7nx+S5LTest/sLfvfCHJjYsQ9nyf105o++uN7f/y0rni7q1zyW/vVv77ST6f7j3pTa1s\n2vN5kse15ze15f+gt54l97mlzd+duL83yd8l+Wam+U6Z5NHttT7aKzsgycYktyXZkGT/hYp1Slvm\nLe5WvrvvY2e29U8eT8ctUKgPsYfH93x+Tl3Y/byqfOzGA3j0LPNOBf64TZ8B/Noc65pzmaX+AJ4G\n/OU8r/PMvf3/8kh6AD8/uV8/kh6jjAt41AKs877e9IVTjyHgHOAvZooZ+DDwmjb9Y8CVbfoY4Nre\ncl8ADpim/vcChwGfBI5cxP/ljHH3502p8zzgGVNjASaAy6dZ/lDgH4F92vMPAae26ZdPbk/gncA7\n97a427xHA58A/hp4Za98HfC6Nr0MeFJv3grgqpn2iSUU93rgpDZ9PvBLbfoPgd9t098DXN2rM9N+\n/hJgI/CY9vypo467le3O8b0/8FngkPb8Kb3lfgg4Atgypf4m4BVt+keBT+6Fce/JeW3JHd8zxd1i\n+J42/Qbg/QO294zH7lI7vqeLm+6i+D8Dz27Pz2LX+WrauIEDgee16ScCnweeM01b/hvwO6OOm90/\nrz2ht8zhwB1D4t4btncr+wXgwt7zp7a/s53PH9/+LgOuBX6wPV9yn1v2IO6nAj8A/Nep62nzf7Wt\n6/Je2buA32zTv8XSPq/NFPeevI+dAfzqYm3nIXHPcnzP5+fUBd3Px7JnUroBvW9N8ucty/mXSfZN\n8rZ0V962JPmfveU3JXlPkuuBNyf58STXJvn7ltn9rjle77uTfCzJDemumH3PIsSYJAv+S3dV9cWq\nevV8r3ae1/egJK9pVyhuTPI/Wsb+G0ne3TLbVyd5Slv2wiSvbNM/lu7q5A3prmx+tJU/oWXAr2v7\nw/Gt/Odb9vljLfO/KFevZ9Lb59/fsvt/keTYJP9va9/zp4sl3ZWu3wNObv+zV88S8+Pa+m9u5ROP\n5LiSPLe3L30m7SrwNPvYo1r5N5L8tyQ3AS+YPqJ583dA/6r0UcB3ARumWzjJdwAvBSavihxPl0Sg\nqq4D9k+yvF9l6jqq6taqum1eWr/nHhL3TKrqpqr6pxlmT3fe/DpwP/D4JMuAx9P92ihVtbGqvtWW\nuw44ZLdb/fDNR9xvovvi/eXJgnS9MH6oqt7X6j9QVV/r1Xk38Jt73OqHb8642/vgS+hig26/PrFN\nP4fuwxVV9Xng0CRP7VefZpVvAP6gqu5v9b48zTIL7eEe3z8DXFpV2wGq6l8ml62qTwFfnWY1XwIm\ne+XsT9v/F9kozmtL7vieJe67mH4bzbi9J1c5w+suqeN7hrifDPxHVd3Rnl8NvLJNTxt3Vd1VVTe1\n6W8An6O7MPqgdt44CbhknmMa4mGd16rq/+st+kRgaNx7w/YG+CW6z2/AQ87BM57Pq+pf2zKPpbtw\n8pVWvuQ+t+xu3FX15aq6ge4zykMkOYQuif5nPPQ4f/BcyEPfExfTw93ee/I+BjOf7xbLKD6nLuh+\nPpbJpOYw4E+qahXdBlhDlwk9uqoOB/ZN8uNt2aK7Cvn8qno38H+q6gVVdSRd5m/y5Dt1404mRf4f\n4E1V9QPAbwDnLURA7Yv155OsA7YAb2tfgG9K8o62zKaWOLm+JUeen65b6G1J3j7Luv8gyZre8zPT\ndYd9RpJbWtm3fblubdrSq/frSc5o069Pl7y7Kd1tFPsuxP+l99rPoftw8MKqOgL4T+Bn6Q6466vq\n/wL+N13mGrrtV0keB/wP4Li2DZ/Crm3728A1VXUM3YfWP0zy+Dbv+9vrHU6XtDh4IeMb4LvprrR9\nL91Vm5Or6kXArwNvbY+HxAI8Bvhd4INVdURV/SUzx/zLwH9W1fcBPw2sS/crjI/EuPahe4M7p+1L\nRwE7ptnHvkW3j0G3n11bVc+rqr9dqH9Gui7+xwKTx+Wj2v9ntltqT6S7iveN9vxg4M7e/O2tDLp9\n/+p0idXXz2fbH46pcTePS9fN/++SnDBgNQW8sJ2/rkyyCqCqvgL8Ed0V8C8C91bV1dPUfx1w5cMK\nZDfNR9zt3HQC3dVt2HV+eybw5ZZM/fskfzp5fmvr3V5VN89bMLthN+J+Mt32mkwI7GDXvvwZ4Kfa\n+o6muwo4mSyYaT9fCfxwugtKm5L8wLwHN4t5Or5XAgeku+XlhiQ/N+Cl1wJ/lOSf6c6hp+9pDHti\niZzXRn58zxH3G4GPJbkTeA1dTyqYfXtPG/dSO75niftfgGXtiyjAq9h1DM+5nyc5lK4Hw3VTZv0Q\nsLOq/uHhRzPcPJ3XSHJiks8BHwOmu53tUHpx70XbG7rPfKe07zFXJnl2K5/xfJ7uwvFNwE66XpVb\nFzKeoeYp7tm8h+5757emlC+vqp1teiewnEU0T3HvyfsYwJvaZ7wLski3901aIp9T592S/jW3BXZn\nVf1dm/5zupPttiS/CewLHEC3sf+6LfOhXt0VSdbTdRl9LF23smkleQLwQuAvs6uj0EJ+wX428HN0\n7f9d4Oiq+mbvgCng36vq+enul/5fdG8oXwX+Icm7q2q6bO6HgPeyKxH2aroD4jHs+uIx+eX64nRZ\n0WV0/6O+fq+jS6vqTwHSJbJWA/99D+Me4mV0X/pvaNviccDddCfZye3758Bf9eqELknxj70M8SXA\nf2nTxwI/keTX2/N9gKfTxXlNVd0HkGQrXRfEUVzNnfSFqvpsa89n6a7gQbefH0r3pnv8NLGEhyZK\nZ4r5RcC50F0VSvJPdMmdh9yzvABGEddhwN8Cv53uys9fVdUd6cbY6u9j+9JdLYYueXnpPMY91b7p\nxnc4GNhGlwCFLlF+ZVV9MZmxt+JP0yW9+2Za9gfbup4KbExya7sKNCozxQ3w9Kr6UpJnAp9IsqWq\nZjxfA38PrKiqf003ntZlwGHpep39Ct3+9DW68/nPVtVfTFZM8tt0V8gvns/gZjGfcb8XWFtV1faR\nyW2/DDgSeGNVXZ/kvcDadGNOvJXuFqBJi3W1b3fivhm4b5Z1vRM4p61vC3Aj3XEKM+/ny4DvrKoX\npBs3aD3wrPkMcAbzeXw/hm67vowuyf13Sa6tqttnef0LgNOq6iNJXg28j4du/4WyJM5rS+j4njbu\n9mXsA3QXva5v72PvAV7P7Nv72+IGPs3SO76njbuds04B3pPuIs8Gdn1xnnU/TzduyYeBN/cSjpN+\nGlisbQ3ze16jqi4DLkvyQ3T7xYN3REyNO90Fgr1iezf7AP/Wvsf8JN256IeZ5XxeVf8JPC9db9uP\nJ5moqk0LG9qs5jPuaaXrEHF3Vd2YWe4UaMfQgt0RMsV8xr0n72Pns6uX09vpki+rH35Yc1oSn1MX\nyjj3TOofOGnP/wT4qdYD4U/pkg2T+t1G/xg4ty33i3RfGGfyKOCrrffD5OO5syz/cP1TVW2me1N4\nX1V9E6Cq7u0tc3n7ewtwS1XtrKr/oEuKPX26lVbXNfa7khyU5PvpYpqaGPlb4K0tIXfo5GvP4vB0\ng0TeTNd7Y9VuxLmn1vW2w3Oq6qwp8yf3hb6pz6ee6H6qt85Dq+rWVv7vvWX+k65r7Sj12/Mt4D96\n05OJ5elime5NZqaYZ+qdt5BGEldVXQL8BPBvwJVJXtLm9fex762qyTeub1bVQv4//q263lDPAL5J\n19MEulvq3pjkC3Q9Cl6b1lMRIN1tnc8Hruitawfd+AmTDmFXd9kvtr9fBj4CHL0g0Qw3U9xU1Zfa\n3y/QjflyxHQr6C1/X7Xu8FX1MeAxSZ5MNx7B31bVPVX1AF3C+YWT9ZL8PF1X8p/99rUumHmLmy4B\n+sG2j7wSOC/dbZ530l2tvr4t92G6D2/fTfeB5TOtziHApzPHLd/zZHfjvofudqbJzzv9ffm+qnpd\nO1ZfSzf2xD+2eTPt59tpFxza/+VbbR9ZaPN5fN8JbKiqf6uqe4C/oetJO5ujq2pyAO8Ps3jH/cjP\na0vs+J4p7qcAj+0dq+vZdY6acXvPEPezWHrH94zbu6quraofrq5X8afoxgKCWeJOd6v7pcCft8TL\ng9JdDP1JHnoReaHN23mtryVEl02eo2aIeymez2c7vh88B9N9kf4+mP18Pqm627SvoHtPH6V5i3sW\nL6S7kPoFuovgL01yUZu3M8mBAEkOoruwvhjmM+7dfh+rqrurobv1b9TvY4v2OXUhjXMy6enZ9as0\nPwP8nzZ9T8vaTx0HqP9l8jvoupBBN4jvdAKkup4pX0jyKnhwLKO5TgAPx2TSq5j5ysLkl+9v8e1f\nxGdLePwlXRfik4APTp05w5frB3jofrYvu77EXwisaUm5s5g9KTcfrgFe1a7ATf6awTNa+ya398/Q\nfRiZVHQfTJ7VlgU4mV0xfJxeF+Ls+nWY6f73o75Pdy4zxXIfsN+A5T5F+7Cd5DC6xOTnGb0FiSvJ\ns6rqC1X1x3Q9/A5n+n1s2gTtQqmqf6OL4/eTpKpeU1XPqKpn0t36d1FVvbVX5VXAR1tCedLlwGsB\n2nny3qrameTxSfZr5U+g6801Xc+zRd/Xp8ad7lfIJn/J4il0Pcw+O03V/tX95ZNXxdJ1k0/7kPJ5\n4AXpxtYL8CPA1rbccXTdyE8YkECfd/MRd1U9q6qe2faRDwNvqKrLq+sGf2fb76GL+7NVdUtVLe/V\n2U43qONifSAdGvfW9qHxk+w6x59KG0MnyZPSbsVNd4vP/652pX6W/fwyuttgJ88Hj237yKKYp+P7\nfwE/mO7Wj8fTDUY9120fdyR5cZt+KbCo44yM6ry21I7vWeL+F7qxMla2qi9n1zaddnvPFPdSPL5n\n296999t96IadmLzqP1Pcoetpt7Wq3jvNy/8I8LnJRNtimqfz2nf33seObOu9Z6a4q2rL3rS96Z2D\ngRfTPmfOcj5/StrdGemG03g5Xa+lqUb+uWVP4u55SPur6q1VtaKt6xTgEy3JBt258NQ2/eC+s1jm\nKe7dfh9ribNJP8nC3znxEKP6nDrTuubLOCeTPg/8crrbj55E1/XtT+l661zFt98/3e9RcCZd97Eb\n6AYrrd4y003/LLA63f26t9ANfDbdeufTRuAX2omTJN85D+v8EF3X31fRJZYeYoYv13fR9Wg6oB0w\nP96r8kTgrnRXSl7Drv/FgpzQq+pzwO8AG5J8hi55cCBdAu7odGM7TdAb6K3V+yZdF8yr2jb/entA\n103yMenGprqFLikGD93+9MpGabb2FDPH8klgVdpA1bMsdx7wqHQ9zT5I9ysC3zYg4AIYVVyvTjdo\n+43Ac+ne/KbuYxvYdavnQm//B9dfXU/CO+gSvzMu15zMlEFGq+pK4B+T3AH8T7r9H7pYPtXOZdcB\nf11VGwCS/GS6sTpeAFyR5GMPP6RBpov7ZLrBOK9vbf0E3aDJt7a2ntbaejBwc5LJW2FeDWxpdd5L\n9wFscr0XATcAk2NKTNb5Y7pz2ca2Ly3ImHjTmM+4Z/Mm4C/a/vx9wDumWWYxz227HTfdr9X8apLb\nge+k+0JFq7Ml3a09rwDe3MqXM8N+TtfF/lnt/eISWnJiEczn8X0r3eecm+ni+9NqY4gkuYSul/Fh\nSe5M8gut2n8B3tX+J/+VXbd6L7SRntdYWsf3jHFXN3bO64D1LY6fpUuCzba9Z4t72rYsgj3Z3r/R\nPst/hu5Xjja1+jPF/SK6z5wvya6f1/7R3vq+bd9ZBPN5Xnsl3XntRrpfxzqllU8X93Q/jb7Ut/c7\ngVe2z2S/D/zfrXwV05/PD6K7fWhyP/9oVV0DS+5zyx7FneTAFsNbgN9J8s/p/fT8LOt6eZLb6BI1\n75xm+YUwb3Hv4fvY2e0z/mfoElNvmc/gZjHSz6kLvZ+nFvSui6Up3cBzH61uoO1HjBbX5dX19CHJ\nb9F90P0P4Iqq+p0kn6T7ScK/T3eV8deqavJXqx6cN8tr3Ax8uapeNvU1k6yle6O6n+6XX36mqu5N\n8ia6k/oO4B+AbVX1e0l+ie4q0pfpTgRPrKrXpRug+77qBjtfcEnuq6r95ljmCdV+ISPJnwC3VdU5\ni9E+SZIkSZKWknFOJj2YdNF4S/L1qvqOOZb5FbquoI+lG/zs9aPo8i5JkiRJ0qiNZTJJkiRJkiRJ\ne2bZ3ItonKQbEf7qaWa9rKq+stjtkSRJkiRJS4s9kyRJkiRJkjTYOP+amyRJkiRJknaTySRJkiRJ\nkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJ\nkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJ\nkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mCDkklJtiW5OcmNSTa3sgOSbExyW5INSfbvLX96ktuT\n3Jrk2F75UUm2tHnn9Mr3SfKhVn5tkmf05p3aXuO2JK+dn7AlSZIkSZK0J4b2TCpgoqqOqKqjW9la\nYGNVHQZc056TZBVwMrAKOA44L0lanfOB1VW1EliZ5LhWvhq4p5W/Bzi7resA4G3A0e1xRj9pJUmS\nJEmSpMW1O7e5Zcrz44F1bXodcGKbPgG4pKrur6ptwB3AMUkOAvarqs1tuYt6dfrruhR4WZt+BbCh\nqu6tqnuBjXQJKkmSJEmSJI3A7vRMujrJDUle38qWV9XONr0TWN6mnwZs79XdDhw8TfmOVk77eydA\nVT0AfC3Jk2dZlyRJkiRJkkZg2cDlXlRVX0ryVGBjklv7M6uqktT8N0+SJEmSJElLyaBkUlV9qf39\ncpKP0I1ftDPJgVV1V7uF7e62+A5gRa/6IXQ9ina06anlk3WeDnwxyTLgSVV1T5IdwESvzgrgE/22\nmcSSJEmSJEmaf1U1dcgjYEAyKcnjgUdX1X1JngAcC5wFXA6cSjdY9qnAZa3K5cDFSd5Nd0vaSmBz\n67309STHAJuBnwPO7dU5FbgWeBXdgN4AG4B3tEG3A7wc+K2hwS20JGdW1ZmjeO1RMu7xYtwjee2x\n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\n4JNV9VlgeVXtbIvsBJa36acB23vVtwMHT1O+o5XT/t4JUFUPAF9L8uRZ1iVJkiRJkqQRWTbXgS/u\n2QAAIABJREFUAlX1LeB5SZ4EfDzJS6bMryS1UA2UJEmSJEnS0jFnMmlSVX0tyRXAUcDOJAdW1V3t\nFra722I7gBW9aofQ9Sja0aanlk/WeTrwxSTLgCdV1T1JdgATvTorgE9M17YkZ/aebqqqTUPjkiRJ\nkiRJ0qb2mFuqZu5UlOQpwANVdW+SfYGPA2fRjWd0T1WdnWQtsH9VrW0DcF9MN2D2wcDVwLNb76Xr\ngNOAzcAVwLlVdVWSNcDhVfWGJKcAJ1bVKW0A7huAI4EAnwaObOMn9dtYVRWkR7Cu9984dgAM43h8\nj/P2Nu5xYtzjxbjHi3GPF+MeL8Y9Xmb+PjZXz6SDgHVJHkU3vtIHquqaJDcC65OsBrYBJwFU1dYk\n64GtwAPAmtqVrVoDXAjsC1xZVVe18guADyS5HbgHOKWt6ytJ3g5c35Y7a2oiSZIkSZIkSYtr1p5J\newN7JmkcjHNPlXE8vsd5exv3ODHu8WLc48W4x4txjxfjHi8zfx+b89fcJEmSJEmSpEkmkyRJkiRJ\nkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJ\nkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJ\nkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJ\nkiRJkiRJg5lMkiRJkiRJ0mAmkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mAm\nkyRJkiRJkjSYySRJkiRJkiQNZjJJkiRJkiRJg5lMkiRJkiRJ0mBzJpOSrEjyySSfTXJLktNa+QFJ\nNia5LcmGJPv36pye5PYktyY5tld+VJItbd45vfJ9knyolV+b5Bm9eae217gtyWvnL3RJkiRJkiTt\nriE9k+4H3lJVzwVeAPxykucAa4GNVXUYcE17TpJVwMnAKuA44Lwkaes6H1hdVSuBlUmOa+WrgXta\n+XuAs9u6DgDeBhzdHmf0k1aSJEmSJElaXHMmk6rqrqq6qU1/A/gccDBwPLCuLbYOOLFNnwBcUlX3\n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\nUgw23/+MlQ1pufoUS8fyOeCA9IGql1nu7cBt0nqanUT7FYFbDAg4B0PFdVjaoO3nAg+iffgtPsZO\nZdOjnvPe/zdvv1pPwstpid8ll+sOZ9Ego1V1CvDVJJcDf007/qHF8vnelp0J/ENVnQqQ5BlpY3U8\nCvhEkk9uf0hTmRT34bTBOM/udf0sbdDkS3pdX97ruhdwQZLRozCHAev7Om+hXYCNtvtu4BxgNKbE\naJ230dqy0/qxNJcx8SaYZdzLOQp4bz+efxz44wnLrGTbttVx036t5jeSXAbchfaFir7O+rRHe34G\neEUv35MljnNaF/v79s+LE+nJiRUwy/P7Etp1zgW0+N5ZfQyRJCfSehnvn+SqJL/YV/sl4E/73+QP\n2fSo97wN2q6xus7vJeOuNnbOS4CTexwvoCXBltvfy8U9sS4rYFv292/2a/nzab9ytNDXXyrun6Rd\ncz4+m35e+2fHtneLY2cFzLJdexatXTuX9utYz+3lk+Ke9NPoq31/vx54Vr8m+yPgf/byA5jcnt+D\n9vjQ6Dj/eFV9Blbddcs2xZ3k7j2GXwdek+TfM/bT88ts60lJLqUlal4/Yfl5mFnc2/g59oZ+jX8+\nLTH167MMbhmDXqfO+zhPzfWpi9UpbeC5j1cbaPtWo8f1sWo9fUjy27QL3R8An6iq1yT5HO0nCb+U\ndpfxlVU1+tWqm+ct8x4XANdW1RMXv2eSo2kfVDfQfvnl+VX1rSRH0Rr1DcC/AldW1e8n+WXaXaRr\naQ3BHarqJWkDdF9fbbDzuUtyfVXdcQvL3L76L2Qk+Uvg0qo6biXqJ0mSJEnSarKWk0k3J120tiX5\nTlXdaQvL/BqtK+htaYOfvXSILu+SJEmSJA1tTSaTJEmSJEmStG3WbXkRrSVpI8KfPmHWE6vqGytd\nH0mSJEmStLrYM0mSJEmSJElTW8u/5iZJkiRJkqStZDJJkiRJkiRJUzOZJEmSJEmSpKmZTJIkSZIk\nSdLUTCZJkiRJkiRpaiaTJEmSJEmSNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYySZIk\nSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1EwmSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskk\nSZIkSZIkTc1kkiRJkiRJkqa2zcmkJO9KsjHJ+rGyNya5OMn5ST6c5M5j845JclmSS5I8eaz8EUnW\n93nHjZXvkuT9vfyMJPfe1rpKkiRJkiRpNranZ9LfAocsKjsVeFBVPQS4FDgGIMkBwOGWk6wPAAAg\nAElEQVTAAX2dtydJX+cdwBFVtR+wX5LRNo8AruvlbwbesB11lSRJkiRJ0gxsczKpqj4PfHNR2WlV\ndVN/eSawd58+FDixqm6oqiuBy4FHJrkHcMeqOqsv927g6X36acAJffpDwBO3ta6SJEmSJEmajXmO\nmfQS4JQ+fU/g6rF5VwN7TSjf0Mvp/18FUFU3At9Osscc6ytJkiRJkqQtmEsyKcnvAD+oqvfNY/uS\nJEmSJEkaxrpZbzDJi4GnsPljaRuAfcZe703rkbSBTY/CjZeP1rkX8LUk64A7V9U3JrxfzazykiRJ\nkiRJAqCqMql8psmkPnj2bwKPq6rvj836GPC+JG+iPb62H3BWVVWS7yR5JHAW8PPAW8fWeRFwBvBs\n4DNLve9Swc1bkmOr6tgh3ntIxr22GPfaYtxri3GvLca9thj32mLca4txry1Dxr1c551tTiYlORF4\nHHDXJFcBr6X9etttgdP6j7V9saqOrKqLkpwMXATcCBxZVaNKHQkcD+wKnFJVn+rlfwP8XZLLgOuA\n525rXSVJkiRJkjQb25xMqqrnTSh+1zLL/zHwxxPK/wV48ITy/waes631kyRJkiRJ0uzN89fc1oKF\noSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaEr\nMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMEk2PW22Y0pSQ42ZJEmSJEmSdGu0XL7FnkmS\nJEmSJEmamskkSZIkSZIkTc1kkiRJkiRJkqZmMkmSJEmSJElTM5kkSZIkSZKkqZlMkiRJkiRJ0tRM\nJkmSJEmSJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJkiRJkiRJ\nUzOZJEmSJEmSpKmZTJIkSZIkSdLUTCZJkiRJkiRpauuGroC2TZIaug5DqaoMXQdJkiRJktYqk0k7\ntLWYTzKPJEmSJEnSkHzMTZIkSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1EwmSZIkSZIkaWrbnExK\n8q4kG5OsHyvbI8lpSS5NcmqS3cfmHZPksiSXJHnyWPkjkqzv844bK98lyft7+RlJ7r2tdZUkSZIk\nSdJsbE/PpL8FDllUdjRwWlXtD3ymvybJAcDhwAF9nbcnGf0s1zuAI6pqP2C/JKNtHgFc18vfDLxh\nO+oqSZIkSZKkGdjmZFJVfR745qLipwEn9OkTgKf36UOBE6vqhqq6ErgceGSSewB3rKqz+nLvHltn\nfFsfAp64rXWVJEmSJEnSbMx6zKQ9q2pjn94I7Nmn7wlcPbbc1cBeE8o39HL6/1cBVNWNwLeT7DHj\n+kqSJEmSJGkrzG0A7qoqoOa1fUmSJEmSJK28dTPe3sYkd6+qa/ojbF/v5RuAfcaW25vWI2lDn15c\nPlrnXsDXkqwD7lxV35j0pkmOHXu5UFUL2xuIJEmSJEnSWpHkYODgaZaddTLpY8CLaINlvwj46Fj5\n+5K8ifb42n7AWVVVSb6T5JHAWcDPA29dtK0zgGfTBvSeqKqOnXEckiRJkiRJa0bvmLMwep3ktUst\nm/Y02tZLciLwOOCutPGRfg/4e+BkWo+iK4HnVNW3+vKvBl4C3Ai8oqo+3csfARwP7AqcUlUv7+W7\nAH8HPAy4DnhuH7x7cT2qqrK4/NYuSa3NpwjDWtzfkiRJkiStpOXyLducTFotTCatNSaTJEmSJEma\nt+XyLXMbgFuSJEmSJEm3PiaTJEmSJEmSNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYy\nSZIkSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1EwmSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEma\nmskkSZIkSZIkTc1kkiRJkiRJkqZmMkmSJEmSJElTM5kkSZIkSZKkqZlMkiRJkiRJ0tRMJkmSJEmS\nJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmS\nJEmSpKnNJZmU5JgkX06yPsn7kuySZI8kpyW5NMmpSXZftPxlSS5J8uSx8kf0bVyW5Lh51FWSJEmS\nJEnTm3kyKcm+wEuBh1fVg4GdgOcCRwOnVdX+wGf6a5IcABwOHAAcArw9Sfrm3gEcUVX7AfslOWTW\n9ZUkSZIkSdL05tEz6TvADcBuSdYBuwFfA54GnNCXOQF4ep8+FDixqm6oqiuBy4FHJrkHcMeqOqsv\n9+6xdSRJkiRJkjSAmSeTquobwJ8D/05LIn2rqk4D9qyqjX2xjcCeffqewNVjm7ga2GtC+YZeLkmS\nJEmSpIHM4zG3+wG/BuxLSwjdIckLx5epqgJq1u8tSZIkSZKk+Vo3h23+BPCFqroOIMmHgf8PuCbJ\n3avqmv4I29f78huAfcbW35vWI2lDnx4v3zDpDZMcO/ZyoaoWZhCHJEmSJEnSmpDkYODgqZZtnYRm\n+uYPAd4LHAh8HzgeOAu4N3BdVb0hydHA7lV1dB+A+33AQbTH2E4H7l9VleRM4OV9/U8Ab62qTy16\nv6qqsMYkqbXZuSusxf0tSZIkSdJKWi7fMvOeSVV1fpJ3A+cANwFfAv43cEfg5CRHAFcCz+nLX5Tk\nZOAi4EbgyNqU4TqSlozaFThlcSJJkiRJkiRJK2vmPZNWmj2T1hp7JkmSJEmSNG/L5VtmPgC3JEmS\nJEmSbr1MJkmSJEmSJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJ\nkiRJkiRJU1s3dAUkaSlJaug6DKWqMnQdJEmSJGkSk0mSVrm1mE8yjyRJkiRp9fIxN0mSJEmSJE3N\nZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmSJEmSpKmZTJIkSZIkSdLUTCZJkiRJkiRpaiaTJEmSJEmS\nNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYySZIkSZIkSVMzmSRJkiRJkqSpmUySJEmS\nJEnS1EwmSZIkSZIkaWpzSSYl2T3JB5NcnOSiJI9MskeS05JcmuTUJLuPLX9MksuSXJLkyWPlj0iy\nvs87bh51lSRJkiRJ0vTm1TPpOOCUqnog8OPAJcDRwGlVtT/wmf6aJAcAhwMHAIcAb0+Svp13AEdU\n1X7AfkkOmVN9JUmSJEmSNIWZJ5OS3Bl4bFW9C6CqbqyqbwNPA07oi50APL1PHwqcWFU3VNWVwOXA\nI5PcA7hjVZ3Vl3v32DqSJEmSJEkawDx6Jt0HuDbJ3yb5UpJ3Jrk9sGdVbezLbAT27NP3BK4eW/9q\nYK8J5Rt6uSRJkiRJkgYyj2TSOuDhwNur6uHA/6M/0jZSVQXUHN5bkiRJkiRJc7RuDtu8Gri6qs7u\nrz8IHANck+TuVXVNf4Tt633+BmCfsfX37tvY0KfHyzdMesMkx469XKiqhe0NQpIkSZIkaa1IcjBw\n8FTLtk5CM6/APwH/s6ou7Yme3fqs66rqDUmOBnavqqP7ANzvAw6iPcZ2OnD/qqokZwIvB84CPgG8\ntao+tei9qqrCGpOk1mbnrrAW9/da5XEuSZIkScNYLt8yj55JAEcB701yW+BfgV8EdgJOTnIEcCXw\nHICquijJycBFwI3AkbUpw3UkcDywK+3X4TZLJEmSJEmSJGllzaVn0kqyZ9JaY4+NtcTjXJIkSZKG\nsVy+ZR4DcEuSJEmSJOlWymSSJEmSJEmSpmYySZIkSZIkSVMzmSRJkiRJkqSpmUySJEmSJEnS1Ewm\nSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskkSZIkSZIkTc1kkiRJkiRJkqZmMkmSJEmSJElT\nM5kkSZIkSZKkqZlMkiRJkiRJ0tRMJkmSJEmSJGlqJpMkSZIkSZI0NZNJkiRJkiRJmprJJEmSJEmS\nJE3NZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmSJEmSpKmZTJIkSZIkSdLUTCZJkiRJkiRpaiaTJEmS\nJEmSNLW5JZOS7JTk3CQf76/3SHJakkuTnJpk97Flj0lyWZJLkjx5rPwRSdb3ecfNq66SJEmSJEma\nzjx7Jr0CuAio/vpo4LSq2h/4TH9NkgOAw4EDgEOAtydJX+cdwBFVtR+wX5JD5lhfSZIkSZIkbcFc\nkklJ9gaeAvwfYJQYehpwQp8+AXh6nz4UOLGqbqiqK4HLgUcmuQdwx6o6qy/37rF1JEmSJEmSNIB5\n9Ux6M/CbwE1jZXtW1cY+vRHYs0/fE7h6bLmrgb0mlG/o5ZIkSZIkSRrIzJNJSZ4KfL2qzmVTr6TN\nVFWx6fE3SZIkSZIk7SDWzWGbjwaeluQpwO2AOyX5O2BjkrtX1TX9Ebav9+U3APuMrb83rUfShj49\nXr5h0hsmOXbs5UJVLcwiEEmSJEmSpLUgycHAwVMt2zoJza0ijwNeVVU/l+RPgeuq6g1JjgZ2r6qj\n+wDc7wMOoj3Gdjpw/6qqJGcCLwfOAj4BvLWqPrXoPaqqJvaAujVLUmuzc1dYi/t7rfI4lyRJkqRh\nLJdvmUfPpMVG3wRfD5yc5AjgSuA5AFV1UZKTab/8diNwZG3KcB0JHA/sCpyyOJEkSZIkSZKklTXX\nnkkrwZ5Ja409NtYSj3NJkiRJGsZy+ZZ5/ZqbJEmSJEmSboVMJkmSJEmSJGlqJpMkSZIkSZI0NZNJ\nkiRJkiRJmprJJEmSJEmSJE3NZJIkSZIkSZKmZjJJkiRJkiRJUzOZJEmSJEmSpKmtG7oC0tZKUkPX\nYQhVlaHrIEmSJEmSySTtgNZiLsk8kiRJkiRpdfAxN0mSJEmSJE3NnkmSpFVhrT7Cupb5+K4kSdKO\nyWSSJGkVWYv5pLB245YkSdKOyGSSJEkaxFrtjWaPLEmStKMzmSRJkgayFnNJ5pEkSdKOzwG4JUmS\nJEmSNDWTSZIkSZIkSZqaySRJkiRJkiRNzWSSJEmSJEmSpmYySZIkSZIkSVPz19wkSZKkOUiyFn+y\nEICq8qcLJelWzGSSJEnSClrLCYa1aS3u7nica00waaq1zGSSJEnSilqL37HD2o17rVqr+9u41w6T\npmuNycPNzXzMpCT7JPlcki8nuTDJy3v5HklOS3JpklOT7D62zjFJLktySZInj5U/Isn6Pu+4WddV\nkiRJkqRtU2vw31qOW+PmMQD3DcCvV9WDgEcBv5rkgcDRwGlVtT/wmf6aJAcAhwMHAIcAb08yyvi9\nAziiqvYD9ktyyBzqK0mSJEmSpCnNPJlUVddU1Xl9+rvAxcBewNOAE/piJwBP79OHAidW1Q1VdSVw\nOfDIJPcA7lhVZ/Xl3j22jiRJkiRJkgYw1zGTkuwLPAw4E9izqjb2WRuBPfv0PYEzxla7mpZ8uqFP\nj2zo5ZIkSZIkSSvGMbI2N7dkUpI7AB8CXlFV1296cg2qqtwRkrQ020hJkiRpNVmLl+dLjzk+l2RS\nkp1piaS/q6qP9uKNSe5eVdf0R9i+3ss3APuMrb43rUfShj49Xr5hifc7duzlQlUtbHcQkjQoP6wk\nSZIkraSF/m/LUjXbLyx98OwTgOuq6tfHyv+0l70hydHA7lV1dB+A+33AQbTH2E4H7t97L50JvBw4\nC/gE8Naq+tSi96u1+BN9rdfCWv2yuTbj9jhfS9bucW7ca4lxry3GvbYY99pi3GuLca8tS38PnUcy\n6THAPwEXsOmvfQwtIXQycC/gSuA5VfWtvs6rgZcAN9Iei/t0L38EcDywK3BKVb18wvuZTFpTPInX\nEo/ztca41xbjXluMe20x7rXFuNcW415bVjCZtNJMJq01nsRricf5WmPca4txry3GvbYY99pi3GuL\nca8tS38Pvc1KV0WSJEmSJEk7LpNJkiRJkiRJmprJJEmSJEmSJE1t3dAVkDSdNn6QJEmSJEnDMpkk\n7TDWYi5pzY05LkmSJEmrno+5SZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskkSZIkSZIkTe1W\nMQC3v3IlSZIkSZK0Mm4VySR/5UqSJEmSJGll+JibJEmSJEmSpmYySZIkSZIkSVMzmSRJkiRJkqSp\nmUySJEmSJEnS1EwmSZIkSZIkaWomkyRJkiRJkjQ1k0mSJEmSJEmamskkSZIkSZIkTc1kkiRJkiRJ\nkqZmMkmSJEmSJElTM5kkSZIkSZKkqZlMkiRJkiRJ0tRWfTIpySFJLklyWZLfHro+kiRJkiRJa9mq\nTiYl2Qn4C+AQ4ADgeUkeOGytxi0MXYGBLAxdgYEsDF2BgSwMXYGBLAxdgYEsDF2BgSwMXYGBLAxd\ngYEsDF2BgSwMXYGBLAxdgYEsDF2BgSwMXYGBLAxdgYEsDF2BgSwMXYGBLAxdgYEsDF2BiVZ1Mgk4\nCLi8qq6sqhuAk4BDB67TmIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCF\noSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSswkIWhKzCQhaErMJCFoSsw0WpPJu0FXDX2\n+upeJkmSJEmSpAGs9mRSDV0BSZIkSZIkbZKq1ZuvSfIo4NiqOqS/Pga4qareMLbM6g1AkiRJkiRp\nB1VVmVS+2pNJ64CvAE8EvgacBTyvqi4etGKSJEmSJElr1LqhK7CcqroxycuATwM7AX9jIkmSJEmS\nJGk4q7pnkiRJkiRJklaX1T4A9w4lyYuTvK1PH5vklVtYfovLaDhJXpfkiUPXY2hJHpLkZ4eux6zd\n2uJK8sMk5ya5IMmHk9xh0fw7Jbl61Eb1sn/q65ybZEOSj/TyJHlrksuSnJ/kYWPrXNnf49wkZ42V\nH5bky70eD1+JmPv7Lhn32Lxzk3x0rPxlSS5PclOSPcbKD07y7bF1XjM275ge3/ok70uySy9/Y5KL\n+9/pw0nuvKPFPTb/wCQ3JnnmWNnuST7YY7yoj2U4vs4rl9rePGxj3PdJcmY/nk9KsnMvv0uSj/R9\nd2aSB42tM/E47/OO6n+PC5O8gRUwy/O7zzu4l1+YZGGs/F1JNiZZv2j7ByU5q69zdpID5xju+PsO\n3a6tuvN7mbifkuS8vt7nk9xvbN5S+3vJ47zPXzXnd58/Ke4nJPmXtLb5+CQ7jc27RdxJ9knyubT2\n/MIkLx9b/qSxY+eKJOeuQNizbtcO7cfruf3v8oQtxT22zVW/v3v5HyX5Stpn0lG9bGJ7nuR2/fV5\n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\n50eP1kvyYlpX8hfccqtzM7O4aQnQk/ox8izg7WmPeV5Fu1t9dl/ug7SLt/vRLnfJ+1UAACAASURB\nVFjO7+vsDfxLtvDI94xsbdzX0R5nGl3vjB/L11fVS/q5+gu0sSe+2uctdZxfTb/h0P8uN/VjZN5m\neX5fBZxaVd+rquuAf6L1pF3OQVU1GsD7g6zceT94u7bKzu+l4r4rcNuxc/VkNrVRS+7vJeK+L6vv\n/F5yf1fVGVX1U9V6FX+eNhYQLBN32qPuHwLe0xMvN0u7GfoMNr+JPG8za9fG9YToulEbtUTcq7E9\nX+78vrkNpn2R/nFYvj0fqfaY9idon+lDmlncy3g07UbqFbSb4E9I8u4+b2OSuwMkuQftxvpKmGXc\nW/05VlVfr4726N/Qn2Mrdp06T2s5mXSvbPpVmucD/9ynr+tZ+8XjAI1/mbwTrQsZtEF8JwmQaj1T\nrkjybLh5LKMtNQDbY5T0Kpa+szD68n0Tt/wivlzC4wO0LsTPAU5aPHOJL9c3svlxtiubvsQfDxzZ\nk3KvY/mk3Cx8Bnh2vwM3+jWDe/f6jfb382kXIyNFuzC5b18W4HA2xfBpxroQZ9Ovw0z62w/9nO6W\nLBXL9cAdp1ju8/SL7ST70xKTX2F4c4kryX2r6oqqehuth9+DmXyMTUzQzktVfY8Wxx8lSVW9sKru\nXVX3oT369+6qevXYKs8GPt4TyiMfA34BoLeT36qqjUl2S3LHXn57Wm+uST3PVvxYXxx32q+QjX7J\n4q60HmZfnrDq+N39PUd3xdK6yadfpHwFeFTa2HoBfhq4qC93CK0b+aFTJNBnbhZxV9V9q+o+/Rj5\nIPArVfWxat3gr+rHPbS4v1xVF1bVnmPrXE0b1HGlLkinjfuiftH4OTa18S+ij6GT5M7pj+KmPeLz\nj9Xv1C9znH+U9hjsqD24bT9GVsSMzu+/Bx6T9ujHbrTBqLf02MflSR7Xp58ArOg4I0O1a6vt/F4m\n7v+kjZWxX1/1SWzapxP391Jxr8bze7n9PfZ5uwtt2InRXf+l4g6tp91FVfWWCW//08DFo0TbSppR\nu3a/sc+xh/ftXrdU3FW1fkfa34y1wcDj6NeZy7Tnd01/OiNtOI0n0XotLTb4dcu2xD1ms/pX1aur\nap++recCn+1JNmht4Yv69M3HzkqZUdxb/TnWE2cjz2D+T05sZqjr1KW2NStrOZn0FeBX0x4/ujOt\n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\n", + "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\n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\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": {}, @@ -545,6 +749,7 @@ " 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", @@ -553,6 +758,299 @@ "\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": "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\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": {},