Commit 39198c7c authored by Emilio Ambite's avatar Emilio Ambite

last version

parent c8ae748f
......@@ -97,7 +97,7 @@
"def normalize_rectangle(rect):\n",
" '''Normalizes a rectangle so that it is at the origin and 1.0 units long on its longest axis.'''\n",
" assert len(rect) == 4, 'Rectangles must contain 4 coordinates'\n",
" llx, llyy, urx, ury = rect\n",
" llx, lly, urx, ury = rect\n",
" assert llx < urx, 'Invalid X coordinates'\n",
" assert lly < ury, 'Invalid Y coordinates'\n",
"\n",
......@@ -141,6 +141,27 @@
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Post-conditions in lines 17, 18 check well formed output:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -244,20 +265,6 @@
"# Exercises"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pre- and Post-Conditions\n",
"\n",
"Suppose you are writing a function called average that calculates the average of the numbers in a list. What pre-conditions and post-conditions would you write for it? Compare your answer to your neighbor’s: can you think of a function that will pass your tests but not his/hers or vice versa?"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -286,12 +293,17 @@
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pre- and Post-Conditions\n",
"\n",
"Suppose you are writing a function called average that calculates the average of the numbers in a list. What pre-conditions and post-conditions would you write for it? Compare your answer to your neighbor’s: can you think of a function that will pass your tests but not his/hers or vice versa?"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": []
}
],
......
......@@ -504,6 +504,13 @@
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -555,38 +562,6 @@
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Oh wait... maybe I am creating to many variables... let's check:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes we can avoid the use of some variables:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -668,31 +643,6 @@
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"panel panel-info\">\n",
"<div class=\"panel-heading\">\n",
"<h3 class=\"panel-title\">\n",
"IPython Magic!\n",
"</h3>\n",
"</div>\n",
"<div class=\"panel-body\">\n",
"The % indicates an IPython magic function - a funciton that is valid only within the notebook environment.\n",
"</div>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -741,15 +691,6 @@
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -884,7 +825,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
"version": "3.7.4"
}
},
"nbformat": 4,
......
......@@ -100,7 +100,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"What about Farh to Celsius? One of the main proposes of functions is reusability. So let's reuse one of them to build some \"neat\" code:"
"What about Fahr to Celsius? One of the main proposes of functions is reusability. So let's reuse one of them to build some \"neat\" code:"
]
},
{
......@@ -125,14 +125,16 @@
]
},
{
"cell_type": "raw",
"cell_type": "markdown",
"metadata": {},
"source": [
"1) 7 3\n",
"2) 3 7\n",
"3) 3 3\n",
"4) 7 7\n",
"1. ) 7 3\n",
"2. ) 3 7\n",
"3. ) 3 3\n",
"4. ) 7 7\n",
"\n",
"\n",
"```\n",
"a = 3\n",
"b = 7\n",
"\n",
......@@ -143,7 +145,8 @@
"\n",
"swap(a, b)\n",
"\n",
"print(a, b)\n"
"print(a, b)\n",
"```"
]
},
{
......@@ -528,20 +531,23 @@
]
},
{
"cell_type": "raw",
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"def numbers(one, two=2, three, four=4):\n",
" n = str(one) + str(two) + str(three) + str(four)\n",
" return n\n",
"\n",
"print(numbers(1, three=3))\n",
"```\n",
"\n",
"what do you expect will be printed? What is actually printed? What rule do you think Python is following?\n",
"\n",
"1) 1234\n",
"2) one2three4\n",
"3) 1239\n",
"4) SyntaxError"
"1. ) 1234\n",
"2. ) one2three4\n",
"3. ) 1239\n",
"4. ) SyntaxError"
]
},
{
......@@ -593,10 +599,34 @@
"collapsed": true
},
"outputs": [],
"source": []
"source": [
"def s(p):\n",
" a = 0\n",
" for v in p:\n",
" a += v\n",
" m = a / len(p)\n",
" d = 0\n",
" for v in p:\n",
" d += (v - m) * (v - m)\n",
" return numpy.sqrt(d / (len(p) - 1))\n",
" \n",
"#It is not very to say what it does...though it does something very well known. Check this one:\n",
"\n",
"def std_deviation(sample):\n",
" sample_sum = 0\n",
" for value in sample:\n",
" sample_sum += value\n",
" \n",
" sample_mean = sample_sum / len(sample)\n",
" sum_squared_devs = 0\n",
" for value in sample:\n",
" sum_squared_devs += (value - sample_mean) * (value - sample_mean)\n",
" return numpy.sqrt(sum_squared_devs / (len(sample) - 1))\n",
"\n",
"#Much more easy to read!"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
......@@ -607,7 +637,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exercises"
"## Additional Exercises"
]
},
{
......@@ -739,22 +769,6 @@
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Readable code"
]
},
{
"cell_type": "code",
"execution_count": null,
......
......@@ -102,7 +102,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Example: Products in the shelves of a shop. We can print the results of the index operations in the images:"
"Example: Products in the shelves of a shop. "
]
},
{
......@@ -114,15 +114,6 @@
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -309,7 +300,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
"version": "3.7.4"
}
},
"nbformat": 4,
......
......@@ -11,7 +11,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"We found some suspicious features in our firs dataset \"inflammation-01.csv\". It is possible that other datasets are also affected by this?? We would like to check... Fast!"
"We found some suspicious features in our first dataset \"inflammation-01.csv\". It is possible that other datasets are also affected by this?? We would like to check... Fast!"
]
},
{
......@@ -133,22 +133,6 @@
"<li>etc.."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Example 3. This loop overrides the value of a external variable:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......
......@@ -6,7 +6,7 @@
"source": [
"# Making choices\n",
"\n",
"In last section we discovered something suspicios in our inflammation data by drawing some plots. How can we use Python\n",
"In last section we discovered something suspicious in our inflammation data by drawing some plots. How can we use Python\n",
"to automatically detect the anomalies we found and take an action for each of them?"
]
},
......@@ -38,7 +38,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"This scheme is achieved in Python by means of the <code>if</code>/<code>else</code> clause:"
"This scheme is achieved in Python by means of the <code>if</code>/<code>else</code> clause. If there are multiple choices we make use of the <code>elif</code>:"
]
},
{
......@@ -54,25 +54,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes there is no need to use a else, it depends on the logic of the problem:"
"<strong>Note the \"==\"</strong>. This symbol checks equality rather than \"=\" wich means assingment"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes the flow of the decision is more complex. There are still multiple choices available \n",
"when the first condition is discarded. <br>\n",
"As an example imagine we want to know if a given number is positive negative or zero. We make use of the <code>elif</code> clause:"
"Sometimes there is no need to use a else, it depends on the logic of the problem:"
]
},
{
......@@ -84,13 +73,6 @@
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<strong>Note the \"==\"</strong>. This symbol checks equality rather than \"=\" wich means assingment"
]
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -198,6 +180,20 @@
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -213,15 +209,6 @@
"First two files max inflammation seems to rise linearly. So let's write a code that check this behavior and show warning:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -344,7 +331,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.2"
"version": "3.7.4"
}
},
"nbformat": 4,
......
......@@ -287,10 +287,8 @@
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def test_range_overlap():\n",
......@@ -362,27 +360,6 @@
"# Exercises"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pre- and Post-Conditions\n",
"\n",
"Suppose you are writing a function called average that calculates the average of the numbers in a list. What pre-conditions and post-conditions would you write for it? Compare your answer to your neighbor’s: can you think of a function that will pass your tests but not his/hers or vice versa?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# a possible pre-condition:\n",
"assert len(input) > 0, #'List length must be non-zero'\n",
"# a possible post-condition:\n",
"assert numpy.min(input) <= average <= numpy.max(input), #'Average should be between min and max of input values'"
]
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -394,10 +371,8 @@
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy\n",
......@@ -409,6 +384,7 @@
" return None\n",
" lowest, highest = ranges[0]\n",
" for (low, high) in ranges[1:]:\n",
" assert low <= high, 'first element in range should be the lower one'\n",
" lowest = max(lowest, low)\n",
" highest = min(highest, high)\n",
" if lowest >= highest: # no overlap\n",
......@@ -419,23 +395,33 @@
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"test_range_overlap()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pre- and Post-Conditions\n",
"\n",
"Suppose you are writing a function called average that calculates the average of the numbers in a list. What pre-conditions and post-conditions would you write for it? Compare your answer to your neighbor’s: can you think of a function that will pass your tests but not his/hers or vice versa?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": []
"source": [
"# a possible pre-condition:\n",
"assert len(input) > 0, #'List length must be non-zero'\n",
"# a possible post-condition:\n",
"assert numpy.min(input) <= average <= numpy.max(input), #'Average should be between min and max of input values'"
]
}
],
"metadata": {
......
......@@ -165,7 +165,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"<li>Remember: Both SyntaxError and IntentationError indicate a problem with the syntax of the program"
"<li>Remember: Both SyntaxError and IndentationError indicate a problem with the syntax of the program"
]
},
{
......
......@@ -331,9 +331,7 @@
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"metadata": {},
"outputs": [],
"source": [
"import numpy"
......@@ -568,7 +566,7 @@
}
],
"source": [
"print(data[5:10, 0:10]) # Selecting rows 0,1,2,3 and cols from 0 to 9. Important! notice upper limits are not \n",
"print(data[5:10, 0:10]) # Selecting rows 5,6,7,8 and cols from 0 to 9. Important! notice upper limits are not \n",
" # included in the counting\n",
" # You don't have to start slices at 0"
]
......@@ -591,7 +589,7 @@
},
{
"cell_type": "code",
"execution_count": 32,
"execution_count": 5,
"metadata": {},
"outputs": [
{
......@@ -599,9 +597,9 @@
"output_type": "stream",
"text": [
"small is: \n",
"[[ 2. 3. 0. 0.]\n",
" [ 1. 1. 0. 1.]\n",
" [ 2. 2. 1. 1.]]\n"
"[[2. 3. 0. 0.]\n",
" [1. 1. 0. 1.]\n",
" [2. 2. 1. 1.]]\n"
]
}
],
......@@ -650,7 +648,7 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 6,
"metadata": {},
"outputs": [
{
......@@ -658,22 +656,22 @@
"output_type": "stream",
"text": [
"original:\n",
"[[ 2. 3. 0. 0.]\n",
" [ 1. 1. 0. 1.]\n",
" [ 2. 2. 1. 1.]]\n",
"doubledata: \n",
"[[ 4. 6. 0. 0.]\n",
" [ 2. 2. 0. 2.]\n",
" [ 4. 4. 2. 2.]]\n"
"[[2. 3. 0. 0.]\n",
" [1. 1. 0. 1.]\n",
" [2. 2. 1. 1.]]\n",
"doublesmall: \n",
"[[4. 6. 0. 0.]\n",
" [2. 2. 0. 2.]\n",
" [4. 4. 2. 2.]]\n"
]
}
],
"source": [
"doubledata = 2 * data # The x2 operation is made in every element of the array\n",
"doublesmall = 2 * small # The x2 operation is made in every element of the array\n",
"print('original:')\n",
"print(data[:3,36:])\n",
"print('doubledata: ')\n",
"print(doubledata[:3,36:])"
"print(small)\n",
"print('doublesmall: ')\n",
"print(doublesmall)"
]
},
{
......@@ -685,7 +683,7 @@
},
{
"cell_type": "code",
"execution_count": 15,
"execution_count": 7,
"metadata": {},
"outputs": [
{
......@@ -693,16 +691,16 @@
"output_type": "stream",
"text": [
"tripledata:\n",
"[[ 6. 9. 0. 0.]\n",
" [ 3. 3. 0. 3.]\n",
" [ 6. 6. 3. 3.]]\n"
"[[6. 9. 0. 0.]\n",
" [3. 3. 0. 3.]\n",
" [6. 6. 3. 3.]]\n"
]
}
],
"source": [
"tripledata = doubledata + data #Array-Array operations are made on each corresponding element\n",
"triplesmall = doublesmall + small #Array-Array operations are made on each corresponding element\n",
"print('tripledata:')\n",
"print(tripledata[:3,36:])"
"print(triplesmall)"
]
},
{
......@@ -1001,33 +999,6 @@
" # You may get a warning here about rendering fonts. If we re-run it not htere anymore."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"panel panel-info\">\n",
"<div class=\"panel-heading\">\n",
"<h3 class=\"panel-title\">\n",
"IPython Magic!\n",
"</h3>\n",
"</div>\n",
"<div class=\"panel-body\">\n",
"The % indicates an IPython magic function - a funciton that is valid only within the notebook environment.\n",
"</div>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
......
......@@ -126,7 +126,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"What about Farh to Celsius? One of the main proposes of functions is reusability. So let's reuse one of them to build some \"neat\" code:"
"What about Fahr to Celsius? One of the main proposes of functions is reusability. So let's reuse one of them to build some \"neat\" code:"
]
},
{
......@@ -163,14 +163,16 @@
]
},
{
"cell_type": "raw",
"cell_type": "markdown",
"metadata": {},
"source": [
"1) 7 3\n",
"2) 3 7\n",
"3) 3 3\n",
"4) 7 7\n",
"1. 7 3\n",
"2. 3 7\n",
"3. 3 3\n",
"4. 7 7\n",
"\n",
"\n",
"```\n",
"a = 3\n",
"b = 7\n",
"\n",
......@@ -181,7 +183,8 @@
"\n",
"swap(a, b)\n",
"\n",
"print(a, b)\n"
"print(a, b)\n",
"```"
]
},
{
......@@ -294,81 +297,29 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"inflammation-01.csv\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x158af717828>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Suspicious looking maxima!\n",
"------------------------------------\n",
"\n",
"\n",
"inflammation-02.csv\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAADQCAYAAAAasZepAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd82/W1//HX8YpH4u3s2M6eZEBIQsIKMyTMtrRsfpSW\nttAWOqBQei/0ttBB6Li9bSEUCi20jAJlJJAwEiANgSzIwNl4xU7s2Fne6/z+kBREpmxL+uornefj\n4YctWbZOQB/ro48+n/MWVcUYY4wxxhjjEed0AcYYY4wxxkQSmyAbY4wxxhjjxybIxhhjjDHG+LEJ\nsjHGGGOMMX5sgmyMMcYYY4wfmyAbY4wxxhjjxybIxhhjjDHG+LEJsjHGGGOMMX5sgmyMMcYYY4yf\nBKcLCERubq4WFhY6XYYxYbFq1ardqprndB1dZePVxBobs8a4R6Dj1RUT5MLCQlauXOl0GcaEhYiU\nOF1Dd9h4NbHGxqwx7hHoeLUtFsYYY4wxxvixCbIxxhhjjDF+bIJsjDHGGGOMH5sgG2MQkUEislhE\nikRkg4jc6r0+W0TeEJEt3s9ZTtdqjDk2ESkWkXUi8pGI2OZiY7rAJsjGGIA24AeqOhqYBtwiImOA\nO4G3VHU48Jb3sjEm8s1U1YmqOtnpQoxxI5sgm2N6Z3M1F/1hKU2t7U6XYkJIVStVdbX36wNAETAA\nuAR4wnuzJ4BLnanQBOJAUytf/PMyXvm4wulSjDEBeGzpp9z29BqnyzBHYBNkc0zPrChl3Y59rC3f\n53QpJkxEpBCYBHwA9FHVSvBMooHeR/mZm0RkpYisrK6uDlep5hB/XrKNVSV7+OkrGzjQ1Op0OcY5\nCiwSkVUictORbmBjNjK8tXEXC9bvpKNDnS7FHMImyOaoWto6eG/zbgBWl+5xuBoTDiLSE3geuE1V\n9wf6c6o6T1Unq+rkvDzX5iW42o69jTy69FNOKshid10LD7+z3emSjHNmqOqJwAV4tkudfugNbMxG\nhuLdDbS0dbBzf5PTpZhD2ATZHNXK4loONLchAmtsghz1RCQRz+T4KVV9wXv1LhHp5/1+P6DKqfrM\nsc1duAmA/71yEpdM7M8j722ncl+jw1UZJ6hqhfdzFfAiMMXZisyRNLe1HxyjJTUNDldjDmUTZHNU\nb2+sIikhjvPG9GF16V5U7S2gaCUiAjwKFKnqb/y+9TJwvffr64GXwl2bOb515ft4cc0Objx1MAMy\nU7j9/JEo8IB30mxih4ikiUgv39fAecB6Z6syR1K+pxHfzoqSmnpnizGHsQmyOaq3N1UxbUgOpw7L\npfpAMzv22mpUFJsBXAuc5W0N9ZGIzAZ+CZwrIluAc72XTQRRVe5b8Ak5aUl868yhAAzMSuWrMwbz\n4podrN9h5wdiTB9gqYh8DHwIzFfV1x2uyRxBqd+qcUmtrSBHmgSnCzCRqXh3Pdur67n+lEIm5Xta\n364u3cvArFSHKzOhoKpLATnKt88OZy2mc94qqmL59lp+duk4eiUnHrz+5plDeWZFKffNL+IfX5+K\n500CE+1UdTswwek6zPEVe1eNM1MTbQU5AoVsBVlEHhORKhFZ73fdAyKyUUTWisiLIpIZqvs33fP2\nRs9W07NG9WZU314kJ8bZPmRjIkxrewf3v1bE0Lw0rjh50Oe+l56cyG3njOD97TUs3mRbx42JNCU1\nDaQlxTNxUKbtQY5Aodxi8Tgw65Dr3gDGqep4YDNwVwjv33TD4k1VDOvdk0HZqSTExzF+YCarS/c6\nXZYxxs/TH5ayvbqeuy4YTWL84X/Or5qaz+DcNO5fsJG29g4HKjTGHE1JTT0FOWkU5qRRUtNg53wi\nTMgmyKr6LlB7yHWLVLXNe3E5MDBU92+6rq65jeXbazh71Gctb0/Mz+KTin0WGGJMhNjf1Mpv39zC\n1MHZnD36iO2pSYyP484LRrG1qo6nV5SFuUJjzLGU1DZQmJtKQU4qdc1t1Na3OF2S8ePkIb2vAq8d\n7ZvWxNw5S7fsprVdmek3QZ6Un0lru7Khwg78GBMJHlqyjdr6Fn4yZ8wx9xefN6YPUwZn87s3N1t4\niDERor1DKattID87jYIcz9meYttmEVEcmSCLyN1AG/DU0W5jTcyds3hjFb2SEzipIOvgdZPyPdvF\n19g2C2Mc5wsFuWzSAE4YmHHM24oId88ebeEhxkSQir2NtLYrhTmpFOSkAdbqLdKEfYIsItcDFwJX\nq224iTgdHcrbm6o4Y0Te5/Y09u6VzMCsFEvUMyYCPOjtb/zD80cGdPsJgzItPMSYCFLqbeuWn5PK\nwKwURCwsJNKEdYIsIrOAHwEXq6o9EiLQhor9VB9o5qxRh+9pPDE/i9UltoJsjJPWle/jBb9QkED9\n8DxPeMjchZtDV5wxJiC+Fm+FOWn0SIinf0aKrSBHmFC2efsn8D4wUkTKReRG4P+AXsAb3iCCh0J1\n/6Zr3t5YhQicMeLwbS2T8jPZub/JVqCMcciRQkECNSg7lRtmFPLCmnILDzHGYaU1DSQlxNE3PRmA\ngpxUCwuJMKHsYnGlqvZT1URVHaiqj6rqMFUdpKoTvR/fDNX9m655a+MuJg7KJKdnj8O+d6IvMMRW\nkY1xhC8U5LZzhn8uFCRQN585jMyURO5fUGQtpYxxUHFNPfnZqcTFeQ7YFnhbvZnIYVHT5qCy2gbW\nlu/j/LF9j/j90f3S6ZFggSHGOKG1vYNfvFbEkLw0rpiS36XfkZHiCQ9Zts3CQ4xxUklNAwXZnyXT\nFuSkUlvfwn7rNBMxbIJsDnp9/U4A5pzQ74jfT0qI44QBGXZQzxgHPL2ijG3V9fz4KKEggbLwEGOc\npaqU1jYc7F4BUOht9VZqq8gRwybI5qD56yo5YUAGg/xe1R5qUn4m6yv209xmgSHGhMuBplZ+98Zm\npg05eihIoCw8xBhnVdc109DSTmGu/wqyr9WbTZAjhU2QDeDpq/pR2V4uOOHI2yt8TszPoqWtg08q\n9oepMmPMn5dso6a+hbtnHzsUJFDnjenDlEILDzHGCb5JcL7fYpTv62LrZBExbIJsAHhtXSVw9O0V\nPpO8B/UeX1Zsb88aEwadCQUJlIhw9xwLDzHGCcW7P2vx5pPWI4G8Xj2s1VsEsQmyATzbK8b2T//c\nnqgj6ZuRzK1nD+eljyr45pOraGyxrRbGhFJnQ0EC5R8eUrHXWjcaEy6ltQ3ExwkDsj7fx7wgO9W2\nWEQQmyAbKvY2sqZ0L7OPs3rs871zR/CzS8by1sYqrvrLcvbUt4S4QmNi0/odXQsFCdTB8JBFm4L+\nu40xR1Zc08CAzJTDDttaq7fIYhNkw2ve7hWBTpABrj2lkD9ffSIbKvbzxYeWUb7HBrUxwaSq/Hx+\n10JBAuULD3lxzQ4LDzEmTEpr6inIOfwwfEFOKjv3N9HUau/MRgKbIBsWrKtkdL90Bucee3vFoWaN\n68eTN05l94Fmrn/sQ9o7LHjAmGDpbihIoG6Z6QkPuW++hYcYEw7FNQ1HnSCDZwuGcZ5NkGNc5b5G\nVpXsYc5xulcczZTB2dx32Qlsq67n7Y0WPGBMMLS2d3B/N0NBApWe7AkPeX+7hYcYE2p7G1rY19hK\nQfbhC1LW6i2y2AQ5xr22rvPbKw51wbi+9M9I5tGldhremGB4ekUZ26vruauboSCBsvAQY8LDN/k9\n0gqyLyzEOllEBpsgx7jX1lcyqm8vhuT17PLvSIiP4/rphSzfXsuGCtvHaEx3+IeCnNPNUJBAWXiI\nMeFR4t0+UXiELY2ZqUlkpCTaCnKEsAlyDPt0dz0rS/Z0a/XY54op+aQmxfPo0k+DUJkxseuhd4Ib\nChKo88b0YcpgCw8xJpRKvD2Q84+SWFuQk2phIRHCJsgxak99Czc+voL05ES+eNLAbv++jJRELj9p\nIK98XEHV/qYgVGhM7KnY28hf3gtuKEigRIS7Z1t4SLQQkXgRWSMirzpdi/lMcU0DfdOTSU6MP+L3\nrdVb5LAJcgxqam3na39bSfneRv5y/eSg9Ve9YcZg2jqUvy8vOex7qmon5I05jrkLN6EEPxQkUP7h\nIZX7LDzE5W4FipwuwnxeaW09+UfYf+xTkJ3Kjr2NtNpZAMclhOoXi8hjwIVAlaqO816XDTwDFALF\nwJdVdU+oajCHa+9Qbn16DatL9/Cnq07k5MLsoP3uwtw0zh7Vh6c+KOWWmcMOvkJeuGEn//3Sei6d\nOIC7Zo8O2v0ZE018oSDfOnNoSEJBAvXD80by2vqdPLBwE7/58kTH6jBdJyIDgTnAfcD3HS4nKqkq\nS7fu5kBTW6d+blt1/THPFhTkpNLeoTy9ooyctKSAf298nHD68DxSko68Mm06L2QTZOBx4P+Av/ld\ndyfwlqr+UkTu9F7+UQhrMH5UlZ+9+gkLN+zivy8cwwVB2Ht8qBtPHcybj+zixTU7OH9sX+55eQOv\nfFxBnMCC9ZU2QTbmCPxDQW4OUShIoHzhIfPe3c5XZwxm3IDwbvUwQfE74A6g19FuICI3ATcB5OeH\ntpVgNNpQsZ9rH/2wSz87qm/6Ub83up/ne//17/Wd/r33XDSGG2YM7lJN5nAhmyCr6rsiUnjI1ZcA\nZ3q/fgJYgk2Qw+bJ5SU8vqyYr506mK+eGppBNG1INmP6pfOHt7Ywd+Em9je18v1zR5CaFM/P5xdR\nVtvAoKMcTjAmVr290RMK8j+XjA1pKEigbpk5jOdWlnPf/CL+8fWpYT0saLpHRHzv3K4SkTOPdjtV\nnQfMA5g8ebLtf+ukbdV1APzlusmdek6Lj4MhuUfvGjVuQAbv3TGThpbOpeld/tAytlbVdepnzLGF\ncgX5SPqoaiWAqlaKSHh6GBmqDzTzq9c3cfqIPH4cwlVcEeHrpw/me898zAkDMnjq8qmM6pvO5l0H\nYH4Ry7bt5ivZtlphjE9rewf3L/CEglwZ4lCQQKUnJ3Lr2cO55+UNLN5UxVmj+jhdkgncDOBiEZkN\nJAPpIvKkql7jcF1RxXeQ7tThuUc9cNdVXVlEKsxNswS+IIvYQ3oicpOIrBSRldXV1U6X43q/eWMT\nTa3t3HPRGOLiQrsadOnEATz/rem8ePP0g28lDe/dk9yePVi2rSak922M2zy9ooxtYQwFCZSFh7iT\nqt6lqgNVtRC4AnjbJsfBV1xTT7+Mo3ejCLeCnDRrDxdk4f5rvEtE+gF4Px8111RV56nqZFWdnJeX\nF7YCo9GGin08vaKM66cXMrQbgSCBEhFOKsgiwe/JXkSYPjSHZdtqrJuFMV6+UJCpg8MXChIo//CQ\nZ1ZaeIgx/kprGo6YhueUwpxUduxppKXNXswGS7gnyC8D13u/vh54Kcz3H3NUlf955RMyUxL57lnD\nHa1l+tAcqg80H9y7ZSKLiDwmIlUist7vuntFZIeIfOT9mO1kjdHGFwrykznhDQUJ1Hlj+jClMJvf\nvrGZuubOndY3zlPVJap6odN1RKPimgYKsg9Pw3NKfnYqHQo79lp7xmAJ2QRZRP4JvA+MFJFyEbkR\n+CVwrohsAc71XjYhtHDDTj74tJbvnzeSjFRnD/9MH5oLYNssItfjwKwjXP9bVZ3o/VgQ5pqilpOh\nIIESEX48xxcess3pcoyJCPXNbeyua6YgN4JWkL3R1SW2zSJoQjZBVtUrVbWfqiZ690M9qqo1qnq2\nqg73fq4N1f0bTyDIfQuKGNmnF1eePMjpchiUncKAzBSWbbUJciRS1XcBG5Nh4nQoSKAmDsrk4gkW\nHmKMj++AXiStIBd4D/ZZCl/wRM6JEBN0f/1PMWW1jfzXhWM+tx/YKb59yO9vr6Gjw/Yhu8i3RWSt\ndwtG1pFuYIdqO8cXCvLVGYMdDQUJ1O3nj6SjA+Yu3Ox0KcY4zrdKG0l7kPN69SAlMd4O6gWR87Mm\nE1TNbe3MX1vJDX/9kAcWbuSc0b05dXiu02UdNGNYLvsaW/mkcr/TpZjA/BkYCkwEKoEHj3QjO1Qb\nOF8oSHZaEjfPdDYUJFC+8JAX1pSzfsc+p8sxxlEl3nZqkTRBFhEKclIptRXkoLEJcpSob27j3pc3\nMPX+t7jlH6spqjzAt84cytzLJzhd2uecMjQHgGXbdjtciQmEqu5S1XZV7QAeAaY4XZPb+UJBbjtn\nOOkREAoSqJtnDiMzJZH7FxRZJxoT00pq6slJS4qIUB9/BTmptoIcRDZBjhKPLyvm8WXFnDY8j799\ndQr/ufMsbj9/FJmpgWe5h0Of9GSG5qXZQT2X8LVl9LoM6Hz+qTmozRcKkhs5oSCBykjxhIcs21bD\nkk22jcbErpKaBvIjaPXYpyAnjbLaRtptC2NQ2AQ5Sry9sYrxAzP4w5WTOH1EHvEhDgPpjulDc/nw\n01paLXwgohyl88yvRWSdiKwFZgLfc7RIl/unNxTkzgtGRVQoSKCumlrA4Nw07ltQZOEhJmaV1DRQ\nmBM5B/R8CnJSaWnvYOf+JqdLiQru+wttDrOnvoU1pXs4c2RkBQ0czfShOTS0tLO2fK/TpRg/R+k8\nc62qnqCq41X1Yl9UvOk8XyjIlMHZnDvGndHNSQlx/GiWhYeY2NXc1k7FvsaI2n/s45u0W6u34LAJ\nchR4d0s1HQozR7rjcNS0ITmIYO3eTEz5LBRkdESGggTq/LF9OLkwy8JDTEwqq21ENbIO6PnkW6u3\noLIJchRYvLGKnLQkJgzMdLqUgGSlJTGmX7rtQzYxwxcKcunE/ox3yTg9GhHh7jlj2F3XwkNLLDzE\nxJbSWl+Lt8jbYtE/M4XEeLEJcpDYBNnl2juUdzZXc8aIPOIieN/xoaYPzWFVyR72NbY6XYoxIeeW\nUJBA+cJD/rLUwkNMbCne7QsJibwV5Pg4YVBWqm2xCBKbILvcR2V72dPQypmj3LH/2OeSiQNoae/g\nX6vKnS7FmJDyDwUZmBV5T6pdZeEhJhaV1jbQq0cC2WmR1SHKpyAn1VaQg8QmyC63ZFMVcQJnDHfH\n/mOfcQMyOKkgi7+/X2ypeiZq+UJBslITXRMKEigLDzGxqLimnvyc1Ig9R1CQk0ZJTb31Kg8CmyC7\n3OJNVZxUkEVGamQ1LA/E9dMLKa5p4J0t1lPVRKfPQkFGuCoUJFA3zxxGhoWHmBgSqS3efApyUqlv\naWd3XYvTpbieTZBdrGp/E+t37HdNe7dDzRrbl7xePXhiWbHTpRgTdP6hIFdNdVcoSKAsPMTEkrb2\nDsr3RGZIiI+vu4bvMKHpOpsgu5jvCWmmSyfISQlxXD01nyWbqinebYPZRJenXR4KEqirveEh91t4\niIlylfuaaG1XCiN6guxZ3fYdJjRdF71/tWPA4k1V9E1PZnS/Xk6X0mVXTcknIU74+/ISp0sxJmgO\nNLXyW5eHggTKFx6yxcJDTJTzHX7Lz47cLRYDs1IQgZJamyB3l02QXaqlrYP3tuxm5qi8iD0sEIje\n6cnMPqEfz64so95CB0yU8IWC3D3b3aEggbLwEBMLir3t0wpzI3cFuUdCPP0zUqzVWxA4MkEWke+J\nyAYRWS8i/xSRZCfqcLOVJbXUNbe5dv+xv+unF3CgqY1/f7Tj4HXbquu464W1PLhok4OVGdN5vlCQ\nSyb2Z8Igd4eCBMo/POThdyw8xESn0toGeiTE0adXZE9ZCnOt1VswJIT7DkVkAPBdYIyqNorIs8AV\nwOPhrsXNlmyqJjFeOHVYrtOldNuJ+VmMG5DOE8uKGdc/g4fe2cbrG3biOxQ/Y1gu04bkOFukMQGa\nu8gTCnJ7lISCBMoXHvLIe9u5amo+/TJSnC7JmKAq3l1PfnZqxIdy5Wen8fr6SqfLcD2ntlgkACki\nkgCkAhUO1eFKu+ua+deqcqYPzSWtR9hf4wSdiHDdKYVs3lXHJX/8D0u37uaWM4ex9EczGZCZwr0v\nb7DDP8YV1u/Yx4tRGAoSKF94yIOLLDzERJ/S2oaIjJg+VGFOKnsaWi2ptpvCPkFW1R3AXKAUqAT2\nqeqiQ28nIjeJyEoRWVldbe2DfFSVH7+wjrrmNu6eM9rpcoLm4gn9uWRif+68YBTL7jyLH54/koFZ\nqfxkzmg27jzAUx+UOl2iMcekqtw3v4jMlOgLBQmULzzk+dXlbKiw8BATPVSV4pr6g23UItnBVm+2\nzaJbwj5BFpEs4BJgMNAfSBORaw69narOU9XJqjo5L89dKXGh9MLqHSz6ZBc/PG8EI/q4t3vFoZIT\n4/n9FZP45hlD6eUXqDBrXF9mDMvhwUWbqK23xucmcr29sYr3t9dEbShIoHzhIffNt/AQEz2qDjTT\n1NoR0S3efA62erODet3ixBaLc4BPVbVaVVuBF4DpDtThOhV7G7n35Q1MKczmxlOHOF1OWIgI91w0\nlvqWdh5YaAf2TGTyhYIMjuJQkEBZeIizRCRZRD4UkY+9h+F/6nRN0eBgizcXbLHIz/aFhdgKcncE\nPEEWkQIROcf7dYqIdHX5shSYJiKp4ul/dDZQ1MXfFTNUlTv+tZZ2VeZePoH4CD8kEEwj+vTi+lMK\neXpFKevK7W1bE3liJRQkUFdPLaAwJ9XCQ5zRDJylqhOAicAsEZnmcE2ud7DFmwtWkNN6JJDXq4cF\ncHVTQCe8ROTrwE1ANjAUGAg8hGdy2ymq+oGI/AtYDbQBa4B5nf09sebJ5SUs3bqb+y4bF9Exl6Fy\n27nDefnjHdzz8nqe/9b0mOgta9zBPxTkvCgPBQlUUkIcd14wmm8+uYpnVpZx9dQCp0uKGerZ11Ln\nvZjo/bC9Ln6eXVHGgk52eSitaSA+Tuif6Y7uLAXZqby1sYr/99cPO/Vzw/J68pMLx4SoKncJtAXC\nLcAU4AMAVd0iIl1uwKuq9wD3dPXnY81bRbu4f8FGzhiRx1VTYvPt2/TkRH5w3kjuemEdy7fXcspQ\na/tmIoMvFOSxGAkFCZR/eMglEwfQMwo67riFiMQDq4BhwB9V9YMj3OYmPAtf5OfH1vPKX5Zup+pA\nMwXZgS829UpO4Jqp+a55h+jyyQP5xwel7OnE2Z3ddS0s2VTNd84aTkZq7J6j8An0L1azqrb4/vh7\n27PZK9IQa23vYO7CTTz87nbG9k/ngS+Nj+kn4Isn9OeelzbwZtEumyCbiBCLoSCBEhF+PHs0l/1p\nGQ+/s40fnBdbfaGdpKrtwEQRyQReFJFxqrr+kNvMw/vu7eTJk2Pm+byjQymtbeDaaQXcPSd6V0q/\ncnI+Xzm5cy98Fm7YyTf+voqS2nrGp9rfs0BfCr0jIj/G07v4XOA54JXQlWUq9zVyxbzlPPzudq6Z\nls/z35pO7/TITu8JtbQeCZwyNIc3i3bZ6XgTEXyhID+0yd8RTcrP4iJveEjlvkany4k5qroXWALM\ncriUiOHrRuGGw3bh5msPV2zt4YDAJ8h3AtXAOuAbwALgJ6EqKtatKtnD7N+/x8bK/fzvlZP4+aUn\nkJwY73RZEeGcMX0oqWlgW3Xd8W9sTAj5QkFumFHIoE68VRtr7vCGh8xdaOEh4SAied6VY0QkBU/n\nqI3OVhU5Slx02C7cDna/sPZwQIATZFXtUNVHVPVyVf2S92tbwgsBVeV/Xv2ElMR4Xv7OqVw8ob/T\nJUWUs0d5tr6/WVTlcCUmlvmHgtwyc5jT5US0Qdmp/L8Zhbywppz1O6wLTRj0AxaLyFpgBfCGqr7q\ncE0Rw9eurSDbVpAPlZqUQO9ePWwF2SugCbKIrBORtYd8vCcivxUR2wwaRKtL9/Bx2V6+eeZQhub1\ndLqciNM/M4Wx/dN585NdTpdiYpiFgnTOLd7wkPsXWHhIqKnqWlWdpKrjVXWcqv6P0zVFkpLaehLi\nhP6Zsb1l8WgKc9Isgc8r0C0WrwHzgau9H68A7wI7gcdDUlmMenTpp6QnJ/DFEwc6XUrEOmd0H1aX\n7qGmrtnpUkwMslCQzrPwEBMpimsaGJiVQoJLulGEW35OqiXweQX6CJmhqnep6jrvx93Amar6K6Aw\ndOXFlrLaBl5fv5Mrp+aTZi2Rjuqc0X3oUFhsT7RHJCKHLY2ISK4TtUQjCwXpGl94yH0WHmIcVFJT\nfzCK2RyuMCeVqgPNNLS0OV2K4wL9695TRKb6LojIFMD3/r/9VwySJ5YVIyJcf0qh06VEtHED0umT\n3sO2WRzdCv/kLBH5IrDMwXqixoGmVn735mamFFooSGd5wkNGsbWqjmdXljtdjolBqkpJTcPBbg3m\ncL7uHhZTHXgf5K8Bj4lIT0CA/cDXRCQN+EWoiosldc1tPLOijNkn9HNNUo9TRISzR/fh32t20NTa\nbh0+DncVnvG6BOgP5ABnOVpRlHj4ne3srmvh0estFKQrzh/bl8kFWfzmjc1cPLG/hYeYsNrT0MqB\npjZbQT4GX3eP4t0NjOqb7nA1zgq0i8UKVT0BT677RO/m/w9VtV5Vnw1tibHh2RVlHGhu48ZTBztd\niiucO7oPDS3tLN9e43QpEUdV1wH3Ad8EZgLfVlVbsuumir2NPPLedgsF6QYR4e45o9ld18zD72xz\nupyIJyJfEJEtIrJPRPaLyAER2e90XW7la/HWmQS9WOPr7lFaa/uQA375LiJzgLFAsm/lxE7HBkd7\nh/LXZZ9yUkEWE+2JNyCnDM0hJTGet4qqOHNkl1PPo5KIPAoMBcYDI4BXROT/VPWPzlbmbhYKEhz+\n4SFXTc2nX4a9Y3YMvwYuUtUipwuJBr4Wb4W5NkE+mozURDJTE63VG4G3eXsI+ArwHTxbLC4HCkJY\nV0x545NdlNU22upxJyQnxnPa8FzeslS9I1kPzFTVT1V1ITANONHhmlzNQkGCyxce8uAiCw85jl02\nOQ6ekpoGRGBglo3hYymwVm9A4If0pqvqdcAeVf0pcAowKHRlxY6m1nb+/M42BmSm2KGfTjpndB8q\n9jXxSaW94+hPVX/rH+SjqvtU9cbj/ZyIPCYiVSKy3u+6bBF5w/s27xsikhWquiOVfyjIzWdaKEgw\n+MJDnl9dzoYKCw85hpUi8oyIXOndbvEFEfmC00W5VUlNPf3Sk+3cynEUZFurNwh8gtzk/dwgIv2B\nVsCWO7tpx95GLn/ofT4u28v3zx1hfRk7aeao3ojA398vsVVkPyIyXET+JSKfiMh230cAP/o4MOuQ\n6+4E3lIBZcsFAAAgAElEQVTV4cBb3ssxxT8UJCPFQkGC5ZYzLTwkAOlAA3AecJH340JHK3KxktoG\nO6AXgMKcVCr2NtLSFtvtGAPdg/yKN9v9AWA1oMAjIasqBizfXsMtT62mua2DR66bzLm2etxpeb16\ncN20Ap54v4SGlnZ+/aXxtjLg8VfgHuC3eA7p3YBna9Qxqeq7IlJ4yNWXAGd6v34CWAL8KDhlRr62\n9g5+8dpGCwUJgYxUT3jIT1/5hCWbq5lpZwkOo6o3OF1DNCmpqeec0fZcezz5OWl0KJTvaWBIDCf6\nHneCLCJxeFaQ9gLPi8irQLKq2vtiXaCq/O39En726ifk56Qy79rJDOsduw/A7rr34rH0yUjm169v\nonxPA/Oum0xuzx5Ol+W0FFV9S0REVUuAe0XkPTyT5s7qo6qVAKpaKSJHnMWIyE3ATQD5+dEzkXx6\nRRlbq+p46JqTLBQkBK6eWsATy4q5f34Rpw3LtXfRvETkDlX9tYj8Ac+C1Oeo6ncdKMvV6prb2F3X\nYivIAfC1eiupje0J8nH/GqlqB/Cg3+Xm7k6ORSTT+xbwRhEpEpFTuvP73OSZFWXc8/IGzhiRx79v\nmWGT424SEW4+cxh/uvpENlTs59I//ofNuw44XZbTmrwvbLeIyLdF5DIgpMtzqjpPVSer6uS8vLxQ\n3lXY+IeCnD/WVp1CwRcessXCQw7lO5i38igfppMOtnizkJDjyvdNkHfH9j7kQF+uLxKRL0rwOuP/\nHnhdVUcBE/jsj0FUq61v4Zevb2TK4GweuW4y6cm2nzFYZp/Qj2e+cQpNrR18+eH32V3X7HRJTroN\nSAW+C5wEXANc18XftUtE+gF4P1cFpUIX8IWC3D3HQkFC6fyxfTm50BMeUtdswawAqvqK98tPgMuA\n7wG3ez9+6FRdbuZr8WYT5OPL69mD1KT4mG/1FugE+fvAc0BLd5uVi0g6cDrwKICqtni3b0S9X722\nkbqmNn5+6Tji4uwJN9gmDsrkH1+fSl1TG796baPT5ThJgb8DLwOT8fRC7uqZgZeB671fXw+81O3q\nXKByn4WChIuI8OPZnvCQeRYecqgn8Zwp+AKew3kX4jmoZzrpswmybbE4HhEhPzs15uOmA03S66Wq\ncaqaqKrp3stdzSAcAlQDfxWRNSLyF29k9eeIyE0islJEVlZXV3fxriLHqpI9PLOyjK+eOpgRfXo5\nXU7UGtGnFzeeNpjnVpWzsrjW6XKc8hSeJ9Uv0oknVRH5J/A+MFJEykXkRuCXwLkisgU413s56j2w\n0EJBwskXHjLvve3s3Nd0/B+IHdWq+rK3p3mJ78PpotyopKae3J5JFm8eoMKctJhv9RZoUIiIyDUi\n8l/ey4NEZEoX7zMBT2jBn1V1ElDPEVpHRdOexrb2Dv7r3+vpm57MrWcPd7qcqPfds4bTLyOZn/x7\nPW3tMdmmpktPqqp6par2874QHqiqj6pqjaqerarDvZ+j/lWHhYI4wxceMnfRJqdLiST3eBeRrA9y\nN5XUNJBv4zlgBTmplNc20t4Ruy0YA91i8Sc84SBXeS/XAV2NrS0HylX1A+/lfxHlKV9PLi/hk8r9\n/NeFY0izV68hl9Yjgf++cAwbdx7gb+/H5GKLPal2kYWCOMfCQ47oBmAinv7k1ge5G0pq6im07RUB\nK8hJo6W9g8p9jU6X4phAJ8hTVfUWvIEhqroHSOrKHarqTqBMRHzvXZ6N5yBCVKo60MSDizZz2vBc\nZp/Q1+lyYsascX05fUQev3ljM1X7Y+4tW3tS7aLFmywUxEm3zLTwkENM8L6Ter2q3uD9+KrTRblN\nU2s7lfubbP9xJ/havcVy5HSgE+RWEYnH249RRPKA7rx3/R3gKRFZi+eJ/P5u/K6INnfhJprbOvjp\nxWPtJHwYiQg/vXgsLW0d3LcgJpqk+LMn1S5oa+/g/gUWCuKkjBRPeMh/ttawZLP7z54EwXIRGeN0\nEW5XvqcBVetg0Rm+Vm+x3Mki0Any/wIvAr1F5D5gKd2Y1KrqR94n8PGqeql3RTrq7K5r5t9rKrhi\nyqCYbrbtlMG5aXzzjCG89FEFy7btdrqccLIn1S7whYLcecEoCwVx0NVTCyjMSeX++UWxeobA36nA\nRyKySUTWisg678KS6QRr8dZ5/TJSSIqPo6Q2dg/qBdrF4ingDuAXQCVwqao+F8rCosGzK8toae/g\nulMKnC4lZt08cxiDslP475c2xFKuvD2pdpJ/KMh5FvvuKAsP+ZxZwHDgPD7bKmVt3jqp2Fq8dVp8\nnDAwO4WS3bG7ghzQiTER+T3wjKp29WBezGnvUJ5aXsr0oTkM621t3ZySnBjPvReN5cYnVvLYfz7l\nm2cMdbqkcJjldAFu4wsFefR6CwWJBP7hIRdP7B+zrbmspVtwlNTU0ys5gaxUO1fQGbHe6i3Q9xFX\nAz8Rka0i8oCITA5lUdFg8cYqduxt5NpptnrstLNH9+Gc0X34/ZtbqNgb/Sdy/Vu7We/U47NQkMhj\n4SFd523DulhEikRkg4jc6nRNTiupaaAgJ9Ve/HaSLywkVg/MBrrF4glVnQ1MATYDv/IGB5ij+Nvy\nEvqk9+Ace7s2Itxz0RgU5WevRm3DFNNFFgoSmfzDQ2K51VQXtAE/UNXRwDTgllg/k1BSU2/bK7qg\nMCeVhpZ2quuanS7FEZ1932oYMAooJIpbs3VX8e563t1czW3nDLfDPhFiUHYq3545jLmLNvPO5mrO\nGOHu8BkTHL5QkJtOH2KhIBHojvNHsnD9Th5ctJm5l09wuhxXUNVKPGeFUNUDIlIEDCBKnrP3NbZ2\n6jxJhyrlexqZfUK/EFYVnXwvKtaV72P8wMBX30UgJy3J9Sv2ge5B/hWeLPhtwDPAz1R1bygLc7On\nPighIU64coq1iookXz99CC+s3sE9L63n9dtOJzkx3umSjINUlfsXWChIJPOFhzzy3nZumFHI2P4Z\nTpfkKiJSCEwCPjj2Ld3hw09r+fLD73fpZwfn2gpyZw3J8/w3u/GJlZ3+2TtmjXT939VAV5A/BaYD\nQ4AewHgRQVXfDVllLtXY0s6zK8s5f2xf+qQnO12O8dMjIZ6fXjKWax/9kEfe3c53LPY7pi3eVMWy\nbTXcc9EYCwWJYLfMHMazK8u4f0ERT9441fWrUuEiIj2B54HbVHX/Eb5/E3ATQH6+OxZz1pZ71uV+\nMmc0PTqxwNEjPo4Lx/cPVVlRqyAnjT9ffSK761s69XN/fHsra8vcn4YZ6AS5HXgbGAh8hGdf0/vA\nWSGqy7VeWVvBvsZWrrHDeRHptOF5nDEij6dXlPHts4bZk22M8g8FuXqqjdVIlpGSyHfPGs7/vPoJ\nSzZXM3Nkb6dLingikohncvyUqr5wpNuo6jxgHsDkyZNdcQqrpKaBXskJ3HjqYPvbHSYXdGFrypKN\nVVHR/SLQDbLfBU4GSlR1Jp63bCzm6AieXF7C8N49mTYk2+lSzFGcM6YPO/Y28ulu9w9g0zW+UJAf\nzRpFUoKdE4h010yz8JBAiWfm+ChQpKq/cbqeYCqpbaAwJ80mxxGuICctKrpfBPrM0KSqTQAi0kNV\nNwJ25PsQ/9m6m7Xl+7julAIbwBHs9OG5ALy3JabS9YyXfyjI+WOty4wbWHhIp8wArgXOEpGPvB+z\nnS4qGEpq6g9GIJvIVRAl3S8CnSCXi0gm8G/gDRF5CagIXVnu09Gh/OK1IgZkpnD55EFOl2OOoSAn\njUHZKTZBjlG+UJAfz7FQEDc5f2xfJhd4wkPqmtucLidiqepSVRVVHa+qE70fC5yuq7ta2zso39NI\noU2QI54v0tsX8e1WgfZBvkxV96rqvcB/4Xn75tJQFuY2r6ytYP2O/fzgvBHWHcEFThuex/LtNbTa\n27UxxRcKcvGE/ky0UBBXERHunmPhIbGqYm8j7R1KQbZ1o4h0vvZwMTFB9qeq76jqy6rauWONUay5\nrZ25izYxul86l04c4HQ5JgCnD8+lrrmNj8qsW2EsmbtwM6pw+/m2Q8yNJuVnceH4fsx7bzs79zU5\nXY4Jo2LvZKvAVpAj3oDMFOLjhBKXH9Sz0ylB8NTyUspqG7nzglHExdlbtm5wytBc4gTe22xnTWPF\n+h37eGFNOTfMKLRQEBf70axRdHTA3EWbnC7FhFGpd7JliXiRLykhjv6ZybG3gmw+b39TK394ewsz\nhuUcPPxlIl9GSiITBmXyru1DjgmfCwWZ6e7m9bHOFx7y/OpyNlS4v9eqCUxxTQPJiXH07tXD6VJM\nAApz0mwFOdY9/M429jS0cucsO/DjNqcNy2Vt+V72NbQ6XYoJMV8oyK1nD7dQkChwy5nDyEhJ5P4F\nRa5vJWUCU1LTQH52qr1L6xL52amU1NoKcpeISLyIrBGRV52qobt27mvi0aWfcvGE/pww0CJQ3ea0\nEXl0KCzbZqvI0cw/FOQqCwWJChmpnvCQ/2ytYYltk4oJJTX1tr3CRQpz0tjb0OrqBSgnV5BvBYoc\nvP9u+8VrRbR3KD88zw78uNHEQZn07JHAe1ttghzNnllpoSDR6JppBRRYeEhM6OhQSmsbrMWbixxs\n9Vbr3m0WjjxbiMhAYA7wFyfuPxgWb6zipY8quPnMYda43KUS4+OYNiSH97bYClS0qmtu47dvWChI\nNEpKiOPOWZ7wkOdWWXhINNt1oInmtg7ybQXZNXyr/cUuPqjn1HLK74A7gKO+7BeRm0RkpYisrK6O\nrAlMXXMbd7+4jmG9e3LzzKFOl2O64fQRuZTVNrr+MIE5soff2WahIFFs1jhPeMiDizZTb+EhUcvX\nDcFWkN0j39spqNTFz61hnyCLyIVAlaquOtbtVHWeqk5W1cl5eXlhqi4wcxduonJ/E7/64nh6JFgo\niJudOszTecS/m0Vdcxv//LDUJs0uZ6Eg0c8/PORhCw+JWr6/xRYS4h4pSfH0Se9hK8idNAO4WESK\ngafx5MU/6UAdXbKqZA9PvF/MddMKOKkgy+lyTDcNzk1jQGYKS7dUU1PXzIOLNjH9F29x1wvruPfl\nDU6XZ7ph7sLNdHRYKEi0s/CQ6Fdc00BCnNA/M9npUkwnFLi81VvYJ8iqepeqDlTVQuAK4G1VvSbc\ndXRFc1s7dz6/ln7pydw+a5TT5ZggEBFOG57L4k3VzPjV2/zf4q1MH5rLF04cwJLN1ZS6+NVvLLNQ\nkNjiCw950MJDolJpTQMDs1JIiLdDtm5SkJ3q6rAQe7R1wp+XbGNLVR0/v2wcPXskOF2OCZI54/sB\ncOH4/rzxvTN46NqTuP38kcSJ8NSHJQ5XZzrLQkFijy885F+ry/mkYr/T5ZggK7YWb65UmJtG1YFm\nGlrceT7A0Qmyqi5R1QudrCFQB5paefid7cwZ34+zRtlp+Ghy2vA8Nv/8AuZePoFhvXsC0C8jhXNH\n9+HZFWU0tbY7XKHpjCWbqi0UJAZZeEh0UlVKaxoOtg0z7nHwoJ5LA0NsBTlAr3xcSWNrO187dbDT\npZgwue6UAvY0tDJ/baXTpZgAtbV3cN+CIgsFiUG+8JClW3dbeEgUqa1v4UBzm60gu1Chr9Xbbpsg\nR7VnVpYxok9POw0fQ04ZmsPQvDT+vty2WYhIsYisE5GPRGSl0/UcjYWCxDYLD4k+vrhia/HmPr6M\niFKXhoXYM0gANu08wMdle/ny5EHWSzWGiAjXTivgo7K9rCvf53Q5kWCmqk5U1clOF3IkvlCQkwuz\nLBQkRll4SPQ52OLNJsiuk5GSSFZqomtbvdkEOQDPriwjMV64bNIAp0sxYfaFkwaSkhjP35cXO12K\nOQ5fKMjdc8bYC9kYZuEh0aWkpgERGJhlE2Q3KshJc203KJsgH0dLWwcvrtnBOaP7kNOzh9PlmDBL\nT07k0kkDeOmjCvY1tDpdjpMUWCQiq0TkpkO/6XTypS8U5CILBYl5Fh4SXUpqGuiXnkxyooVyuVFB\nTirFLu2FbBPk43iraBe19S18+eRBTpdiHHLttAKa2zp4blWZ06U4aYaqnghcANwiIqf7f9Pp5Etf\nKMgdFgpisPCQaFJiLd5crSAnjYq9jbS0ue9MgE2Qj+OZlWX0TU/m9OGRFXdtwmdM/3QmF2TxxPvF\nMdvyTVUrvJ+rgBeBKc5W9BkLBTFHYuEh0aHEWry5WkF2Kh0K5Xvct83CJsjHULmvkXc3V/OlkwYS\nH2d7GmPZ984dQVltI79+PfaebEUkTUR6+b4GzgPWO1uVhy8UJMNCQcwhBmWncv30AgsPcbEDTa3U\n1LfYCrKLFeZ6Xty4MVHPJsjH8PyqcjoULp880OlSjMNmDMvlulMKeOw/n/L+thqnywm3PsBSEfkY\n+BCYr6qvO1wTYKEg5ti+PXO4hYe4mG9SZSvI7pWf7XlxU+LCfcg2QT6Kjg7l2ZXlTBuSba9eDQB3\nXjCKwpxUfvjcxxxoip0De6q6XVUneD/Gqup9TtcEnlCQ+72hIFdbKIg5Av/wkHdiKDxERB4TkSoR\niYh3errKJsjul9szibSkeFe2erMJstfSLbu57ek1XP2X5Zz323c48edvUFrbwFfscJ7xSk1K4MEv\nT6RyXyM/f7XI6XJi3jMry9hioSDmOA6GhyyIqfCQx4FZThfRXSW1vh7ItkjlViJCfk6aK+OmE5wu\nIBKoKve+soFd+5oY1qcnhTlpTBmczcCsVOac0N/p8kwEOakgi2+cMZQ/L9nG+eP6cNYoC6RwgoWC\nmED5wkO+9dRqnltVzpVT8p0uKeRU9V0RKXS6Dn/vbq5m3Y7OBS69WbSL3J5J9OxhUxU3K8xJZWXJ\nHv64eGunfi63Z5KjAW32qAM276pja1UdP7t0HNdOs7dqzbHdds5wFm+s4kfPr2PRbVlkpSU5XVLM\n8YWCPHLdZAsFMcflCw/5zRubuXhCf9JswoW3n/lNAPn5oX/R8L1nPqKmvqXTPzf7hL4hqMaE08mF\n2by2ficPLOz8IfeTC7MZktczBFUdn/2VAOavrSBOYNZYG4jm+HokxDP38glc+IelPL2ijG+dOdTp\nkmKKLxTk4gn9mZSf5XQ5xgV84SGX/WkZ897dzvfOHeF0SY5T1XnAPIDJkyeH9ATjfm83itvPH8nX\nThvcqZ9NirftU2731VMHc820ApTAH2Yfle7lK/OWU1xT79gEOeYfearKq+sqmTYkh7xelpRnAjNu\nQAYnFWTxwupyOx0fZg8u8oSC3G6hIKYTDoaHvLudXfstPCScfFHDQ/PS6JEQ36kPe4coOiQlxHXq\n//uw3p5JsZPt4WJ+grxx5wG2V9czZ3w/p0sxLnPZpAFsqapjg/VYDZsNFft4frWFgpiu+dGsUbR3\nqIWHhJkvatjX8suY48lO8+w9j6kJsogMEpHFIlIkIhtE5NZw1+Bv/tpK215huuTC8f1Iio/j+dXl\nTpcSE1SV++ZbKIjpOl94yHOryimqjN4XtiLyT+B9YKSIlIvIjU7WY+3aTGeJCAU5qY72T3ZiBbkN\n+IGqjgamAbeIyBgH6kBVmb+ukulDc8npadsrTOdkpiZx9ujevPJxBa2x0z7KMRYKYoLh2zOHk57s\nCQ+JVqp6par2U9VEVR2oqo86WU9JTT25PXvY4UjTKZ4JcgytIKtqpaqu9n59ACgCBoS7DoANFfv5\ndLdtrzBdd9mkAeyua+G9LbETQuAEXyhIYU6qhYKYbslITeS7Zw/nvS2xFR7ipOKaBgpt9dh0UkFO\nGmV7GmjvcOacj6N7kL19GicBHxzhezeJyEoRWVldHZo/YvPXVRIfJ5xv2ytMF505sjdZqYm8sHqH\n06VENV8oyJ0XjLZQENNt1/rCQ+YXOfbkG0tKaxrItwmy6aSC7FRa25WKvY2O3L9jzzQi0hN4HrhN\nVQ/bDKaq81R1sqpOzsvLC/r9qyrz11YyfWgO2dbH1nRRUkIcF03oz6JPdrE/huKnw8lCQUyw+cJD\nNu06wHMry5wuJ6o1tbazc38ThZaGZzrJl6Do1DYLRybIIpKIZ3L8lKq+4EQN63fsp7S2gYvGW1Ke\n6Z4vnDiQlrYOXltX6XQpUckXCvLj2aOt5ZMJmlnj+nJSQRYPvrGZ+uY2p8uJWr6IYTugZzrL95jx\nRY6HmxNdLAR4FChS1d+E+/59Xl1XQUKccJ6tSJlumjAwgyG5aTxv2yyCzhcKcpGFgpgg84WHVB9o\nZt67250uJ2oV7/ZMbgpsBdl0Ut/0ZJIS4mJqBXkGcC1wloh85P2YHc4CfNsrTh2eS2aqba8w3SMi\nfOHEAXz4aS1ltc6duI1GvlCQOywUxITAiflZzLHwkJDyrSDbIT3TWXFxQkG2c63enOhisVRVRVXH\nq+pE78eCcNawYN1Oyvc0ctkkR5pnmCh0yUTPY8kO6wWPhYKYcLjTGx7ym0WbnS4lKhXX1JOenGCL\nUaZLnGz1FnPHwVvbO3hg4UZG9unFhbb/2ATJoOxUzhyZxx8Xb+Vdax3VbarK/QssFMSEni885NlV\nZVEdHuKUkpoGCnNte4XpmoKcNEpqGlANf7eZmJsg//PDUoprGvjRBSOJj7MDPyZ4fveViQzt3ZOb\n/r6S5dtrnC7H1ZZsquY/Wy0UxIRHLISHOKWkpoF8ewfIdFFBTiqNre1UH2gO+33H1AS5rrmN37+5\nhamDs5k5srfT5Zgok5maxJM3TmFgVipffXwFq0r2OF2SK1koiAk3//CQJZuqnC4narS2d7Bjb6O1\neDNd5jvcWezANouYmiDPe3c7NfUt3GXtokyI5PTswT++NpXevXrw//76Iet37HO6JNd5dmW5NxRk\nlIWCmLDxhYf8YsFGCw8Jkh17GmnvUAsJMV1W4H33wYmDejHz7FN1oIm/vLedOSf0Y+KgTKfLMVGs\nd3oyT319GunJiVz76AdU2en4gNU1t/Gbg6EglnBpwsfCQ4Kv2DupsRVk01UDslKIjxNHDurFzAT5\n929uoaWtg9utXZQJgwGZKTzx1SnUN7fzy9c3Ol2Oa3hCQZotFMQ4wsJDgstCQkx3JcbHMSAzhRIH\nWqjGxAR5W3UdT68o46qp+Xaa1oTNsN49ufG0wbyweoftRw6AhYIYp1l4SHAV724gOTGO3r16OF2K\ncTFPqzfbYhF0DS1tfOcfa0hNiue7Zw93uhwTY749cxh90ntw78sbbF/jcVgoiIkEFh4SPKW19RRk\np9m7QaZbnOqFHNUTZFXl9ufWUrRzP/97xSRye9qrWBNeaT0S+PHs0azbsY9nbV/jUflCQf6fhYKY\nCPCj80fR1tHBg4s2OV2KqxXXNNj2CtNthTlp7GtsZW9DS1jvN6onyH9aso356yr50axRzBxlbd2M\nMy6e0J+TC7N4YOEm9jW0Ol1OxPEPBbnFQkFMBMjPSeX6Uwp5blW5hYd0UUeHUlprISGm+3yt3sK9\nihy1E+Q3P9nF3EWbuGRif75x+hCnyzExTES49+Kx7G1o4bdvWpztoSwUxESi75xl4SHdsXN/Ey1t\nHRYSYrrN9y5EcZj3IUflBHnLrgPc9sxHjOufwa++ON72PxnHje2fwVVT8/n78hI27rQVKR8LBTGR\nKiM1kVvPHk5WahJNre1Ol+M6vtU+a/Fmusv3Iqs0zCvICWG9tzBoaGnjG39fRXJiPPOuO4nkxHin\nSzIGgB+cO5JX11by+vqdjOqb7nQ5EcEXCvLQNSdaKIiJODfMKLQFli7ydR2wPcimu5IT4+mbnhz2\nNL2omyD/7NUiPq2p5x9fm0a/jBSnyzHmoKy0JBbedjp90pOdLiUiWCiIiXQ2Oe664poGEuOFfhn2\n9850nxOt3qJqyWbRhp3888NSbjp9CKcMzXG6HGMOY5Pjz8yzUBBjolZpbT0Ds1JJiI+qaYZxSEFO\natjDQqLmkVt1oIk7X1jH2P7p/OBc66NqTCTbua+JeRYKYkzUKt5tLd5M8BTkpFF9oDmsCZeOTJBF\nZJaIbBKRrSJyZ3d/n6/fcX1zG7+/YqLtZTQmyII9Zucu2mShIMaESLDHa2epelq8FVgHCxMkvhdb\npWFcRQ77TFJE4oE/AhcAY4ArRWRMd37nE8uKeWdzNT+ZM5phvXsFo0xjjFewx6yFghgTOqF4ju2s\nmvoW6prbDvavNaa7Cg/2Qg7fPmQnDulNAbaq6nYAEXkauAT4pCu/bPOuA9z/2kZmjszjmmnWJsqY\nEAjamP1cKMiZFgpiTAgE9Tn2uZVl/HHx1k79TGu7AtbBwgRPvvexdPeL6/nlaxuPedtffGF8UM6h\nOTFBHgD4Z+6WA1MPvZGI3ATcBJCfn3/UX5YUH8eMoTn8+ksT7KCPMaFx3DEb6Hht71AmDMzkgnH9\nyEi1UBBjQiCoz7G5vXowYVBmp4s4PSmPqUPssLwJjvTkRL5/7gi2Vdcd/7YpwZnaOjFBPtIsVg+7\nQnUeMA9g8uTJh33fpzA3jb/eMCV41RljDnXcMRvoeE2Ij+OOWaOCW50xxl9Qn2NnjuzNzJG9g1ed\nMV303bOHh/X+nDjNVg4M8rs8EKhwoA5jTGBszBrjHjZejQkCJybIK4DhIjJYRJKAK4CXHajDGBMY\nG7PGuIeNV2OCIOxbLFS1TUS+DSwE4oHHVHVDuOswxgTGxqwx7mHj1ZjgcCRqWlUXAAucuG9jTOfZ\nmDXGPWy8GtN9lqhhjDHGGGOMH5sgG2OMMcYY40dUj9rdJWKISDVQcpyb5QK7w1BOMLipVrB6Q+3Q\negtUNc+pYrorCscrWL2h5vZ6o33Muv3/T6SzekOrS+PVFRPkQIjISlWd7HQdgXBTrWD1hprb6g0G\nt/2brd7Qsnojm9v+vVZvaMVKvbbFwhhjjDHGGD82QTbGGGOMMcZPNE2Q5zldQCe4qVawekPNbfUG\ng9v+zVZvaFm9kc1t/16rN7Riot6o2YNsjDHGGGNMMETTCrIxxhhjjDHdZhNkY4wxxhhj/Lh+giwi\ns0Rkk4hsFZE7na7nUCLymIhUich6v+uyReQNEdni/ZzlZI3+RGSQiCwWkSIR2SAit3qvj8iaRSRZ\nRF29zGAAAAN1SURBVD4UkY+99f7Ue/1gEfnAW+8zIpLkdK0+IhIvImtE5FXv5YitNdgifbyCu8as\njdfwsDEbuWPWTeMVbMyGQ7DGq6snyCISD/wRuAAYA1wpImOcreowjwOzDrnuTuAtVR0OvOW9HCna\ngB+o6mhgGnCL979ppNbcDJylqhOAicAsEZkG/Ar4rbfePcCNDtZ4qFuBIr/LkVxr0LhkvIK7xqyN\n1/CwMRu5Y/Zx3DNewcZsOARnvKqqaz+AU4CFfpfvAu5yuq4j1FkIrPe7vAno5/26H7DJ6RqPUftL\nwLluqBlIBVYDU/Gk5iQc6XHicI0D8fzxOwt4FZBIrTUE/3ZXjFdvba4cszZeQ1KnjdnPLkfkmHXr\nePXWZ2M2uDUGbby6egUZGACU+V0u914X6fqoaiWA93Nvh+s5IhEpBCYBHxDBNXvfTvkIqALeALYB\ne1W1zXuTSHpc/A64A+jwXs4hcmsNNreOV4jgx7+PjdeQsTH7Gbf8WyP28e/PxmxIBG28un2CLEe4\nzvrWBYGI9ASeB25T1f1O13MsqtquqhPxvHKcAow+0s3CW9XhRORCoEpVV/lffYSbOl5riMTSvzWs\nbLyGho3ZmPq3hpWN2eAL9nhNCEpVzikHBvldHghUOFRLZ+wSkX6qWiki/fC8KosYIpKIZ+A+paov\neK+O6JoBVHWviCzBs68rU0QSvK8aI+VxMQO4WERmA8lAOp5Xu5FYayi4dbxCBD/+bbyGlI1Zd47Z\niH7825gNmaCOV7evIK8AhntPKCYBVwAvO1xTIF4Grvd+fT2ePUgRQUQEeBQoUtXf+H0rImsWkTwR\nyfR+nQKcg2dz/mLgS96bRUS9qnqXqg5U1UI8j9W3VfVqIrDWEHHreIXIffzbeA0hG7OuHbMR+fgH\nG7OhFPTx6vSG6iBsyJ4NbMazJ+Zup+s5Qn3/BCqBVjyvxm/EsyfmLWCL93O203X61Xsqnrcf1gIf\neT9mR2rNwHhgjbfe9cB/e68fAnwIbAWeA3o4XeshdZ8JvOqGWoP8747o8eqt0TVj1sZrWGu3MRuB\nY9ZN49Vbr43Z8NTd7fFqUdPGGGOMMcb4cfsWC2OMMcYYY4LKJsjGGGOMMcb4sQmyMcYYY4wxfmyC\nbIwxxhhjjB+bIBtjjDHGGOPHJsjGGGOMMcb4sQmyMcYYY4wxfv4/0F2wRBx2XwYAAAAASUVORK5C\nYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x158b1ec0dd8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Suspicious looking maxima!\n",
"------------------------------------\n",
"\n",
"\n",
"inflammation-03.csv\n"
"inflammation-08.csv\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x158b19d3fd0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Minima add up to zero!\n",
"------------------------------------\n",
"\n",
"\n"
"ename": "NameError",
"evalue": "name 'analyze' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-3-5295c7f1c586>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mf\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfilenames\u001b[0m\u001b[0;34m[\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[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0manalyze\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\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 10\u001b[0m \u001b[0mdetect_problems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'------------------------------------\\n\\n'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'analyze' is not defined"
]
}
],
"source": [
"%matplotlib inline\n",
"import numpy\n",
"import matplotlib.pyplot\n",
"import glob\n",
......@@ -412,9 +363,9 @@
],
"source": [
"def rescale(data_orig):\n",
" max = data_orig.max()\n",
" min = data_orig.min()\n",
" return (data_orig - min)/(max - min)\n",
" high = data_orig.max()\n",
" low = data_orig.min()\n",
" return (data_orig - low)/(high - low)\n",
"data = numpy.loadtxt('inflammation-01.csv', delimiter=',')\n",
"print(rescale(data))"
]
......@@ -677,10 +628,8 @@
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def center(data, desired=0.0):\n",
......@@ -691,15 +640,15 @@
},
{
"cell_type": "code",
"execution_count": 26,
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 3. 3.]\n",
" [ 3. 3.]]\n"
"[[3. 3.]\n",
" [3. 3.]]\n"
]
}
],
......@@ -717,7 +666,7 @@
},
{
"cell_type": "code",
"execution_count": 27,
"execution_count": 7,
"metadata": {},
"outputs": [
{
......@@ -725,16 +674,16 @@
"output_type": "stream",
"text": [
"data before centering:\n",
"[[ 5. 5.]\n",
" [ 5. 5.]]\n",
"[[5. 5.]\n",
" [5. 5.]]\n",
"centered data:\n",
"[[ 0. 0.]\n",
" [ 0. 0.]]\n"
"[[0. 0.]\n",
" [0. 0.]]\n"
]
}
],
"source": [
"more_data = 5 + numpy.zeros((2, 2))\n",
"more_data = 5 + test_data\n",
"print('data before centering:')\n",
"print(more_data)\n",
"print('centered data:')\n",
......@@ -750,10 +699,8 @@
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def center(data, desired=0.0, comment='#'):\n",
......@@ -773,31 +720,24 @@
},
{
"cell_type": "code",
"execution_count": 24,
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"#\n"
]
},
{
"ename": "TypeError",
"evalue": "ufunc 'add' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')",
"ename": "UFuncTypeError",
"evalue": "ufunc 'add' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-24-9bdcc282d24c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0meven_more_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m7\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcenter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0meven_more_data\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'centered data:'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32m<ipython-input-20-6dba736cd340>\u001b[0m in \u001b[0;36mcenter\u001b[1;34m(data, desired, comment)\u001b[0m\n\u001b[0;32m 3\u001b[0m Example: center([1, 2, 3], 0) => [-1, 0, 1]'''\n\u001b[0;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcomment\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mdesired\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;31mTypeError\u001b[0m: ufunc 'add' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')"
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mUFuncTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-8-fa5174f9f241>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0meven_more_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m7\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtest_data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcenter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0meven_more_data\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'centered data:'\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[0m",
"\u001b[0;32m<ipython-input-4-0e3a167353b0>\u001b[0m in \u001b[0;36mcenter\u001b[0;34m(data, desired)\u001b[0m\n\u001b[1;32m 2\u001b[0m '''Return a new array containing the original data centered around the desired value (0 by default).\n\u001b[1;32m 3\u001b[0m Example: center([1, 2, 3], 0) => [-1, 0, 1]'''\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mdesired\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mUFuncTypeError\u001b[0m: ufunc 'add' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')"
]
}
],
"source": [
"even_more_data = 7 + numpy.zeros((2, 2))\n",
"even_more_data = 7 + test_data\n",
"print(center(even_more_data,'centered data:'))"
]
},
......@@ -810,7 +750,7 @@
},
{
"cell_type": "code",
"execution_count": 31,
"execution_count": 11,
"metadata": {},
"outputs": [
{
......@@ -818,11 +758,11 @@
"output_type": "stream",
"text": [
"data before centering:\n",
"[[ 7. 7.]\n",
" [ 7. 7.]]\n",
"[[7. 7.]\n",
" [7. 7.]]\n",
"centered data:\n",
"[[ 0. 0.]\n",
" [ 0. 0.]]\n"
"[[0. 0.]\n",
" [0. 0.]]\n"
]
}
],
......@@ -841,7 +781,7 @@
},
{
"cell_type": "code",
"execution_count": 30,
"execution_count": 12,
"metadata": {},
"outputs": [
{
......@@ -849,11 +789,11 @@
"output_type": "stream",
"text": [
"data before centering:\n",
"[[ 7. 7.]\n",
" [ 7. 7.]]\n",
"[[7. 7.]\n",
" [7. 7.]]\n",
"centered data:\n",
"[[ 0. 0.]\n",
" [ 0. 0.]]\n"
"[[0. 0.]\n",
" [0. 0.]]\n"
]
}
],
......@@ -886,20 +826,23 @@
]
},
{
"cell_type": "raw",
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"def numbers(one, two=2, three, four=4):\n",
" n = str(one) + str(two) + str(three) + str(four)\n",
" return n\n",
"\n",
"print(numbers(1, three=3))\n",
"```\n",
"\n",
"what do you expect will be printed? What is actually printed? What rule do you think Python is following?\n",
"\n",
"1) 1234\n",
"2) one2three4\n",
"3) 1239\n",
"4) SyntaxError"
"1. ) 1234\n",
"2. ) one2three4\n",
"3. ) 1239\n",
"4. ) SyntaxError"
]
},
{
......
......@@ -19,7 +19,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 2,
"metadata": {},
"outputs": [
{
......@@ -156,7 +156,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Example: Products in the shelves of a shop. We can print the results of the index operations in the images:"
"Example: Products in the shelves of a shop. "
]
},
{
......@@ -170,23 +170,6 @@
"x = [['salt', 'zuchini', 'onion'], ['cabbage', 'lettuce', 'garlic'],['apple','pear','banana']]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[['salt', 'zuchini', 'onion']]\n"
]
}
],
"source": [
"print([x[0]])"
]
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -263,14 +246,14 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[3, 5, 7, 11]\n"
"[3, 5, 7]\n"
]
}
],
......
......@@ -11,7 +11,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"We found some suspicious features in our firs dataset \"inflammation-01.csv\". It is possible that other datasets are also affected by this?? We would like to check... Fast!"
"We found some suspicious features in our first dataset \"inflammation-01.csv\". It is possible that other datasets are also affected by this?? We would like to check... Fast!"
]
},
{
......@@ -39,15 +39,15 @@
"name": "stdout",
"output_type": "stream",
"text": [
"l\n",
"e\n",
"t\n",
"a\n",
"d\n"
"n\n",
"k\n"
]
}
],
"source": [
"word = 'lead' # From wich number to wich number we had to go? Ask people\n",
"word = 'tank' # From wich number to wich number we had to go? Ask people\n",
"print(word[0])\n",
"print(word[1])\n",
"print(word[2])\n",
......@@ -71,7 +71,7 @@
"output_type": "stream",
"text": [
"t\n",
"i\n",
"a\n",
"n\n"
]
},
......@@ -82,13 +82,13 @@
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-2-61757d5ac451>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mword\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mword\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[0;32m----> 5\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mword\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[0m",
"\u001b[0;32m<ipython-input-2-be45257cba61>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mword\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\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[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mword\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[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mword\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[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m: string index out of range"
]
}
],
"source": [
"word = 'tin' # Bad approach, if the string is larger it misses characters and if it shorter it fails!\n",
"word = 'tan' # Bad approach, if the string is larger it misses characters and if it shorter it fails!\n",
"print(word[0])\n",
"print(word[1])\n",
"print(word[2])\n",
......@@ -112,22 +112,22 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"l\n",
"e\n",
"t\n",
"a\n",
"d\n"
"n\n",
"k\n"
]
}
],
"source": [
"word = 'lead'\n",
"word = 'tank'\n",
"for char in word:\n",
" print(char)"
]
......
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Making choices\n",
"\n",
"In last section we discovered something suspicious in our inflammation data by drawing some plots. How can we use Python\n",
"to automatically detect the anomalies we found and take an action for each of them?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<strong>By writing code that runs only certain conditions</strong>:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Conditionals\n",
"\n",
"A conditional is a piece of code that takes different actions depending on a condition:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Imagine we want to determine if a certain number is lower or greater than 100. The flow of this conditional:\n",
"<img src=\"https://scw-ss.github.io/python-novice-inflammation-2016-06-27-cfmehu/fig/python-flowchart-conditional.png\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This scheme is achieved in Python by means of the <code>if</code>/<code>else</code> clause. If there are multiple choices we make use of the <code>elif</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<strong>Note the \"==\"</strong>. This symbol checks equality rather than \"=\" wich means assingment"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes there is no need to use a else, it depends on the logic of the problem:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercises\n",
"#### What Is Truth?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"if '':\n",
" print('empty string is true')\n",
"if 'word':\n",
" print('word is true')\n",
"if []:\n",
" print('empty list is true')\n",
"if [1, 2, 3]:\n",
" print('non-empty list is true')\n",
"if 0:\n",
" print('zero is true')\n",
"if 1:\n",
" print('one is true')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### That’s Not Not What I Meant"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"if not '':\n",
" print('empty string is not true')\n",
"if not 'word':\n",
" print('word is not true')\n",
"if not not True:\n",
" print('not not True is true')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Composed conditions\n",
"We can write complex conditions in the if clause by using concatenation of simple conditions by means of <code>and</code> and <code>or</code>. <br>\n",
"As in human language an <code>and</code> condition is True if all its components are True:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Whereas an <code>or</code> condition is True if any of it components is True:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise\n",
"\n",
"#### Close Enough\n",
"\n",
"Write some conditions that print True if the variable a is within 10% of the variable b and False otherwise. Compare your implementation with your partner’s: do you get the same answer for all possible pairs of numbers?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Checking our Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we are in conditions to check our suspicious data in the inflammation tests.<br>\n",
"First two files max inflammation seems to rise linearly. So let's write a code that check this behavior and show warning:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We saw a different issue in file 3. All minima where 0. So we write a code to check that:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can check now several files putting all toghether:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Additional Exercises\n",
"\n",
"### In-place operators"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Python (and most other languages in the C family) provides in-place operators that work like this:\n",
"\n",
"```x = 1 # original value\n",
"x += 1 # add one to x, assigning result back to x\n",
"x *= 3 # multiply x by 3\n",
"print(x)```\n",
"\n",
"\n",
"``6``\n",
"\n",
"Write some code that sums the positive and negative numbers in a list separately, using in-place operators. Do you think the result is more or less readable than writing the same without in-place operators?\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Counting Vowels "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"* Write a loop that counts the number of vowels in a character string.\n",
"* Test it on a few individual words and full sentences.\n",
"* Once you are done, compare your solution to your neighbor’s. Did you make the same decisions about how to handle the letter ‘y’ (which some people think is a vowel, and some do not)?\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
......@@ -6,7 +6,7 @@
"source": [
"# Making choices\n",
"\n",
"In last section we discovered something suspicios in our inflammation data by drawing some plots. How can we use Python\n",
"In last section we discovered something suspicious in our inflammation data by drawing some plots. How can we use Python\n",
"to automatically detect the anomalies we found and take an action for each of them?"
]
},
......@@ -38,30 +38,40 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"This scheme is achieved in Python by means of the <code>if</code>/<code>else</code> clause:"
"This scheme is achieved in Python by means of the <code>if</code>/<code>else</code> clause. If there are multiple choices we make use of the <code>elif</code>:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"not greater\n",
"done\n"
"-3 is negative\n"
]
}
],
"source": [
"num = 37\n",
"if num > 100:\n",
" print('greater')\n",
"\n",
"num = -3\n",
"\n",
"if num > 0:\n",
" print(num, 'is positive')\n",
"elif num == 0: # note the sign == instead of =. The reason is that \"==\" tests equality whereas \"=\" means assignment\n",
" print(num, 'is zero')\n",
"else:\n",
" print('not greater')\n",
"print('done')"
" print(num, 'is negative')\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<strong>Note the \"==\"</strong>. This symbol checks equality rather than \"=\" wich means assingment"
]
},
{
......@@ -93,48 +103,6 @@
"print('... after conditional')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes the flow of the decision is more complex. There are still multiple choices available \n",
"when the first condition is discarded. <br>\n",
"As an example imagine we want to know if a given number is positive negative or zero. We make use of the <code>elif</code> clause:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-3 is negative\n"
]
}
],
"source": [
"\n",
"num = -3\n",
"\n",
"if num > 0:\n",
" print(num, 'is positive')\n",
"elif num == 0: # note the sign == instead of =. The reason is that \"==\" tests equality whereas \"=\" means assignment\n",
" print(num, 'is zero')\n",
"else:\n",
" print(num, 'is negative')\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<strong>Note the \"==\"</strong>. This symbol checks equality rather than \"=\" wich means assingment"
]
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -276,7 +244,7 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 1,
"metadata": {},
"outputs": [
{
......@@ -298,7 +266,7 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 2,
"metadata": {},
"outputs": [
{
......@@ -315,34 +283,19 @@
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"multiplication=a*b\n",
"substraction=a-b"
]
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Variable Type Data/Info\n",
"-----------------------------------\n",
"a float 0.9\n",
"b int 1\n",
"multiplication float 0.9\n",
"substraction float -0.09999999999999998\n"
"0.9 1 -0.09999999999999998\n"
]
}
],
"source": [
"%whos"
"print(a,b,a-b)"
]
},
{
......@@ -360,31 +313,6 @@
"First two files max inflammation seems to rise linearly. So let's write a code that check this behavior and show warning:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Suspicious looking maxima\n"
]
}
],
"source": [
"import numpy\n",
"\n",
"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n",
"if (data.max(axis=0)[0]==0) and (data.max(axis=0)[20]==20): # Anomalous linear behavior of the max in the data\n",
" print('Suspicious looking maxima')\n",
"elif (data.min(axis=0).sum() == 0):\n",
" print('Minima add up to zero')\n",
"else:\n",
" print('Everything seems OK')"
]
},
{
"cell_type": "markdown",
"metadata": {},
......@@ -394,19 +322,21 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Minima add up to zero\n"
"Suspicious looking maxima\n"
]
}
],
"source": [
"data = numpy.loadtxt(fname='inflammation-03.csv', delimiter=',')\n",
"import numpy\n",
"\n",
"data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')\n",
"if (data.max(axis=0)[0]==0) and (data.max(axis=0)[20]==20): # Anomalous linear behavior of the max in the data\n",
" print('Suspicious looking maxima')\n",
"elif (data.min(axis=0).sum() == 0):\n",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment