{ "cells": [ { "cell_type": "markdown", "metadata": { "exercise": "task", "tags": [ "task" ] }, "source": [ "# Data Analysis and Plotting in Python with Pandas\n", "\n", "_Andreas Herten, J\u00fclich Supercomputing Centre, Forschungszentrum J\u00fclich, 4 September 2023_" ] }, { "cell_type": "markdown", "metadata": { "exercise": "onlysolution", "slideshow": { "slide_type": "skip" } }, "source": [ "**Version: Solutions**" ] }, { "cell_type": "markdown", "metadata": { "exercise": "task", "slideshow": { "slide_type": "fragment" } }, "source": [ "## Task Outline\n", "\n", "* [Task 1](#task1)\n", "* [Task 2](#task2)\n", "* [Task 3](#task3)\n", "* [Task 4](#task4)\n", "* [Task 5](#task5)\n", "* [Task 6](#task6)\n", "* [Task 7](#task7)\n", "* [Task 7B](#task7b)\n", "* [Task 8](#task8)\n", "* [Task 8B](#task8b)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "exercise": "task", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": { "exercise": "task", "slideshow": { "slide_type": "slide" } }, "source": [ "## Task 1\n", "\n", "TASK\n", "\n", "* Create data frame with\n", " - 6 names of dinosaurs, \n", " - their favourite prime number, \n", " - and their favorite color.\n", "* Play around with the frame\n", "* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "markdown", "metadata": { "exercise": "nopresentation", "slideshow": { "slide_type": "skip" } }, "source": [ "Jupyter Notebook 101:\n", "\n", "* Execute cell: `shift+enter`\n", "* New cell in front of current cell: `a`\n", "* New cell after current cell: `b`" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "exercise": "task", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "happy_dinos = {\n", " \"Dinosaur Name\": [],\n", " \"Favourite Prime\": [],\n", " \"Favourite Color\": []\n", "}\n", "#df_dinos = " ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "exercise": "solution", "slideshow": { "slide_type": "fragment" } }, "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", "
Dinosaur NameAegyptosaurusTyrannosaurusPanoplosaurusIsisaurusTriceratopsVelociraptor
Favourite Prime4815162342
Favourite Colorbluewhitebluepurplevioletgray
\n", "
" ], "text/plain": [ "Dinosaur Name Aegyptosaurus Tyrannosaurus Panoplosaurus Isisaurus \\\n", "Favourite Prime 4 8 15 16 \n", "Favourite Color blue white blue purple \n", "\n", "Dinosaur Name Triceratops Velociraptor \n", "Favourite Prime 23 42 \n", "Favourite Color violet gray " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "happy_dinos = {\n", " \"Dinosaur Name\": [\"Aegyptosaurus\", \"Tyrannosaurus\", \"Panoplosaurus\", \"Isisaurus\", \"Triceratops\", \"Velociraptor\"],\n", " \"Favourite Prime\": [\"4\", \"8\", \"15\", \"16\", \"23\", \"42\"],\n", " \"Favourite Color\": [\"blue\", \"white\", \"blue\", \"purple\", \"violet\", \"gray\"]\n", "}\n", "df_dinos = pd.DataFrame(happy_dinos).set_index(\"Dinosaur Name\")\n", "df_dinos.T" ] }, { "cell_type": "markdown", "metadata": { "exercise": "task", "slideshow": { "slide_type": "slide" } }, "source": [ "## Task 2\n", "\n", "TASK\n", "\n", "* Read in `data-nest.csv` to `DataFrame`; call it `df` \n", " *(Data was produced with [JUBE](http://www.fz-juelich.de/ias/jsc/EN/Expertise/Support/Software/JUBE/_node.html))*\n", "* Get to know it and play a bit with it\n", "* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "exercise": "task" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "id,Nodes,Tasks/Node,Threads/Task,Runtime Program / s,Scale,Plastic,Avg. Neuron Build Time / s,Min. Edge Build Time / s,Max. Edge Build Time / s,Min. Init. Time / s,Max. Init. Time / s,Presim. Time / s,Sim. Time / s,Virt. Memory (Sum) / kB,Local Spike Counter (Sum),Average Rate (Sum),Number of Neurons,Number of Connections,Min. Delay,Max. Delay\n", "5,1,2,4,420.42,10,true,0.29,88.12,88.18,1.14,1.20,17.26,311.52,46560664.00,825499,7.48,112500,1265738500,1.5,1.5\n", "5,1,4,4,200.84,10,true,0.15,46.03,46.34,0.70,1.01,7.87,142.97,46903088.00,802865,7.03,112500,1265738500,1.5,1.5\n", "5,1,2,8,202.15,10,true,0.28,47.98,48.48,0.70,1.20,7.95,142.81,47699384.00,802865,7.03,112500,1265738500,1.5,1.5\n", "5,1,4,8,89.57,10,true,0.15,20.41,23.21,0.23,3.04,3.19,60.31,46813040.00,821491,7.23,112500,1265738500,1.5,1.5\n", "5,2,2,4,164.16,10,true,0.20,40.03,41.09,0.52,1.58,6.08,114.88,46937216.00,802865,7.03,112500,1265738500,1.5,1.5\n", "5,2,4,4,77.68,10,true,0.13,20.93,21.22,0.16,0.46,3.12,52.05,47362064.00,821491,7.23,112500,1265738500,1.5,1.5\n", "5,2,2,8,79.60,10,true,0.20,21.63,21.91,0.19,0.47,2.98,53.12,46847168.00,821491,7.23,112500,1265738500,1.5,1.5\n", "5,2,4,8,37.20,10,true,0.13,10.08,11.60,0.10,1.63,1.24,23.29,47065232.00,818198,7.33,112500,1265738500,1.5,1.5\n", "5,3,2,4,96.51,10,true,0.15,26.54,27.41,0.36,1.22,3.33,64.28,52256880.00,813743,7.27,112500,1265738500,1.5,1.5\n" ] } ], "source": [ "!head data-nest.csv" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "exercise": "solution", "slideshow": { "slide_type": "fragment" } }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idNodesTasks/NodeThreads/TaskRuntime Program / sScalePlasticAvg. Neuron Build Time / sMin. Edge Build Time / sMax. Edge Build Time / s...Max. Init. Time / sPresim. Time / sSim. Time / sVirt. Memory (Sum) / kBLocal Spike Counter (Sum)Average Rate (Sum)Number of NeuronsNumber of ConnectionsMin. DelayMax. Delay
05124420.4210True0.2988.1288.18...1.2017.26311.5246560664.08254997.4811250012657385001.51.5
15144200.8410True0.1546.0346.34...1.017.87142.9746903088.08028657.0311250012657385001.51.5
25128202.1510True0.2847.9848.48...1.207.95142.8147699384.08028657.0311250012657385001.51.5
3514889.5710True0.1520.4123.21...3.043.1960.3146813040.08214917.2311250012657385001.51.5
45224164.1610True0.2040.0341.09...1.586.08114.8846937216.08028657.0311250012657385001.51.5
\n", "

5 rows \u00d7 21 columns

\n", "
" ], "text/plain": [ " id Nodes Tasks/Node Threads/Task Runtime Program / s Scale Plastic \\\n", "0 5 1 2 4 420.42 10 True \n", "1 5 1 4 4 200.84 10 True \n", "2 5 1 2 8 202.15 10 True \n", "3 5 1 4 8 89.57 10 True \n", "4 5 2 2 4 164.16 10 True \n", "\n", " Avg. Neuron Build Time / s Min. Edge Build Time / s \\\n", "0 0.29 88.12 \n", "1 0.15 46.03 \n", "2 0.28 47.98 \n", "3 0.15 20.41 \n", "4 0.20 40.03 \n", "\n", " Max. Edge Build Time / s ... Max. Init. Time / s Presim. Time / s \\\n", "0 88.18 ... 1.20 17.26 \n", "1 46.34 ... 1.01 7.87 \n", "2 48.48 ... 1.20 7.95 \n", "3 23.21 ... 3.04 3.19 \n", "4 41.09 ... 1.58 6.08 \n", "\n", " Sim. Time / s Virt. Memory (Sum) / kB Local Spike Counter (Sum) \\\n", "0 311.52 46560664.0 825499 \n", "1 142.97 46903088.0 802865 \n", "2 142.81 47699384.0 802865 \n", "3 60.31 46813040.0 821491 \n", "4 114.88 46937216.0 802865 \n", "\n", " Average Rate (Sum) Number of Neurons Number of Connections Min. Delay \\\n", "0 7.48 112500 1265738500 1.5 \n", "1 7.03 112500 1265738500 1.5 \n", "2 7.03 112500 1265738500 1.5 \n", "3 7.23 112500 1265738500 1.5 \n", "4 7.03 112500 1265738500 1.5 \n", "\n", " Max. Delay \n", "0 1.5 \n", "1 1.5 \n", "2 1.5 \n", "3 1.5 \n", "4 1.5 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(\"data-nest.csv\")\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "## Task 3\n", "\n", "TASK\n", "\n", "* Add a column to the Nest data frame form Task 2 called `Threads` which is the total number of threads across all nodes (i.e. the product of threads per task and tasks per node and nodes)\n", "* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "fragment" }, "tags": [] }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idNodesTasks/NodeThreads/TaskRuntime Program / sScalePlasticAvg. Neuron Build Time / sMin. Edge Build Time / sMax. Edge Build Time / s...Presim. Time / sSim. Time / sVirt. Memory (Sum) / kBLocal Spike Counter (Sum)Average Rate (Sum)Number of NeuronsNumber of ConnectionsMin. DelayMax. DelayThreads
05124420.4210True0.2988.1288.18...17.26311.5246560664.08254997.4811250012657385001.51.58
15144200.8410True0.1546.0346.34...7.87142.9746903088.08028657.0311250012657385001.51.516
25128202.1510True0.2847.9848.48...7.95142.8147699384.08028657.0311250012657385001.51.516
3514889.5710True0.1520.4123.21...3.1960.3146813040.08214917.2311250012657385001.51.532
45224164.1610True0.2040.0341.09...6.08114.8846937216.08028657.0311250012657385001.51.516
\n", "

5 rows \u00d7 22 columns

\n", "
" ], "text/plain": [ " id Nodes Tasks/Node Threads/Task Runtime Program / s Scale Plastic \\\n", "0 5 1 2 4 420.42 10 True \n", "1 5 1 4 4 200.84 10 True \n", "2 5 1 2 8 202.15 10 True \n", "3 5 1 4 8 89.57 10 True \n", "4 5 2 2 4 164.16 10 True \n", "\n", " Avg. Neuron Build Time / s Min. Edge Build Time / s \\\n", "0 0.29 88.12 \n", "1 0.15 46.03 \n", "2 0.28 47.98 \n", "3 0.15 20.41 \n", "4 0.20 40.03 \n", "\n", " Max. Edge Build Time / s ... Presim. Time / s Sim. Time / s \\\n", "0 88.18 ... 17.26 311.52 \n", "1 46.34 ... 7.87 142.97 \n", "2 48.48 ... 7.95 142.81 \n", "3 23.21 ... 3.19 60.31 \n", "4 41.09 ... 6.08 114.88 \n", "\n", " Virt. Memory (Sum) / kB Local Spike Counter (Sum) Average Rate (Sum) \\\n", "0 46560664.0 825499 7.48 \n", "1 46903088.0 802865 7.03 \n", "2 47699384.0 802865 7.03 \n", "3 46813040.0 821491 7.23 \n", "4 46937216.0 802865 7.03 \n", "\n", " Number of Neurons Number of Connections Min. Delay Max. Delay Threads \n", "0 112500 1265738500 1.5 1.5 8 \n", "1 112500 1265738500 1.5 1.5 16 \n", "2 112500 1265738500 1.5 1.5 16 \n", "3 112500 1265738500 1.5 1.5 32 \n", "4 112500 1265738500 1.5 1.5 16 \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"Threads\"] = df[\"Nodes\"] * df[\"Tasks/Node\"] * df[\"Threads/Task\"]\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "exercise": "solution" }, "outputs": [ { "data": { "text/plain": [ "Index(['id', 'Nodes', 'Tasks/Node', 'Threads/Task', 'Runtime Program / s',\n", " 'Scale', 'Plastic', 'Avg. Neuron Build Time / s',\n", " 'Min. Edge Build Time / s', 'Max. Edge Build Time / s',\n", " 'Min. Init. Time / s', 'Max. Init. Time / s', 'Presim. Time / s',\n", " 'Sim. Time / s', 'Virt. Memory (Sum) / kB', 'Local Spike Counter (Sum)',\n", " 'Average Rate (Sum)', 'Number of Neurons', 'Number of Connections',\n", " 'Min. Delay', 'Max. Delay', 'Threads'],\n", " dtype='object')" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "exercise": "task", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Task 4\n", "\n", "TASK\n", "\n", "\n", "* Sort the Nest data frame by threads\n", "* Plot `\"Presim. Time / s\"` and `\"Sim. Time / s\"` of our data frame `df` as a function of threads\n", "* Use a dashed, red line for `\"Presim. Time / s\"`, a blue line for `\"Sim. Time / s\"` (see [API description](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot))\n", "* Don't forget to label your axes and to add a legend _(1st rule of plotting)_\n", "* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "df.sort_values([\"Threads\", \"Nodes\", \"Tasks/Node\", \"Threads/Task\"], inplace=True) # multi-level sort" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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tgw5OTl48803ERUVBUdHRzk3r8lUneJdqwVsLKKfkoiIiIio5WrQV/Jdu3bh0KFD+utffPEFevfujaeffhq///57ndezatUqFBQUYMiQIfD29ta39evX62NWrFiB0aNHY8KECRg0aBDUajU2btyoX25ra4vt27fD1tYWYWFheOaZZzB16lS88847Ddk0q9S1K+DoCBQVAZcuyZ0NERERERE16DxawcHB+Nvf/oaRI0fi9OnT6N+/P+bPn4/9+/eje/fuWL16dWPk2mis+TxaOvffDyQnA5s3A2PHyp0NEREREZF1kvU8WhkZGfrjn3744QeMHj0aH3zwAb744gvs3LmzwclQw+mGD6akyJsHERERERE1sNBycHBAcXExAGDv3r0YPnw4AOlEw9Z88l9rxgkxiIiIiIgsR4Mmw3jooYcwf/58DBw4EMePH9cfU3XhwgWj6dmp6bDQIiIiIiKyHA3q0fr73/8OOzs7bNiwAatWrUL79u0BADt37kRkZKRZE6S60RVaFy4AJSXy5kJERERE1NI1aDKM5qY5TIYhBNCuHXDjBpCUBPTpI3dGRERERETWR9bJMMjyKBQcPkhEREREZClYaDUjLLSIiIiIiCwDC61mhIUWEREREZFlYKHVjPBcWkRERERElqFehZafnx9mz56NPXv2oKKiorFyoga67z7pb04OcP26vLkQEREREbVk9Sq0vvnmGzg6OiIqKgpt27bFpEmTsHbtWuTn5zdSelQfSiXQqZN0mcMHiYiIiIjkU69Ca/Dgwfjkk09w8eJFHD58GL1798bnn38OtVqNoUOH4tNPP8Wvv/7aWLlSHXD4IBERERGR/Bp8jNZ9992H6OhoHD16FJcuXcJTTz2FuLg49OzZEz179sSPP/5ozjypjjghBhERERGR/OzMsRK1Wo2ZM2di5syZKC4uxu7du+Ho6GiOVVM9sdAiIiIiIpKfWQqtqpydnfH444+be7VUR7pC68wZQKsFbDivJBERERFRk+PX8GamSxegVSuguBjg4XJERERERPJgodXM2NkBQUHSZQ4fJCIiIiKSBwutZojHaRERERERyeueCq20tDTs3r0bt2/fBgAIIcySFN0bFlpERERERPJqUKF148YNhIeHIzAwECNHjkR2djYAYMaMGXj55ZfNmiDVH8+lRUREREQkrwYVWvPmzYOdnR0yMzPh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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(10, 3))\n", "ax.plot(df[\"Threads\"], df[\"Presim. Time / s\"], linestyle=\"dashed\", color=\"red\", label=\"Presim. Time / s\")\n", "ax.plot(df[\"Threads\"], df[\"Sim. Time / s\"], \"-b\", label=\"Sim. Time / s\")\n", "ax.set_xlabel(\"Threads\")\n", "ax.set_ylabel(\"Time / s\")\n", "ax.legend(loc='best');" ] }, { "cell_type": "markdown", "metadata": { "exercise": "task", "slideshow": { "slide_type": "slide" } }, "source": [ "## Task 5\n", "\n", "TASK\n", "\n", "Use the Nest data frame `df` to:\n", "\n", "1. Make threads index of the data frame (`.set_index()`)\n", "2. Plot `\"Presim. Time / s\"` and `\"Sim. Time / s`\" individually\n", "3. Plot them onto one common canvas!\n", "4. Make them have the same line colors and styles as before\n", "5. Add a legend, add missing axes labels\n", "6. Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "exercise": "solution", "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "df.set_index(\"Threads\", inplace=True)" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "exercise": "solution" }, "outputs": [ { "data": { "image/png": "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jBkz1LVrV3Xs2FE333yzDh48aGHFOBfr1q1Tbm6uUlJSZLPZtGzZMo/thmFo3rx5Sk5OVlRUlLKzs7Vr1y6PNl9//bVuv/12RUdHKzY2Vnfffbeqqqqa8V2gKc52zu+4447TPvtjx471aMM5b3ny8vJ08cUXq1OnTkpISND48eNVVFTk0aYxv9fLysp0/fXXq3379kpISNBDDz2kU6dONedbQRM05rxfddVVp33m77vvPo82nPeWY9GiRRoyZIjzRrNZWVn68MMPndub83PepsPSkiVLNHv2bD322GPatm2bMjIylJOTo0OHDlldGvxo4MCBOnDggHNZv369c9sPfvADvffee3rzzTe1du1a7d+/XzfddJOF1eJcVFdXKyMjQwsXLvS6fcGCBfrNb36jxYsXa/PmzerQoYNycnJ04sQJZ5vbb79dn332mVasWKH3339f69at07333ttcbwFNdLZzLkljx471+Oz/+c9/9tjOOW951q5dqxkzZmjTpk1asWKFTp48qWuvvVbV1dXONmf7vV5XV6frr79etbW12rBhg15++WXl5+dr3rx5VrwlNEJjzrskTZs2zeMzv2DBAuc2znvL0q1bNz355JPaunWrCgoKdPXVV+vGG2/UZ599JqmZP+dGGzZy5EhjxowZzud1dXVGSkqKkZeXZ2FV8KfHHnvMyMjI8LqtoqLCaNeunfHmm286X/viiy8MScbGjRubqUL4myRj6dKlzuf19fVGUlKS8dRTTzlfq6ioMCIiIow///nPhmEYxueff25IMv7xj38423z44YeGzWYz/vOf/zRb7Tg3Dc+5YRjG1KlTjRtvvNHnPpzz1uHQoUOGJGPt2rWGYTTu9/oHH3xghISEGOXl5c42ixYtMqKjo42amprmfQM4Jw3Pu2EYxpVXXmk88MADPvfhvLd8nTt3Nv74xz82++e8zfYs1dbWauvWrcrOzna+FhISouzsbG3cuNHCyuBvu3btUkpKitLS0nT77berrKxMkrR161adPHnS42cgPT1d3bt352egFSktLVV5ebnHeY6JiVFmZqbzPG/cuFGxsbEaMWKEs012drZCQkK0efPmZq8Z/rFmzRolJCSoX79+mj59uo4cOeLcxjlvHSorKyVJXbp0kdS43+sbN27U4MGDlZiY6GyTk5Mju93u/F9rBLeG593hT3/6k+Li4jRo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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df[\"Presim. Time / s\"].plot(figsize=(10, 3), style=\"--\", color=\"red\");" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0cAAAEmCAYAAACpjetVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxhUlEQVR4nO3de3xU9Z3/8ffkNgbCJARIJikBg1xCJKByiVMtUsmSIFIU7E8UFZWF1YZuFaWariLV7caiq1YXobeHsSuoxYotVLDhFlYNIFmj3IyAocGGSRRMhkRyP78/ZjMwECCXSc5M8no+HueRM+d858zn5Mukvvs953sshmEYAgAAAIAeLsjsAgAAAADAHxCOAAAAAECEIwAAAACQRDgCAAAAAEmEIwAAAACQRDgCAAAAAEmEIwAAAACQRDgCAAAAAElSiNkFtEdTU5NKS0vVp08fWSwWs8sBAAAAYBLDMHTy5EnFx8crKKhjYz8BGY5KS0uVkJBgdhkAAAAA/MTRo0c1cODADh0jIMNRnz59JLl/ATabzeRqAAAAAJjF5XIpISHBkxE6IiDDUfOldDabjXAEAAAAwCe32zAhAwAAAACIcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcAQAAAAAkghHHfajH0mJidK2bWZXAgAAAKAjCEcdVFoqHTkiffqp2ZUAAAAA6AjCUQelpLh/7tljbh0AAAAAOoZw1EHN4WjvXnPrAAAAANAxhKMOGjXK/XPvXqmpydxaAAAAALRfm8LRihUrNHr0aNlsNtlsNjkcDm3YsMGzv6amRpmZmerXr58iIiI0a9YslZWVeR2jpKRE06ZNU69evRQTE6PFixeroaHBN2djgmHDpLAwqapKKikxuxoAAAAA7dWmcDRw4EA9/fTTKigo0O7du3X99ddrxowZ2rdvnyTpwQcf1Lp167RmzRrl5eWptLRUM2fO9Ly/sbFR06ZNU11dnT788EO9+uqrysnJ0ZIlS3x7Vl0oNFRKSnKvc98RAAAAELgshmEYHTlAdHS0nnnmGd1yyy0aMGCAVq9erVtuuUWS9Nlnn2nkyJHKz8/X1VdfrQ0bNujGG29UaWmpYmNjJUkrV67UI488oq+++kphYWGt+kyXy6XIyEhVVlbKZrN1pHyfuOMOadUq6Re/kH72M7OrAQAAAHoOX2aDdt9z1NjYqDfeeEPV1dVyOBwqKChQfX290tLSPG2SkpI0aNAg5efnS5Ly8/OVkpLiCUaSlJ6eLpfL5Rl9akltba1cLpfX4k+YlAEAAAAIfG0OR3v27FFERISsVqvuu+8+rV27VsnJyXI6nQoLC1NUVJRX+9jYWDmdTkmS0+n0CkbN+5v3nU92drYiIyM9S0JCQlvL7lTNkzJwWR0AAAAQuNocjkaMGKHCwkLt3LlT999/v+bOnav9+/d3Rm0eWVlZqqys9CxHjx7t1M9rq+aRo88+k+rqzK0FAAAAQPuEtPUNYWFhGjp0qCRp7Nix+uijj/SrX/1Kt956q+rq6lRRUeE1elRWVia73S5Jstvt2rVrl9fxmmeza27TEqvVKqvV2tZSu0xCgmSzSS6X9Pnnp0eSAAAAAASODj/nqKmpSbW1tRo7dqxCQ0O1efNmz76ioiKVlJTI4XBIkhwOh/bs2aPy8nJPm9zcXNlsNiUnJ3e0FNNYLFxaBwAAAAS6No0cZWVlaerUqRo0aJBOnjyp1atXa9u2bXrvvfcUGRmpefPmadGiRYqOjpbNZtOPf/xjORwOXX311ZKkKVOmKDk5WXfeeaeWLVsmp9Opxx57TJmZmX49MtQaKSnShx8yKQMAAAAQqNoUjsrLy3XXXXfp2LFjioyM1OjRo/Xee+/pn/7pnyRJzz//vIKCgjRr1izV1tYqPT1dL7/8suf9wcHBWr9+ve6//345HA717t1bc+fO1ZNPPunbszIBI0cAAABAYOvwc47M4G/POZKkvDxp0iTp0kul4mKzqwEAAAB6Br94zhG8NY8cHTkinTxpaikAAAAA2oFw5CP9+klxce71CzzPFgAAAICfIhz5UPPzjpiUAQAAAAg8hCMfYlIGAAAAIHARjnyoeeSIcAQAAAAEHsKRD3FZHQAAABC4CEc+NHKkZLFIX30llZWZXQ0AAACAtiAc+VCvXtLQoe51Lq0DAAAAAgvhyMe4tA4AAAAITIQjH2PGOgAAACAwEY58jJEjAAAAIDARjnyseeRo3z6pqcncWgAAAAC0HuHIx4YOlaxWqbpaKi42uxoAAAAArUU48rGQECk52b3OpXUAAABA4CAcdQImZQAAAAACD+GoEzApAwAAABB4CEedgJEjAAAAIPAQjjpB88hRUZFUW2tuLQAAAABah3DUCb7zHSkqSmpsdAckAAAAAP6PcNQJLBYurQMAAAACDeGokzRfWkc4AgAAAAID4aiTMGMdAAAAEFgIR52Ey+oAAACAwNKmcJSdna3x48erT58+iomJ0U033aSis2YcmDRpkiwWi9dy3333ebUpKSnRtGnT1KtXL8XExGjx4sVqaGjo+Nn4keZwVFIiuVzm1gIAAADg4toUjvLy8pSZmakdO3YoNzdX9fX1mjJliqqrq73azZ8/X8eOHfMsy5Yt8+xrbGzUtGnTVFdXpw8//FCvvvqqcnJytGTJEt+ckZ/o29c9a53EpXUAAABAIAhpS+ONGzd6vc7JyVFMTIwKCgo0ceJEz/ZevXrJbre3eIy//e1v2r9/vzZt2qTY2FhdccUVeuqpp/TII49o6dKlCgsLa8dp+KeUFOkf/3BfWvfd75pdDQAAAIAL6dA9R5WVlZKk6Ohor+2rVq1S//79NWrUKGVlZenbb7/17MvPz1dKSopiY2M929LT0+VyubRv374WP6e2tlYul8trCQRMygAAAAAEjjaNHJ2pqalJDzzwgK655hqNar7BRtLtt9+uwYMHKz4+Xp9++qkeeeQRFRUV6e2335YkOZ1Or2AkyfPa6XS2+FnZ2dn6+c9/3t5STcOkDAAAAEDgaHc4yszM1N69e/X+++97bV+wYIFnPSUlRXFxcZo8ebIOHz6syy67rF2flZWVpUWLFnleu1wuJSQktK/wLnTmyJFhuB8OCwAAAMA/teuyuoULF2r9+vXaunWrBg4ceMG2qampkqRDhw5Jkux2u8rKyrzaNL8+331KVqtVNpvNawkESUlSUJB0/Lh0nkExAAAAAH6iTeHIMAwtXLhQa9eu1ZYtW5SYmHjR9xQWFkqS4uLiJEkOh0N79uxReXm5p01ubq5sNpuSk5PbUo7fCw+Xhg1zr3NpHQAAAODf2hSOMjMz9dprr2n16tXq06ePnE6nnE6nTp06JUk6fPiwnnrqKRUUFOjIkSP6y1/+orvuuksTJ07U6NGjJUlTpkxRcnKy7rzzTn3yySd677339NhjjykzM1NWq9X3Z2gyJmUAAAAAAkObwtGKFStUWVmpSZMmKS4uzrO8+eabkqSwsDBt2rRJU6ZMUVJSkh566CHNmjVL69at8xwjODhY69evV3BwsBwOh+644w7dddddevLJJ317Zn6CSRkAAACAwNCmCRkMw7jg/oSEBOXl5V30OIMHD9a7777blo8OWM0jR4QjAAAAwL916DlHuLjmcLR/v9TYaG4tAAAAAM6PcNTJhgxxT8xw6pT0xRdmVwMAAADgfAhHnSw4WGqehI9JGQAAAAD/RTjqAkzKAAAAAPg/wlEXYFIGAAAAwP8RjroAzzoCAAAA/B/hqAs0X1Z38KBUU2NuLQAAAABaRjjqAnFxUnS0eyrvzz4zuxoAAAAALSEcdQGLhfuOAAAAAH9HOOoizFgHAAAA+DfCURdhUgYAAADAvxGOuggjRwAAAIB/Ixx1keZw9OWX0jffmFsLAAAAgHMRjrpIZKQ0aJB7fd8+c2sBAAAAcC7CURfi0joAAADAfxGOuhCTMgAAAAD+i3DUhRg5AgAAAPwX4agLnfkgWMMwtxYAAAAA3ghHXSgpSQoOlioqpNJSs6sBAAAAcCbCUReyWqXhw93rXFoHAAAA+BfCURdjUgYAAADAPxGOutiZ9x0BAAAA8B+Eoy7GjHUAAACAf2pTOMrOztb48ePVp08fxcTE6KabblJRUZFXm5qaGmVmZqpfv36KiIjQrFmzVFZW5tWmpKRE06ZNU69evRQTE6PFixeroaGh42cTAJpHjvbvlxobza0FAAAAwGltCkd5eXnKzMzUjh07lJubq/r6ek2ZMkXV1dWeNg8++KDWrVunNWvWKC8vT6WlpZo5c6Znf2Njo6ZNm6a6ujp9+OGHevXVV5WTk6MlS5b47qz8WGKi1KuXVFsrHTpkdjUAAAAAmlkMo/1P3Pnqq68UExOjvLw8TZw4UZWVlRowYIBWr16tW265RZL02WefaeTIkcrPz9fVV1+tDRs26MYbb1RpaaliY2MlSStXrtQjjzyir776SmFhYRf9XJfLpcjISFVWVspms7W3fNNMmCB99JG0Zo30f78mAAAAAO3gy2zQoXuOKisrJUnR0dGSpIKCAtXX1ystLc3TJikpSYMGDVJ+fr4kKT8/XykpKZ5gJEnp6elyuVzat29fR8oJGMxYBwAAAPifkPa+sampSQ888ICuueYajfq/WQacTqfCwsIUFRXl1TY2NlZOp9PT5sxg1Ly/eV9LamtrVVtb63ntcrnaW7ZfYFIGAAAAwP+0e+QoMzNTe/fu1RtvvOHLelqUnZ2tyMhIz5KQkNDpn9mZGDkCAAAA/E+7wtHChQu1fv16bd26VQMHDvRst9vtqqurU0VFhVf7srIy2e12T5uzZ69rft3c5mxZWVmqrKz0LEePHm1P2X6jeeTo0CHp1ClzawEAAADg1qZwZBiGFi5cqLVr12rLli1KTEz02j927FiFhoZq8+bNnm1FRUUqKSmRw+GQJDkcDu3Zs0fl5eWeNrm5ubLZbEpOTm7xc61Wq2w2m9cSyGJjpf79paYm95TeAAAAAMzXpnCUmZmp1157TatXr1afPn3kdDrldDp16v+GPyIjIzVv3jwtWrRIW7duVUFBge655x45HA5dffXVkqQpU6YoOTlZd955pz755BO99957euyxx5SZmSmr1er7M/RDFguX1gEAAAD+pk3haMWKFaqsrNSkSZMUFxfnWd58801Pm+eff1433nijZs2apYkTJ8put+vtt9/27A8ODtb69esVHBwsh8OhO+64Q3fddZeefPJJ351VAGBSBgAAAMC/dOg5R2YJ9OccSdJvfystWCClp0sbN5pdDQAAABCY/OY5R2i/5svqGDkCAAAA/APhyCSXX+7+WVoqnThhbi0AAAAACEem6dNHuvRS9zqTMgAAAADmIxyZiEkZAAAAAP9BODIR9x0BAAAA/oNwZCKedQQAAAD4D8KRiZovq9u7Vwq8CdUBAACA7oVwZKIRI6SQEKmyUvryS7OrAQAAAHo2wpGJwsLcAUniviMAAADAbIQjkzEpAwAAAOAfCEcmY1IGAAAAwD8QjkzGs44AAAAA/0A4MlnzyNGBA1JDg7m1AAAAAD0Z4chkgwdLERFSXZ108KDZ1QAAAAA9F+HIZEFB0uWXu9e5tA4AAAAwD+HIDzApAwAAAGA+wpEfYFIGAAAAwHyEIz/AyBEAAABgPsKRH2gOR4cPS9XV5tYCAAAA9FSEIz8wYIAUEyMZhrR/v9nVAAAAAD0T4chPcGkdAAAAYC7CkZ9gUgYAAADAXIQjP9E8ckQ4AgAAAMxBOPITXFYHAAAAmKvN4Wj79u2aPn264uPjZbFY9M4773jtv/vuu2WxWLyWjIwMrzYnTpzQnDlzZLPZFBUVpXnz5qmqqqpDJxLokpPdP51O6euvza0FAAAA6InaHI6qq6s1ZswYLV++/LxtMjIydOzYMc/y+uuve+2fM2eO9u3bp9zcXK1fv17bt2/XggUL2l59NxIRIQ0Z4l5n9AgAAADoeiFtfcPUqVM1derUC7axWq2y2+0t7jtw4IA2btyojz76SOPGjZMkvfTSS7rhhhv07LPPKj4+vq0ldRspKdIXX7jvO5o0yexqAAAAgJ6lU+452rZtm2JiYjRixAjdf//9On78uGdffn6+oqKiPMFIktLS0hQUFKSdO3e2eLza2lq5XC6vpTtixjoAAADAPD4PRxkZGfrDH/6gzZs365e//KXy8vI0depUNTY2SpKcTqdiYmK83hMSEqLo6Gg5nc4Wj5mdna3IyEjPkpCQ4Ouy/QKTMgAAAADmafNldRcze/Zsz3pKSopGjx6tyy67TNu2bdPkyZPbdcysrCwtWrTI89rlcnXLgNQ8crR3r2QYksVibj0AAABAT9LpU3kPGTJE/fv316FDhyRJdrtd5eXlXm0aGhp04sSJ896nZLVaZbPZvJbuaPhwKTRUOnlSKikxuxoAAACgZ+n0cPTll1/q+PHjiouLkyQ5HA5VVFSooKDA02bLli1qampSampqZ5fj10JDpT593Ovbt5tbCwAAANDTtDkcVVVVqbCwUIWFhZKk4uJiFRYWqqSkRFVVVVq8eLF27NihI0eOaPPmzZoxY4aGDh2q9PR0SdLIkSOVkZGh+fPna9euXfrggw+0cOFCzZ49u0fPVNfsxAn3z7vuMrcOAAAAoKdpczjavXu3rrzySl155ZWSpEWLFunKK6/UkiVLFBwcrE8//VQ/+MEPNHz4cM2bN09jx47V//zP/8hqtXqOsWrVKiUlJWny5Mm64YYbdO211+o3v/mN784qgDUPns2ZY24dAAAAQE/T5gkZJk2aJMMwzrv/vffeu+gxoqOjtXr16rZ+dI9w1VXSzp3SsGFmVwIAAAD0LJ1+zxEAAAAABALCEQAAAACIcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcAQAAAAAkghHAAAAACCJcOS33nxTWr9eMgyzKwEAAAB6BsKRn/nBD6TevaUDB6Tp06UJE6S//pWQBAAAAHQ2wpGfyciQiouln/5U6tVL2r1buvFGQhIAAADQ2QhHfmjAAOmXv5SOHCEkAQAAAF2FcOTHLhSSUlOld98lJAEAAAC+QjgKAC2FpI8+kqZNIyQBAAAAvkI4CiDNIam4WFq8mJAEAAAA+FKbw9H27ds1ffp0xcfHy2Kx6J133vHabxiGlixZori4OIWHhystLU0HDx70anPixAnNmTNHNptNUVFRmjdvnqqqqjp0Ij1JTIy0bFnLIenqq6UNGwhJAAAAQFu1ORxVV1drzJgxWr58eYv7ly1bphdffFErV67Uzp071bt3b6Wnp6umpsbTZs6cOdq3b59yc3O1fv16bd++XQsWLGj/WfRQLYWkXbukG24gJAEAAABtZTGM9v/ns8Vi0dq1a3XTTTdJco8axcfH66GHHtLDDz8sSaqsrFRsbKxycnI0e/ZsHThwQMnJyfroo480btw4SdLGjRt1ww036Msvv1R8fPxFP9flcikyMlKVlZWy2WztLb/bKS+XnnlGWr5cOnXKvW3CBGnpUvcU4RaLqeUBAAAAPufLbODTe46Ki4vldDqVlpbm2RYZGanU1FTl5+dLkvLz8xUVFeUJRpKUlpamoKAg7dy5s8Xj1tbWyuVyeS04V0yMOxwVF0sPPyyFh58eSXruObOrAwAAAPybT8OR0+mUJMXGxnptj42N9exzOp2KiYnx2h8SEqLo6GhPm7NlZ2crMjLSsyQkJPiy7G4nNvZ0SPrBD9zb9uwxtyYAAADA3wXEbHVZWVmqrKz0LEePHjW7pIAQGytde63ZVQAAAACBwafhyG63S5LKysq8tpeVlXn22e12lZeXe+1vaGjQiRMnPG3OZrVaZbPZvBYAAAAA8CWfhqPExETZ7XZt3rzZs83lcmnnzp1yOBySJIfDoYqKChUUFHjabNmyRU1NTUpNTfVlOQAAAADQaiFtfUNVVZUOHTrkeV1cXKzCwkJFR0dr0KBBeuCBB/Tv//7vGjZsmBITE/X4448rPj7eM6PdyJEjlZGRofnz52vlypWqr6/XwoULNXv27FbNVAcAAAAAnaHN4Wj37t36/ve/73m9aNEiSdLcuXOVk5Ojn/70p6qurtaCBQtUUVGha6+9Vhs3btQll1ziec+qVau0cOFCTZ48WUFBQZo1a5ZefPFFH5wOAAAAALRPh55zZBaec9R6zzwj/fSn0ty5Uk6O2dUAAAAAvuW3zzkCAAAAgEBFOAIAAAAAEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY56jKIi6c9/lvbulb791uxqAAAAAP8TYnYB6FwREe6fO3ZIN910ervdLl12mTRkyLk/Y2Mli8WUcgEAAADTEI66uTvukL7+2j1idPiwe6mokJxO9/LBB+e+p1evc0NT8/qll0phYV19FgAAAEDnsxiGYZhdRFu5XC5FRkaqsrJSNpvN7HICzjffuEPSF194/zx8WDp6VLrQvwiLRRo0SPqP/5Buv73ragYAAABa4stsQDiCl7o66cgR78B0Zohqvl9p0iRp61YzKwUAAAB8mw24rA5ewsKk4cPdy9kMQ8rJke69V2pq6vLSAAAAgE7FbHVoNYtF6tPH7CoAAACAzuHzcLR06VJZLBavJSkpybO/pqZGmZmZ6tevnyIiIjRr1iyVlZX5ugwAAAAAaJNOGTm6/PLLdezYMc/y/vvve/Y9+OCDWrdundasWaO8vDyVlpZq5syZnVEGAAAAALRap9xzFBISIrvdfs72yspK/f73v9fq1at1/fXXS5JeeeUVjRw5Ujt27NDVV1/dGeUAAAAAwEV1ysjRwYMHFR8fryFDhmjOnDkqKSmRJBUUFKi+vl5paWmetklJSRo0aJDy8/PPe7za2lq5XC6vBQAAAAB8yefhKDU1VTk5Odq4caNWrFih4uJife9739PJkyfldDoVFhamqKgor/fExsbK6XSe95jZ2dmKjIz0LAkJCb4uGwAAAEAP5/PL6qZOnepZHz16tFJTUzV48GD98Y9/VHh4eLuOmZWVpUWLFnleu1wuAhIAAAAAn+r0qbyjoqI0fPhwHTp0SHa7XXV1daqoqPBqU1ZW1uI9Ss2sVqtsNpvXAgAAAAC+1OnhqKqqSocPH1ZcXJzGjh2r0NBQbd682bO/qKhIJSUlcjgcnV0KAAAAAJyXz8PRww8/rLy8PB05ckQffvihbr75ZgUHB+u2225TZGSk5s2bp0WLFmnr1q0qKCjQPffcI4fDwUx1AcJicf/csUP6f/9PWr9eqq83tyYAAADAF3x+z9GXX36p2267TcePH9eAAQN07bXXaseOHRowYIAk6fnnn1dQUJBmzZql2tpapaen6+WXX/Z1Gegk114rXXml9PHH0po17mXAAOm226S77pKuuup0gAIAAAACicUwDMPsItrK5XIpMjJSlZWV3H9kAsOQCgulP/xBWr1aKi8/vW/kSHdImjNHYs4MAAAAdDZfZgPCETqkoUH629+k//5v6Z13pJoa93aLRfr+991BaeZMqU8fU8sEAABAN0U4Ihz5pcpK6U9/co8o5eWd3h4e7g5Id94ppaVJwcHm1QgAAIDuhXBEOPJ7R45Iq1a5g9Lnn5/eHhfnvuTuzjul0aN993kNDVJFhXTihDRihHtb4P3LBgAAQFsRjghHAcMwpF273Jfdvf66O7w0GzPGfdnd7bdLdrvU2OgeffrmG/dy4sTp9TOXlra7XOd+dk2NZLV23bkCAACg6xGOCEcBqa5O2rDBPZq0bt3pKcCDgtz3JLlcvh3tqa+XQnw+HyMAAAD8iS+zAf/piC4TFibNmOFeTpyQ/vhHd1DKz3ePGDXr3Vvq27flJTr6/Pv69pWqqtxtAAAAgLZi5AimO3pUqq4+HXDCwtp/rG++OR2OGDkCAADo/hg5QrfC85AAAADgDwhH6LZ27ZJsNvdlehER7p/h4e5nMAEAAABnIxyhWwkKOr1+zTXn7rdY3CHpzMDU1vXz7Q8N7brzBAAAgO8RjtCtREZKP/mJtGmTe3KG6mr3cuqUe79huLdXVUllZb797LCw1gepESOku+9mFAsAAMCfEI7Q7bzwwrnbGhulb7/1DkxtWb/Q/sZG92fU1bmXb75pXZ3JyVJqqs9OGwAAAB1EOEKPEBzsfpZSnz6+Pa5huANRW0LVb34jffWV++fhw+5w1dLS0HD+fWcvISHSkCHuEanhw6X4eEalAAAA2oqpvIEuNn68tHt3535G797ukDRixOnA1PzT1wERAADATEzlDQSwRx6Rli93rwcHt38JCTm9XlMjHTokFRVJxcXuEaqPP3YvZ4uL8w5MzeuJiTwXCgAA9GyMHAHdTF2d9MUX7qD0+efeP8vLz/++kBDpssvcYWnwYOneeyW73T0LX0iIe2leP3NWQAAAADP5MhsQjoAepKLi3MD0+efupXlGv9YICvIOSy0FqPP9bE2bi7W1WqUZM3iAMAAA4LI6AO0UFSVNmOBeztTUJP3jH+6w9OtfS+vWuSebqK93/zxbU9Pp2fnM8te/Shs2mPf5AACg+2HkCMAFNTW5Q1JDw+mfZ66f72dntfnLX6Tjx9219e9/7r1YQUEXv1/rYm06ur+zjtH8Oijo9HKx1+drExwsXXKJewkONvffGAAAHcHIEYAuExTkvozNajW7ErcvvnA/I6q2Vvr6a7Or6R5CQ08HpfDwltfb+ro1ba3WloNZU5P0wQfuiUXCwtz1hYa2vN7SNu6JAwC0F+EIQEAZMkQ6dkwqK2v5mU9NTRd+JtTF9vviGJ31GU1N3svZ2y72+sxtZ6qvdy8nT3Z9fzYHszPD0+efd+yYQUGtD1Jt2X/2emjo6Zkjm2ePPHu9M/cTAgHA9whHAAJO377uBe3X0OAefaupcU/GUVNzernQa1+0bWg4XcfFgtmoUe572+rrT/88c72l+96amk5/ZndmsXRdEPP1/vXrpV273M9ka+3jC1pzKWpb2vlD2wu1I/wC5iAcAUAP1Pwfqb17d/1nNwezCwWpkBDp2mvdozMXYhju0bDzhacLhaqOtK2rc39u831xzestbevI/vr6C597c13onswMZ746psXiXoKC2r/e0fd3x89D5zE1HC1fvlzPPPOMnE6nxowZo5deekkTzp5GCwDQrfgymDWPnoSEuC/N646aL4dsTbjqzKDm6/0nTkhZWVJkZMcvQ21tG39qd/blrS1pbgucrSPBypfBrl8/ads2s38bvmVaOHrzzTe1aNEirVy5UqmpqXrhhReUnp6uoqIixcTEmFUWAAB+pXmWwYuNoiGwGEbLgckfgpsvj2UYp5emJt+s+/JYXf15vpoj+sxjmRmgu+N/sps2lXdqaqrGjx+v//qv/5IkNTU1KSEhQT/+8Y/16KOPXvC9TOUNAACAQNSdwl9oqDRxotm/0W4wlXddXZ0KCgqUlZXl2RYUFKS0tDTl5+ef0762tla1tbWe1y6Xq0vqBAAAAHzpzMvT4H9M6Zavv/5ajY2Nio2N9doeGxsrp9N5Tvvs7GxFRkZ6loSEhK4qFQAAAEAPERCZNSsrS5WVlZ7l6NGjZpcEAAAAoJsx5bK6/v37Kzg4WGVlZV7by8rKZLfbz2lvtVpltVq7qjwAAAAAPZApI0dhYWEaO3asNm/e7NnW1NSkzZs3y+FwmFESAAAAgB7OtKm8Fy1apLlz52rcuHGaMGGCXnjhBVVXV+uee+4xqyQAAAAAPZhp4ejWW2/VV199pSVLlsjpdOqKK67Qxo0bz5mkAQAAAAC6gmnPOeoInnMEAAAAQOoGzznqqOY8x/OOAAAAgJ6tORP4YswnIMPRyZMnJYnnHQEAAACQ5M4IkZGRHTpGQF5W19TUpNLSUvXp00cWi6VN73W5XEpISNDRo0e5JK8Hod97Jvq9Z6Lfex76vGei33umlvrdMAydPHlS8fHxCgrq2GTcATlyFBQUpIEDB3boGDabjS9SD0S/90z0e89Ev/c89HnPRL/3TGf3e0dHjJqZ8pwjAAAAAPA3hCMAAAAAUA8MR1arVU888YSsVqvZpaAL0e89E/3eM9HvPQ993jPR7z1TZ/d7QE7IAAAAAAC+1uNGjgAAAACgJYQjAAAAABDhCAAAAAAkEY4AAAAAQFIPDEfLly/XpZdeqksuuUSpqanatWuX2SXBR5YuXSqLxeK1JCUlefbX1NQoMzNT/fr1U0REhGbNmqWysjITK0Z7bN++XdOnT1d8fLwsFoveeecdr/2GYWjJkiWKi4tTeHi40tLSdPDgQa82J06c0Jw5c2Sz2RQVFaV58+apqqqqC88CbXWxfr/77rvP+f5nZGR4taHfA0t2drbGjx+vPn36KCYmRjfddJOKioq82rTm73pJSYmmTZumXr16KSYmRosXL1ZDQ0NXngraoDX9PmnSpHO+7/fdd59XG/o9sKxYsUKjR4/2PNjV4XBow4YNnv1d+V3vUeHozTff1KJFi/TEE0/of//3fzVmzBilp6ervLzc7NLgI5dffrmOHTvmWd5//33PvgcffFDr1q3TmjVrlJeXp9LSUs2cOdPEatEe1dXVGjNmjJYvX97i/mXLlunFF1/UypUrtXPnTvXu3Vvp6emqqanxtJkzZ4727dun3NxcrV+/Xtu3b9eCBQu66hTQDhfrd0nKyMjw+v6//vrrXvvp98CSl5enzMxM7dixQ7m5uaqvr9eUKVNUXV3taXOxv+uNjY2aNm2a6urq9OGHH+rVV19VTk6OlixZYsYpoRVa0++SNH/+fK/v+7Jlyzz76PfAM3DgQD399NMqKCjQ7t27df3112vGjBnat2+fpC7+rhs9yIQJE4zMzEzP68bGRiM+Pt7Izs42sSr4yhNPPGGMGTOmxX0VFRVGaGiosWbNGs+2AwcOGJKM/Pz8LqoQvibJWLt2red1U1OTYbfbjWeeecazraKiwrBarcbrr79uGIZh7N+/35BkfPTRR542GzZsMCwWi/GPf/yjy2pH+53d74ZhGHPnzjVmzJhx3vfQ74GvvLzckGTk5eUZhtG6v+vvvvuuERQUZDidTk+bFStWGDabzaitre3aE0C7nN3vhmEY1113nfGTn/zkvO+h37uHvn37Gr/73e+6/LveY0aO6urqVFBQoLS0NM+2oKAgpaWlKT8/38TK4EsHDx5UfHy8hgwZojlz5qikpESSVFBQoPr6eq/+T0pK0qBBg+j/bqS4uFhOp9OrnyMjI5Wamurp5/z8fEVFRWncuHGeNmlpaQoKCtLOnTu7vGb4zrZt2xQTE6MRI0bo/vvv1/Hjxz376PfAV1lZKUmKjo6W1Lq/6/n5+UpJSVFsbKynTXp6ulwul+f/kYZ/O7vfm61atUr9+/fXqFGjlJWVpW+//dazj34PbI2NjXrjjTdUXV0th8PR5d/1EN+chv/7+uuv1djY6PVLk6TY2Fh99tlnJlUFX0pNTVVOTo5GjBihY8eO6ec//7m+973vae/evXI6nQoLC1NUVJTXe2JjY+V0Os0pGD7X3Jctfc+b9zmdTsXExHjtDwkJUXR0NP8WAlhGRoZmzpypxMREHT58WD/72c80depU5efnKzg4mH4PcE1NTXrggQd0zTXXaNSoUZLUqr/rTqezxb8Hzfvg31rqd0m6/fbbNXjwYMXHx+vTTz/VI488oqKiIr399tuS6PdAtWfPHjkcDtXU1CgiIkJr165VcnKyCgsLu/S73mPCEbq/qVOnetZHjx6t1NRUDR48WH/84x8VHh5uYmUAOtvs2bM96ykpKRo9erQuu+wybdu2TZMnTzaxMvhCZmam9u7d63UfKbq/8/X7mfcKpqSkKC4uTpMnT9bhw4d12WWXdXWZ8JERI0aosLBQlZWVeuuttzR37lzl5eV1eR095rK6/v37Kzg4+JyZLcrKymS3202qCp0pKipKw4cP16FDh2S321VXV6eKigqvNvR/99Lclxf6ntvt9nMmYWloaNCJEyf4t9CNDBkyRP3799ehQ4ck0e+BbOHChVq/fr22bt2qgQMHera35u+63W5v8e9B8z74r/P1e0tSU1Mlyev7Tr8HnrCwMA0dOlRjx45Vdna2xowZo1/96ldd/l3vMeEoLCxMY8eO1ebNmz3bmpqatHnzZjkcDhMrQ2epqqrS4cOHFRcXp7Fjxyo0NNSr/4uKilRSUkL/dyOJiYmy2+1e/exyubRz505PPzscDlVUVKigoMDTZsuWLWpqavL8DywC35dffqnjx48rLi5OEv0eiAzD0MKFC7V27Vpt2bJFiYmJXvtb83fd4XBoz549XsE4NzdXNptNycnJXXMiaJOL9XtLCgsLJcnr+06/B76mpibV1tZ2/XfdF7NJBIo33njDsFqtRk5OjrF//35jwYIFRlRUlNfMFghcDz30kLFt2zajuLjY+OCDD4y0tDSjf//+Rnl5uWEYhnHfffcZgwYNMrZs2WLs3r3bcDgchsPhMLlqtNXJkyeNjz/+2Pj4448NScZzzz1nfPzxx8bf//53wzAM4+mnnzaioqKMP//5z8ann35qzJgxw0hMTDROnTrlOUZGRoZx5ZVXGjt37jTef/99Y9iwYcZtt91m1imhFS7U7ydPnjQefvhhIz8/3yguLjY2bdpkXHXVVcawYcOMmpoazzHo98By//33G5GRkca2bduMY8eOeZZvv/3W0+Zif9cbGhqMUaNGGVOmTDEKCwuNjRs3GgMGDDCysrLMOCW0wsX6/dChQ8aTTz5p7N692yguLjb+/Oc/G0OGDDEmTpzoOQb9HngeffRRIy8vzyguLjY+/fRT49FHHzUsFovxt7/9zTCMrv2u96hwZBiG8dJLLxmDBg0ywsLCjAkTJhg7duwwuyT4yK233mrExcUZYWFhxne+8x3j1ltvNQ4dOuTZf+rUKeNHP/qR0bdvX6NXr17GzTffbBw7dszEitEeW7duNSSds8ydO9cwDPd03o8//rgRGxtrWK1WY/LkyUZRUZHXMY4fP27cdtttRkREhGGz2Yx77rnHOHnypAlng9a6UL9/++23xpQpU4wBAwYYoaGhxuDBg4358+ef83980e+BpaX+lmS88sornjat+bt+5MgRY+rUqUZ4eLjRv39/46GHHjLq6+u7+GzQWhfr95KSEmPixIlGdHS0YbVajaFDhxqLFy82KisrvY5DvweWe++91xg8eLARFhZmDBgwwJg8ebInGBlG137XLYZhGG0bawIAAACA7qfH3HMEAAAAABdCOAIAAAAAEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCAAAAAAkEY4AAAAAQBLhCABggm3btslisaiiosLsUjwuvfRSvfDCC2aXAQAwEeEIAOBTFovlgsvSpUvNLhEAgBaFmF0AAKB7OXbsmGf9zTff1JIlS1RUVOTZFhERod27d7f5uHV1dQoLC/NJjQAAtISRIwCAT9ntds8SGRkpi8XitS0iIsLTtqCgQOPGjVOvXr303e9+1ytELV26VFdccYV+97vfKTExUZdccokkqaKiQv/8z/+sAQMGyGaz6frrr9cnn3zied/hw4c1Y8YMxcbGKiIiQuPHj9emTZu8aiwvL9f06dMVHh6uxMRErVq1ymu/YRhaunSpBg0aJKvVqvj4eP3rv/5rZ/y6AAB+hHAEADDNv/3bv+k///M/tXv3boWEhOjee+/12n/o0CH96U9/0ttvv63CwkJJ0g9/+EOVl5drw4YNKigo0FVXXaXJkyfrxIkTkqSqqirdcMMN2rx5sz7++GNlZGRo+vTpKikp8Rz37rvv1tGjR7V161a99dZbevnll1VeXu7Z/6c//UnPP/+8fv3rX+vgwYN65513lJKS0vm/EACAqbisDgBgml/84he67rrrJEmPPvqopk2bppqaGs8oUV1dnf7whz9owIABkqT3339fu3btUnl5uaxWqyTp2Wef1TvvvKO33npLCxYs0JgxYzRmzBjPZzz11FNau3at/vKXv2jhwoX6/PPPtWHDBu3atUvjx4+XJP3+97/XyJEjPe8pKSmR3W5XWlqaQkNDNWjQIE2YMKFLficAAPMwcgQAMM3o0aM963FxcZLkNYIzePBgTzCSpE8++URVVVXq16+fIiIiPEtxcbEOHz4syT1y9PDDD2vkyJGKiopSRESEDhw44Bk5OnDggEJCQjR27FjPcZOSkhQVFeV5/cMf/lCnTp3SkCFDNH/+fK1du1YNDQ2d8jsAAPgPRo4AAKYJDQ31rFssFklSU1OTZ1vv3r292ldVVSkuLk7btm0751jN4ebhhx9Wbm6unn32WQ0dOlTh4eG65ZZbVFdX1+q6EhISVFRUpE2bNik3N1c/+tGP9MwzzygvL8+rZgBA90I4AgAEjKuuukpOp1MhISG69NJLW2zzwQcf6O6779bNN98syR2ojhw54tmflJSkhoYGFRQUeC6rKyoqOueZS+Hh4Zo+fbqmT5+uzMxMJSUlac+ePbrqqqs649QAAH6AcAQACBhpaWlyOBy66aabtGzZMg0fPlylpaX661//qptvvlnjxo3TsGHD9Pbbb2v69OmyWCx6/PHHvUajRowYoYyMDP3Lv/yLVqxYoZCQED3wwAMKDw/3tMnJyVFjY6NSU1PVq1cvvfbaawoPD9fgwYPNOG0AQBfhniMAQMCwWCx69913NXHiRN1zzz0aPny4Zs+erb///e+KjY2VJD333HPq27evvvvd72r69OlKT08/Z7TnlVdeUXx8vK677jrNnDlTCxYsUExMjGd/VFSUfvvb3+qaa67R6NGjtWnTJq1bt079+vXr0vMFAHQti2EYhtlFAAAAAIDZGDkCAAAAABGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAECS9P8BLwYYbAfimewAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df[\"Sim. Time / s\"].plot(figsize=(10, 3), style=\"-b\");" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "subslide" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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HmP8+PHGOeecY2zcuNFYv369MXDgQOOGG26wapVwAlra7ocPHzbuu+8+Iy8vz9i7d6+xevVq49xzzzUGDhxoVFdXex6D7R5e7rzzTiMhIcFYt26dUVJS4mlHjx711Bzvfb2+vt4YNmyYMXbsWGPz5s3Ghx9+aPTo0cOYO3euFauEE3C87b5nzx7j8ccfNzZt2mTs3bvXeOedd4x+/foZo0eP9jwG2z38PPTQQ0Zubq6xd+9eY8uWLcZDDz1k2Gw24+OPPzYMo31f650qHBmGYTz33HNG7969jZiYGOP88883Pv/8c6u7hCC5/vrrjbS0NCMmJsb4yU9+Ylx//fXGnj17PMurqqqMu+66yzj99NONuLg445prrjFKSkos7DFOxieffGJIOqbNnDnTMAxzOO9HHnnESElJMex2uzFmzBijoKDA7zEOHjxo3HDDDUZ8fLzhcDiMW265xTh8+LAFa4MT1dJ2P3r0qDF27FijR48eRnR0tNGnTx/j9ttvP+aLL7Z7eGlue0syXnjhBU/Nibyv79u3z5gwYYIRGxtrdO/e3bj33nuNurq6dl4bnKjjbfeioiJj9OjRRlJSkmG3240BAwYY999/v+Fyufweh+0eXn7xi18Yffr0MWJiYowePXoYY8aM8QQjw2jf17rNMAyjdfuaAAAAAKDj6TTnHAEAAABASwhHAAAAACDCEQAAAABIIhwBAAAAgCTCEQAAAABIIhwBAAAAgCTCEQAAAABIIhwBACywbt062Ww2lZeXW90VjzPOOEO/+93vrO4GAMBChCMAQFDZbLYW22OPPWZ1FwEAaFaU1R0AAHQsJSUlnunXX39d8+bNU0FBgWdefHy8Nm3a1OrHra2tVUxMTFD6CABAc9hzBAAIqtTUVE9LSEiQzWbzmxcfH++pzc/P16hRoxQXF6ef/vSnfiHqscce09lnn60//elP6tu3r0477TRJUnl5uW677Tb16NFDDodDl112mb7++mvP/QoLC3X11VcrJSVF8fHxOu+887R69Wq/PpaVlWnSpEmKjY1V37599corr/gtNwxDjz32mHr37i273a709HT96le/aos/FwAghBCOAACW+c///E/99re/1aZNmxQVFaVf/OIXfsv37Nmjt956S2+//bY2b94sSbruuutUVlamlStXKj8/X+eee67GjBmjQ4cOSZIqKyt1xRVXaM2aNfrqq680fvx4TZo0SUVFRZ7Hvfnmm7V//3598sknevPNN/WHP/xBZWVlnuVvvfWWnnnmGf3v//6vdu/ereXLl2v48OFt/wcBAFiKw+oAAJb5zW9+o0suuUSS9NBDD2nixImqrq727CWqra3VSy+9pB49ekiS1q9fry+++EJlZWWy2+2SpKeeekrLly/Xm2++qVmzZmnkyJEaOXKk53f8+te/1rJly/Tuu+9q9uzZ+uabb7Ry5Up98cUXOu+88yRJf/7znzVkyBDPfYqKipSamqrs7GxFR0erd+/eOv/889vlbwIAsA57jgAAlhkxYoRnOi0tTZL89uD06dPHE4wk6euvv1ZlZaW6deum+Ph4T9u7d68KCwslmXuO7rvvPg0ZMkSJiYmKj4/Xzp07PXuOdu7cqaioKGVkZHged/DgwUpMTPTcvu6661RVVaV+/frp9ttv17Jly1RfX98mfwMAQOhgzxEAwDLR0dGeaZvNJklqbGz0zOvSpYtffWVlpdLS0rRu3bpjHssdbu677z6tWrVKTz31lAYMGKDY2Fhde+21qq2tPeF+9erVSwUFBVq9erVWrVqlu+66S08++aRyc3P9+gwA6FgIRwCAsHHuuefK6XQqKipKZ5xxRrM1n332mW6++WZdc801ksxAtW/fPs/ywYMHq76+Xvn5+Z7D6goKCo655lJsbKwmTZqkSZMmKScnR4MHD9bWrVt17rnntsWqAQBCAOEIABA2srOzlZWVpcmTJ2vhwoU688wzVVxcrPfff1/XXHONRo0apYEDB+rtt9/WpEmTZLPZ9Mgjj/jtjRo0aJDGjx+vf//3f9eiRYsUFRWlu+++W7GxsZ6aJUuWqKGhQZmZmYqLi9PLL7+s2NhY9enTx4rVBgC0E845AgCEDZvNpg8++ECjR4/WLbfcojPPPFPTpk3Td999p5SUFEnS008/rdNPP10//elPNWnSJI0bN+6YvT0vvPCC0tPTdckll2jKlCmaNWuWkpOTPcsTExP1xz/+URdeeKFGjBih1atX67333lO3bt3adX0BAO3LZhiGYXUnAAAAAMBq7DkCAAAAABGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAEAS4QgAAAAAJBGOAAAAAECS9P8B2k3f3GPUoJ0AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df[\"Presim. Time / s\"].plot(style=\"--r\", figsize=(10,3));\n", "df[\"Sim. Time / s\"].plot(style=\"-b\", figsize=(10,3));" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = df[[\"Presim. Time / s\", \"Sim. Time / s\"]].plot(style=[\"--b\", \"-r\"], figsize=(10,3));\n", "ax.set_ylabel(\"Time / s\");" ] }, { "cell_type": "markdown", "metadata": { "exercise": "task", "slideshow": { "slide_type": "slide" } }, "source": [ "## Task 6\n", "\n", "TASK\n", "\n", "* To your `df` Nest data frame, add a column with the unaccounted time (`Unaccounted Time / s`), which is the difference of program runtime, average neuron build time, minimal edge build time, minimal initialization time, presimulation time, and simulation time. \n", "(*I know this is technically not super correct, but it will do for our example.*)\n", "* Plot a stacked bar plot of all these columns (except for program runtime) over the threads\n", "* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "exercise": "solution", "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "cols = [\n", " 'Avg. Neuron Build Time / s', \n", " 'Min. Edge Build Time / s', \n", " 'Min. Init. Time / s', \n", " 'Presim. Time / s', \n", " 'Sim. Time / s'\n", "]\n", "df[\"Unaccounted Time / s\"] = df['Runtime Program / s']\n", "for entry in cols:\n", " df[\"Unaccounted Time / s\"] = df[\"Unaccounted Time / s\"] - df[entry]" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "exercise": "solution", "slideshow": { "slide_type": "subslide" } }, "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", "
Runtime Program / sUnaccounted Time / sAvg. Neuron Build Time / sMin. Edge Build Time / sMin. Init. Time / sPresim. Time / sSim. Time / s
Threads
8420.422.090.2988.121.1417.26311.52
16202.152.430.2847.980.707.95142.81
\n", "
" ], "text/plain": [ " Runtime Program / s Unaccounted Time / s \\\n", "Threads \n", "8 420.42 2.09 \n", "16 202.15 2.43 \n", "\n", " Avg. Neuron Build Time / s Min. Edge Build Time / s \\\n", "Threads \n", "8 0.29 88.12 \n", "16 0.28 47.98 \n", "\n", " Min. Init. Time / s Presim. Time / s Sim. Time / s \n", "Threads \n", "8 1.14 17.26 311.52 \n", "16 0.70 7.95 142.81 " ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[[\"Runtime Program / s\", \"Unaccounted Time / s\", *cols]].head(2)" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "exercise": "solution", "slideshow": { "slide_type": "-" } }, "outputs": [ { "data": { "image/png": "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f3+NW4XNnDkTs2fPxtChQwEA9evXx6RJkwwwFCIiIiIiIqKcQ6uCe9CgQRg0aNBnt6lfvz7q16+f6XobGxvMmjULs2bN0iaaiIiIiIiI6Kti3BuaEREREREREf1HseAmIiIiIiIiMgIW3ERERERERERGwIKbiIiIiIiIyAhYcBMREREREREZAQtuIiIiIiIiIiNgwU1ERERERERkBCy4iYiIiIiIiIyABTcRERERERGREbDgJiIiIiIiIjICFtxERERERERERsCCm4iIiIiIiMgIWHATERERERERGQELbiIiIiIiIiIjYMFNREREREREZAQsuImIiIiIiIiMgAU3ERERERERkRGYZXcHKOcRBBkEQaaxTC4XNP77KZVKhEolGr1vREREREREXwsW3KRBEGRwyGMNQS7PcL29vXWGy1VKJWJiE1h0ExERERER/T8W3KRBEGQQ5HIc37EaMZFhWdrHwakgmnYdCEGQseAmIiIiIiL6fyy4KUMxkWF4/eppdneDiIiIiIjoq8VJ04iIiIiIiIiMgAU3ERERERERkRHoVXCvXr0aPXr00Fg2adIkuLm5afx4e3ur16tUKixduhT16tVDlSpV0L9/fzx//lyfbhARERERERHlODoX3Fu3bsXixYvTLb979y4GDRqEs2fPqn92796tXr9y5UoEBQVh5syZ2L59O1QqFfr16weFQqFrV4iIiIiIiIhyHK0L7oiICAwaNAjz589H8eLFNdaJoogHDx6gQoUKyJ8/v/rH0dERAKBQKLB+/XoMHz4cDRo0gLu7OxYtWoTw8HAcP37cIAMiIiIiIiIiygm0Lrj//fdfmJub47fffkPlypU11j179gwfPnxAiRIlMtw3NDQU8fHx8PLyUi+zt7dHuXLlcPnyZW27QkRERERERJRjaX1bMG9vb41rsj927949AMDmzZtx5swZCIKA+vXrY9SoUbCzs0N4eDgAoGDBghr7OTk5qdfpysxM87sDuVz3y9O12Zc5htn30zYM0dZ/JceUxsKcnJ1jSmNhTs7OMaWxMCdn55jSWJiTs3NMaSzM0Y5B78N97949CIIAJycnrFq1Cs+ePcO8efNw//59bNy4EQkJCQAACwsLjf0sLS3x9u1bnXMFQQYHh1x69f1j9vbWBmuLOdnf1n8lx5TGwpycnWNKY2FOzs4xpbEwJ2fnmNJYmJOz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xd9//41Vq1ahfv36zJEwR6qxZOT48eOYOnUqWrZsib179+K3334z+HubFBnGzLl69Sr69u0LZ2dnzJ07V+N60/j4eAwYMABXr14FoN+14l96L7h8+TLi4+P1fi+QKufJkyfw8fGBubk5mjRpAicnJ6xZswYlSpRA6dKlcePGDTx79gybN2/WOUeKDObongMAtWvXxvLly1GtWrVMt7l06RKGDRuGixcv6pxTr149LF++HJUrV0Z0dDRq166NDRs2wNPTU73NjRs3MGTIEPz9998656SkpGDp0qXYuXMnpkyZgpYtWwIAqlatatD3NilyGjdujFGjRqFVq1aZbrN//34sWbIEp06d0jln9OjRePPmDRYsWID8+fNrrPP398f69evRo0cPbN68Wa/3UGPnTJ8+HefPn8fkyZNRs2ZNjYI3JSUFISEhmDx5Mry8vDBjxgydxzF9+nRcvnwZ33//PQ4fPoywsDAUK1YMc+bMQYECBfDmzRsMHz4cLi4u8Pf31znnUyZbcGcmPDwc169fh7OzMypVqpTppDDaeP36NXr37o1Xr17By8sLhQsXxr59+5ArVy64uroiNDQUgiAgKCgIRYsWZU4Gzpw5A19fX0RFReH48eNG+cBozJyQkBDs2LEDffv2hbu7u8a6uLg4zJ49G0eOHMH169eZI3FObGwsduzYgStXriA8PByJiYmwtLREoUKFUL16dXTu3BmOjo56jSMtJyQkBHnz5kXVqlXx/v17+Pv74+rVqyhQoAB69eqFunXrMicbcqQaS0YiIiIwYcIEXLhwwWjvbVJkGDPnyZMn2L9/P9q1awdXV1eNdWlf7P7+++84duyYXjkfT2CU9l5gZWWFggULokaNGujUqZPB3gukytmyZQvOnj2Lx48f4/379zAzM4OzszM8PDzQt2/fdM9nTsxgju5MtUi5fPkyxo8fj2rVqmHq1KmoX7++Ub5MNGbO1q1b4e/vj549e8LT0xPOzs4aX75dunQJgYGBGD58OHr37q1zTnh4OPr3748HDx5gzZo16kln0/j7+yMgIAAymUyvgtvYOQqFAlOnTsWBAwcgk8ng4OCgfr5iY2OhUqnQsmVLzJo1C1ZWVjqP48OHD5gxYwZOnjwJR0dHzJ49G6GhoZg1axby5s2L2NhYFC5cGJs2bTLoJH3/uYLbWBQKBX7//XecO3cuwzfX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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df[[\"Unaccounted Time / s\", *cols]].plot(kind=\"bar\", stacked=True, figsize=(12, 4));" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Task 7\n", "\n", "TASK\n", "\n", "* Create a pivot table based on the Nest `df` data frame\n", "* Let the `x` axis show the number of nodes; display the values of the simulation time `\"Sim. Time / s\"` for the tasks per node and threads per task configurations\n", "* Please plot a bar plot\n", "* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d" ] }, { "cell_type": "code", "execution_count": 114, "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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6poxY4YkqUmTJpKkmTNn2vr66KOPFBsbq3fffVc1atSQJDVt2lSdOnVSTEyMNmzYoB9//FHp6enq2bOnIiMjJUlRUVHatm2brl69qsDAQJf/TAAAKMi4wg0AwG2kRYsWeuKJJ7R06VIdPnzYbt8333wjSWrdurXd9tatW8tisWjfvn1KT0/X4cOH9cADD9i1adWqld3nPXv2KDw8XFWrVlVWVpaysrJktVr1wAMP6KefflJycrJq1KghX19f/eMf/9DkyZO1c+dORUdHa+DAgYRtAADEFW4AAG47o0aN0p49ezR8+HBt2LDBtj05OVmSFB4ebtfey8tLYWFhunz5spKTk5Wdna2wsDC7NhEREXafk5KS9Mcff6hq1ao3reGPP/5QhQoVtHr1ai1evFjvv/++3nrrLQUHB+u5557TgAEDZDKZ8uN0AQC4bRG4AQC4zYSEhGjcuHHq27ev5s+fb7dduh6GS5Ysadt+7do1JSYmKiwsTKGhoTKbzYqPj7frMykpye5zUFCQypQpo5iYmJvWUKpUKUlS9erVNXfuXGVmZurgwYNav369Fi5cqOjo6BxXzQEAuNNwSzkAALehhx56SG3atNHixYt16dIlSVL9+vUlSR9//LFd248//lhWq1V16tSRr6+vatWqpS1bttgWUZOuL6T23+rXr6/z58+rWLFiuvfee21/du/eraVLl8pisWjlypV64IEHlJmZKR8fHzVs2FATJ06UJP3++++uPH0AAG4LXOEGAOA2NXr0aO3du9d2tbpChQpq27at5syZo7S0NNWrV09Hjx7V3Llzdd9999kWRxs0aJBeeOEFvfTSS3r22Wd18uRJLVy40K7vp556SqtXr1aXLl3Uq1cvlShRQl9//bWWLFmijh07ytvbWw0aNFBMTIz69u2rjh07ymKxaN26dfLx8cnxjDgAAHciU/Z/f70NAAAKnE6dOkmS3n777Rz7tm7dqpdeeklt27bVtGnTZLVatXjxYm3YsEEXLlxQRESEHn/8cfXp00e+vr62477++mvNmjVLx48fV6lSpTR06FD16tVLU6dO1VNPPSVJSkhI0MyZM7V9+3ZdvnxZJUuW1D/+8Q917dpVZvP1m+R27dqlefPm6fjx47JarapWrZr69++vevXqueEnAwBAwUbgBgAAAADABXiGGwAAAAAAFyBwAwAAAADgAgRuAAAAAABcgMANAAAAAIALELgBAAAAAHABAjcAAAAAAC5A4AYAAAAAwAUI3AAAAAAAuACBGwAAAAAAFyBwAwAAAADgAgRuAAAAAABcgMANAAAAAIAL/B87XL/rwipUxwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.pivot_table(\n", " index=\"Nodes\",\n", " columns=[\"Tasks/Node\", \"Threads/Task\"],\n", " values=\"Sim. Time / s\",\n", ").plot(kind=\"bar\", figsize=(12, 4));" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "## Task 7B (like Bonus)\n", "\n", "TASK\n", "\n", "- Same pivot table as before (that is, `x` with nodes, and columns for Tasks/Node and Threads/Task)\n", "- But now, use `Sim. Time / s` and `Presim. Time / s` as values to show\n", "- Show them as a **stack** of those two values inside the pivot table\n", "- Use Panda's functionality as much as possible!" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Task 8 (Super Bonus)\n", "\n", "TASK\n", "\n", "* Create bar chart of top 10 actors (on `x`) and average ratings of their top movies (`y`) based on IMDb data (only if they play in at least two movies)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "fragment" }, "tags": [] }, "source": [ "* IMDb provides data sets at [datasets.imdbws.com](https://datasets.imdbws.com)\n", "* Can directly be loaded like\n", "```python\n", "pd.read_table('https://datasets.imdbws.com/dataset.tsv.gz', sep=\"\\t\", low_memory=False, na_values=[\"\\\\N\",\"nan\"])\n", "```\n", "* Needed:\n", " * `name.basics.tsv.gz` (for names of actors and movies they are known for)\n", " * `title.ratings.tsv.gz` (for ratings of titles)\n", "* Strategy _suggestions_:\n", " * Use `df.apply()` with custom function\n", " * Custom function: Compute average rating and determine if this entry is eligible for plotting (this _can_ be done at once, but does not need to be)\n", " * Average rating: Look up title IDs as listed in `knownForTitles` in titles dataframe" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "```python\n", "df_names = pd.read_table('imdb-data/name.basics.tsv.gz', sep=\"\\t\", low_memory=False, na_values=[\"\\\\N\",\"nan\"])\n", "df_ratings = pd.read_table('https://datasets.imdbws.com/title.ratings.tsv.gz', sep=\"\\t\", low_memory=False, na_values=[\"\\\\N\",\"nan\"])\n", " \n", "df_names_i = df_names.set_index('nconst')\n", "df_ratings_i = df_ratings.set_index('tconst')\n", " \n", "df_names_i = pd.concat(\n", " [\n", " df_names_i, \n", " df_names_i.apply(lambda line: valid_and_avg_rating(line), axis=1, result_type='expand')\n", " ]\n", " , axis=1\n", ")\n", "df_names_i[df_names_i['toPlot'] == True].sort_values('avgRating', ascending=False).iloc[0:10].reset_index().set_index('primaryName')['avgRating'].plot(kind='bar')\n", "```" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "solution", "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "```python\n", "def valid_and_avg_rating(row):\n", " rating = 0\n", " ntitles = 0\n", " _titles = row['knownForTitles']\n", " _professions = row['primaryProfession']\n", " if not isinstance(_titles, str):\n", " _titles = str(_titles)\n", " if not isinstance(_professions, str):\n", " _professions = str(_professions)\n", " titles = _titles.split(',')\n", " professions = _professions.split(',')\n", " for title in titles:\n", " if title in df_ratings_i.index:\n", " rating += df_ratings_i.loc[title]['averageRating']\n", " ntitles += 1\n", " if ntitles > 0:\n", " plot = False\n", " if ntitles > 2:\n", " if 'actor' in professions:\n", " plot = True\n", " return {'toPlot': plot, 'avgRating': rating / ntitles}\n", " else:\n", " return {'toPlot': False, 'avgRating': pd.NA}\n", "\n", "```" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "exercise": "task", "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Task 8B (Bonuseption)\n", "\n", "TASK\n", "\n", "All of the following are ideas for unique sub-tasks, which can be done individually\n", "* In addition to Task 8, restrict the top titles to those with more than 10000 votes\n", "* For 30 top-rated actors, plot rating vs. age\n", "* For 30 top-rated actors, plot rating vs. average runtime of the known-for-titles (using `title.basics.tsv.gz`)" ] }, { "cell_type": "markdown", "metadata": { "exercise": "task" }, "source": [ "Feedback to a.herten@fz-juelich.de\n", "\n", "_Next slide: Further reading_" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" }, "toc-autonumbering": false, "toc-showcode": false, "toc-showmarkdowntxt": false, "toc-showtags": true }, "nbformat": 4, "nbformat_minor": 4 }