diff --git a/002-basic-control-structures/Basic control structures.ipynb b/002-basic-control-structures/Basic control structures.ipynb index d7de16b..79f969b 100644 --- a/002-basic-control-structures/Basic control structures.ipynb +++ b/002-basic-control-structures/Basic control structures.ipynb @@ -53,11 +53,11 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ - "x=1 # comment" + "x=8 # comment" ] }, { @@ -97,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 8, "metadata": { "scrolled": true }, @@ -105,10 +105,10 @@ { "data": { "text/plain": [ - "2" + "16" ] }, - "execution_count": 2, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -154,23 +154,20 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 20, "metadata": {}, "outputs": [ { - "ename": "KeyError", - "evalue": "7", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mOut\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Something else\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 7" + "name": "stdout", + "output_type": "stream", + "text": [ + "Something else\n", + "0.6666666666666666\n" ] } ], "source": [ - "if Out[7] / 2 == x:\n", + "if Out[8] / 2 == x:\n", " print(\"Something else\")\n", "print(2/3)" ] @@ -249,15 +246,15 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 24, "metadata": {}, "outputs": [ { "ename": "SyntaxError", - "evalue": "EOL while scanning string literal (, line 4)", + "evalue": "EOL while scanning string literal (, line 4)", "output_type": "error", "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m4\u001b[0m\n\u001b[0;31m print(\"Yes I do')\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m EOL while scanning string literal\n" + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m4\u001b[0m\n\u001b[0;31m print(\"Yes I do')\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m EOL while scanning string literal\n" ] } ], @@ -324,7 +321,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -350,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 28, "metadata": { "slideshow": { "slide_type": "fragment" @@ -361,14 +358,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "I am 34 - am I old?\n", + "I am 35 - am I old?\n", "...checking if Phil is old...\n", "Not at all, spring chicken.\n" ] } ], "source": [ - "phils_age = 34\n", + "phils_age = 35\n", "name = \"Phil\"\n", "\n", "print(\"I am\", phils_age, \"- am I old?\")\n", @@ -392,7 +389,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 30, "metadata": { "slideshow": { "slide_type": "slide" @@ -402,38 +399,30 @@ { "data": { "text/plain": [ - "'Just a normal string'" + "'JUST A NORMAL STRING'" ] }, - "execution_count": 7, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "\"just a normal string\".capitalize()" + "\"just a normal string\".upper()" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 33, "metadata": { "scrolled": true, "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The string was lowercase\n" - ] - } - ], + "outputs": [], "source": [ - "if \"another string\".islower():\n", + "if \"Another string\".islower():\n", " print(\"The string was lowercase\")" ] }, @@ -473,7 +462,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -505,9 +494,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Accept Nobel prize',\n", + " 'Finish PhD',\n", + " 'Inspire a new generation',\n", + " 'Learn Python',\n", + " 'Publish research']" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "sorted(things_to_do)" ] @@ -556,13 +560,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'Inspire a new generation'" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "things_to_do[4]" ] @@ -614,11 +629,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'THINGS_TO_DO[4]'" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "In[32]" + "In[40].upper()" ] }, { @@ -656,13 +682,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Learn Python', 'Finish PhD', 'Publish research', 'Accept Nobel prize', 'Inspire a new generation']\n" + ] + }, + { + "data": { + "text/plain": [ + "['Finish PhD', 'Publish research', 'Accept Nobel prize']" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "print(things_to_do)\n", "things_to_do[1:4]" @@ -681,39 +725,72 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 50, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Learn Python', 'Finish PhD']" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "things_to_do[:2]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Accept Nobel prize', 'Inspire a new generation']" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "things_to_do[3:]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Accept Nobel prize', 'Inspire a new generation']" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "things_to_do[-2:]" ] @@ -731,15 +808,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 55, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Learn Python', 'Inspire a new generation']" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "things_to_do[::2]" + "things_to_do[::4]" ] }, { @@ -764,13 +852,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 56, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Inspire a new generation',\n", + " 'Accept Nobel prize',\n", + " 'Publish research',\n", + " 'Finish PhD',\n", + " 'Learn Python']" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "things_to_do[::-1]" ] @@ -821,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "slideshow": { "slide_type": "fragment" @@ -863,12 +966,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 64, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "My favourite number is\n" + ] + }, + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "print(\"My favourite number is\")\n", - "my_meetup_dot_com_profile['favourite numbe']" + "my_meetup_dot_com_profile['favourite number']" ] }, { @@ -884,24 +1005,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 65, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'is the magic number'" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "my_meetup_dot_com_profile[3]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 66, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "KeyError", + "evalue": "2", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmy_meetup_dot_com_profile\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m: 2" + ] + } + ], "source": [ "my_meetup_dot_com_profile[2]" ] @@ -952,11 +1096,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TODO: ['Learn Python', 'Finish PhD', 'Publish research', 'Accept Nobel prize', 'Inspire a new generation', 'Find a nice retirement village in the Galapagos Islands'] \n", + "\n", + "MEETUP: {'first name': 'Ignatius', 'favourite number': 9, 'favourite programming language': 'FORTRAN66', 3: 'is the magic number', 'Interests': ['Python2', 'Python3', 'Scientific Python', 'Pottery']}\n" + ] + } + ], "source": [ "things_to_do.append(\"Find a nice retirement village in the Galapagos Islands\")\n", "\n", @@ -976,16 +1130,31 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "There are many other types of collections - sets, tuples, trees, deques, sets. Some of these we will touch on later. For the moment, I'll highlight only OrderedDict. One question that often gets asked is \"if dictionaries don't have a guaranteed order, how can I have a mapping that does?\"" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 68, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['key1', 'key2', 'test', 'another_test']" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from collections import OrderedDict # we'll discuss importing shortly\n", "\n", @@ -1029,13 +1198,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 70, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'Learn Python, Finish PhD, Publish research, Accept Nobel prize, Inspire a new generation, Find a nice retirement village in the Galapagos Islands'" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "', '.join(things_to_do)" ] @@ -1116,20 +1296,17 @@ "metadata": {}, "outputs": [ { - "ename": "ZeroDivisionError", - "evalue": "division by zero", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m120\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mz\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mz\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"When z is\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mz\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"then y is\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero" + "name": "stdout", + "output_type": "stream", + "text": [ + "When z is 1 then y is 120.0\n", + "When z is 3 then y is 40.0\n" ] } ], "source": [ "y = 120\n", - "for z in range(0, 5):\n", + "for z in range(1, 5, 2):\n", " y = y / z\n", " print(\"When z is\", z, \"then y is\", y)" ] @@ -1144,6 +1321,12 @@ "When z is 2 then y is 60.0\n", "When z is 3 then y is 20.0\n", "When z is 4 then y is 5.0\n", + "```\n", + "\n", + "Next challenge, output should be:\n", + "```\n", + "When z is 1 then y is 120.0\n", + "When z is 3 then y is 40.0\n", "```" ] }, @@ -1192,9 +1375,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "range" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "type(range(5))" ] @@ -1218,13 +1412,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "list(range(5))" ] @@ -1253,18 +1458,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], - "source": [ - "str(range(5))" - ] - }, - { + "outputs": [ + { + "data": { + "text/plain": [ + "'range(0, 5)'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "str(range(5))" + ] + }, + { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for +: 'float' and 'str'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;36m3.14\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\" is almost pi\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'float' and 'str'" + ] + } + ], "source": [ "3.14 + \" is almost pi\"" ] @@ -1282,9 +1510,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "type(str(3.14))" ] @@ -1302,12 +1541,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Let me hear you say Y.M.C.A. Let me hear you say Y.M.C.A. \n" + ] + } + ], "source": [ "lyric = \"\"\n", - "for i in range(2):\n", + "for _ in range(2):\n", " lyric += \"Let me hear you say \"\n", " for character in \"YMCA\":\n", " lyric += character + '.'\n", @@ -1345,9 +1592,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Learn Python :\n", + " using Python, this task will take 12 months to complete\n", + "Finish PhD :\n", + " using Python, this task will take 10 months to complete\n", + "Publish research :\n", + " using Python, this task will take 16 months to complete\n", + "Accept Nobel prize :\n", + " using Python, this task will take 18 months to complete\n", + "Inspire a new generation :\n", + " using Python, this task will take 24 months to complete\n", + "Find a nice retirement village in the Galapagos Islands :\n", + " using Python, this task will take 55 months to complete\n", + "You cannot retire for at least 11 years\n" + ] + } + ], "source": [ "total_months = 0\n", "for task in things_to_do:\n", @@ -1383,13 +1650,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first name\n", + "favourite number\n", + "favourite programming language\n", + "3\n", + "Interests\n" + ] + } + ], "source": [ "for field in my_meetup_dot_com_profile.keys():\n", " print(field)" @@ -1397,13 +1676,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ignatius\n", + "9\n", + "FORTRAN66\n", + "is the magic number\n", + "['Python2', 'Python3', 'Scientific Python', 'Pottery']\n" + ] + } + ], "source": [ "for value in my_meetup_dot_com_profile.values():\n", " print(value)" @@ -1411,13 +1702,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "first name = Ignatius\n", + "favourite number = 9\n", + "favourite programming language = FORTRAN66\n", + "3 = is the magic number\n", + "Interests = ['Python2', 'Python3', 'Scientific Python', 'Pottery']\n" + ] + } + ], "source": [ "for pair in my_meetup_dot_com_profile.items():\n", " print(pair[0], \"=\", pair[1])" @@ -1425,9 +1728,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "key1 = 1 2 3\n", + "key2 = a b c\n", + "key3 = do re mi\n" + ] + } + ], "source": [ "my_dict = {'key1': [1, 2, 3], 'key2': ['a', 'b', 'c'], 'key3': ['do', 're', 'mi']}\n", "\n", @@ -1463,6 +1776,40 @@ "where each key is capitalized and item value printed beside it. The order of lines is not important." ] }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'FIRST NAME': 'Ignatius',\n", + " 'FAVOURITE NUMBER': 9,\n", + " 'FAVOURITE PROGRAMMING LANGUAGE': 'FORTRAN66',\n", + " '3': 'is the magic number',\n", + " 'INTERESTS': ['Python2', 'Python3', 'Scientific Python', 'Pottery']}" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def dict_to_string_map(dictionary):\n", + " new_dictionary = {}\n", + " \n", + " for key, value in dictionary.items():\n", + " new_key = str(key).upper()\n", + " new_dictionary[new_key] = value\n", + " \n", + " return new_dictionary\n", + "\n", + "my_new_dictionary = dict_to_string_map(my_meetup_dot_com_profile)\n", + "my_new_dictionary" + ] + }, { "cell_type": "markdown", "metadata": { @@ -1520,14 +1867,57 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": { "slideshow": { "slide_type": "notes" } }, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set my_dictionary[ a ] to be 23\n", + "Set my_dictionary[ b ] to be 42\n", + "Set my_dictionary[ c ] to be 12\n", + "Set my_dictionary[ d ] to be 9\n", + "Set my_dictionary[ e ] to be 5\n", + "Set my_dictionary[ f ] to be 1\n", + "{'a': 23, 'b': 42, 'c': 12, 'd': 9, 'e': 5, 'f': 1}\n", + "Set my_dictionary[ 23 ] to be a\n", + "Set my_dictionary[ 42 ] to be b\n", + "Set my_dictionary[ 12 ] to be c\n", + "Set my_dictionary[ 9 ] to be d\n", + "Set my_dictionary[ 5 ] to be e\n", + "Set my_dictionary[ 1 ] to be f\n", + "{23: 'a', 42: 'b', 12: 'c', 9: 'd', 5: 'e', 1: 'f'}\n" + ] + } + ], + "source": [ + "# Loop through them to make a dictionary, where the first list is the keys,\n", + "# and the second list is the values.\n", + "# You might want to make this into a function where the first argument is\n", + "# the first list, and the second argument is the second list\n", + "def zip_two_lists(key_list, value_list):\n", + " my_dictionary = {}\n", + " for i in range(len(key_list)):\n", + " my_key = key_list[i]\n", + " my_value = value_list[i]\n", + "\n", + " print('Set my_dictionary[', my_key, '] to be ', my_value)\n", + " my_dictionary[my_key] = my_value\n", + " return my_dictionary\n", + "\n", + "# Print out your new dictionary\n", + "my_list_of_keys = ['a', 'b', 'c', 'd', 'e', 'f']\n", + "my_list_of_values = [23, 42, 12, 9, 5, 1]\n", + "my_new_dictionary = zip_two_lists(my_list_of_keys, my_list_of_values)\n", + "print(my_new_dictionary)\n", + "my_new_dictionary = zip_two_lists(my_list_of_values, my_list_of_keys)\n", + "print(my_new_dictionary)" + ] }, { "cell_type": "markdown", @@ -1542,23 +1932,45 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 54, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 23, 'b': 42, 'c': 12, 'd': 9, 'e': 5, 'f': 1}" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "new_dct = {}\n", - "for key, value in zip(keys, values):\n", + "for key, value in zip(my_list_of_keys, my_list_of_values):\n", " new_dct[key] = value\n", "new_dct" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 56, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 23, 'b': 42, 'c': 12, 'd': 9, 'e': 5, 'f': 1}" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "dict(zip(keys, values))" + "dict(zip(my_list_of_keys, my_list_of_values))" ] }, { @@ -1568,6 +1980,26 @@ "You can think of this like a transpose function, as if it were swapping rows and columns in a matrix." ] }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('a', 23), ('b', 42), ('c', 12), ('d', 9), ('e', 5), ('f', 1)]" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(zip(my_list_of_keys, my_list_of_values))" + ] + }, { "cell_type": "markdown", "metadata": { @@ -1682,7 +2114,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 59, "metadata": { "slideshow": { "slide_type": "-" @@ -1717,13 +2149,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, "metadata": { "slideshow": { "slide_type": "-" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "3.141592653589793" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "math.pi" ] @@ -1741,11 +2184,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 63, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "math.sin(math.pi / 2)" ] @@ -1786,9 +2240,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 66, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], "source": [ "import os\n", "print(os.path.exists('/usr/bin/python'))" @@ -1818,9 +2280,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 67, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/home/jovyan/python-course/002-basic-control-structures', '/usr/local/spark/python', '/usr/local/spark/python/lib/py4j-0.10.7-src.zip', '/opt/conda/lib/python37.zip', '/opt/conda/lib/python3.7', '/opt/conda/lib/python3.7/lib-dynload', '', '/opt/conda/lib/python3.7/site-packages', '/opt/conda/lib/python3.7/site-packages/IPython/extensions', '/home/jovyan/.ipython']\n" + ] + } + ], "source": [ "import sys\n", "print(sys.path)\n", @@ -1853,14 +2323,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 68, "metadata": { "scrolled": true, "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.718281828459045\n" + ] + } + ], "source": [ "import math\n", "print(math.e)" @@ -1879,13 +2357,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 69, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.718281828459045\n" + ] + } + ], "source": [ "import math as m\n", "print(m.e)" @@ -1904,13 +2390,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 70, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.718281828459045\n" + ] + } + ], "source": [ "from math import e\n", "print(e)" @@ -1929,13 +2423,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 73, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sin(3)\n" + ] + } + ], "source": [ "from math import *\n", "from sympy import *\n", @@ -2025,11 +2527,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 85, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'3.141592653589793'" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Overwrite this cell with your code and run it" + "# Overwrite this cell with your code and run it\n", + "x = 4\n", + "\n", + "import math\n", + "pi_as_a_string = str(math.pi)" ] }, { @@ -2141,9 +2658,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 74, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Learn Python\n", + "Finish PhD\n", + "Publish research\n", + "Accept Nobel prize\n", + "Inspire a new generation\n", + "Find a nice retirement village in the Galapagos Islands\n" + ] + } + ], "source": [ "for i in range(len(things_to_do)):\n", " print(things_to_do[i])" @@ -2162,9 +2692,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 76, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Learn Python\n", + "Finish PhD\n", + "Publish research\n", + "Accept Nobel prize\n", + "Inspire a new generation\n", + "Find a nice retirement village in the Galapagos Islands\n" + ] + } + ], "source": [ "for task in things_to_do:\n", " print(task)" @@ -2190,9 +2733,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 77, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Zen of Python, by Tim Peters\n", + "\n", + "Beautiful is better than ugly.\n", + "Explicit is better than implicit.\n", + "Simple is better than complex.\n", + "Complex is better than complicated.\n", + "Flat is better than nested.\n", + "Sparse is better than dense.\n", + "Readability counts.\n", + "Special cases aren't special enough to break the rules.\n", + "Although practicality beats purity.\n", + "Errors should never pass silently.\n", + "Unless explicitly silenced.\n", + "In the face of ambiguity, refuse the temptation to guess.\n", + "There should be one-- and preferably only one --obvious way to do it.\n", + "Although that way may not be obvious at first unless you're Dutch.\n", + "Now is better than never.\n", + "Although never is often better than *right* now.\n", + "If the implementation is hard to explain, it's a bad idea.\n", + "If the implementation is easy to explain, it may be a good idea.\n", + "Namespaces are one honking great idea -- let's do more of those!\n" + ] + } + ], "source": [ "import this" ] @@ -2409,6 +2980,7 @@ } ], "metadata": { + "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", diff --git a/002-basic-control-structures/Python Course - 002a - And so we begin.ipynb b/002-basic-control-structures/Python Course - 002a - And so we begin.ipynb index a0310d1..62fa00c 100644 --- a/002-basic-control-structures/Python Course - 002a - And so we begin.ipynb +++ b/002-basic-control-structures/Python Course - 002a - And so we begin.ipynb @@ -74,15 +74,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "735" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "7*100" + "7*105" ] }, { @@ -100,14 +111,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAuCAYAAAAsnen7AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACIUlEQVRIDe2XMVICMRSGQTkAUFpyBBx7Cr2BIycQSjscKmjxBnoDB2+gBT2jN4DSErkBfv+aZDJh2U2WUt7MY5OX5MvLS7L7qO12u9qxOplMPkPGWe1ImU6nIxDdEHMUGOg1wHUIVb0yGGiT8fL0Q6BQKoMBDYA/hUBbrwQGeAvgzULynslgoB1AbZ65sbWT1HVMUgSg4tr3xijWA1RhWdKerSQZ7AGzolnBikqL8ta2OzBGO7PartB7VMu23jlvsGXCGHl6gyrmL+g7tr/Y2xvD7Xn2yiPqc3Qkm9rQlW2PeTaYpWZmnqlsREuSF/Ja0kb99sxY+GM86vpeGA/37r/fp6ycHTc8/gpmv6P+GtiSqnvnmEl0/7WR7gJga0pTyA0zYM6gGWXd+yG6pexfgDH1xxSwPJaH0o2ZZOMDsKlt6dtiyue9Xu+bjtr1FnoJaLxYLFboA3qBbYfNhYV6lLgLEtU7odPe5iWMLex6ArvwnELhQlHnTZb2bXJDiwunC+Li8w+OG6/QLvrs1nygUCUU+tro/V0oSWA8VZIdJdFghQCi8g1pqUSDIfWBK42KkiiwCUHphvkzloKBdhgQpgM+I7dcCmbUMCUEdpZCMEClqUkhKAWbECi18jMiO670efC1CVAZkNKtUJTe6sgpHVvTLz/1KktHw3Y+DD/oPLSH9cIYh66aurJOaaEcDEU4iiVrE3X0FCKJ8jn9L8n9E/kLdP2UbYB86rYAAAAASUVORK5CYII=\n", + "text/latex": [ + "$\\displaystyle \\frac{x^{4}}{4}$" + ], + "text/plain": [ + " 4\n", + "x \n", + "──\n", + "4 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sympy import * \n", "init_printing()\n", "x = Symbol(\"x\")\n", - "integrate(x ** 5, x)" + "integrate(x ** 3, x)" ] }, { diff --git a/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb b/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb index a7af129..1cc0008 100644 --- a/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb +++ b/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb @@ -103,13 +103,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n", + " 0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n", + " 0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n", + "\n" + ] + } + ], "source": [ "with open('data/inflammation-01.csv', 'r') as f:\n", " snippet = f.readlines()[:3]\n", @@ -198,9 +209,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0. 0. 1. ... 3. 0. 0.]\n", + " [0. 1. 2. ... 1. 0. 1.]\n", + " [0. 1. 1. ... 2. 1. 1.]\n", + " ...\n", + " [0. 1. 1. ... 1. 1. 1.]\n", + " [0. 0. 0. ... 0. 2. 0.]\n", + " [0. 0. 1. ... 1. 1. 0.]]\n" + ] + } + ], "source": [ "import numpy as np\n", "data = np.loadtxt(fname='data/inflammation-01.csv', delimiter=',') # Comma-separated...\n", @@ -220,13 +245,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "type(data)" ] @@ -246,13 +282,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(60, 40)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data.shape" ] @@ -281,11 +328,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'T, __abs__, __add__, __and__, __array__, __array_finalize__, __array_function__, __array_interface__, __array_prepare__, __array_priority__, __array_struct__, __array_ufunc__, __array_wrap__, __bool__, __class__, __complex__, __contains__, __copy__, __deepcopy__, __delattr__, __delitem__, __dir__, __divmod__, __doc__, __eq__, __float__, __floordiv__, __format__, __ge__, __getattribute__, __getitem__, __gt__, __hash__, __iadd__, __iand__, __ifloordiv__, __ilshift__, __imatmul__, __imod__, __imul__, __index__, __init__, __init_subclass__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iter__, __itruediv__, __ixor__, __le__, __len__, __lshift__, __lt__, __matmul__, __mod__, __mul__, __ne__, __neg__, __new__, __or__, __pos__, __pow__, __radd__, __rand__, __rdivmod__, __reduce__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmatmul__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __setattr__, __setitem__, __setstate__, __sizeof__, __str__, __sub__, __subclasshook__, __truediv__, __xor__, all, any, argmax, argmin, argpartition, argsort, astype, base, byteswap, choose, clip, compress, conj, conjugate, copy, ctypes, cumprod, cumsum, data, diagonal, dot, dtype, dump, dumps, fill, flags, flat, flatten, getfield, imag, item, itemset, itemsize, max, mean, min, nbytes, ndim, newbyteorder, nonzero, partition, prod, ptp, put, ravel, real, repeat, reshape, resize, round, searchsorted, setfield, setflags, shape, size, sort, squeeze, std, strides, sum, swapaxes, take, tobytes, tofile, tolist, tostring, trace, transpose, var, view'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "\", \".join(dir(data))" ] @@ -305,13 +363,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0. 0. 2. ... 6. 0. 0.]\n", + " [0. 2. 4. ... 2. 0. 2.]\n", + " [0. 2. 2. ... 4. 2. 2.]\n", + " ...\n", + " [0. 2. 2. ... 2. 2. 2.]\n", + " [0. 0. 0. ... 0. 4. 0.]\n", + " [0. 0. 2. ... 2. 2. 0.]]\n" + ] + } + ], "source": [ "print(data * 2)" ] @@ -336,18 +408,44 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0.],\n", + " [0., 1.],\n", + " [0., 1.]])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data[0:3, 0:2]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 0., 1.],\n", + " [0., 1., 2.],\n", + " [0., 1., 1.]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data[:3,:3]" ] @@ -376,9 +474,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 1.],\n", + " [0., 0., 0.],\n", + " [0., 0., 1.]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data[-3:, :3]" ] @@ -396,28 +507,228 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(6.14875, 20.0, 0.0)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data.mean(), data.max(), data.min()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Why use these methods, especially max and min, when Python has built in ones? Numpy is implemented using, mostly, C libraries for linear algebra - this means that, while Python is slow and heavy as a language, it's not the one doing all the work..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the [numpy](https://numpy.org/doc/stable/user/quickstart.html) docs (look for an equivalent of Python's in-built `range`...) can you compare how long finding a max or min in a _large_ array of ints takes in numpy, versus using the max or min built-in, or a for-loop?" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "hideOutput": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "99999999\n" + ] + }, + { + "data": { + "text/plain": [ + "2.4693245887756348" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "start = time.time()\n", + "biggest = max(range(100000000))\n", + "print(biggest)\n", + "time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "hideOutput": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "99999999\n" + ] + }, + { + "data": { + "text/plain": [ + "9.661295175552368" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "start = time.time()\n", + "# create a max-finding for-loop here\n", + "biggest = 0\n", + "for i in range(100000000):\n", + " if i > biggest:\n", + " biggest = i\n", + "print(i)\n", + "time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "hideOutput": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5991225242614746" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "start = time.time()\n", + "# create a 1e8 length numpy array, and find the max\n", + "my_range = np.arange(1e8)\n", + "biggest = my_range.max()\n", + "time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "hideCode": false, + "hideOutput": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4191734790802002" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ANANSWER\n", + "start = time.time()\n", + "np.arange(1e8).max()\n", + "time.time() - start" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Often you will see this expressed in the Python science community as \"vectorized beats a loop\" - writing code in a way that allows numpy to execute rate-limiting array operations in C, instead of Python, will speed up code significantly." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Extension" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What issues can you see with timing a function this way?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "17.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "data[3].max() # Max inflammation for 4th patient" + "data[3, :].max() # Max inflammation for 4th patient" ] }, { @@ -429,15 +740,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "3.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "data[:,1].max() # Max infl for 2nd day" + "data[:,3].max() # Max infl for 2nd day" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 1., 2., 1., 2., 1., 3., 2., 2., 6., 10., 11., 5.,\n", + " 9., 4., 4., 7., 16., 8., 6., 18., 4., 12., 5., 12., 7.,\n", + " 11., 5., 11., 3., 3., 5., 4., 4., 5., 5., 1., 1., 0.,\n", + " 1.])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data[1, :]" ] }, { @@ -464,13 +809,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,\n", + " 13., 14., 15., 16., 17., 18., 19., 20., 19., 18., 17., 16., 15.,\n", + " 14., 13., 12., 11., 10., 9., 8., 7., 6., 5., 4., 3., 2.,\n", + " 1.])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data.max(axis=0)" ] @@ -511,13 +870,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(40,)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "data.max(axis=0).shape" ] @@ -533,6 +903,13 @@ "This shouldn't be surprising - we take the maximum over all patients for each of 40 days, so we end up with a 40 element array." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise" + ] + }, { "cell_type": "markdown", "metadata": { @@ -560,34 +937,29 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "print(data.mean(axis=0)[:3])\n", - "print(data[:,:3].mean(axis=0))" - ] + "source": [] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 21, "metadata": { - "slideshow": { - "slide_type": "slide" - } + "hideCode": false, + "scrolled": true }, - "source": [ - "# RIGHT\n", - "## Enough text." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "slideshow": { - "slide_type": "notes" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0. 0.45 1.11666667]\n", + "[0. 0.45 1.11666667]\n" + ] } - }, + ], "source": [ - "Programming isn't about writing reams of code, it's about getting stuff done and having fun while doing it. Right? Right. Right. RIGHT.\n", - "\n", - "In any case, when examining data, it's a whole lot more pleasant and efficient to see visualizations, so lets get started with some plotting." + "# ANANSWER\n", + "print(data.mean(axis=0)[:3])\n", + "print(data[:,:3].mean(axis=0))" ] }, { @@ -615,11 +987,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ - "# Switch on the joy\n", + "# Switch on the plotting\n", "%matplotlib inline" ] }, @@ -636,13 +1008,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "import matplotlib\n", "pretty_pic = matplotlib.pyplot.imshow(data)\n", @@ -673,9 +1058,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "import matplotlib\n", "pretty_pic = matplotlib.pyplot.imshow(data[4:7].T)\n", @@ -763,9 +1161,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "import numpy as np\n", "from matplotlib import pyplot\n", @@ -786,7 +1197,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "scrolled": false, "slideshow": { @@ -822,13 +1233,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUcAAADQCAYAAACUXaMkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO2dd1hUx9uG76EIiAgqigUV7BV718Qa0aiJvZdoYhI1MaaZamJ6M9WSaFSsaOy9R2PX2At2RUEQARVBOsz3x1n9jD/KArt7dmHu6zoXcHZ35uHAvntm5p3nFVJKFAqFQvFf7PQWoFAoFNaICo4KhUKRASo4KhQKRQao4KhQKBQZoIKjQqFQZIAKjgqFQpEBDnoLMAZPT0/p4+OjtwyFQpHPOHr0aJSUsmRGj9lEcPTx8eHIkSN6y1AoFPkMIcT1zB5Tw2qFQqHIABUcFQqFIgPMFhyFEOWFEDuFEOeEEGeFEOMN54sLIbYJIS4ZvhYzlwaFQqHILeacc0wF3pJSHhNCuAFHhRDbgBHADinlN0KI94D3gIlm1KFQ5DtSUlIIDQ0lMTFRbyk2gbOzM97e3jg6Ohr9GrMFRyllOBBu+D5WCHEOKAc8B7Q1PG0esAsVHBWmJi0F9v0M1Z8Fr1p6qzE5oaGhuLm54ePjgxBCbzlWjZSS6OhoQkND8fX1Nfp1FplzFEL4AA2AQ4CXIXA+DKClMnnNaCHEESHEkcjISEvIVOQXpIS1r8PfX8CC5+FupguSNktiYiIlSpRQgdEIhBCUKFEix3fZZg+OQogiwArgDSnlfWNfJ6WcKaVsLKVsXLJkhmlICkXG7PoGTi6GRiMgNREW9YWEu3qrMjkqMBpPbq6VWYOjEMIRLTAuklKuNJyOEEKUMTxeBrhtTg2KAsaxBfDPN1B/MHT7GQYshrvXYMkQSE3SW12+Y9WqVQghOH/+vN5STI45V6sFMBs4J6X88bGH1gLDDd8PB9aYS4OigHF5O6wbD5XaQfdfQAjwaQ3Pz4Dre2H1q5CerrfKfEVgYCCtW7dmyZIleW4rLS3NBIpMhznvHFsBQ4H2QogThqMr8A3QSQhxCehk+FmhyBvhp+Cv4VCqFvSbD/aPrUrW7QMdP4UzK2DHZL0U5jvi4uLYt28fs2fPZsmSJWzatIl+/fo9enzXrl10794dgK1bt9KiRQsaNmxI3759iYuLA7Tdb5999hmtW7dm2bJlzJo1iyZNmlCvXj169+5NfHw8AFeuXKF58+Y0adKESZMmUaRIkUf9fP/99zRp0gQ/Pz8++eQTk/1+5lyt3gtkNtDvYK5+FQWQeyHavKKzOwz+C5yL/u9zWr2hPW/fz+BRHpq8aHmdZmLyurMEhRk9nW8UtcoW5ZPutbN8zurVq/H396datWoUL16cEiVKcPDgQR48eICrqytLly6lf//+REVF8cUXX7B9+3ZcXV359ttv+fHHH5k0aRKgpdns3bsXgOjoaF566SUAPvroI2bPns1rr73G+PHjGT9+PAMHDuT3339/pGHr1q1cunSJw4cPI6WkR48e7N69m6eeeirP10DtkFHYNgn3tMCYEg+Dl0HRshk/Twjo8h1U84eN78CFTZbVmQ8JDAxkwIABAAwYMIBly5bh7+/PunXrSE1NZcOGDTz33HMcPHiQoKAgWrVqRf369Zk3bx7Xr/9/BkH//v0ffX/mzBnatGlD3bp1WbRoEWfPngXgwIED9O3bF4BBgwY9ev7WrVvZunUrDRo0oGHDhpw/f55Lly6Z5PezCeMJhSJDUpNg6RCIvgxDVoBX1nc62DtAnzkQ8CwsHwkj1kO5RpbRakayu8MzB9HR0fz999+cOXMGIQRpaWkIIZg7dy7Tpk2jePHiNGnSBDc3N6SUdOrUicDAwAzbcnV1ffT9iBEjWL16NfXq1SMgIIBdu3ZlqUNKyfvvv8/LL79syl8PUHeOCltFSlgzDoL3wHNTodLTxr2ukCsM+gtcPWFxf7hzzbw68ynLly9n2LBhXL9+neDgYEJCQvD19cXBwYFjx44xa9asR3eEzZs3Z9++fVy+fBmA+Ph4Ll68mGG7sbGxlClThpSUFBYtWvTofPPmzVmxYgXAfxZ/OnfuzJw5cx7NYd68eZPbt02TAKOCo8I2+fsLOP0XtP8I6g3I2WuLlILBK7RdNIv6QPwd82jMxwQGBtKzZ8//nOvduzdLliyhW7dubNq0iW7dugFQsmRJAgICGDhwIH5+fjRv3jzT1J/PP/+cZs2a0alTJ2rUqPHo/M8//8yPP/5I06ZNCQ8Px93dHYBnnnmGQYMG0aJFC+rWrUufPn2IjY01ye8obKFudePGjaXyc1Q84shcWP8GNBz+/yk7ueH6AZj/HJRtAMPWgKOzaXWakXPnzlGzZk29ZViM+Ph4XFxcEEKwZMkSAgMDWbMmZ1mAGV0zIcRRKWXjjJ6v7hwVtsXFrbDhLajSCZ79MfeBEaBiC+j5O4QchFUvqxxIK+bo0aPUr18fPz8/pk+fzpQpU8zep1qQUdgOYcdh2QgoXQf6BmgLLHmlTi+4fxO2fgTbvKHzl3lvU2Fy2rRpw8mTJy3apwqOCtvg7nVtAaVwCRi0DJyKZP8aY2kxTsuBPDAV3MtD81dM17bCZlHBUWH9JNzVchlTE2H4OnDzMm37QoD/19od5Ob3wL0c1Oxu2j4UNoeac1RYN6lJsGSwZh4xYDGUrG6efuzsodcsLe9xxYsQ8q95+lHYDCo4KqyX9HTNLOL6Ps08wqe1efsrVBgGLQW3MhDYH6KvmLc/hVWjgqPCetnxqWYW0XGyZh5hCVw9td02UsLC3vAgyjL92iBCCIYOHfro59TUVEqWLPkov9HWUcFRYZ0cngX7foHGo6DVeMv2XaKydgcZG64tAiXHW7Z/G8HV1ZUzZ86QkJAAwLZt2yhXrpzOqkyHCo4K6+P8Rtj0LlTroplF6OF4Xb4p9P4Tbh6FlS9BunV5DVoLXbp0YcOGDYC2a2bgwIGPHjt8+DAtW7akQYMGtGzZkgsXLgDw448/MnLkSABOnz5NnTp1HlmTWRNqtVphXYQe1UwhytSHPrNNk8uYW2p2B/9vYPNE2Pw+dPlWn0CdHZveg1unTdtm6brQJXur1QEDBvDZZ5/RrVs3Tp06xciRI9mzZw8ANWrUYPfu3Tg4OLB9+3Y++OADVqxYwRtvvEHbtm1ZtWoVX375JX/88QeFCxc2rX4ToIKjwnq4cw0W99P2Pg9aqplE6E3zV+DeDTg4TfOBbPma3oqsCj8/P4KDgwkMDKRr167/eSwmJobhw4dz6dIlhBCkpKQAYGdnR0BAAH5+frz88su0atVKD+nZooKjwjp4EK0tgMg0bUGkSIZFKfXhmS/gfqi2i8bdG2r3zP41lsSIOzxz0qNHD95++2127dpFdHT0o/Mff/wx7dq1Y9WqVQQHB9O2bdtHj126dIkiRYoQFhamg2LjUHOOCv1JSYAlAyEmFAYuAc+qeiv6L3Z20PMPKN8MVr6sGVYoHjFy5EgmTZpE3bp1/3M+Jibm0QJNQEDAf86PHz+e3bt3Ex0dzfLlyy0p12hUcFToS3o6rBwNIYeh10yo0FxvRRnj6KIFbo/yEDgAokzjNp0f8Pb2Zvz4/80oePfdd3n//fdp1arVf4pnTZgwgTFjxlCtWjVmz57Ne++9ZzIPRlOiLMsU+rL5A20+r/NX0GKs3mqy5841+LOjNh/64nbdhv8FzbLMFCjLMoXtcHCGFhibvQLNx+itxjiK+2pO4nG3tcWj5Ad6K1KYCRUcFfoQtFZLj6nRTbtrtMYUmczwbgR950L4SS3tKC1Vb0UKM6CCo8Ly3DikJVZ7N9YSre3s9VaUc6obEtQvboZN72jbDRX5CpXKo7As0Ve0BY2iZbUFDkcXvRXlnqYvQUyIts3RvTy0eVNvRQoTooKjwnLERWq5jELA4OWayYOt0+FTiLkJOyZrAdKvr96KFCZCBUeFZUiO1+4YY29p9aJLVNZbkWmws4Pnp2u/15oxULSM+a3VFBZBzTkqzE96mmYge/OoNsfonWHmhO3i4AQDFkIxX1gyCG5nXHY0v5GdZdnatWv55ht9d+/kBRUcFeZFSq30wIUN2gJGzfzh9fc/uBSDIcvBwVmrhR17S29FZic7y7IePXrw3nvv6SUvz5gtOAoh5gghbgshzjx27lMhxE0hxAnD0TWrNhT5gANT4fBMzbCh2Wi91ZgXjwpaDmT8Ha3mTVKc3orMTlaWZQEBAYwbNw6AESNG8Prrr9OyZUsqVapktVsGH8ecc44BwFRg/hPnf5JS/mDGfhXWwpmVmllD7Z7Q8TO91ViGsvWh3zzNJHfZCG1F3sy2a98e/pbzd0w7lK9RvAYTm07M9nlZWZY9SXh4OHv37uX8+fP06NGDPn0s5O6eS8x25yil3A3cMVf7Civn+gFY9TJUaAHP/64tXBQUqnaCbj/C5W2wYUK+zoHMyrLsSZ5//nns7OyoVasWERERFlKYe/RYrR4nhBgGHAHeklLezehJQojRwGiAChUqWFCeIs9EXtRWpj0qahUDHZ31VmR5Go3QamHv+UEbbj/1jtm6MuYOz5xkZln2JE5OTo++twVPB0t/nM8AKgP1gXBgSmZPlFLOlFI2llI2LlmypKX0KfJKbAQs6g32jtoCReHieivSj/Yfgd8A+PsLOLlEbzVmIzPLMlvHoneOUspH99JCiFnAekv2rzAzyQ80M4YHUTBiAxTz0VuRvggBPX6D2DBYMxbcSkOltnqrMjmZWZbZOma1LBNC+ADrpZR1DD+XkVKGG76fADSTUg7Irh1lWWYDpKVqOX6Xt8GAQKjur7ci6yExBub4a2a+IzeDV+08N6ksy3KO1ViWCSECgQNAdSFEqBBiFPCdEOK0EOIU0A6YYK7+FRZEStj4NlzaAl1/UIHxSZzdYfAyzQNyUV9tu6HC6jHbsFpKOTCD07PN1Z9CR/b+BEfnQusJ0GSU3mqsE3dvLUDO6aJNPbywCZyL6q1KkQUFKL9CYRZOLdNMF+r0gfaT9FZj3ZSuq+VARp6Hv4ZBWoreihRZYNSdoxDCCegN+Dz+GillAcnsVWTItd2w+lWo2FozXyhIuYy5pUoH6P6rZlKx9nXtuuXS6FdKibAlk2Adyc3airHD6jVADHAUSMpxL4r8x+1zsGQIFK+kmS44OGX/GoVGg8GaD+Sur7UcyHbv57gJZ2dnoqOjKVGihAqQ2SClJDo6GmfnnOXbGhscvaWUapZdoXE/HBb20ZK7hyzXTBcUOePpiVqS+D/faPORDYdm/5rH8Pb2JjQ0lMjISDMJzF84Ozvj7e2do9cYGxz3CyHqSilP51yWIl+RFAuL+0LCXXhho3bno8g5QkD3n7UcyHXjNR/IKh2NfrmjoyO+vr5mFKgwdpKoNXBUCHFBCHHqsXQcRUEiLQX+Gg4RQdBvvmayoMg99o7Qdx6UqqVd13D1lrImjA2OXYCqwDNAd6Cb4auioCAlrH8DruyAbj9BVePvcvQgJS2dP/dc5Xq0lZdOdS4Kg//SciEX99OG2gqrwKjgKKW8DnigBcTugIfhnKKgsPt7OL5QM1BoNFxvNVmSmpbOG0tP8MWGc7yy8BjJqel6S8qaomW1mjrJ8VqSeMI9vRUpMDI4CiHGA4uAUoZjoRDiNXMKU1gRJxbDzi+h3kBo96HearIkLV3y9rKTbDgVTo96ZTkXfp9fdlzUW1b2eNWC/gsg+jIsHQKpyXorKvAYO6wehbYPepKUchLQHHjJfLIUVsOVnbD2NfB9WsvPs+K0kfR0yXsrTrH6RBjvdK7OrwMb0LeRNzN2XeHYjQyd8ayLSk/Dc9MgeA+sHZevfSBtAWODowDSHvs5zXBOkZ+5dQaWDgXP6tpdjUMhvRVlipSSj9acYdnRUMZ3qMrYdlUAmNS9FmXcXXj7r5MkJKdl04oVUK8/tP8YTi2Fvz/XW02BxtjgOBc4ZKgB8ylwELVPOn8Tc1Ob/3Jy0/YEO7vrrShTpJRMXhfE4kM3eLVtZd7oWPXRY27Ojnzf14+rUQ/4drONVAVs85ZmlrtnChyZq7eaAouxCzI/Ai+glT24C7wgpfzZnMIUOpIYYygQFasFRvdy2b9GJ6SUfLXxHAH7g3mxtS/vdq7+PztGWlb2ZERLHwL2B7PvcpROSnOAENB1ClR9Bja8CRe36q2oQJJlcBRCFDV8LQ4EAwuBBcB1wzlFfiM1WRtKR12A/vOhdB29FWVKerrkyw3nmLXnGsNbVOTDZ2tmupVuon8NKnm68s6yk9xPtAHDB3sH6DNXM6tYNhxuHtNbUYEjuzvHxYavR9Fqvjw8Hv6syE9ICeteh2v/aA7WldvrrShTklLTeGPpCf7cqwXGT7rXznKPsUshe6b0q8et+4l8ti7IgkrzgFMRGLQMCntq1QzvBuutqECRZXCUUnYzfPWVUlZ67PCVUlayjESFxdj5FZwM1NJ16g/SW02mxCam8MLcf1l7Mox3/avzaY/a2Nllvz7YoEIxxrStwvKjoWw9e8sCSk2Am5e2fz0tSZvqiFcFPS2FsXmOO4w5p7Bhjs2H3d9Bg6FmrZSXVyLuJ9Lvj4McvnaHKX3rMaZtlRy50rzeoSq1yhRl4opTXImMM6NSE1KyulZ64m4wLBkMKYl6KyoQZDfn6GyYW/QUQhQTQhQ3HD5AWUsIVFiAS9th3RtQuYO2NdBKcxkv346j1/T9XI9+wOwRTejdKGcuKwCFHOyYNrgh9naCIX8eIvRuvBmUmgGfVvD8DLixX/PQTLfyXT/5gOzuHF9Gm1+sYfj68FgDTDOvNIVFCD+pTfh71dJcqu0d9VaUIUev36HP7/tJSk1j6egWPF0t9+V6fT1dmT+yGQ+SUhny5yEiY23EorRuH+g4Gc6uhO2f6K0m35PdnOMvUkpf4O3H5hp9pZT1pJRTLaRRYS7u3dDmsZw9tIl/Jze9FWXI4Wt3GPznIYoVLsTKV1tR1zvvOZe1yhZl7gtNibifxNDZh4iJt4EVbIBW46HJi7D/Vzg8S281+Rpj8xx/E0LUEUL0E0IMe3iYW5zCjCTc1QJjSqI24V+0jN6KMuR0aAwjA/6lnIcLy15pQYUShU3WdqOKxZg1rDFXIx8wIuAwD5JSTda22RAC/L+Fal1g07twfoPeivItxi7IfAL8ZjjaAd8BPcyoS2FOUpO0EgfRV7QSB6Wss/7xpYhYhs05hLuLIwtfbIZnEdOXYmhd1ZNfBzbgVGgMoxccITHFBrYY2jtAn9lQpj4sHwWhKqvOHBi7fbAP0AG4JaV8AagHqKIhtkh6OqweA9f3asWdfJ/SW1GGhNyJZ8jsQzjY27HoxWaUcXcxW1/+dUrzXW8/9l2O5rXA46Sk2cBiRyFXGLQUipTSciDvXNVbUb7D2OCYIKVMB1INu2ZuAyrP0Rb5+zM4sxw6TAK/fnqryZCI+4kM/vMQiSnpLBjVFB9PV7P32buRN5N71GZbUARvLD1Bqi0EyCKlYMgKkGlaTZ8H0XorylcYGxyPCCE8gFloq9XHgMNmU6UwD//Ohr0/aaYGrd/UW02G3H2QzNDZh4iOS2LeyKbUKG25wvfDW/rwQdcabDgVzutLbOQO0rMqDFwCMaEQOABSEvRWlG8wdkFmjJTynpTyd6ATMNwwvFbYChc2w8a3oWpnzdTACnMZYxNTGD73MMHR8cwa3pj65T0srmH0U5X56NmabDx9i3GLbcBFHKBCc+g1E0L/hZUvQboNzJvaAEZXYRdC+AkhegANgSpCiF7mk6UwKTePwvIXoLQf9JmjTehbGalp6YxZdIyzYfeZPqghLSt76qblxTaVmNStFlvORjDWVgJk7eeh85dwbh1s/UhvNfkCo94lQog5gB9wFnj4nyKBlWbSpTAVd4O1CXtXTxj0l2ZmYIV8seEcey5F8U2vunSs5aW3HEa29sXBXjBpzVleXXiU6UMa4uRgr7esrGk+RstdPTgd3MtDizF6K7JpjL2FaC6lrJWThg0BtRtwW0pZx3CuOLAU8EGzQOsnpbQB/3obJf6ONlGflgIjNmomBlbIgoPXH/kxDmhqPXWwh7XwwU4IPlp9hlcWHGXGkEY4O1pxgBQCOn+lzT9u+UDz4az1nN6qbBZjh9UHhBA5Co5AAOD/xLn3gB1SyqrADsPPCnOQkgiBA+HedRgYCCWr6a0oQ/ZeiuLTtWdpV70k73e1vnzLIc0r8lXPuuy8EEn/Pw7w8/aLbAuK4Oa9BKQ11nixs4fef4J3Y1g5Gm4c0luRzSKM+QMLIZ4C1gG3gCS0+jFSSumXzet8gPWP3TleANpKKcOFEGWAXVLK6tn137hxY3nkiEp0NZr0dG2OMWi1NsdYp7feijLkamQcz0/bR2l3Z1a82hI3Z+vc1w2w8lgoU3de5lrUg0d1rzwKO1KrTFHqlHNnVGtfvIo66yvycR5EwexOWpnXUdvAs4reiqwSIcRRKWXjDB8zMjheBt4ETvP/c44P61ln9Tof/hsc70kpPR57/K6Uslgmrx0NjAaoUKFCo+vXVZlso9nyIRyYCp0+h1av660mQ2LiU+g5fR/3ElJYM7YV5YubblugOYlPTuVceCxB4fcJCovhbNh9zoXfp563B0tfboG9Eb6SFiP6ihYgndxg1HYoknuzjvxKVsHR2DnHG1LKtSbUlC1SypnATNDuHC3Zt01z6A8tMDYdDS2ts7R4Slo6YxYfJeRuPItfam4zgRGgcCEHGlUsRqOK//+ZvuJoKG8tO8n8A8G80MpXP3FPUqKytggX0A0C+8Pw9VDIdq613hg753heCLFYCDFQCNHr4ZGL/iIMw2kMX2/nog1FZpxbD5smQvVnwf8bq8llTElL51ZMIqdDY/j7fATvLj/FvsvRfNWzLk18bL8UUa+G5WhbvSTfbb7AjWgr84f0bqzNQd48BiteVDmQOcDYO0cXtLnGZx47l5tUnrXAcOAbw9c1OXy9IjNC/oUVo6BcQ+3NYKfvqurak2FM33mZyNgk7sQn/099+jFtK9O3cXl9xJkYIQRf96rLMz/uZuKKUyx6sZlRZRssRs1u0OU72PSO9uHZ9Xur+eC0ZowKjrnZDSOECATaormIhwKfoAXFv4QQo4AbQN+ctqvIgOgr2rDJrTQMXKr70OlEyD3e/usklUq60rlOaUoWcaJUUSfDV2e8ijqZ1UhCD8q4u/DBszV5f+VpAv+9weBmFfWW9F+ajdYyFw5MBY8KVjsXbU0YmwTuC7yGlp/46DVSykxty6SUAzN5qEMO9Cmy40EULOqjVQ4cslL3Sfc7D5IZu+gYJd2cCHypOcVcC+mqx5IMaFKe9afC+HrjedpWL0U5j8w/ACJjkyjhWsiyd5idPof7N2Hbx1oOpJVmMVgLxs45rkZL2v4NmPLYodCTlATNbOB+mGZfVaKyrnLS0iXjlxwnMjaJGUMaFqjACNrw+ptefqRLyfsrT2eYBxl2L4E3/zpB06+288uOS5YVaGcHz/8OFVrAqlfg+n7L9m9jGBscE6WUv0opd0op/3l4mFWZImvS07QJ9tAj0GsWlG+qtyJ+2XGJPZeimPxcbfy8LW8aYQ2UL16Y97rUYPfFSJYfDX10/n5iCt9tPk+7H3ax/lQ4FYsXZu6+a8RZ2n3c0RkGLAaPitomgcgLlu3fhjA2OP4ihPhECNFCCNHw4WFWZYqs2fIhnF+vbRerpb8p+87zt/l1xyX6NPJmQJP8sdCSW4Y0q0hT3+J8vj6I0LvxzNsfTNvvdzF91xW61CnN3289zU/963M/MZUlh29YXmDh4lppDHtHbXtpbITlNdgAxiaBfw0MBa7wmPGElLK9GbU9Qu2QeYID07S9s83HgP/Xeqsh5E483X7bS1kPF1a+2hKXQla8/9hCBEc9wP+X3aSnQ3JaOi0qleCDrjX/Uxys/x8HuHEnnt3vtsPR3miDLNNx8xgEPKt5Qo7YaLWmJOYkqyRwY/8iPYFKUsqnpZTtDIdFAqPiCc6u1u4aa/aAZ77UWw2JKWmMWXSMdCmZMbihCowGfDxdmdyjNnXKFWXOiMYsfqnZ/1RNfKVtZcJjEll7IkwfkeUaQp+5cOu0tt00zQYKjFkQY4PjSaBgTiJZEzcOamYC5Ztq5qZ2pr3bCLkTT1Kq8UnCUko+XXuW0zdjmNK3nkXKGdgS/ZtUYOWYVrSv4YXIIK+wbbWSVPdy44/dV/QzsajuD11/gEtbYeNb/E9CagHG2HeXF9oumS1CiLUPD3MKUzxB1GVtZdrdGwYEgqNp8wRD7sTT7oddPDd1H+dv3c9eTlwSIwP+Zcm/IYxpW5lnapc2qZ6CgBCCl5+uxMWIOHZdiNRPSJNR0HoCHA2AvT/qp8PKMHaHzCdmVaHImrhIWNQbhL02ke5awuRdrD5+k9R0SWRsEj2m7mOifw1eaOmTYR7e7ouRvPnXSe4npjC5R22GtbCyhGcbonu9svyw5QK//3OFdjVK6Sek/STNB3LHZ5pRrpUWX7MkxtaQ+Sejw9ziFEDyA233S2yEZiJQ3PRFH6WUrDpxk2a+xdky4SmequrJ5+uDGDrnEOEx/1+wKTk1na82nmPYnMMUK+zImrGtGN7SJ8Mho8I4HO3tGNWmEoeu3eH4DR19n+3s4Llp4NNGK917Vb29jQqOQojmQoh/hRBxQohkIUSaECL7sZcib6SnaUXbw45rRdy9G5mlm9M3Y7ga+YCeDcrhWcSJWcMa83Wvuhy7fg//n/ew4VQ4VyPj6DVjHzN3X2VwswqsHdeammUsVxkwPzOgSXncXRz54x+da087OEH/hdpmgqVDISJIXz06Y+yc41RgIHAJzYTiRcM5hbmQEja9Cxc3aaYBNZ41W1erj4dRyN6OLnXLANpc2MCmFdg4vg0+nq6MXXyMzj/vJvRuAn8MbcSXPeuqVWkT4urkwNDmFdkSdIurkXH6inHxgMHLtGTxRX3hfri+enTE6OVOKeVlwF5KmSalnItmKqEwF/t/hX//hJavQ9OXzNZNalo6a0+G0b5GKdxd/uvE7evpyvJXWjChYzU61vRi0/g2dFYLL2ZheEsfHO3tmLXnmt5SNGOKwcsg8R4s7gtJsXor0gVjg2RQJ28AAB9QSURBVGO8EKIQcEII8Z0QYgKg8jbMxenlsG0S1O4FHSebtat9V6KJikvi+QblMnzc0d6O8R2rMmNIo3znpGNNlHRzok8jb1YcC+V2bKLecqBMPeg7Txta/zVcK9JWwDB2tXooYA+MAyYA5QFl6WEOgvfB6lehYit4fobJcxmfZPXxmxR1dqBdDWWhrzej21Qi8PANpu+8Qje/MtyOTSLyseNufDL9Gpe3XOnaqh2h+8+w9jVY/wb0mFqgfCCN9XN8WMAlATDvrUxBJvICLBkIxXy0iXFH8xZsik9OZcvZWzxXv6z112QuAPh4utKlTmkC9gcTsD/40Xl7O4FnEc3haNu5CD7oUpMX2/haJkug4TC4FwK7v9PMKp5+1/x9WglZBkchxGk0x+8Mya76oCIHxN7STAAcnGHwcs0cwMxsC4ogPjmN5+tnPKRWWJ7JPerQqZYXJVydKOmmHcUKF8LeTpCQnMZby07w5cZzXIt+wOQetS2zJ7vdBxATAju/1DYh1B9k/j6tgOzuHPui3S0qzElSHCzuB/HR8MIGKGaZpOpVx29SzsMlX9RxyS+UdHOiZwPvDB9zKWTP1IEN+b7EBWbsukLInXimDW5IUXOXtBUCuv8KseHaENutNFTO/9YK2X3sLDYMqb+QUl5/8rCEwHxPWqq26f/WGegbAGUbWKTbqLgk9lyKokf9stZV70SRJXZ2gon+Nfi2d10OXImmz4z9hNyxQFEvh0LQbz54VoelwzSzinxOdsGxkBBiONDy8aqDeag+qHgcKWHDm9qm/2enQLVnsn+NiVh/Moy0dEnPTFapFdZN/yYVmDeyKeExifScvs8yu2uc3bUUHyc3WNQPYm6av08dyS44vgI0R3Pk6f7E0c280goAe6bAsXnQ5i1onOMaZnli1YkwapUpSjUvN4v2qzAdrap4smqM5p/Z9/cDfLXxHLGJZk65cS+nBcjkOK12UWKMefvTkSyDo5Ryr5TyVeBdKeULTxwjLaQxf3JyKfz9Ofj1h/YfW7Tra1EPOBlyj+cblLVovwrTU6WUG2vGtqZng3LM3H2V9lP+YeWxUPNaoJWuow2xoy5q2wxTk83Xl44YazwxWwjRUggxSAgx7OFhbnH5lqv/wJqx2iZ/HXLHVh+/iRDQo54aUucHirsW4vu+9Vg1piVl3Z1586+T9Pn9AGdumvGurnI76PEbXPtHW6TJhz6QxpZmXQBUBk4AD91QJTDfTLryLxFBsHQIlKii5TI6WLZCn5SS1Sdu0rJyCUq7mzePUmFZGlQoxqoxrVh+NJRvN5+n+9S9DGhSgefrl6VCicJ4uTmbdvGt/iDN5mznl+BRHtp/ZLq2rQBjd8g0BmpJ3eyK8wn3w7XN/IVcNV9GF/OYq8cmprDuZDjJqWkUcXbEzdlBO5wcCYtJ4Hp0PGPbVTFL3wp9sbMT9GtSns51SvPL9kvMOxBMoKGIVyEHO8oXc6FC8cJUKF6YhhWL0aNe2bwlkz/1Dty7Abu/13IgG40wye9hDRgbHM8ApYGCa9GRVxLva4Ex8R68sEn7RzIxMQkpzNsfzOy914hJyHxi3snBDv86ykAiP+Pu4sik7rV4+elKXLgVy4078YTcieeG4TgSfJd5B65zMiSGj7vVzH2AFAK6/aTVTl//JhQtB1U7mfaX0Qljg6MnECSEOAwkPTwppdS/JqgtkJYCfw2D20HaSl8Z024siolPYc6+a8zZd43YxFQ61izFuPZVKV/MhbikVGITHx4pxCamUr54YfMnDiusAq+izngV/d/pk/R0yWfrg5iz7xrxyal82bMu9rkdcts7Qr95MLerZlLxwkYoWz+PyvXH2OD4qTlF5GukhHVvwNWdmtNylQ4ma/p2bCILDlwnYF8wsUmpPFPLi9c7VKVOuf+vcleiiJPJ+lPkH+zsBJ90r0URJwem7rxMfHIaU/rVy/12RCc37YP/z47abq8Xt2vWZzaMscYTyjM9t/zzLZxYCE+/Bw2G5Lm50LvxbD5ziy1nb3Hk+l2khC51SvNa+6rUKqucuRXGI4Tg7c7VcXVy4NvN54lPTmPqoAY4O+bShMSttBYgZ3fWfAJGbQGXYqYVbUFEVmssQohYMjaeEICUUubq3SiECAZi0Va+UzMrqv2Qxo0byyNHjuSmK305vlBL2ak/WLtrzOW8zo3oeNafDmPzmVucCtXSM2qUdsO/Tmm6+ZWlSqmCV4xdYVrmHwhm0pqztK7iycxhjShcyNhBZQZc2wMLekL5ZjB0pVZ+wUoRQhzNLP5kGRzNhSE4NpZSRhnzfJsMjpd3aMMLnzbap6l97ub4ztyModf0/SSnpVPP2x3/OmXwr1MaX1UjWmFilh8N5d3lJ2lQoRhzX2iSt3npU8tg5YtQpw/0mmV2X9LcklVwzMPHgyJTbp3WJqZL1tB2EuQyMKakpfPu8lO4F3Zk5astKV+8sImFWhe3HtxiZ8hO0mW6SdpztHOkU8VOFHO23aGdJenTyJvChex5PfA4n6w5y0/987Co4tdXsznbMVnLgez4qalkWgy9gqMEtgohJPCHlHLmk08QQowGRgNUqGBDE7sxoVrKjnNR7Y7ROffzgDN3XyUo/D6/D2mU7wNjVEIUwzcNJ+xBmEnbXXZxGQH+Abg6qjttY+hatwxnbsYwfdcVhraoSMMKefhgaT1By4Hc+5NWC7vJKNMJtQB6DavLSinDhBClgG3Aa1LK3Zk932aG1Qn3YI4/3L8JIzeDV+1cN3X5dhxdf9lDp1peTBvc0IQirY/4lHhGbB5B8P1gfu/4O5XcTVOb+9jtY7y5602al2nObx1+w9FOpS8ZQ1xSKu1/2EUZDxdWvdoyb7tq0lJhySC4vA0GBEJ1f9MJNQFZDat1mQiQUoYZvt4GVgFN9dBhUlKTtW2B0Zeh/4I8Bcb0dMnEFadwKWTPpz1y344tkJqeytv/vM2Fuxf44ekfaOjVEA9nD5Mc7Su05+PmH7MvbB9fHPzCvGYM+YgiTg5M9K/ByZB7rDqeR1syewfoMwdK+2m+pTePmkakBbB4cBRCuAoh3B5+DzyDtgPHdpES1o6D4D3w3FSo1DZPzc0/EMzR63eZ1K0WJd2sd6Uvr0gp+fLQl+y5uYcPm33IU95PmbyP3tV6M9pvNCsvrWTmqf+ZvVFkQs8G5ahX3oNvN58nLik1b405FYFBf4GrJyzuD3eDTaLR3Ohx5+gF7BVCnAQOAxuklJt10GE6/v4CTi2Fdh9BvQF5airkTjzfbbnA09VK0qth/nbNmX1mNssvLufFui/Sr3o/s/Uzrv44ulfqztQTU1l7Za3Z+slPPEwSvx2bxPSdl/PeoJsXDF6h7RZb2Afi7+S9TTNj8eAopbwqpaxnOGpLKb+0tAaTcmQu7PlBq9L21Nt5akpKyQerTiOAL3vWsUx1OZ1Yf3U9vxz7ha6+XXm9wetm7UsIweSWk2lWphmf7PuEA2EHzNpffqFhhWL0alCOP/dc40a0CUoxlKwGA5doizSBAyHFCupzZ4F1Jh/ZChe3woa3oEpHePanPPsyrjh2kz2XopjYpQbexfLv6vTh8MN8vO9jmpRuwuetPrfIh4CjvSM/tf0JH3cfJuyawIU7F0hLTzPZkV+Z2KUGDvaCLzcGmabBii2g5+8QchBWvQzppknbMgcqzzG3hB2HZSO0hZe+AdrEcy5JS5fcuBPP5+uDaOJTjCHNLFN9UA8u373MGzvfwKeoDz+3+5lC9pbzs3Qr5MaMjjMYvHEwfdb1MVm7dsKOMfXG8HK9l03WprXgVdSZse2q8P2WC+y7HEWrKp55b7ROLy2jY+tHsM0bOlvn4FEFx9xw97o2sVy4+P8XHDKChOQ0AvYHczUyjsi4JCJjk7gdm0R0XBLpUvPb+6a3X76tBng7/jav7ngVZwdnpneYTtFClt8LXtq1NAGdA9gUvMlkyeZno84y9cRUShYuSa+q+a/u3KjWviz59wafrQtiw+utcTBFrewW4+BeCByYqhlUNLO+DxYVHHNKwl0tyTs1EYat1TbbG8GliFjGLj7GxYg4Shd1plRRJ0oXdaZuOXdKujlRys2JRhWLU7lk/twn/SDlAWN3jOV+0n3mdZlHmSJldNNSvmh5RvuNNll7KekpjNsxjs8OfEapwqVoXa61ydq2Bpwd7fmway1eWXiUwMM3GNrCJ++NCgH+X2t3kJsmaj6QNa2rZp8uSeA5xWqSwFOTtA31of/C0FXgk/2bQErJsiOhTFp7hiJODvzYrz5PVStpAbHWw8PgcSj8ENM6TKNVuVZ6SzI5cclxjNg8gpDYEAL8A6hZoqbekkyKlJLBfx7iyPW7dKrpRTe/MrSrUSpTB5+E5DT2Xo5ie1AEsUkp/NC3XsZmFsnxMK87RJyB4euhfBMz/yb/xeqMJ3KKVQTH9HRtI/2ZFdB7NtTNfs4qLimVj1adZvWJMFpWLsHPA+pTyq1g1W2RUjJp/yRWX17NZy0/o2fVnnpLMhu3428zeONg0tLTWNR1ka53x+Yg4n4iU/++zKYz4UTFJeNayJ5OtbzoXq8sbaqW5F58MjvO32bHuQj2XIoiKTUdNycHHiSn0qVOGaYOapDx4tuDKM0HMuk+jNoGJSpb7HdSwdEUbJsE+37RNtC3npDt08/cjOG1wONcj37AhI7VGNOuSu6dlm2YGSdnMP3EdF6p9wpj64/VW47ZuXz3MsM2DaNU4VLM7zpfl3lVc5Oals6ha3dYdzKMTWduEZOQgmshex4ka6v25Txc6FTLi061vGjiU5y5+67x9abzvNO5eua1i6KvwOxO4OyuBUhXEyz8GIEKjnnl8CzY+DY0HgXPTsk2ZWfRoetMXhtEcddC/DKgPs0qlbCQUOti9eXVfLzvY3pU7sEXrb7I13mbj3M4/DAvb3+ZBqUa8HvH3y26Im9pklPT2Xs5km1Btynn4UzHWl5U93L7z99aSsn4JSdYdyqM2cMb076GV8aNhRzWhtil68LwdeDoYnb9KjjmhQubtI3zVZ+B/ouyTNlJTk1n8rqzLDp0g6erleSn/vUp7mobb4yUtBT+PP0nEfERJmkvTaax/sp6GpduzPQO03HMpW2brbL+6nre3/M+DUs1xNfd1yRtOtg50K96P6oVq2aS9ixJQnIaff/Yz/WoeFaNbZW5QfO5dbB0KNR4VrP7s8ulK7mRqOCYW24ehbnPQqkaMGKDVlI1E6Ljknh10TEOX7vDK09X5p3O1W1mGC2l5MO9H7Lu6jo8XTwRmEZ3FY8q/Nj2R4oUyp8r8NmxMGghc8/ONZnhRVxKHC4OLizqughvN9NXrzQ3N+8l0OO3vbi7OLJqbCvcXTL5wDz4O2yeCM1ehS7fmFWTCo654c41bQ7EsbBWLKhIqUyfGhR2n5fmHyEqLolve/vxfAPb2hP92/HfmHlqJuPqj8uXicz5hasxVxm6cSjFnYuzsOtC3J3cs3+RlXH42h0GzTpIm6qe/Dm8SeY3EJs/gIPToPNX0MJ8c9VWZ1lm9cTfgUV9ID0VhqzIMjBuOh1O7xn7SUuXLHulhc0FxhUXVzDz1Ex6V+1t0tw/hemp5F6JX9v/ys24m7z+9+skpSVl/yIro6lvcT7tUZudFyKZsvVC5k985guo2QO2fAhnV1tO4GOo4PgkKQkQOEDL3h8QCJ5VM3xaerrkx20XeXXRMWqUcWPtuFb4eXtYWGze2BO6h88Pfk6rcq34sPmHBWbBxJZp5NWIr1p/xbHbx/hw74cm2+VjSYY0r8jAphWYvusKa05k4hdpZwe9ZkL5prByNFy3vFmICo6Pk56u/SFCDkOvP7RN8hkQE5/CqHn/8uuOS/Rp5M2S0c0plUHhdGsmKDqIt/55i2rFqjHl6SnKJduG8Pf1561Gb7EleAs/Hf1Jbzm5YnKP2jT1Lc7by06y/3ImdfYcXTQXH4/ysGQgRF2yqEYVHB9n60dwbq12S18742TlMzdj6DZ1D3svR/H5c7X5vo8fTg7mXVEzNWFxYYzdMRYPJw+mdZim6qvYIMNrD2dgjYEEnA1g8bnFesvJMYUc7Jg1tDG+nq68vOAo58LvZ/zEwsVh8HIQ9rCwN8TdtphGtSDzkIMzYPN70OwV8P8mw1zGv46E8PHqMxQrXIjpQxrmrfhQDoh4EMHdpLsmaSs1PZUP935IZEIkC7osoLKH5XYjKExLWnoaE3ZNYFfILia3nGyyLYt2wo4qHlWwE+a/dwq7l0Cv6fuRSFaOaUU5j0xyG0OPQoBxmSM5Qa1WZ0fQWvhrWKa5VUmpaXy6NojAwzdoWbkEvw5sgGcRy5Qv2BWyizd2vkGaNJ1noKOdI390+oMmpS27j1VhehJSExi1ZRSno06btN0OFTow5ekp2Js5zxDgwq1Y+vy+H6+izix/pQUehTPJDT6/EZYONirn2FhUcMyKG4dgfg8tK3/YWij0X5PZ0LvxjF10jJOhMbzatjJvdapmGssmIzgTdYaRW0ZSyb0SL/m9ZLJ2fYv6UsnDNBX+FPoTnxLP4VuHTfYBejbqLLNOz2JwzcFMbDLRIgt1B69GM2z2Yfy83Vn4YrNMDS1yulstO7IKjgXbsiz6irYyXbSsNvH7RGDceDqc91acQkr4Y2gjOtc2zp7MFITEhjB2x1iKOxdnaoepeLpYZq+pwvYo7FiYtuXbmqy9DhU6kJCawMJzCynrWpZhtYeZrO3MaF6pBD/1r8+4wGOMX3Kc6YMbZZwD2fQliAnRfA48yhvlc5BbCm5wjIvUJniF0CZ8H9voHp+cymfrgljybwj1ynvw64D6VCxhuUWLe4n3GLN9DGkyjRkdZ6jAqLA47zR5h4j4CH448gOlXUvzjM8zZu/zWb8y3I6txeR1Qby/8hQfdK2Z8RC7w6cQEwrbPwX38kY5ZOWGghkck+O1O8bYW9oG98csks7cjOH1Jce5FvWAMW0rM6FTNRwtNIwGSExN5PWdrxMWF8asZ2aZbF+uQpET7IQdX7X+isj4SN7f8z4lC5ekQakGZu/3hVa+RMYmGXIgw3iuflmGtfChTrnHdgPZ2cHzM7T37+pXNcNpI7xVc0rBm3NMT9M2tl/YCP0XPnIfTk+XzNl3je82X6CYqyM/9atPS1PUy8iJNJnO2/+8zfbr2/n+6e/p7NPZov0rFE9yN/EuQzcN5V7SPRZ0WWCxD+ugsPssOBjM6uNhJKSk0aCCB8NaVKRr3TL/nzqXcBdmd4a4WzByq7aSnUPUgsxDpIRN78LhmdDlu0d1K6Ljknhr2Ul2XYikY00vvuvjp4ubzvf/fs/8oPm83fhthtcebvH+FYqMCLkfwpBNQ3BxcGFh14UWneaJSUhhxdFQFh68ztWoB5RwLcTYdlUY3tJHm5O8d0MzyrUvpHkgGFm25CEqOD5k/29aoneLcY8qnh0JvsO4xce5E5/Mx8/WZEjzikatzt1JvMPk/ZOJSswkuz+HpKanEhQdxKAag3iv6XtqK5/CqjgdeZqRW0bi7uSOl2smfow5xF7YM6L2CNpXaJ/tc9PTJfuuRPHHP1fZezmK+uU9+K6PH9W83CDsBMztqk2PvbDR6IJ3oIKjxpmVsPwFqPU89JmLFII/91zjm83n8S7mwvTBDald1jiXk4TUBF7c8iIX7l6gkVejvOl6jOrFqzO+wXiL5JYpFDllf9h+FgQtMNl+7ptxNwmLC8tRzq2UkjUnwpi87ixxSamMbVeFMW2rUOjaDjgwTSuT7GK8x4EKjtf3w/znoFwjGLqamBR73l5+km1BEfjXLs13ff0o6mzc3uLHdyX81O4nOlTokHtdCkUBJiYphmGbhuVqt1Z0XBKfrQ9izYkwqnu58U3vujQo75HjvMeCbVkWeRECB4JHRRiwmNMRSXSbuoed528zqVstZgxpaHRglFLy7b/fsjNkJxObTlSBUaHIA+5O7kzvOB0neyfGbB9DZHyk0a8tUcSJXwY0YM6IxtxPTKHXjP18tv4c8cmpJtOXv4Nj3G1Y1BvsHYnvt5Rph+5o3otpkr9eacHI1r45mtubHzSfwPOBDK81nME1B5tRuEJRMChXpBzTOkzjbtJdxu4YS3xKfI5e376GF1snPMWQZhXZeDqclDTTjYR1GVYLIfyBXwB74E8pZZZe6LkaVic/gIBnkZEXWFN/Jp8fcyb6QTKda3vxTS8/iuVwNXpz8Gbe+ecdOlXsxA9P/2CRTfkKRUFhT+geXvv7NVqUbcFv7X/DwS7nKdixiSm4GTkKfIhVDauFEPbANKALUAsYKISoZdJO0lJJW/YC6WEneSt9PG/ssaNmmaKseLUlfwxtnOPAeDTiKB/s+YAGpRrwdZuvVWBUKExMG+82fNT8I/be3MsXB7/IVd2dnAbG7NBjh0xT4LKU8iqAEGIJ8BwQZIrG7yfGsTRwCKWjD7HMuTMRJQoxvs59qpRKJyz1NmFXctZeSnoKU45MoVyRcvza7lec7C3jxqNQFDT6VOuj7Qw7PQsneyfqeNbJcRvPVnrWZDcvegTHckDIYz+HAs2efJIQYjQwGqBChQpGN37x3G5+tbsCJT2Bs8BZ5lwELuZesKeLJ9M7TsfD2bbKICgUtsZrDV4jIj6CxedzZ+Dr7+tv08ExoxWQ/7mHllLOBGaCNudobOP16nViekoSFas3QBvB550SLiUo7Fg4+ycqFIo8IYTgi1ZfMLb+WNLSc27B5iBMF9L0CI6hQPnHfvYGwkzVuKOdI22aZlziQKFQWD9CCMoWKau3DF1Sef4FqgohfIUQhYABwFoddCgUCkWmWPzOUUqZKoQYB2xBS+WZI6U8a2kdCoVCkRW6+DlKKTcCG/XoW6FQKIxBJewpFApFBqjgqFAoFBlgE648QohI4HoOX+YJmMZsMXfo3b81aNC7f2vQoHf/1qBB7/6z0lBRSlkyoxfYRHDMDUKII5ntmSwI/VuDBr37twYNevdvDRr07j+3GtSwWqFQKDJABUeFQqHIgPwcHGcW8P5Bfw169w/6a9C7f9Bfg979Qy405Ns5R4VCocgL+fnOUaFQKHJNvguOQgh/IcQFIcRlIcR7OmkIFkKcFkKcEEKYoKZstv3NEULcFkKceexccSHENiHEJcPXYjpo+FQIcdNwHU4IIbqasf/yQoidQohzQoizQojxhvMWuw5ZaLDIdRBCOAshDgshThr6n2w4b8lrkJkGi/0vGPqzF0IcF0KsN/yc42uQr4bVBpfxi0AnNPeff4GBUkqTGOnmQEcw0FhKaZHcLiHEU0AcMF9KWcdw7jvgjpTyG8OHRDEp5UQLa/gUiJNS/mCufh/rvwxQRkp5TAjhBhwFngdGYKHrkIWGfljgOgitIJKrlDJOCOEI7AXGA72w3DXITIM/FvpfMOh4E2gMFJVSdsvN+yG/3Tk+chmXUiYDD13G8zVSyt3AnSdOPwfMM3w/D+1NamkNFkNKGS6lPGb4PhY4h2asbLHrkIUGiyA14gw/OhoOiWWvQWYaLIYQwht4FvjzsdM5vgb5LThm5DJusX/Ox5DAViHEUYOjuR54SSnDQXvTAqV00jFOCHHKMOw269D+IUIIH6ABcAidrsMTGsBC18EwnDwB3Aa2SSktfg0y0QCW+1/4GXgXSH/sXI6vQX4Ljka5jFuAVlLKhmhFxMYahpwFkRlAZaA+EA5MMXeHQogiwArgDSnlfXP3Z6QGi10HKWWalLI+mol0UyFEzguxmEeDRa6BEKIbcFtKeTSvbeW34GhWl3FjkVKGGb7eBlahDfctTYRhDuzhXNhtSwuQUkYY3ijpwCzMfB0Mc1wrgEVSypWG0xa9DhlpsPR1MPR5D9iFNteny//C4xoseA1aAT0M8/5LgPZCiIXk4hrkt+Cou8u4EMLVMBmPEMIVeAY4k/WrzMJaYLjh++HAGksLePjPaKAnZrwOhoWA2cA5KeWPjz1kseuQmQZLXQchREkhhIfhexegI3Aey16DDDVY6hpIKd+XUnpLKX3Q3v9/SymHkJtrIKXMVwfQFW3F+grwoQ79VwJOGo6zltAABKINVVLQ7p5HASWAHcAlw9fiOmhYAJwGThn+OcuYsf/WaFMop4AThqOrJa9DFhosch0AP+C4oZ8zwCTDeUteg8w0WOx/4TEtbYH1ub0G+SqVR6FQKExFfhtWKxQKhUlQwVGhUCgyQAVHhUKhyAAVHBUKhSIDVHBUKBSKDNClbrVCkVuEEGloKSGOQCraPtmfpZZcrFCYDBUcFbZGgtS2piGEKAUsBtyBT3RVpch3qGG1wmaR2vbM0WiGBkII4SOE2COEOGY4WgIIIRYIIR65MwkhFgkheuilW2EbqCRwhU0hhIiTUhZ54txdoAYQC6RLKROFEFWBQCllYyHE08AEKeXzQgh3tJ0rVaWUqRb/BRQ2gxpWK/IDD92YHIGpQoj6QBpQDUBK+Y8QYpphGN4LWKECoyI7VHBU2DRCiEpogfA22rxjBFAPbcoo8bGnLgAGo5kRjLSwTIUNooKjwmYRQpQEfgemSimlYcgcKqVMF0IMB+wfe3oAcBi4JaU8a3m1CltDBUeFreFicJl+mMqzAHhoDzYdWCGE6AvsBB48fJGUMkIIcQ5YbWG9ChtFLcgoCgRCiMJo+ZENpZQxeutRWD8qlUeR7xFCPDR9/U0FRoWxqDtHhUKhyAB156hQKBQZoIKjQqFQZIAKjgqFQpEBKjgqFApFBqjgqFAoFBmggqNCoVBkwP8BKlSn9L1KXP8AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "# This is the whole figure, possibly\n", "# with multiple subplots\n", @@ -860,13 +1284,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "fig = pyplot.figure(figsize=(10.0, 3.0))\n", "\n", @@ -874,15 +1311,22 @@ "for i in range(1, 4):\n", " ax = fig.add_subplot(1, 3, i)\n", " ax.set_xlabel('Day')\n", + " ax.set_title(f'Plot {i}')\n", " axes.append(ax)\n", " \n", - "axes[0].set_ylabel('Average')\n", + "axes[0].set_ylabel('Mean')\n", "axes[1].set_ylabel('Max')\n", "axes[2].set_ylabel('Min')\n", "\n", - "axes[0].plot(data.mean(axis=0))\n", - "axes[1].plot(data.max(axis=0))\n", - "axes[2].plot(data.min(axis=0))\n", + "\n", + "for row in data:\n", + " axes[0].plot(row, color='#dddddd')\n", + " axes[1].plot(row, color='#dddddd')\n", + " axes[2].plot(row, color='#dddddd')\n", + "\n", + "axes[0].plot(data.mean(axis=0), linestyle=':')\n", + "axes[1].plot(data.max(axis=0), linestyle='--')\n", + "axes[2].plot(data.min(axis=0), color='red')\n", "\n", "fig.tight_layout()\n", "pyplot.show(fig)" @@ -907,7 +1351,7 @@ } }, "source": [ - "Modify the previous cell to give the max line with a dash, the blue line with dots and the red line solid.\n", + "Modify the previous cell to give the max line with a dash, the mean line with dots and the min line red.\n", "\n", "Even better, add a title at the top." ] @@ -920,7 +1364,11 @@ } }, "source": [ - "When done, swap to the arrow. If you find this very easy and are waiting, leave your arrow up and have a go at plotting all the patients in very light grey behind your three coloured lines. See how long it takes to run for those 63 lines." + "When done, vote done.\n", + "\n", + "### Extension\n", + "\n", + "If you find this very easy and are waiting, carry on and have a go at plotting all the patients in very light grey behind your three coloured lines. See how long it takes to run for those 63 lines." ] }, { @@ -976,15 +1424,334 @@ } }, "source": [ - "# Bokeh\n", + "# Mrs Bokeh\n", "## Dynamic plots" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " var JS_MIME_TYPE = 'application/javascript';\n", + " var HTML_MIME_TYPE = 'text/html';\n", + " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", + " var CLASS_NAME = 'output_bokeh rendered_html';\n", + "\n", + " /**\n", + " * Render data to the DOM node\n", + " */\n", + " function render(props, node) {\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(script);\n", + " }\n", + "\n", + " /**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + " function handleClearOutput(event, handle) {\n", + " var cell = handle.cell;\n", + "\n", + " var id = cell.output_area._bokeh_element_id;\n", + " var server_id = cell.output_area._bokeh_server_id;\n", + " // Clean up Bokeh references\n", + " if (id != null && id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + "\n", + " if (server_id !== undefined) {\n", + " // Clean up Bokeh references\n", + " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", + " cell.notebook.kernel.execute(cmd, {\n", + " iopub: {\n", + " output: function(msg) {\n", + " var id = msg.content.text.trim();\n", + " if (id in Bokeh.index) {\n", + " Bokeh.index[id].model.document.clear();\n", + " delete Bokeh.index[id];\n", + " }\n", + " }\n", + " }\n", + " });\n", + " // Destroy server and session\n", + " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", + " cell.notebook.kernel.execute(cmd);\n", + " }\n", + " }\n", + "\n", + " /**\n", + " * Handle when a new output is added\n", + " */\n", + " function handleAddOutput(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + "\n", + " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", + " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + "\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + "\n", + " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", + " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", + " // store reference to embed id on output_area\n", + " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " }\n", + " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + " }\n", + "\n", + " function register_renderer(events, OutputArea) {\n", + "\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[toinsert.length - 1]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " /* Handle when an output is cleared or removed */\n", + " events.on('clear_output.CodeCell', handleClearOutput);\n", + " events.on('delete.Cell', handleClearOutput);\n", + "\n", + " /* Handle when a new output is added */\n", + " events.on('output_added.OutputArea', handleAddOutput);\n", + "\n", + " /**\n", + " * Register the mime type and append_mime function with output_area\n", + " */\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " /* Is output safe? */\n", + " safe: true,\n", + " /* Index of renderer in `output_area.display_order` */\n", + " index: 0\n", + " });\n", + " }\n", + "\n", + " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", + " if (root.Jupyter !== undefined) {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + "\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " }\n", + "\n", + " \n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " var NB_LOAD_WARNING = {'data': {'text/html':\n", + " \"
\\n\"+\n", + " \"

\\n\"+\n", + " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", + " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", + " \"

\\n\"+\n", + " \"
    \\n\"+\n", + " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", + " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", + " \"
\\n\"+\n", + " \"\\n\"+\n", + " \"from bokeh.resources import INLINE\\n\"+\n", + " \"output_notebook(resources=INLINE)\\n\"+\n", + " \"\\n\"+\n", + " \"
\"}};\n", + "\n", + " function display_loaded() {\n", + " var el = document.getElementById(\"1209\");\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS is loading...\";\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " if (el != null) {\n", + " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", + " }\n", + " } else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(display_loaded, 100)\n", + " }\n", + " }\n", + "\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\": \"ufR9RFnRs6lniiaFvtJziE0YeidtAgBRH6ux2oUItHw5WTvE1zuk9uzhUU/FJXDp\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\": \"8QM/PGWBT+IssZuRcDcjzwIh1mkOmJSoNMmyYDZbCfXJg3Ap1lEvdVgFuSAwhb/J\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\": \"Jm8cH3Rg0P6UeZhVY5cLy1WzKajUT9KImCY+76hEqrcJt59/d8GPvFHjCkYgnSIn\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\": \"Ozhzj+SI7ywm74aOI/UajcWz+C0NjsPunEVyVIrxzYkB+jA+2tUw8x5xJCbVtK5I\"};\n", + "\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " if (url in hashes) {\n", + " element.crossOrigin = \"anonymous\";\n", + " element.integrity = \"sha384-\" + hashes[url];\n", + " }\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " \n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\"];\n", + " var css_urls = [];\n", + " \n", + "\n", + " var inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " function(Bokeh) {\n", + " \n", + " \n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " \n", + " if (root.Bokeh !== undefined || force === true) {\n", + " \n", + " for (var i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " if (force === true) {\n", + " display_loaded();\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " } else if (force !== true) {\n", + " var cell = $(document.getElementById(\"1209\")).parents('.cell').data().cell;\n", + " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", + " }\n", + "\n", + " }\n", + "\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(css_urls, js_urls, function() {\n", + " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(window));" + ], + "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1209\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\": \"ufR9RFnRs6lniiaFvtJziE0YeidtAgBRH6ux2oUItHw5WTvE1zuk9uzhUU/FJXDp\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\": \"8QM/PGWBT+IssZuRcDcjzwIh1mkOmJSoNMmyYDZbCfXJg3Ap1lEvdVgFuSAwhb/J\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\": \"Jm8cH3Rg0P6UeZhVY5cLy1WzKajUT9KImCY+76hEqrcJt59/d8GPvFHjCkYgnSIn\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\": \"Ozhzj+SI7ywm74aOI/UajcWz+C0NjsPunEVyVIrxzYkB+jA+2tUw8x5xJCbVtK5I\"};\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1209\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import numpy as np\n", "import bokeh.plotting as bplot\n", @@ -1001,13 +1768,68 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function embed_document(root) {\n", + " \n", + " var docs_json = {\"bc5514bf-d681-49cc-8f2a-d55d4aa6afe1\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1110\"}],\"center\":[{\"id\":\"1113\"},{\"id\":\"1117\"}],\"left\":[{\"id\":\"1114\"}],\"renderers\":[{\"id\":\"1135\"}],\"title\":{\"id\":\"1147\"},\"toolbar\":{\"id\":\"1125\"},\"x_range\":{\"id\":\"1102\"},\"x_scale\":{\"id\":\"1106\"},\"y_range\":{\"id\":\"1104\"},\"y_scale\":{\"id\":\"1108\"}},\"id\":\"1101\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1106\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1133\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1115\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Day\",\"formatter\":{\"id\":\"1148\"},\"ticker\":{\"id\":\"1111\"}},\"id\":\"1110\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1108\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1111\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1110\"},\"ticker\":null},\"id\":\"1113\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1132\"}},\"id\":\"1136\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1114\"},\"dimension\":1,\"ticker\":null},\"id\":\"1117\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"1150\"},\"ticker\":{\"id\":\"1115\"}},\"id\":\"1114\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1134\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1150\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1124\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1154\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1123\",\"type\":\"HelpTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1118\"},{\"id\":\"1119\"},{\"id\":\"1120\"},{\"id\":\"1121\"},{\"id\":\"1122\"},{\"id\":\"1123\"}]},\"id\":\"1125\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"y\":{\"__ndarray__\":\"AAAAAAAAAADNzMzMzMzcP97d3d3d3fE/AAAAAAAA/D93d3d3d3cDQDMzMzMzMwlAZmZmZmZmDkAREREREREPQO/u7u7u7hRAERERERERFkDNzMzMzMwXQJqZmZmZmRdAMzMzMzOzIEDv7u7u7u4eQLy7u7u7uyBAAAAAAAAAI0CrqqqqqiojQERERERERCVAIiIiIiIiJ0AzMzMzM7MoQAAAAAAAgCpA7+7u7u7uJ0AREREREREmQFVVVVVVVSRAAAAAAAAAJEBVVVVVVVUhQM3MzMzMTCJAAAAAAAAAHUBVVVVVVVUdQFVVVVVVVRpAREREREREGEDNzMzMzMwXQHd3d3d3dxRAzczMzMzMDEBmZmZmZmYKQImIiIiIiAxA3t3d3d3dA0AAAAAAAAD4PyIiIiIiIvI/IiIiIiIi4j8=\",\"dtype\":\"float64\",\"shape\":[40]}},\"selected\":{\"id\":\"1153\"},\"selection_policy\":{\"id\":\"1154\"}},\"id\":\"1132\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1132\"},\"glyph\":{\"id\":\"1133\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1134\"},\"selection_glyph\":null,\"view\":{\"id\":\"1136\"}},\"id\":\"1135\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1118\",\"type\":\"PanTool\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1147\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1119\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1124\"}},\"id\":\"1120\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1104\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1153\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1102\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1101\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.2\"}};\n", + " var render_items = [{\"docid\":\"bc5514bf-d681-49cc-8f2a-d55d4aa6afe1\",\"root_ids\":[\"1101\"],\"roots\":{\"1101\":\"a6bc3d94-88e6-4326-9078-5b2a78307ccb\"}}];\n", + " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", + "\n", + " }\n", + " if (root.Bokeh !== undefined) {\n", + " embed_document(root);\n", + " } else {\n", + " var attempts = 0;\n", + " var timer = setInterval(function(root) {\n", + " if (root.Bokeh !== undefined) {\n", + " clearInterval(timer);\n", + " embed_document(root);\n", + " } else {\n", + " attempts++;\n", + " if (attempts > 100) {\n", + " clearInterval(timer);\n", + " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", + " }\n", + " }\n", + " }, 10, root)\n", + " }\n", + "})(window);" + ], + "application/vnd.bokehjs_exec.v0+json": "" + }, + "metadata": { + "application/vnd.bokehjs_exec.v0+json": { + "id": "1101" + } + }, + "output_type": "display_data" + } + ], "source": [ "fig = bplot.figure()\n", "days = np.arange(data.shape[1])\n", @@ -1035,9 +1857,9 @@ } }, "source": [ - "# Challenge II\n", + "### Exercise\n", "\n", - "## Reproduce our three-line matplotlib plot in Bokeh" + "Reproduce our three-line matplotlib plot in Bokeh" ] }, { @@ -1188,7 +2010,7 @@ } }, "source": [ - "# Final Challenge\n", + "### Exercise\n", "\n", "Produce the plot above, but using a slider. This will call a function with one argument called `percentile`, which sets the `y` source to be that percentile for each day. In stats terms, the \"median\" of a dataset is (by definition) percentile 50, and the \"quartiles\" are percentiles 25 and 75. In any case, [`np.percentile(data, pc)`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.percentile.html) can take a 2d data array and returns the percentiles for each row." ] @@ -1328,7 +2150,6 @@ } ], "metadata": { - "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", @@ -1344,7 +2165,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.6" }, "livereveal": { "theme": "beige", diff --git a/004-inflammation/A New Treatment for Arthritis.ipynb b/004-inflammation/A New Treatment for Arthritis.ipynb index 38e73e9..33ac655 100644 --- a/004-inflammation/A New Treatment for Arthritis.ipynb +++ b/004-inflammation/A New Treatment for Arthritis.ipynb @@ -103,24 +103,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n", - " 0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n", - " 0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "with open('data/inflammation-01.csv', 'r') as f:\n", " snippet = f.readlines()[:3]\n", @@ -209,23 +198,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0. 0. 1. ... 3. 0. 0.]\n", - " [0. 1. 2. ... 1. 0. 1.]\n", - " [0. 1. 1. ... 2. 1. 1.]\n", - " ...\n", - " [0. 1. 1. ... 1. 1. 1.]\n", - " [0. 0. 0. ... 0. 2. 0.]\n", - " [0. 0. 1. ... 1. 1. 0.]]\n" - ] - } - ], + "outputs": [], "source": [ "import numpy as np\n", "data = np.loadtxt(fname='data/inflammation-01.csv', delimiter=',') # Comma-separated...\n", @@ -245,24 +220,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "numpy.ndarray" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "type(data)" ] @@ -282,24 +246,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(60, 40)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.shape" ] @@ -328,22 +281,11 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "'T, __abs__, __add__, __and__, __array__, __array_finalize__, __array_function__, __array_interface__, __array_prepare__, __array_priority__, __array_struct__, __array_ufunc__, __array_wrap__, __bool__, __class__, __complex__, __contains__, __copy__, __deepcopy__, __delattr__, __delitem__, __dir__, __divmod__, __doc__, __eq__, __float__, __floordiv__, __format__, __ge__, __getattribute__, __getitem__, __gt__, __hash__, __iadd__, __iand__, __ifloordiv__, __ilshift__, __imatmul__, __imod__, __imul__, __index__, __init__, __init_subclass__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iter__, __itruediv__, __ixor__, __le__, __len__, __lshift__, __lt__, __matmul__, __mod__, __mul__, __ne__, __neg__, __new__, __or__, __pos__, __pow__, __radd__, __rand__, __rdivmod__, __reduce__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmatmul__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __setattr__, __setitem__, __setstate__, __sizeof__, __str__, __sub__, __subclasshook__, __truediv__, __xor__, all, any, argmax, argmin, argpartition, argsort, astype, base, byteswap, choose, clip, compress, conj, conjugate, copy, ctypes, cumprod, cumsum, data, diagonal, dot, dtype, dump, dumps, fill, flags, flat, flatten, getfield, imag, item, itemset, itemsize, max, mean, min, nbytes, ndim, newbyteorder, nonzero, partition, prod, ptp, put, ravel, real, repeat, reshape, resize, round, searchsorted, setfield, setflags, shape, size, sort, squeeze, std, strides, sum, swapaxes, take, tobytes, tofile, tolist, tostring, trace, transpose, var, view'" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "\", \".join(dir(data))" ] @@ -394,44 +336,18 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0., 0.],\n", - " [0., 1.],\n", - " [0., 1.]])" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[0:3, 0:2]" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0., 0., 1.],\n", - " [0., 1., 2.],\n", - " [0., 1., 1.]])" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[:3,:3]" ] @@ -460,22 +376,9 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0., 1., 1.],\n", - " [0., 0., 0.],\n", - " [0., 0., 1.]])" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[-3:, :3]" ] @@ -493,24 +396,13 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(6.14875, 20.0, 0.0)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.mean(), data.max(), data.min()" ] @@ -538,7 +430,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -547,29 +439,11 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "hideOutput": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99999999\n" - ] - }, - { - "data": { - "text/plain": [ - "3.364633798599243" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "start = time.time()\n", "biggest = max(range(100000000))\n", @@ -579,29 +453,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "hideOutput": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99999999\n" - ] - }, - { - "data": { - "text/plain": [ - "11.761155366897583" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "start = time.time()\n", "# create a max-finding for-loop here\n", @@ -615,22 +471,11 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "hideOutput": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.6374130249023438" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "start = time.time()\n", "# create a 1e8 length numpy array, and find the max\n", @@ -684,24 +529,13 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "17.0" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[3, :].max() # Max inflammation for 4th patient" ] @@ -715,47 +549,22 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "3.0" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[:,3].max() # Max infl for 2nd day" ] }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 1., 2., 1., 2., 1., 3., 2., 2., 6., 10., 11., 5.,\n", - " 9., 4., 4., 7., 16., 8., 6., 18., 4., 12., 5., 12., 7.,\n", - " 11., 5., 11., 3., 3., 5., 4., 4., 5., 5., 1., 1., 0.,\n", - " 1.])" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[1, :]" ] @@ -784,27 +593,13 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,\n", - " 13., 14., 15., 16., 17., 18., 19., 20., 19., 18., 17., 16., 15.,\n", - " 14., 13., 12., 11., 10., 9., 8., 7., 6., 5., 4., 3., 2.,\n", - " 1.])" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.max(axis=0)" ] @@ -845,24 +640,13 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(40,)" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.max(axis=0).shape" ] @@ -916,21 +700,12 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": null, "metadata": { "hideCode": false, "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0. 0.45 1.11666667]\n", - "[0. 0.45 1.11666667]\n" - ] - } - ], + "outputs": [], "source": [ "# ANANSWER\n", "print(data.mean(axis=0)[:3])\n", @@ -962,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -983,26 +758,13 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib\n", "pretty_pic = matplotlib.pyplot.imshow(data)\n", @@ -1033,22 +795,9 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib\n", "pretty_pic = matplotlib.pyplot.imshow(data[4:7].T)\n", @@ -1136,22 +885,9 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import numpy as np\n", "from matplotlib import pyplot\n", @@ -1208,26 +944,13 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# This is the whole figure, possibly\n", "# with multiple subplots\n", @@ -1259,26 +982,13 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = pyplot.figure(figsize=(10.0, 3.0))\n", "\n", @@ -1399,7 +1109,7 @@ } }, "source": [ - "# Bokeh\n", + "# Mrs Bokeh\n", "## Dynamic plots" ] }, @@ -1710,9 +1420,9 @@ "fig.xaxis.axis_label = 'Day'\n", "fig.yaxis.axis_label = 'Inflammation'\n", "\n", - "fig.line(days, data.mean(axis=0), legend='Average', color='green')\n", - "fig.line(days, data.max(axis=0), legend='Max', color='blue')\n", - "fig.line(days, data.min(axis=0), legend='Min', color='red')\n", + "fig.line(days, data.mean(axis=0), legend_label='Average', color='green')\n", + "fig.line(days, data.max(axis=0), legend_label='Max', color='blue')\n", + "fig.line(days, data.min(axis=0), legend_label='Min', color='red')\n", "\n", "bplot.show(fig)" ] @@ -1766,7 +1476,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.6" }, "livereveal": { "theme": "beige",