{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "d12895fc-e9d2-4450-82ad-4c1a0f0377f6"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"[![MLR](mlr3.png)](https://ipvs.informatik.uni-stuttgart.de/mlr/marc/teaching/16-ArtificialIntelligence/)\n",
"\n",
"# Introduction to the Tutorials\n",
"[AI Class Homepage](https://ipvs.informatik.uni-stuttgart.de/mlr/marc/teaching/16-ArtificialIntelligence/), [This document (non-interactive version): https://goo.gl/wpedFn](https://goo.gl/wpedFn)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "dfd8bc63-c0b1-4a97-818e-8d2eabe4091d"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Organisation of the Tutorials\n",
"\n",
" - Coding-Exercises\n",
" - Teams of 3\n",
" - Turned in using gitlab\n",
" - Votier-Exercises \n",
" - Everyone on his/her own\n",
" - Each tutorial mark the exercises you have done\n",
" - Mandatory requirements\n",
" - 50% of all Coding-Exercises\n",
" - 50% of all Votier-Exercises"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "d87ede56-acd8-4ab4-9b2a-267dfae83a16"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"\n",
"## Learning Goals for this Lecture\n",
"You should be able to complete the AI exercises (from a programming language point of view).\n",
"\n",
"1. \"Understand basic Python\"\n",
"- Be familiar with Python's Unittests and Doctests\n",
"- Git pull/push your execises and solutions\n",
"\n",
"There are small programming exercises to give you feedback! Try them!"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "06799276-d239-4c70-95c9-0cd459fbc0c9"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Prerequisite"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "e47a821a-60b4-4faf-abac-5de9f3e6f2d6"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Installation (python)\n",
"\n",
"- **For Beginners: [Anaconda 2 (python 2.7)](https://www.continuum.io/downloads) (All OS supported)** \n",
"Full featured scientific python distribution. Already contains the important packages. \n",
"\n",
"\n",
"- **Linux users: System python 2 and packages** \n",
"Use your systems package manager to install python 2 and packages (numpy required).\n",
"\n",
"\n",
"- **Know what your doing?: python virtual environment** \n",
"Install packages with pip (numpy required). Always up to date\n",
"\n",
"\n",
"- **(Optional) Interactive and REPL: python (installed), ipython, bpython, jupyter notebook**\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "b4629796-5f51-4e0c-88d0-59efa1bfe586"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Installation (git)\n",
"- **Windows: https://git-scm.com/download/win**\n",
"- **Linux: Use system git or build it yourself.**"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "752c0a36-27a4-434b-b965-4c463531cde1"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Installation (IDE/Editor)\n",
"- **Whatever you want**\n",
"- **PyCharm (https://www.jetbrains.com/pycharm/)**\n",
"- **Spyder (Included in Anaconda)**\n",
"- **vim + jedi-vim (https://github.com/davidhalter/jedi-vim)**"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "1dfa1937-8105-4c11-9ec1-d1bbf9531822"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Python Tutorial"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "6cd29b27-0812-46a1-958b-9a7a33c8e894"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Things to mention\n",
"\n",
"- Indentation: use **4 spaces**, *do not use tabs*!\n",
"- Python is different from Java: you don't need classes\n",
"- [PEP8](http://legacy.python.org/dev/peps/pep-0008/) style guide \n",
"\n",
"\n",
"#### **python2** vs **python3**. $\\Rightarrow$ Use python 2.7 for the exercises"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "b25229ca-6cd7-4ba8-99bd-445472cb10a0"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Please Help Yourself"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "cc003ad3-5ca2-4e18-89e5-7d4b16930a50"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"help(range)\n",
"type?"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "8efc1a03-80cb-4800-8112-68f6c732e66b"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Control Flow"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "d84af875-86aa-403a-a562-92d45711c40d"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# if/elif/else\n",
"a = 6\n",
"if a > 5:\n",
" print \"bigger than 5\"\n",
"elif a == 5:\n",
" print \"FIVE\"\n",
"else:\n",
" print 'something else: ' + str(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "244bed87-f877-4c34-9286-1aa4656c0549"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"a = 4\n",
"a = \"bigger\" if a > 3 else \"smaller\"\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "c2612fa3-97f6-4597-a2ea-dc6f6ccd903a"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Java:\n",
"# int n = 6\n",
"# for (int i = 2; i < n; i++) {\n",
"# System.out.println(i);\n",
"# }\n",
"n = 6\n",
"for i in range(2,n):\n",
" print i"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "c07daf28-8f7e-451d-a285-cce3cd5df359"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"range(2,10,2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "6b11abb0-e7d4-4be0-953e-d01a5e535d71"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"movies = [\"Her\", \"Moon\", \"Pacific Rim\", \"Robot and Frank\"]\n",
"print len(movies)\n",
"for movie in movies:\n",
" print movie"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "4b631bd6-3ff3-472f-a268-d47ae1111a76"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"for i, movie in enumerate(movies):\n",
" print i, movie"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "ab5e5745-f025-4b2a-bef6-d1040bcf0e6f"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"for i, movie in zip(range(len(movies)), movies):\n",
" print i, movie"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "6e236b23-dfe4-46dc-8a94-cb50a0274011"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"print enumerate(movie)\n",
"print zip(range(len(movies)), movies)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "7d399080-2ab9-4434-9478-7952820c09ff"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# while\n",
"i = 0\n",
"while True:\n",
" while True:\n",
" print i\n",
" i += 1\n",
" if i > 5:\n",
" break\n",
" print \"outer\"\n",
" break"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "872b44cc-4d3b-4059-9bdf-762d5d397dd9"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Data Structures"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "2b40388f-e218-4fee-b482-cc2949aca3ba"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# numbers\n",
"print type(1)\n",
"print type(.1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "6455ea4a-3d80-4179-a398-1532471f149f"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Strings\n",
"'this is a string'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "0e3879d4-32f1-4d20-9d1f-db03facfd36f"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"\"this is also a string\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "23087ad7-b2a5-4354-9c0e-c022d134c02c"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"\"\"\"This is a string as well\n",
"\n",
"A multi-line string\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "03fd621d-0671-4e62-b746-0664c73c489f"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# list\n",
"i = [1, 2, 3, 4]\n",
"print list(i)\n",
"print [2, 4]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "1c548566-da61-4c09-9d3a-ca9dbe91af3c"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"['something', 5, 5.5]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "5e78f362-629b-4a23-9fc8-031ccd7bb8d2"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"movies = [\"Her\", \"Moon\", \"Pacific Rim\", \"Robot and Frank\"]\n",
"movies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "c8060d59-1226-4d88-9f5d-8a47f7a93fb2"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"movies.append(\"Wall-E\")\n",
"movies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "e02bee8b-74ee-4ec6-9e4d-56a8c4d62a18"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"movies = movies + [\"Nummer 5\", \"I, Robot\", \"2001\"]\n",
"movies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "5181c555-6086-4880-b29a-2348f6511da9"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"import copy\n",
"copy.deepcopy(movies)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "f891d975-d161-44ae-9ca7-8d3ccf5fc215"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"# slicing\n",
"print movies\n",
"print movies[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "b76d6d0a-8c53-494f-971d-2ee4b070b073"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"print movies[1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "6d52debd-47eb-458a-95cf-bc469270a19b"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"print movies[0:2]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "847eeb0e-b03b-48c8-8150-ff18c0b42c76"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"print movies[:2]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "a34e2f76-7e51-4161-a489-f8167c4c51d7"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"print movies[-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "ecb79b65-68ae-4df6-b38e-ebef2e73ede3"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"print movies[-2]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "85d3adf4-e3a1-4613-a4bb-9109932ed308"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"print movies[3::2]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "0019dbe6-0c8c-4983-92a8-4d986d3811f9"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Dictionaries\n",
"print dict()\n",
"print {}"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "53123ca1-0144-48bf-bc73-d920e8db178c"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"d = {\"Her\": 4,\n",
" \"Moon\": 5,\n",
" \"Pacific Rim\": 5,\n",
" \"Robot and Frank\": 4.,\n",
"}\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "67494a06-e358-4639-9d84-752d72f60064"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"d[\"Her\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "5eae6e1d-78f3-4f72-b3eb-0d3f5c98d217"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"\"Her\" in movies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "30af7edc-f671-4a0d-9337-eda616ea1d79"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"d.keys()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "975c87bf-95ec-4ffd-b18f-78550a6af2f6"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"type(d.values())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "ff557636-596c-4320-883e-d2748ba037ee"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"for (key, value) in d.items():\n",
" print key, value"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "3aa19415-9834-48f2-94e6-708b759589bb"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# tuples\n",
"3, 4"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "76110d90-aa96-44b7-99f6-ee89749a4894"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"(3, 4)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "69329572-5b2e-4b4c-b2f5-2e2031cd1cd8"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"type((3,4))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "7b595eb7-53be-40e3-8974-85eebf7270a1"
},
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"t = 3, 4, 3\n",
"print t[0]\n",
"print t[1]\n",
"print t[2]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "74273d87-a08a-4770-af40-ae9c1891cc3a"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# set\n",
"set([3, 0, -4, 15, 3, 2, 2, 1, 15])"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "4f8f38d7-5ee2-4f4d-975f-d0df0a8c8ad8"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## List Comprehensions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "b72279db-ddd7-4063-acec-553613169d33"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"[i for i in range(10)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "0f87d8ac-9989-4171-9893-57f8d04c8fe7"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"[i*i for i in range(10)]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "e64ae765-aed7-4f26-9085-1c2976a585c3"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"[i for i in range(10) if i % 2 == 0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "cfa92050-a4d2-431a-8083-b1cf835ae4a5"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Let's implement the [entropy function](http://en.wikipedia.org/wiki/Entropy_%28information_theory%29#Definition) \n",
"\n",
"$$\n",
" H(X) = - \\sum_i P(x_i) \\log P(x_i)\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "bb0f357a-101d-4ed7-a3ab-68ecac1b2084"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"from math import log\n",
"\n",
"X = [.5, .5]\n",
"\n",
"def entropy(X):\n",
" return -sum([x * log(x) for x in X])\n",
"\n",
"\n",
"entropy(X)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "8e5f372f-f4cd-4411-9cbe-a23cdf7ed1d6"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Compute Pi using the [Wallis product](http://en.wikipedia.org/wiki/Wallis_product): \n",
"\n",
"$$\n",
"\\pi \\approx 2 \\prod_{i=1}^{\\infty} \\frac{4i^2}{4i^2 -1}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "bde71215-d5bd-47d5-9689-6af0c59e52f8"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import operator\n",
"\n",
"def prod(iterable):\n",
" return reduce(operator.mul, iterable, 1)\n",
"\n",
"\n",
"def pi(n):\n",
" # a**b = a to power b\n",
" return 2 * prod([(4 * i**2)/(4 * i**2 - 1) for i in range(1, n)])\n",
"\n",
"\n",
"print pi(2), pi(10), pi(100)"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "27aa26a3-6e82-4155-8822-41eecfc329c1"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Numpy & Matplotlib"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "fac61ad2-464a-40ec-b1aa-bb0ab03746a6"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "bf21c6b2-3e3e-4362-8060-e0ed293b2500"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"np.zeros((3, 3))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "6a3f6b1a-2dae-449f-befc-cabd265c058a"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"A = np.ones((3, 3))\n",
"B = np.random.random((3, 3))\n",
"A + B"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "e3c3046e-67d5-482f-b19a-5435d0cb4896"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"A * B"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "8a619477-ff9a-42bc-86fc-b311bea7d0eb"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"A.dot(B) # matrix multiplication\n",
"np.dot(A, B) "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "983f1a79-bdad-4eaf-8445-0ef5e13ff78a"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"X = np.matrix( ((1,2), (5, -1)) )\n",
"Y = np.matrix( ((1,2), (5, -1)) )\n",
"\n",
"X * Y"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "3c03d53b-9ce5-4a41-8f1c-f8eb28c0913c"
},
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"$\\rightarrow$ use arrays"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "526af6d0-b18a-4607-b982-d6dde7b7e2c6"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Wont be used in the exercises\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"plt.matshow(B);"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "c64bfb29-d2aa-4455-b146-f900cb5f69e9"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Exercises: [project euler](https://projecteuler.net/)\n",
"These exercises are meant as feedback for you. You should be able to use python to solve the exercises. You could also try and solve some old *\"Datenstrukturen und Algorithmen\" exercises*."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "a87ce2b1-6cc7-4d83-9537-32a1e88dbf3f"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"\"\"\"\n",
"Project Euler Problem #1\n",
"=========================\n",
"\n",
"If we list all the natural numbers below 10 that are multiples of 3 or 5,\n",
"we get 3, 5, 6 and 9. The sum of these multiples is 23.\n",
"\n",
"Find the sum of all the multiples of 3 or 5 below 1000.\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "39a3bf91-b780-41f0-9bc7-08b8e084013f"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"\"\"\"\n",
"Project Euler Problem #2\n",
"=========================\n",
"\n",
"Each new term in the Fibonacci sequence is generated by adding the\n",
"previous two terms. By starting with 1 and 2, the first 10 terms will be:\n",
"\n",
" 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...\n",
"\n",
"Find the sum of all the even-valued terms in the sequence which do not\n",
"exceed four million.\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "bdf5aa9d-0ad0-4d7e-8ec9-69767aac949d"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"\"\"\"\n",
"Project Euler Problem #4\n",
"=========================\n",
"\n",
"A palindromic number reads the same both ways. The largest palindrome made\n",
"from the product of two 2-digit numbers is 9009 = 91 * 99.\n",
"\n",
"Find the largest palindrome made from the product of two 3-digit numbers.\n",
"\"\"\""
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "37b33e06-e577-4146-90c9-1839a6bef1c1"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Python: Functions and Classes"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "fba0ab5c-2c39-41bd-abb1-afae340e885a"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"def square(x):\n",
" \"\"\"Documentation of square.\"\"\" \n",
" return x * x\n",
"\n",
" \n",
"square(5)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "c9e6061c-0aa6-49d0-af8e-fcc295c1d963"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class Node(object):\n",
" \"\"\"Doc of the class.\n",
" \n",
" Sometimes the constructor is documented here.\n",
" \n",
" \"\"\"\n",
" def __init__(self, value=None, left=None, right=None):\n",
" self.value = value\n",
" self.left = left\n",
" self.right = right\n",
" \n",
" def cut(self):\n",
" \"\"\"Doc of the function cut.\"\"\"\n",
" self.left = None\n",
" self.right = None\n",
"\n",
" \n",
"tree = Node(\"lecture\", Node(\"python\"), Node(\"git\", Node(\"ki\")))\n",
"print tree\n",
"print tree.value\n",
"print tree.right.left.value"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "d11b00e4-8aee-4906-be8b-7995b7f03b2a"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"type(None)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "e383974d-d48e-4d9d-b441-895be38c6a43"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"class Node(object):\n",
" def __init__(self, value=None, left=None, right=None):\n",
" self.value = value\n",
" self.left = left\n",
" self.right = right\n",
" \n",
" def cut(self):\n",
" self.left = None\n",
" self.right = None\n",
" \n",
" def children(self):\n",
" return self.left, self.right\n",
" \n",
" def __str__(self):\n",
" return 'useless str method'\n",
" \n",
"tree = Node(\"lecture\", Node(\"python\"), Node(\"git\"))\n",
"print tree"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "b8d190cd-dbf1-4172-93eb-8c818a42fe08"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Doctest and Unittests"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"nbpresent": {
"id": "ab2c05e7-9935-46d4-b399-a78f43b6076b"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# %load fib.py\n",
"def fibbonacci(n):\n",
" \"\"\"\n",
" The n-th Fibbonacci number is the sum of the previous two fibbonacci\n",
" numbers where the first and second Fibbonacci number are 1.\n",
"\n",
" :math: F_n = F_{n-1} + F_{n-2}\n",
"\n",
" Examples:\n",
" ---------\n",
" >>> fibbonacci(1)\n",
" 1\n",
" >>> fibbonacci(2)\n",
" 1\n",
" >>> fibbonacci(3)\n",
" 2\n",
" >>> fibbonacci(4)\n",
" 3\n",
"\n",
" \"\"\"\n",
" if n == 1:\n",
" return 1\n",
" elif n == 2:\n",
" return 1\n",
" else:\n",
" return fibbonacci(n-1) + fibbonacci(n-2)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "daebae9e-9706-4d13-8520-7f277a93970e"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# executing the doctests\n",
"!python -m doctest -v fib.py"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "268c7b9d-5460-4bb1-aa89-3d043386225f"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# %load test_fib.py\n",
"import unittest\n",
"from fib import fibbonacci\n",
"\n",
"\n",
"class TestFibbonacci(unittest.TestCase):\n",
" def test_definition(self):\n",
" self.assertEqual(fibbonacci(1), 1)\n",
" self.assertEqual(fibbonacci(2), 1)\n",
"\n",
" def test_calculated_values(self):\n",
" self.assertEqual(fibbonacci(5), 5)\n",
" self.assertEqual(fibbonacci(6), 8)\n",
"\n",
"\n",
"if __name__ == '__main__':\n",
" unittest.main()\n",
"\n",
" unitte"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "70831706-350e-4a2e-b416-45489cf6030e"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"!python test_fib.py"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"nbpresent": {
"id": "769bf03e-6c93-4411-a629-4d3339c16a5c"
},
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"!python -m unittest discover -v"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "7523fc0d-25d8-4e92-8005-8039d1eb4698"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Gitlab"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "be8aae5f-3676-468d-a7ac-565aeb7a874d"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Setup Gitlab \n",
"\n",
"\n",
"- **Check your mail and confirm your account**\n",
"\n",
"\n",
"- **Change your password on the login site (Forgot your password?)**\n",
"\n",
"\n",
"- **Login to gitlab using your username and new password**"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "de3b5efa-9f5c-4925-b2d9-f6b0eff9e9a0"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Setup SSH\n",
"\n",
"- **Create a SSH key(if you don’t already have one)**\n",
"```\n",
"$ ssh-keygen -t rsa -C \"\"\n",
"```\n",
"\n",
"\n",
"- **On the gitlab website open \"Profile Settings\">\"SSH Keys\">\"Add SSH Key\".**\n",
"\n",
"\n",
"- **Copy the entire content of the public key (Linux: ~/.ssh/id_rsa.pub, Windows: $\\left$\\\\.ssh\\id_rsa.pub)**\n",
"```\n",
"$ cat ~/.ssh/id_rsa.pub % print to console\n",
"```\n",
"\n",
"- **Paste the key into the key text area (gitlab), and choose a title**"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "def05353-a723-4b7c-a807-a935ac5400a4"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Test it\n",
"\n",
"- **You can test whether it everything is setup correctly using**\n",
"```\n",
"$ ssh git@animal.informatik.uni-stuttgart.de\n",
"```\n",
"- **You are done ! (It may take a several minutes before a new key is recognized)**\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "446575e7-d6bb-48c3-8194-d07f94fbac4e"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Git"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "4a4ed1bc-6aa0-45cd-910b-845e7398107c"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"![git concepts](git_concepts.png)\n",
"**git pull** is the same as a **git fetch** followed by a **git merge**."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "bb8570b4-33c5-480e-a492-35bb3b3322d3"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Setup git\n",
"```\n",
"$ git config --global user.name \"John Doe\"\n",
"\n",
"$ git config --global user.email johndoe@example.com\n",
"\n",
"$ git config --global color.ui true\n",
"```\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "c4c8b755-55d9-4a29-96c3-c1a0753a79ff"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Get Started\n",
"\n",
"- **Clone a repository** \n",
"\n",
"```\n",
"$ git clone git@animal.informatik.unistuttgart.de:ai_lecture/group_.git\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "64559dbf-1496-442b-98df-fcdceb933eb6"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Workflow\n",
"\n",
"- **Fetch commits from the remote repo and merge any changes.**\n",
"```\n",
"$ git pull\n",
"```\n",
"\n",
"- **Add all new files to the the staging area**\n",
"```\n",
"$ git add . \n",
"```\n",
"\n",
"\n",
"- **Commit all changes to the local repository**\n",
"```\n",
"$ git commit -m \"Your commit message\"\n",
"```\n",
"\n",
"\n",
"- **Push commits to the remote repository.** \n",
"```\n",
"$ git push\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "2e0d695f-a58b-4bad-a5bf-979a8897e9a4"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Other Important Commands\n",
"\n",
"- **Returns the status of the working directory vs the repository (e.g. changes present?, new files?, removed files?)**\n",
"```\n",
"$ git status\n",
"```\n",
"\n",
"- **Removes a file from the staging area and working directory.**\n",
"```\n",
"$ git rm [-r] \n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "ac2fd93e-9513-4869-9b15-f692772ee7e0"
},
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Exercises\n",
"**[Github git tutorial](https://try.github.io/levels/1/challenges/1)**"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "81f0a76d-02a7-4783-8db5-d0af4661de14"
},
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# References\n",
"**Python:**\n",
"- https://scipy-lectures.github.io/index.html\n",
"- http://learnxinyminutes.com/docs/python/\n",
"- https://docs.python.org/2/tutorial/\n",
"\n",
"**Git:**\n",
"- https://try.github.io/levels/1/challenges/1\n",
"- http://rogerdudler.github.io/git-guide/index.de.html\n",
"- http://git-scm.com/book"
]
}
],
"metadata": {
"anaconda-cloud": {},
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python [default]",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
},
"nbpresent": {
"slides": {
"03ebb3b4-e1e6-4708-8eee-245aefc26dba": {
"id": "03ebb3b4-e1e6-4708-8eee-245aefc26dba",
"prev": "9c582845-c981-4bf9-af66-8e177559c256",
"regions": {
"04c41d05-83ac-4a8f-9649-8f934aaf4d5c": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "d11b00e4-8aee-4906-be8b-7995b7f03b2a",
"part": "whole"
},
"id": "04c41d05-83ac-4a8f-9649-8f934aaf4d5c"
},
"a408654b-6cf0-491f-94ed-e03528a44a4b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "c9e6061c-0aa6-49d0-af8e-fcc295c1d963",
"part": "whole"
},
"id": "a408654b-6cf0-491f-94ed-e03528a44a4b"
}
}
},
"077fd736-0e50-418f-b5f6-d820db460db7": {
"id": "077fd736-0e50-418f-b5f6-d820db460db7",
"prev": "2116f4cf-d5ea-4d28-b917-915d639b3d95",
"regions": {
"ec67f29d-b6d2-4b7e-9bd4-e0e3bc204fa6": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "daebae9e-9706-4d13-8520-7f277a93970e",
"part": "whole"
},
"id": "ec67f29d-b6d2-4b7e-9bd4-e0e3bc204fa6"
}
}
},
"0ac95c31-883d-459c-80b0-76d252be5e57": {
"id": "0ac95c31-883d-459c-80b0-76d252be5e57",
"prev": "7839ebf0-9f1e-4d99-af4c-ee3a59cd6651",
"regions": {
"4c7dab43-20b2-4258-a351-0b0e3e1f404d": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "b4629796-5f51-4e0c-88d0-59efa1bfe586",
"part": "whole"
},
"id": "4c7dab43-20b2-4258-a351-0b0e3e1f404d"
}
}
},
"0b6830d8-73b8-469c-9dbc-f7ad0c672661": {
"id": "0b6830d8-73b8-469c-9dbc-f7ad0c672661",
"prev": "2b3f8a10-0bd7-4c07-961a-eb01960a842a",
"regions": {
"15cada42-bbf9-4730-87fb-9d8958dfeaea": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "6cd29b27-0812-46a1-958b-9a7a33c8e894",
"part": "whole"
},
"id": "15cada42-bbf9-4730-87fb-9d8958dfeaea"
}
}
},
"1d72770b-6f2e-4550-89fc-bcb708463381": {
"id": "1d72770b-6f2e-4550-89fc-bcb708463381",
"prev": "7749a311-28a7-4b94-89a8-b387207158b4",
"regions": {
"47dc4a6a-71eb-4f13-8879-63291c174376": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "37b33e06-e577-4146-90c9-1839a6bef1c1",
"part": "whole"
},
"id": "47dc4a6a-71eb-4f13-8879-63291c174376"
}
}
},
"1fb333bb-be38-42ef-b7b5-3b23e795121e": {
"id": "1fb333bb-be38-42ef-b7b5-3b23e795121e",
"prev": "bb64f478-7e83-4f0f-b401-aa51280b11eb",
"regions": {
"556f5aa1-2260-4be8-937e-27a029f7bfca": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "de3b5efa-9f5c-4925-b2d9-f6b0eff9e9a0",
"part": "whole"
},
"id": "556f5aa1-2260-4be8-937e-27a029f7bfca"
}
}
},
"2045cc1b-3f73-4326-9593-5ee29207ce7a": {
"id": "2045cc1b-3f73-4326-9593-5ee29207ce7a",
"prev": "cb9e594b-0bf1-432b-a9f4-4436c5df26b3",
"regions": {
"34b7ddc1-fb89-4602-95e1-6e6e767754fb": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "4a4ed1bc-6aa0-45cd-910b-845e7398107c",
"part": "whole"
},
"id": "34b7ddc1-fb89-4602-95e1-6e6e767754fb"
}
}
},
"2116f4cf-d5ea-4d28-b917-915d639b3d95": {
"id": "2116f4cf-d5ea-4d28-b917-915d639b3d95",
"prev": "f88fd3d3-768d-4b77-8433-5b87fd5e4b77",
"regions": {
"03403cc2-5eb9-4a48-b2b2-9d664e39a698": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "ab2c05e7-9935-46d4-b399-a78f43b6076b",
"part": "whole"
},
"id": "03403cc2-5eb9-4a48-b2b2-9d664e39a698"
}
}
},
"2b3f8a10-0bd7-4c07-961a-eb01960a842a": {
"id": "2b3f8a10-0bd7-4c07-961a-eb01960a842a",
"prev": "f7d1383e-f2ae-44e7-91d1-c9942b27ec03",
"regions": {
"f3c83528-b523-4fa0-9a3d-0817e0ca65c3": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "1dfa1937-8105-4c11-9ec1-d1bbf9531822",
"part": "whole"
},
"id": "f3c83528-b523-4fa0-9a3d-0817e0ca65c3"
}
}
},
"300b61e0-f287-459e-a16c-52db9b201d16": {
"id": "300b61e0-f287-459e-a16c-52db9b201d16",
"prev": "369e80a2-4255-4510-8064-44317e52ab18",
"regions": {
"2209cf76-2e65-4d36-a881-cd6073a0d293": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "0019dbe6-0c8c-4983-92a8-4d986d3811f9",
"part": "whole"
},
"id": "2209cf76-2e65-4d36-a881-cd6073a0d293"
},
"6c8606f5-d9f4-41ec-830b-d72e1185f083": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "53123ca1-0144-48bf-bc73-d920e8db178c",
"part": "whole"
},
"id": "6c8606f5-d9f4-41ec-830b-d72e1185f083"
}
}
},
"3510d15b-d731-4b2a-b8e3-5a8f68114999": {
"id": "3510d15b-d731-4b2a-b8e3-5a8f68114999",
"prev": "629b8f45-ac39-42e9-b976-3555a4e12f3b",
"regions": {
"3359a33b-018f-4ca0-9d14-e7cf7f22bba1": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "7d399080-2ab9-4434-9478-7952820c09ff",
"part": "whole"
},
"id": "3359a33b-018f-4ca0-9d14-e7cf7f22bba1"
}
}
},
"369e80a2-4255-4510-8064-44317e52ab18": {
"id": "369e80a2-4255-4510-8064-44317e52ab18",
"prev": "7ed7c319-7b44-4019-ab68-0b34289c5f2f",
"regions": {
"1d59fc5e-2721-4208-bab5-5c759ea3f002": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "85d3adf4-e3a1-4613-a4bb-9109932ed308",
"part": "whole"
},
"id": "1d59fc5e-2721-4208-bab5-5c759ea3f002"
},
"285cae5a-ba4f-4bea-a89e-8eb1a5ca4031": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "6d52debd-47eb-458a-95cf-bc469270a19b",
"part": "whole"
},
"id": "285cae5a-ba4f-4bea-a89e-8eb1a5ca4031"
},
"492a8cab-2f92-498d-a661-ee848726e98f": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "ecb79b65-68ae-4df6-b38e-ebef2e73ede3",
"part": "whole"
},
"id": "492a8cab-2f92-498d-a661-ee848726e98f"
},
"68a21fdf-cde5-40e7-a349-5912ff70271d": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "a34e2f76-7e51-4161-a489-f8167c4c51d7",
"part": "whole"
},
"id": "68a21fdf-cde5-40e7-a349-5912ff70271d"
},
"d6b5adda-b4bf-4e2b-9d43-87cf819f5636": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "847eeb0e-b03b-48c8-8150-ff18c0b42c76",
"part": "whole"
},
"id": "d6b5adda-b4bf-4e2b-9d43-87cf819f5636"
}
}
},
"398c86f4-bd62-4d22-b4be-46231ab6502d": {
"id": "398c86f4-bd62-4d22-b4be-46231ab6502d",
"prev": "95667a3c-1075-4a7d-8664-feb31a595530",
"regions": {
"d4781add-09f5-467d-8dd4-7af4b4839cb8": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "c64bfb29-d2aa-4455-b146-f900cb5f69e9",
"part": "whole"
},
"id": "d4781add-09f5-467d-8dd4-7af4b4839cb8"
}
}
},
"3a29504c-fc18-495f-b78e-4d84f0dba7a2": {
"id": "3a29504c-fc18-495f-b78e-4d84f0dba7a2",
"prev": "f76aa05e-cad2-4379-9b70-910133438ed5",
"regions": {
"070b1cba-42f2-4e77-be67-93eaa4edf399": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "2e0d695f-a58b-4bad-a5bf-979a8897e9a4",
"part": "whole"
},
"id": "070b1cba-42f2-4e77-be67-93eaa4edf399"
}
}
},
"3c24eeb5-eff5-4981-8b05-b2e7c3715043": {
"id": "3c24eeb5-eff5-4981-8b05-b2e7c3715043",
"prev": "7861495f-4a8d-4914-a953-7e58b734a80d",
"regions": {
"d4bad429-5b99-4cc9-bdc5-691b1e58814b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "70831706-350e-4a2e-b416-45489cf6030e",
"part": "whole"
},
"id": "d4bad429-5b99-4cc9-bdc5-691b1e58814b"
}
}
},
"4021b2a6-5e6b-4c02-aad6-854d2a9f2e65": {
"id": "4021b2a6-5e6b-4c02-aad6-854d2a9f2e65",
"prev": "de3417aa-cdf6-477c-9896-5ffb668cea12",
"regions": {
"5643e3df-7942-490e-a848-93cb0f2b89f4": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "e3c3046e-67d5-482f-b19a-5435d0cb4896",
"part": "whole"
},
"id": "5643e3df-7942-490e-a848-93cb0f2b89f4"
},
"a697254d-6bb4-436c-8367-dc3a6f2b1cbb": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "8a619477-ff9a-42bc-86fc-b311bea7d0eb",
"part": "whole"
},
"id": "a697254d-6bb4-436c-8367-dc3a6f2b1cbb"
}
}
},
"4876e32c-a9eb-452f-860f-fa2b3b4742ab": {
"id": "4876e32c-a9eb-452f-860f-fa2b3b4742ab",
"prev": "e2603728-67a3-4ce8-a35f-895a0ff66f59",
"regions": {
"39dbea12-89d8-4cfd-bd57-4e16de93e28f": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "c4c8b755-55d9-4a29-96c3-c1a0753a79ff",
"part": "whole"
},
"id": "39dbea12-89d8-4cfd-bd57-4e16de93e28f"
}
}
},
"4f74fd53-014d-4390-8c07-0197c9ce8607": {
"id": "4f74fd53-014d-4390-8c07-0197c9ce8607",
"prev": "f94acc94-704c-4873-acfb-c37dc82552f3",
"regions": {
"06166e27-4506-467b-9533-8b0917cd42a4": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "3aa19415-9834-48f2-94e6-708b759589bb",
"part": "whole"
},
"id": "06166e27-4506-467b-9533-8b0917cd42a4"
},
"b1c0a21b-2d0b-4763-8869-cbac63536764": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "76110d90-aa96-44b7-99f6-ee89749a4894",
"part": "whole"
},
"id": "b1c0a21b-2d0b-4763-8869-cbac63536764"
},
"e15ad91e-fddf-4619-8892-31577dc8b46e": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "69329572-5b2e-4b4c-b2f5-2e2031cd1cd8",
"part": "whole"
},
"id": "e15ad91e-fddf-4619-8892-31577dc8b46e"
}
}
},
"5a596a5c-28d6-4d36-ae97-83e55256a3ec": {
"id": "5a596a5c-28d6-4d36-ae97-83e55256a3ec",
"prev": "f64a96d8-1adc-409b-af70-5fb3c68b8690",
"regions": {
"ad4d1824-d7da-4eb8-b31c-92f73a7fe6dc": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "7523fc0d-25d8-4e92-8005-8039d1eb4698",
"part": "whole"
},
"id": "ad4d1824-d7da-4eb8-b31c-92f73a7fe6dc"
}
}
},
"5ac5e654-5ce9-4d8d-84e0-1657878c4680": {
"id": "5ac5e654-5ce9-4d8d-84e0-1657878c4680",
"prev": "78b61a94-1d34-4caa-b791-83f0fd92176c",
"regions": {
"09906f50-c11b-4047-8004-452742f1392b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "81f0a76d-02a7-4783-8db5-d0af4661de14",
"part": "whole"
},
"id": "09906f50-c11b-4047-8004-452742f1392b"
}
}
},
"5fead47e-6bdb-47e3-912d-a0f47755afda": {
"id": "5fead47e-6bdb-47e3-912d-a0f47755afda",
"prev": "69791ab4-228f-49c6-86da-ad775728cb25",
"regions": {
"2b382d0b-9df4-4a6e-9670-b77c85aaf0c6": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "e64ae765-aed7-4f26-9085-1c2976a585c3",
"part": "whole"
},
"id": "2b382d0b-9df4-4a6e-9670-b77c85aaf0c6"
},
"8e96e419-eb36-4625-938e-df60bb72a48c": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "b72279db-ddd7-4063-acec-553613169d33",
"part": "whole"
},
"id": "8e96e419-eb36-4625-938e-df60bb72a48c"
},
"9eb63ea9-0805-439e-8866-6dea66fa856c": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "0f87d8ac-9989-4171-9893-57f8d04c8fe7",
"part": "whole"
},
"id": "9eb63ea9-0805-439e-8866-6dea66fa856c"
}
}
},
"629b8f45-ac39-42e9-b976-3555a4e12f3b": {
"id": "629b8f45-ac39-42e9-b976-3555a4e12f3b",
"prev": "e2c175da-8a62-4c8c-a342-81ca3c58100e",
"regions": {
"40a1f90a-a1c7-45da-a80e-f15ea03d4e49": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "ab5e5745-f025-4b2a-bef6-d1040bcf0e6f",
"part": "whole"
},
"id": "40a1f90a-a1c7-45da-a80e-f15ea03d4e49"
},
"4719ca65-e25a-43f7-8847-87d2fcb7dcba": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "6e236b23-dfe4-46dc-8a94-cb50a0274011",
"part": "whole"
},
"id": "4719ca65-e25a-43f7-8847-87d2fcb7dcba"
}
}
},
"6474238d-ba05-4ec9-8978-c3958bd4c79a": {
"id": "6474238d-ba05-4ec9-8978-c3958bd4c79a",
"prev": null,
"regions": {
"e9daa1d0-21e7-478d-a1b9-18d3dbadd105": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "d12895fc-e9d2-4450-82ad-4c1a0f0377f6",
"part": "whole"
},
"id": "e9daa1d0-21e7-478d-a1b9-18d3dbadd105"
}
}
},
"69791ab4-228f-49c6-86da-ad775728cb25": {
"id": "69791ab4-228f-49c6-86da-ad775728cb25",
"prev": "862740f5-1a96-47f6-ae07-6a1e5e683d10",
"regions": {
"966dca91-a926-430a-b1b4-d317d4dd1406": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "4f8f38d7-5ee2-4f4d-975f-d0df0a8c8ad8",
"part": "whole"
},
"id": "966dca91-a926-430a-b1b4-d317d4dd1406"
}
}
},
"73634a50-77b1-41b6-ac65-ea62a9f5de3f": {
"id": "73634a50-77b1-41b6-ac65-ea62a9f5de3f",
"prev": "ca03438d-a32f-42d4-bb49-eedf1d430821",
"regions": {
"9d9dc07d-1929-4dd0-bca6-0c73b7e5db1d": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "2b40388f-e218-4fee-b482-cc2949aca3ba",
"part": "whole"
},
"id": "9d9dc07d-1929-4dd0-bca6-0c73b7e5db1d"
}
}
},
"7749a311-28a7-4b94-89a8-b387207158b4": {
"id": "7749a311-28a7-4b94-89a8-b387207158b4",
"prev": "c15ab019-f87c-4770-9ef0-fb50e4c2a2f1",
"regions": {
"d2bfeec5-0077-4887-bc76-057bad9f86a7": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "bdf5aa9d-0ad0-4d7e-8ec9-69767aac949d",
"part": "whole"
},
"id": "d2bfeec5-0077-4887-bc76-057bad9f86a7"
}
}
},
"7839ebf0-9f1e-4d99-af4c-ee3a59cd6651": {
"id": "7839ebf0-9f1e-4d99-af4c-ee3a59cd6651",
"prev": "d4d57fa1-88cc-4b03-8e1b-1eccd04e95d6",
"regions": {
"14868a3a-54ba-4c6c-b0a4-bd6dfa427af2": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "e47a821a-60b4-4faf-abac-5de9f3e6f2d6",
"part": "whole"
},
"id": "14868a3a-54ba-4c6c-b0a4-bd6dfa427af2"
}
}
},
"7861495f-4a8d-4914-a953-7e58b734a80d": {
"id": "7861495f-4a8d-4914-a953-7e58b734a80d",
"prev": "077fd736-0e50-418f-b5f6-d820db460db7",
"regions": {
"9e90b0c2-0adf-48fd-a6e7-ea2b1bc45631": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "268c7b9d-5460-4bb1-aa89-3d043386225f",
"part": "whole"
},
"id": "9e90b0c2-0adf-48fd-a6e7-ea2b1bc45631"
}
}
},
"788c3324-a561-45be-a16c-ea59cf3bd544": {
"id": "788c3324-a561-45be-a16c-ea59cf3bd544",
"prev": "fdf3e56f-b08d-4ab6-b497-91ba154795b2",
"regions": {
"349dd23c-0155-4457-b0ee-29ee42055b76": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "bde71215-d5bd-47d5-9689-6af0c59e52f8",
"part": "whole"
},
"id": "349dd23c-0155-4457-b0ee-29ee42055b76"
},
"60150f68-46ba-495c-a5da-608fc88516ca": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "8e5f372f-f4cd-4411-9cbe-a23cdf7ed1d6",
"part": "whole"
},
"id": "60150f68-46ba-495c-a5da-608fc88516ca"
}
}
},
"78b61a94-1d34-4caa-b791-83f0fd92176c": {
"id": "78b61a94-1d34-4caa-b791-83f0fd92176c",
"prev": "3a29504c-fc18-495f-b78e-4d84f0dba7a2",
"regions": {
"a151584e-9863-43d9-a04d-d71da2b3fa5d": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "ac2fd93e-9513-4869-9b15-f692772ee7e0",
"part": "whole"
},
"id": "a151584e-9863-43d9-a04d-d71da2b3fa5d"
}
}
},
"7ceb0a9c-e715-4f16-bc73-9a91eebc175a": {
"id": "7ceb0a9c-e715-4f16-bc73-9a91eebc175a",
"prev": "9c62c9e9-d60b-48ca-9cd9-8840595112b5",
"regions": {
"92b4c853-599b-468f-8248-08710c2dd072": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "8efc1a03-80cb-4800-8112-68f6c732e66b",
"part": "whole"
},
"id": "92b4c853-599b-468f-8248-08710c2dd072"
}
}
},
"7ed7c319-7b44-4019-ab68-0b34289c5f2f": {
"id": "7ed7c319-7b44-4019-ab68-0b34289c5f2f",
"prev": "b932ea1a-04a0-4c41-ad3b-5495b4954764",
"regions": {
"50312772-43ce-4569-bf69-7a31250fdfb2": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "5181c555-6086-4880-b29a-2348f6511da9",
"part": "whole"
},
"id": "50312772-43ce-4569-bf69-7a31250fdfb2"
},
"518ddfe8-b8ae-495e-b8a9-f88b7898485e": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "b76d6d0a-8c53-494f-971d-2ee4b070b073",
"part": "whole"
},
"id": "518ddfe8-b8ae-495e-b8a9-f88b7898485e"
},
"87361b65-5e1e-4be9-a1d9-4b171cafc3a8": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "f891d975-d161-44ae-9ca7-8d3ccf5fc215",
"part": "whole"
},
"id": "87361b65-5e1e-4be9-a1d9-4b171cafc3a8"
}
}
},
"862740f5-1a96-47f6-ae07-6a1e5e683d10": {
"id": "862740f5-1a96-47f6-ae07-6a1e5e683d10",
"prev": "4f74fd53-014d-4390-8c07-0197c9ce8607",
"regions": {
"42306faa-8f0c-485c-960d-df7eb77c09c9": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "74273d87-a08a-4770-af40-ae9c1891cc3a",
"part": "whole"
},
"id": "42306faa-8f0c-485c-960d-df7eb77c09c9"
}
}
},
"93a84b09-fc75-4f02-a9b0-547c0116833c": {
"id": "93a84b09-fc75-4f02-a9b0-547c0116833c",
"prev": "e6822679-b40f-4683-a0e2-8bc07f52804f",
"regions": {
"25bc8005-ca63-4275-9e48-03ffbe67b53e": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "1c548566-da61-4c09-9d3a-ca9dbe91af3c",
"part": "whole"
},
"id": "25bc8005-ca63-4275-9e48-03ffbe67b53e"
},
"517ad731-de65-4b9f-a0d1-6481c6535f7b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "03fd621d-0671-4e62-b746-0664c73c489f",
"part": "whole"
},
"id": "517ad731-de65-4b9f-a0d1-6481c6535f7b"
}
}
},
"95667a3c-1075-4a7d-8664-feb31a595530": {
"id": "95667a3c-1075-4a7d-8664-feb31a595530",
"prev": "9ed90208-a569-4e7b-b03b-6c7adc1f53dd",
"regions": {
"1937290f-5a31-43d2-b0fc-f6303c48a027": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "526af6d0-b18a-4607-b982-d6dde7b7e2c6",
"part": "whole"
},
"id": "1937290f-5a31-43d2-b0fc-f6303c48a027"
}
}
},
"96d3765c-c2b8-47ac-a6a2-2dd5e3e40d71": {
"id": "96d3765c-c2b8-47ac-a6a2-2dd5e3e40d71",
"prev": "6474238d-ba05-4ec9-8978-c3958bd4c79a",
"regions": {
"9ef73a38-93bd-4406-b00e-0eb4cb4eeed2": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "dfd8bc63-c0b1-4a97-818e-8d2eabe4091d",
"part": "whole"
},
"id": "9ef73a38-93bd-4406-b00e-0eb4cb4eeed2"
}
}
},
"9a3c6784-6eff-47f4-b1bd-0c1dd948edef": {
"id": "9a3c6784-6eff-47f4-b1bd-0c1dd948edef",
"prev": "aeec7108-724a-4eaa-bd2c-842e4364d647",
"regions": {
"6c626678-2a95-49d5-9190-c218c9bc5c20": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "c2612fa3-97f6-4597-a2ea-dc6f6ccd903a",
"part": "whole"
},
"id": "6c626678-2a95-49d5-9190-c218c9bc5c20"
},
"755a63e2-6bb4-4674-809f-de2355ef3e03": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "c07daf28-8f7e-451d-a285-cce3cd5df359",
"part": "whole"
},
"id": "755a63e2-6bb4-4674-809f-de2355ef3e03"
}
}
},
"9c582845-c981-4bf9-af66-8e177559c256": {
"id": "9c582845-c981-4bf9-af66-8e177559c256",
"prev": "1d72770b-6f2e-4550-89fc-bcb708463381",
"regions": {
"1192928c-1a18-4614-a415-2f0d2fdec9d0": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "fba0ab5c-2c39-41bd-abb1-afae340e885a",
"part": "whole"
},
"id": "1192928c-1a18-4614-a415-2f0d2fdec9d0"
}
}
},
"9c62c9e9-d60b-48ca-9cd9-8840595112b5": {
"id": "9c62c9e9-d60b-48ca-9cd9-8840595112b5",
"prev": "0b6830d8-73b8-469c-9dbc-f7ad0c672661",
"regions": {
"316f68ff-be76-4a41-9966-e736711f3063": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "b25229ca-6cd7-4ba8-99bd-445472cb10a0",
"part": "whole"
},
"id": "316f68ff-be76-4a41-9966-e736711f3063"
},
"56181e3d-6bd8-4044-aa07-41e2f5f97aeb": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "cc003ad3-5ca2-4e18-89e5-7d4b16930a50",
"part": "whole"
},
"id": "56181e3d-6bd8-4044-aa07-41e2f5f97aeb"
}
}
},
"9d6c931a-e296-4af0-970e-790e37684f7c": {
"id": "9d6c931a-e296-4af0-970e-790e37684f7c",
"prev": "398c86f4-bd62-4d22-b4be-46231ab6502d",
"regions": {
"47c5c1f3-33f0-4729-9ece-332d1b7a2909": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "a87ce2b1-6cc7-4d83-9537-32a1e88dbf3f",
"part": "whole"
},
"id": "47c5c1f3-33f0-4729-9ece-332d1b7a2909"
}
}
},
"9ed90208-a569-4e7b-b03b-6c7adc1f53dd": {
"id": "9ed90208-a569-4e7b-b03b-6c7adc1f53dd",
"prev": "4021b2a6-5e6b-4c02-aad6-854d2a9f2e65",
"regions": {
"69587752-15da-45dc-907f-dfb2c49adb2b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "983f1a79-bdad-4eaf-8445-0ef5e13ff78a",
"part": "whole"
},
"id": "69587752-15da-45dc-907f-dfb2c49adb2b"
},
"a6eeccd5-4bbf-4fbe-bafa-5ab2ff06d512": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "3c03d53b-9ce5-4a41-8f1c-f8eb28c0913c",
"part": "whole"
},
"id": "a6eeccd5-4bbf-4fbe-bafa-5ab2ff06d512"
}
}
},
"a23e77a5-7739-4ce2-b2ea-5896797fc4b0": {
"id": "a23e77a5-7739-4ce2-b2ea-5896797fc4b0",
"prev": "1fb333bb-be38-42ef-b7b5-3b23e795121e",
"regions": {
"44cbbb4a-ede6-4ce3-a25b-e5aaead63294": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "def05353-a723-4b7c-a807-a935ac5400a4",
"part": "whole"
},
"id": "44cbbb4a-ede6-4ce3-a25b-e5aaead63294"
}
}
},
"a2a07b88-8c2b-4873-94f3-c5faa594ac59": {
"id": "a2a07b88-8c2b-4873-94f3-c5faa594ac59",
"prev": "03ebb3b4-e1e6-4708-8eee-245aefc26dba",
"regions": {
"a4fa52ed-e4ae-41dc-bf6f-f22545dc8e46": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "e383974d-d48e-4d9d-b441-895be38c6a43",
"part": "whole"
},
"id": "a4fa52ed-e4ae-41dc-bf6f-f22545dc8e46"
}
}
},
"aa9fa66a-5ad5-485c-9b96-252daab5fff1": {
"id": "aa9fa66a-5ad5-485c-9b96-252daab5fff1",
"prev": "788c3324-a561-45be-a16c-ea59cf3bd544",
"regions": {
"67fff11c-e963-4cfd-94b8-ff0d88fb8f29": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "27aa26a3-6e82-4155-8822-41eecfc329c1",
"part": "whole"
},
"id": "67fff11c-e963-4cfd-94b8-ff0d88fb8f29"
}
}
},
"ad960fc5-8528-444f-8756-2408222d0b7e": {
"id": "ad960fc5-8528-444f-8756-2408222d0b7e",
"prev": "96d3765c-c2b8-47ac-a6a2-2dd5e3e40d71",
"regions": {
"0104ec1c-17d6-4c01-876b-9573d5dbf4f0": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "d87ede56-acd8-4ab4-9b2a-267dfae83a16",
"part": "whole"
},
"id": "0104ec1c-17d6-4c01-876b-9573d5dbf4f0"
}
}
},
"aeec7108-724a-4eaa-bd2c-842e4364d647": {
"id": "aeec7108-724a-4eaa-bd2c-842e4364d647",
"prev": "7ceb0a9c-e715-4f16-bc73-9a91eebc175a",
"regions": {
"8f03b4bc-24dc-46fb-a398-36decafce0a7": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "d84af875-86aa-403a-a562-92d45711c40d",
"part": "whole"
},
"id": "8f03b4bc-24dc-46fb-a398-36decafce0a7"
},
"8f0f6a85-91cb-47d0-baef-4e38f72433f4": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "244bed87-f877-4c34-9286-1aa4656c0549",
"part": "whole"
},
"id": "8f0f6a85-91cb-47d0-baef-4e38f72433f4"
}
}
},
"b932ea1a-04a0-4c41-ad3b-5495b4954764": {
"id": "b932ea1a-04a0-4c41-ad3b-5495b4954764",
"prev": "93a84b09-fc75-4f02-a9b0-547c0116833c",
"regions": {
"c95bad37-54ce-42fc-ac84-62b784e799a4": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "e02bee8b-74ee-4ec6-9e4d-56a8c4d62a18",
"part": "whole"
},
"id": "c95bad37-54ce-42fc-ac84-62b784e799a4"
},
"e8586a4f-bef8-486a-a861-bbc57a475c44": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "c8060d59-1226-4d88-9f5d-8a47f7a93fb2",
"part": "whole"
},
"id": "e8586a4f-bef8-486a-a861-bbc57a475c44"
},
"f7eeb65f-f340-4cb7-9986-31172b261a49": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "5e78f362-629b-4a23-9fc8-031ccd7bb8d2",
"part": "whole"
},
"id": "f7eeb65f-f340-4cb7-9986-31172b261a49"
}
}
},
"bb64f478-7e83-4f0f-b401-aa51280b11eb": {
"id": "bb64f478-7e83-4f0f-b401-aa51280b11eb",
"prev": "5a596a5c-28d6-4d36-ae97-83e55256a3ec",
"regions": {
"20c865cf-6e7e-4c6a-a059-a28b39957028": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "be8aae5f-3676-468d-a7ac-565aeb7a874d",
"part": "whole"
},
"id": "20c865cf-6e7e-4c6a-a059-a28b39957028"
}
}
},
"c15ab019-f87c-4770-9ef0-fb50e4c2a2f1": {
"id": "c15ab019-f87c-4770-9ef0-fb50e4c2a2f1",
"prev": "9d6c931a-e296-4af0-970e-790e37684f7c",
"regions": {
"22f3d001-9c9e-4c30-a99a-1f31aab69c06": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "39a3bf91-b780-41f0-9bc7-08b8e084013f",
"part": "whole"
},
"id": "22f3d001-9c9e-4c30-a99a-1f31aab69c06"
}
}
},
"ca03438d-a32f-42d4-bb49-eedf1d430821": {
"id": "ca03438d-a32f-42d4-bb49-eedf1d430821",
"prev": "3510d15b-d731-4b2a-b8e3-5a8f68114999",
"regions": {
"4afd0575-268a-4bd3-bbb9-e4feae96b53a": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "872b44cc-4d3b-4059-9bdf-762d5d397dd9",
"part": "whole"
},
"id": "4afd0575-268a-4bd3-bbb9-e4feae96b53a"
}
}
},
"cb9e594b-0bf1-432b-a9f4-4436c5df26b3": {
"id": "cb9e594b-0bf1-432b-a9f4-4436c5df26b3",
"prev": "a23e77a5-7739-4ce2-b2ea-5896797fc4b0",
"regions": {
"90ccaffb-9af1-4262-92a7-fc733ee04f3f": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "446575e7-d6bb-48c3-8194-d07f94fbac4e",
"part": "whole"
},
"id": "90ccaffb-9af1-4262-92a7-fc733ee04f3f"
}
}
},
"d4d57fa1-88cc-4b03-8e1b-1eccd04e95d6": {
"id": "d4d57fa1-88cc-4b03-8e1b-1eccd04e95d6",
"prev": "ad960fc5-8528-444f-8756-2408222d0b7e",
"regions": {
"ac399d7f-0cfa-4671-abb2-10749a12bbea": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "06799276-d239-4c70-95c9-0cd459fbc0c9",
"part": "whole"
},
"id": "ac399d7f-0cfa-4671-abb2-10749a12bbea"
}
}
},
"de3417aa-cdf6-477c-9896-5ffb668cea12": {
"id": "de3417aa-cdf6-477c-9896-5ffb668cea12",
"prev": "aa9fa66a-5ad5-485c-9b96-252daab5fff1",
"regions": {
"01ad388b-064d-412c-9664-590a493b9a58": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "fac61ad2-464a-40ec-b1aa-bb0ab03746a6",
"part": "whole"
},
"id": "01ad388b-064d-412c-9664-590a493b9a58"
},
"2406d17c-0446-455e-80db-862947fd4823": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "bf21c6b2-3e3e-4362-8060-e0ed293b2500",
"part": "whole"
},
"id": "2406d17c-0446-455e-80db-862947fd4823"
},
"f99c46c5-9782-498c-8782-94d40e141def": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "6a3f6b1a-2dae-449f-befc-cabd265c058a",
"part": "whole"
},
"id": "f99c46c5-9782-498c-8782-94d40e141def"
}
}
},
"e2603728-67a3-4ce8-a35f-895a0ff66f59": {
"id": "e2603728-67a3-4ce8-a35f-895a0ff66f59",
"prev": "2045cc1b-3f73-4326-9593-5ee29207ce7a",
"regions": {
"41783b82-ca1e-448e-89d3-1a212b8719bf": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "bb8570b4-33c5-480e-a492-35bb3b3322d3",
"part": "whole"
},
"id": "41783b82-ca1e-448e-89d3-1a212b8719bf"
}
}
},
"e2c175da-8a62-4c8c-a342-81ca3c58100e": {
"id": "e2c175da-8a62-4c8c-a342-81ca3c58100e",
"prev": "9a3c6784-6eff-47f4-b1bd-0c1dd948edef",
"regions": {
"65b67ff8-2726-475d-9847-8e844723dfe4": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "6b11abb0-e7d4-4be0-953e-d01a5e535d71",
"part": "whole"
},
"id": "65b67ff8-2726-475d-9847-8e844723dfe4"
},
"a4687f26-7043-4ca3-a275-58ec78f2cf9b": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "4b631bd6-3ff3-472f-a268-d47ae1111a76",
"part": "whole"
},
"id": "a4687f26-7043-4ca3-a275-58ec78f2cf9b"
}
}
},
"e6822679-b40f-4683-a0e2-8bc07f52804f": {
"id": "e6822679-b40f-4683-a0e2-8bc07f52804f",
"prev": "73634a50-77b1-41b6-ac65-ea62a9f5de3f",
"regions": {
"614bd451-e0e8-437c-987f-2b88fd9de1ef": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "23087ad7-b2a5-4354-9c0e-c022d134c02c",
"part": "whole"
},
"id": "614bd451-e0e8-437c-987f-2b88fd9de1ef"
},
"76f2f8de-b7bd-4ef8-92c1-8d9155c18b9b": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "6455ea4a-3d80-4179-a398-1532471f149f",
"part": "whole"
},
"id": "76f2f8de-b7bd-4ef8-92c1-8d9155c18b9b"
},
"936b1b70-e0df-4cfc-9a9d-13f4b2ba6688": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "0e3879d4-32f1-4d20-9d1f-db03facfd36f",
"part": "whole"
},
"id": "936b1b70-e0df-4cfc-9a9d-13f4b2ba6688"
}
}
},
"ed43497b-8435-4910-89d6-a8f166a26e44": {
"id": "ed43497b-8435-4910-89d6-a8f166a26e44",
"prev": "300b61e0-f287-459e-a16c-52db9b201d16",
"regions": {
"5afe53e4-32be-43b2-9af0-1c8bf3daf718": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "5eae6e1d-78f3-4f72-b3eb-0d3f5c98d217",
"part": "whole"
},
"id": "5afe53e4-32be-43b2-9af0-1c8bf3daf718"
},
"8aaeb9ab-9253-4bca-ab95-d9df055c0b28": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "67494a06-e358-4639-9d84-752d72f60064",
"part": "whole"
},
"id": "8aaeb9ab-9253-4bca-ab95-d9df055c0b28"
},
"cec8066b-77ee-4252-ae96-4c8335e36a40": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "30af7edc-f671-4a0d-9337-eda616ea1d79",
"part": "whole"
},
"id": "cec8066b-77ee-4252-ae96-4c8335e36a40"
}
}
},
"f64a96d8-1adc-409b-af70-5fb3c68b8690": {
"id": "f64a96d8-1adc-409b-af70-5fb3c68b8690",
"prev": "3c24eeb5-eff5-4981-8b05-b2e7c3715043",
"regions": {
"95a11c5e-e10a-43c4-ac24-eb5cceb0a0e0": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "769bf03e-6c93-4411-a629-4d3339c16a5c",
"part": "whole"
},
"id": "95a11c5e-e10a-43c4-ac24-eb5cceb0a0e0"
}
}
},
"f76aa05e-cad2-4379-9b70-910133438ed5": {
"id": "f76aa05e-cad2-4379-9b70-910133438ed5",
"prev": "4876e32c-a9eb-452f-860f-fa2b3b4742ab",
"regions": {
"21570da8-703a-4680-a6f0-b7bed77725c6": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "64559dbf-1496-442b-98df-fcdceb933eb6",
"part": "whole"
},
"id": "21570da8-703a-4680-a6f0-b7bed77725c6"
}
}
},
"f7d1383e-f2ae-44e7-91d1-c9942b27ec03": {
"id": "f7d1383e-f2ae-44e7-91d1-c9942b27ec03",
"prev": "0ac95c31-883d-459c-80b0-76d252be5e57",
"regions": {
"68074f65-c661-44d0-bc78-cce19c2603eb": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "752c0a36-27a4-434b-b965-4c463531cde1",
"part": "whole"
},
"id": "68074f65-c661-44d0-bc78-cce19c2603eb"
}
}
},
"f88fd3d3-768d-4b77-8433-5b87fd5e4b77": {
"id": "f88fd3d3-768d-4b77-8433-5b87fd5e4b77",
"prev": "a2a07b88-8c2b-4873-94f3-c5faa594ac59",
"regions": {
"6c75ddfa-a551-4bf6-84d3-798b4e36a7b8": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "b8d190cd-dbf1-4172-93eb-8c818a42fe08",
"part": "whole"
},
"id": "6c75ddfa-a551-4bf6-84d3-798b4e36a7b8"
}
}
},
"f94acc94-704c-4873-acfb-c37dc82552f3": {
"id": "f94acc94-704c-4873-acfb-c37dc82552f3",
"prev": "ed43497b-8435-4910-89d6-a8f166a26e44",
"regions": {
"50ffa5f8-1a45-471c-af9a-19379f761263": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "975c87bf-95ec-4ffd-b18f-78550a6af2f6",
"part": "whole"
},
"id": "50ffa5f8-1a45-471c-af9a-19379f761263"
},
"5d08d230-02e3-4c07-b0a1-158a3492753c": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "ff557636-596c-4320-883e-d2748ba037ee",
"part": "whole"
},
"id": "5d08d230-02e3-4c07-b0a1-158a3492753c"
}
}
},
"fdf3e56f-b08d-4ab6-b497-91ba154795b2": {
"id": "fdf3e56f-b08d-4ab6-b497-91ba154795b2",
"prev": "5fead47e-6bdb-47e3-912d-a0f47755afda",
"regions": {
"17269bf2-4ac1-49db-958f-52dd32ba1a80": {
"attrs": {
"height": 0.8,
"width": 0.8,
"x": 0.1,
"y": 0.1
},
"content": {
"cell": "cfa92050-a4d2-431a-8083-b1cf835ae4a5",
"part": "whole"
},
"id": "17269bf2-4ac1-49db-958f-52dd32ba1a80"
},
"347da67b-58e9-4f19-914c-9213434d080f": {
"attrs": {
"height": 0.4,
"width": 0.8,
"x": 0.1,
"y": 0.5
},
"content": {
"cell": "bb0f357a-101d-4ed7-a3ab-68ecac1b2084",
"part": "whole"
},
"id": "347da67b-58e9-4f19-914c-9213434d080f"
}
}
}
},
"themes": {}
}
},
"nbformat": 4,
"nbformat_minor": 0
}