Skip to content

Instantly share code, notes, and snippets.

@dddiaz
Created January 15, 2021 07:48
Show Gist options
  • Save dddiaz/3a3d384748937b1b0bce1404314a225f to your computer and use it in GitHub Desktop.
Save dddiaz/3a3d384748937b1b0bce1404314a225f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# Question:\n",
"I wonder what a day's worth of blood glucose data ... \"sounds like\" ;p."
]
},
{
"cell_type": "code",
"execution_count": 11,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.6.8 (v3.6.8:3c6b436a57, Dec 24 2018, 02:04:31) \n",
"[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]\n"
]
}
],
"source": [
"import sys\n",
"print(sys.version)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 12,
"outputs": [],
"source": [
"!pip freeze > requirements.txt"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# Step 1\n",
"Let's load some glucose data from a json file. This json file was generated with the help of an open source project\n",
"called [Nightscout](http://www.nightscout.info/). It scrapes Glucose Data from a continuous glucose monitor that I\n",
"wear on my body called a dexcom.\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 13,
"outputs": [],
"source": [
"import json\n",
"with open('./glucose.json') as f:\n",
" raw_data = json.load(f)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 15,
"outputs": [],
"source": [
"# data clean up\n",
"glucose_values = []\n",
"for reading in raw_data:\n",
" glucose_values.append(reading['sgv'])"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 19,
"outputs": [
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Lets take a peak at a part of the data\n",
"import matplotlib.pyplot as plt\n",
"plt.plot(glucose_values)\n",
"plt.ylabel('Blood Glucose')\n",
"plt.xlabel('Reading Number')\n",
"plt.show()"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# Some Background\n",
"It looks like on this particular day, my glucose numbers were a little more erratic than normal, thats okay.\n",
"It happens, not every day is perfect as a Type 1 Diabetic, and in this particular case it may actually result in a more interesting sound!"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 127,
"outputs": [
{
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x7f9cbbee7550>]"
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD7CAYAAACBiVhwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5nElEQVR4nO3dd3gc1bn48e/ZompLsiXZli33XnDHNtgUg+mhJIQeahIndAiBQMLvBgLcm4Rgbgqhl5BLDZhejAEbY2Ns3CvuTW6SiyTLalvO74+ZWcnSStqqbe/nefRoNTu7e0a7O++c9h6ltUYIIYRozBbrAgghhIg/EhyEEEI0I8FBCCFEMxIchBBCNCPBQQghRDMSHIQQQjTTZnBQSmUopRYrpVYqpdYqpR40t/dVSi1SSm1WSr2hlEozt6ebf2827+8T5WMQQggRYYHUHOqA07TWo4DRwNlKqUnAn4DHtdYDgMPAT839fwocNrc/bu4nhBAigahgJsEppbKA+cCNwEdAN621Wyl1AvCA1vospdQs8/ZCpZQD2AcU6lZeqKCgQPfp0yec4xBCiJSzdOnSA1rrwmg8tyOQnZRSdmApMAB4AtgClGut3eYuJUAP83YPYBeAGTgqgHzgQJPnnA5MB+jVqxdLliwJ70iEECLFKKV2ROu5A+qQ1lp7tNajgWJgAjAk3BfWWj+jtR6vtR5fWBiVwCeEECJEQY1W0lqXA3OAE4A8s9kIjKCx27y9G+gJYN6fCxyMRGGFEEK0j0BGKxUqpfLM25nAGcB6jCDxY3O3a4H3zNvvm39j3v9la/0NQggh4k8gfQ5FwL/Mfgcb8KbW+kOl1DrgdaXUw8By4Hlz/+eBfyulNgOHgMujUG4hhBBR1GZw0FqvAsb42b4Vo/+h6fZa4JKIlE4IIURMyAxpIYQQzUhwEEII0YwEByGEiICdB6t5fPZGZq3dF+uiRERAk+CEEEK07pVFO3h63lYA7j9vKD87qV+MSxQeqTkIIUQE1Lo8vtsPf7Q+hiWJDAkOQggRAfUeTWHHdH595iDjb7c3xiUKjwQHIYQIk9aavRU1OGyK7HSjtf60x+bi9Sbu/F8JDkIIEaa/frGJuRvKyE53cN7IInIyHJQcrqEugWsPEhyEECJMe8prAHjsklF06ZjBbacPBKDeI8FBCCFSlsuj6dk5k1E98wBIdxin1kTud5DgIIQQYXJ5vDjtDafTNDM4PDFnc6yKFDYJDkIIESaXx4vT1nA6HdS1IwAvfbOdQ0frY1WssEhwEEKIMMxcVsKstftx2JVv25henXj4ohEAuL2J2bQkwUEIIcLwxfpSAH4yqfcx2+02I1h4EnQ4qwQHIYQIg8vjZUi3jlwxodcx2yU4CCFECvN49TFNSha7kuAghBApy+XVOGzNT6VWwHBLcBBCiNTj8Xpx2JrXHGxmzSFRU2hIcBBCiBDN2VDKgs0H/TYrWQHj4Y/WN2taeu7rrfzmrVVsLq1ql3KGQoKDEEKE6MUF2wGY3L+g2X2DuhlzHb7aWMaOg0ePue/hj9bzxpJdTJvxFa8t3hn1coZCgoMQQoSo1uVhYt/O3GrmUmqsf2EHnr56HADV9Q1rPTRuZjq+T6e47bCW4CCEECFwe7zsKa8hw2lvcZ8OZvruH/x9PmVH6qiud1N6pA6Ae84ezH9+eWKz+RHxQpYJFUKIENz2+nJKDtcwsji3xX3G9e7E+N6dWLLjMFvKqrj2hcW+NN5p9vi+No/v0gkhRJzaeagagHvOGtLiPhlOO7dPM5qcDlTVHbO+Q06mM7oFDJPUHIQQIgT1bi9nD+9Gn4LsVvezagjVdUa/ww2T+zJ1SCET++ZHvYzhkJqDEEIE6bO1+9i4v4oMZ9unUCt998MfrQNgZHEuJw0s9G2PV/FdOiGEiEOPztoAwGhzcZ/W9OycBUBlrRvA75yIeCTBQQghglTr9vCjMT24bnLfNvct6JDOrDtO9v3tL9VGPJI+ByGECILXqzlS6yY9gCYlS9+CbC4eW0yty8PY3nnRK1wESXAQQoggXPXcIsqrXWQ6Az99pjlsPHbpqCiWKvISo34jhBBxYkuZkQ/p+sl9YluQKJPgIIQQQbpiQk9fR3OykuAghBBB8GqNUokx4igcEhyEECIIXt2wylsyk+AghBBB8Hg1ftb2STptBgelVE+l1Byl1Dql1Fql1O3m9geUUruVUivMn3MbPeY+pdRmpdQGpdRZ0TwAIYRoT16tsaVAdAhkLJYbuEtrvUwp1RFYqpSabd73uNb6L413VkoNAy4HhgPdgc+VUoO01h6EECLBeb3atwRoMmuz5qC13qu1XmbePgKsB3q08pALgde11nVa623AZmBCJAorhBCx5tVgT4GaQ1B9DkqpPsAYYJG56Ral1Cql1AtKqU7mth7ArkYPK6H1YCKEEAnDozUpUHEIPDgopToAbwN3aK0rgSeB/sBoYC/wWDAvrJSarpRaopRaUlZWFsxDhRAiZrxeLaOVLEopJ0ZgeEVrPRNAa71fa+3RWnuBZ2loOtoN9Gz08GJz2zG01s9orcdrrccXFhaGcwwiTnywcg8PfbiODfuOxLooQkTFW0tLcEufg0EZsz2eB9ZrrWc02l7UaLcfAmvM2+8Dlyul0pVSfYGBwOLIFVnEqwc/WMfz87dx1v/OY/6mA7EujhAR9//eNU5zw7rnxLgk0RfIaKXJwNXAaqXUCnPbb4ErlFKjAQ1sB34BoLVeq5R6E1iHMdLpZhmplPzuf3c1B6rqfH+/s3w3UwYWxLBEQkTHz0/qy7nHFbW9Y4JrMzhorecD/upQH7fymEeAR8Iol0gwb3xnjEF49+bJ3PraMrxax7hEQkSeJ0XmOIDMkBYRoLXG49XcetoARvfMw64UHq8EB5F8UqUzGiQ4iAjYuL8Kr25YSN1mU3ik5iCSkFenRmc0SHAQYfJ6Nef/fT4AnTukAUZSMq/UHESS0Vrj1UizkhCBePGb7dR7vJw3sojLxhsjmO02aVYSycf6SEuzkhBtOFrn5qEP1wFw5YReOKxmJaWkQ1okHeuCx54iZ80UOUwRDW7zy/L/fjCMyQMahq1KzUEkI+uCR5qVhGiD1a9gb/JdMTqkY1AgIaLo5y8vAaRZSYg2tXQllWZXzNtYxuOzN8aiWEJEnNer+dqc9X/GsK4xLk37kOAgQma1HDVdT/fOMwYBsH5vZXsXSYiosJpQ7z5rMP0KO8S4NO1DgoMImVVzaFrNPrF/AcOKcpBuB5Es3F4vkBrrOFgkOIiQ+ZqV/HxfbDZjXLgQycBldqI5JDgI0TarZuBvxqgMZxXJxO0xag7OVBnHigQHEQZrtJK/oX1KyYglkRy01jz4gTGfR5qVhAhAa81KdiXNSiI5VNS4eH/lHgBG98yLbWHaUSDrOQjhlzQriWRWUe3ih08uYGvZUQD++KPjGNEjN8alaj9ScxAhO2gu7uOvWcmmFOYADyES0q7D1b7AANAhI7WupVPraEXEVNa6+PFTCwHIcDS/xlAKqTmIhKW15tutBwG4cHR3juuRy9TBXWJcqvYlwUGE5EitG4Cpgws51c+XxiYL/ogE5fZ4eXTWBp6etxWAG0/tz5Buyb9mdFPSrCRCYo1UOve4ItL81BxsNqk5iMT07dZDvsDw/LXjGdy1Y4xLFBtScxAh0a10RlvbJTiIRFRZ6wLgjemTmNgvP8aliR2pOYiQNCTd83+/UoplO8t5c8mudiyVEOHZXV7DLa8uA6AoNzPGpYktCQ4iJA1zHPzXHH5wXBEAM5eVtFuZhAjXku2H8GoYVpRDUV5GrIsTUxIcREis4NA0I6vl0uN7MmVAAfVuGc8qEof1eX366nEplSrDn9Q+ehGyhglwLe/jtCtfwjIhEoH1eU31wAASHESIWkrX3Viaw8bq3RXsOlTdXsUSImR1bg+frt0H4HcEXqqR/4AIiTX7uaVmJYCCDukA/OrNFe1QIiHC8/HqvczbWAZAVpo9xqWJPQkOIiStJd2z/Nf5w+hbkO2bMCdEPLM+p5/cfhIZTgkOEhxESNqa5wCQ7rAzvHsO9R7plBbxz+pv6J7iQ1gtEhxESDxtzHOwpNltuCQ4iARgfU6djtRZs6E1EhxE0CpqXFz0xAKg9ZoDQLrTxq5DNdzz1sr2KJoQIauu9wDgaOuKJ0XIf0EEbV9FLQC987MY17tTq/teOaE3APM3HYh6uYQI1adr9vG3LzYBxhBsIcFBhMDqjL7vnCF0zHC2uu9xxbn8ZFIv9lTUypBWEbd2HDTWbXjsklGtjsBLJRIcRNDamh3dlDWk9SfPL4pamYQIh9uc1XneyKIYlyR+SHAQQQtkpFJjvzylP0OLciivdkWxVEKEzkpBb29tbHaKkeAgghbIHIfGMpx2JvTphNTWRbzyBDDjP9W0GRyUUj2VUnOUUuuUUmuVUreb2zsrpWYrpTaZvzuZ25VS6m9Kqc1KqVVKqbHRPgjRvrxB1hzAaIKSleFEvPJ4NUr5Xw89VQVSc3ADd2mthwGTgJuVUsOAe4EvtNYDgS/MvwHOAQaaP9OBJyNeahFTDX0OgT/GblO+qrsQ8cbj1VJraKLN4KC13qu1XmbePgKsB3oAFwL/Mnf7F3CReftC4GVt+BbIU0pJL08S0W2s5eCP3aZ8VXch4o1Ha6k1NBFUn4NSqg8wBlgEdNVa7zXv2gd0NW/3ABov/1VibhNJIpRmJWPZ0CgVSIgwuD1eVpdUgHw+jxFwcFBKdQDeBu7QWlc2vk8bl5JB/WuVUtOVUkuUUkvKysqCeaiIMat5KJgLLZtCmpVEXHrpm+18s+UguVmtz9lJNQEFB6WUEyMwvKK1nmlu3m81F5m/S83tu4GejR5ebG47htb6Ga31eK31+MLCwlDLLyJk5a5ynp+/ja1lVW3ua53jg5ksJM1KIl4drq4H4LWfT4xxSeJLIKOVFPA8sF5rPaPRXe8D15q3rwXea7T9GnPU0iSgolHzk4hDn67Zx4VPLOChD9cxY/bGNvfXQQ5lNfZVaN3wWCHihcdrJIgc0KVjrIsSVwKpOUwGrgZOU0qtMH/OBf4InKGU2gRMM/8G+BjYCmwGngVuinyxRST96dPvfbc/XLWXT9fsa3X/hoyswdUcAP5q5q8RIl54tW4zu3AqcrS1g9Z6PtDSWeB0P/tr4OYwyyXakcvj5UdjejC0KIdHPl7Pq4t3cvaIbn73La+uZ/rLS4Hgag7H9+kMGMHhjmmDwi6zEJEiw1j9k3gpcHs0Drvi5yf34/g+nXC3sv7ClrIqalweCjumM6hr4NXwE/rnc+Op/XHKJZqIMx6vDGP1R76pArdX47AbHwW7TfmSkPljdRnMuHRUmxlZm7Kphgl0QsQLr9aSU8kPCQ4Ct9eLw/xyOO22VmsOvpFKLbY0tsyY6yDBQcQXaVbyT4JDilu5q5zyapdv9au2ag7BJt1rTMlEOBGHvDI72i8JDinul/9ndC53yzXWXHDYbKwqqWDJ9kN+99chzHGwWN8/Gc4q4sWOg0d5bfGuEOrByU+CQ4qrqHFx9vBu/PykfgAM7tYBOHZ4a2M6hKR7FivdhtQeRLx4eeEOAAZ3kzkOTbU5lFUkN7dH07cw21cTuPusIawqqaCy1u13f+u8HkxeJYtVc/BqjV2u1UQcqHd76ZTl5OUbJsS6KHFHag4p7OZXl1Hv8ZLuOPZjYLepFpt+wu1zaPwcQsSa26ux22yybrQfEhxSVE29h49WGVlNzhlxbEZ1eysL8zTkVQr+Na3ahsQGES+8Xu0bqSeOJcEhBXm8mon//TkAD14wvFl7q83WcnBo6HMIr1lJiHhg1BwkOPgjwSEFzdtYRmWtmyHdOnLRmOZLbdhUy1f31vbQ+hykQ1rEF5kA1zIJDimmstbF9S99B8Ad0waRm9l8lnNr6bV9S4SG8NpKag4izkjNoWUSHFJMZY0LgF+c3I+zhnf1u49NtbzecyRqDv82hw8KEUtrdlfwwco9IQ2uSAUSHFKI2+PlnrdWATCiR26L/QZ2W8tpLrxhzHOw+jYenbUBVyspOoRoDy99sx2A0T07xbYgcUqCQwrZcaiab7YcBOC4Hrkt7mdTrTUrGb9DCQ6TBxRw91mDzeeRpiURW/VuL33ys3js0lGxLkpckuCQQqrMiW1PXz2OPgXZLe5ntyl2Harh/ndX+7nXmucQWl3c1ykdZMWh3u2VtBsiotxeL067nAJbIv+ZFFFaWcuFTywAoGN66xPjr5rYC4CFZi2jsb0VtUBoNQcA67sYaM2hzu3hF/9ewqD7P+HKZxdR6/KE9sJCNFHvbkhVL5qT/0yKsE7qJw0sYFyf1ttYx/TqxA9GFjUbzrqqpJwHP1gHQIbDHlI5bEHMki6trOW0v3zFrLX7AVi49SDXv/hdSK8rRGMVNS4WbT2I0y690S2R4JAi3GY7zs9O6kd6ACd2f8NZD1bVA3D76QPpnZ8VUjlUEHMdbn51GbvLa+jSMZ23bzyRjukOFm49yJrdFSG9thCWB99fy5E6t9+h3MIgwSFF1LuNs3GgV0r+UmhYf58+tEvIuWgCTds9b2MZ320/TO/8LL789amM692Jn5mZY299bXlIry2E5VB1PTYFf718TKyLErckOKQIq+YQaAecUqpZs1JD0r3Qq+LWY1tKz2H57TtGZ/jVk3rTwewjue30AZwyqNA3V0OIUNW5vIzr3YnO2WmxLkrckuCQAsqr67nNvNoONMmY3db8BB6R4GBru1lpxmcbKDlcw7Un9PbVFsAIWP0Ks6mXORIiDP9ZsouFWw8G1LyayiQ4pIB1eyo5XO0iPzuN/l06BPQYf30O1gk9nHQDgTQrPT1vKwBnDu/W7L50h50jtW7uenNlyGUQqe0/S0oA+MHIojb2TG0SHFJAnXml/ey148nJCKwDzl8KDasmEU66gbaS7/3wnwuoc3v51RmDmDygoNn91hf67WUlMqxVBM3j1eypqGHq4EIun9Ar1sWJaxIcUoDLbQSHtCDGdNttioNH6zl0tN63zdesFIGag7+hrF6vZvnOctIcNn40tnm2WDDSftx3zhAApv5lbsjlEKnpxv9bSsnhGjoGeJGUyiQ4JDmPV/P5emOeQJoj8Lc72+wEvvyZhb5tkehzsEY5Ld1xuNl9i7cfAuCuMwZR3KnlobKXHd+THnmZ7K2obTFBoBD+7DxUDcBdZw6KcUninwSHJLdg8wHeNNtY87ICv1q66dT+9M7PYp85eQ4aUl7YwwgOnbKM0SG3vracI7UNo47q3B4uf+ZbALrkpLf6HHlZaVxpzuKWzmkRjHq3l/NHdad3fsvpY4RBgkOSqzRPwC9dfzxdOmYE/LiOGU7OHt6Nylo3M5cZwcUTRkZWy7ShXbhhcl/AWKrUUl1n3L5qYi8uGu2/Sakxa91rCQ4iULPW7mPrgaPN1kwX/sl/KcnVuYyTZ7+CwEYpNTayOA+A372zhtLKWu5/Zw0Q3mglpRSDuxllcZtNQl6v9s1rGFnccirxxqz5Gg99sE4S8omA/PfH6wEYVdxyRmLRQIJDEttSVsVd/zGGfKY7g3+rzxtZxC9O7odG8+22Q9R7vPTsnEl+h/AmDtltRlncHuOkXnqkjk/W7AMCz60/tpex33+WlnCkzh1WeURqOFrn4YoJPbn6hD6xLkpCkOCQxJaZnb4nDSygsEPr7fgtsduMNBpWx++/rp8Q9uQhK4WHNWu7yjy5/+9lo30LArXluOJcHrpwOGC0IwvRmlteXcaBqjoyna1nJBYNJDgksTrzpPnYpaNCHn7qsCncXu2b4xCJ9Xat5yg9Ukd5dT3TZnwFNIyQCpQVpBp3mgvhz9wNZQBcenxxjEuSOCQ4JCmXx8uCzQcAwrrSt9mMHEvWVX44w1gt2WnWMNlvedlcT3pSv85M8TPprTUdM4zn+cHf5x8z8kmIxnYerKaqzs2Np/ZnSLecWBcnYUhwSFLvrdjja8fPdIYeHKxcTFbTTSRqDlMGFvCzKcaIpRmzNwJw3zlDyUwLrpynDe3CqYMLASM/vxD+XPRPY5GrfEmyFxRpgEtS5dXGzOb3b5kc1OS3pqzO47eX7Tb/Dj84OO02fnfeUC4Y3Z3qeg/ZaQ5G9Aj+ii7dYeei0T2Yu6EMl0dGLInmtNYcOlrPCf3yuUY6ooMiwSFJWeP/B3UNrIO3Jf0LjclCK3aVA5FpVgJjSKs1VDYcVuCTTmnhj3XRMGVgQVgXSamozf+WUuoFpVSpUmpNo20PKKV2K6VWmD/nNrrvPqXUZqXUBqXUWdEquGiddbIMdwH1M4d34+6zBvv+jkDFIaKs47v1tWXUuSURn2igtebemasAZOJbCAL5j70EnO1n++Na69Hmz8cASqlhwOXAcPMx/1RKSdL0drZwy0H+9/NNQGSagRr3WUTi+SLpuB7GhKaN+6vYcbA6xqUR8aTW5WWm2Rw6qV9+jEuTeNoMDlrrecChAJ/vQuB1rXWd1nobsBmYEEb5RAiWmAns7pwWmeRijTuKHWHWRCKtW24GT/1kHGCM0BLCctjsd3vwguGM6CGzooMVTp/DLUqpa4AlwF1a68NAD+DbRvuUmNuaUUpNB6YD9OqVmnnVa10eNpdW0T0vkz3lNXTPy4zIsoXWSfK20weE/VwAZwzryu7DNXTNSfct2RlP0hzmpDrplBamWpeHE//4JdAw5FkEJ9T/2pPAQ4A2fz8G3BDME2itnwGeARg/fnxKfqv/6701voypYHT+fnHXqWE/r8urSbPbAspRFIiCDun8ulG/Q7xxmCOqpOYgLFatYUyvPM7ys6KgaFtIbQRa6/1aa4/W2gs8S0PT0W6gZ6Ndi81tookN+44cExggcjN9XW4vDnt89Q1Ek9Up/fp3u2R9BwHAG9/tAuC6E/sEPfNeGEIKDkqpxouv/hCwRjK9D1yulEpXSvUFBgKLwytiy9btqeSRj9bx1883JdxQxoc/WgfARaO78/FtJ3HVxF4crffw9tKSNh7Zuq1lVTw3fxupExqMfgeAt5aWsHZPZYxLI2Jt16Fq34CMnp1bXjRKtC6QoayvAQuBwUqpEqXUT4E/K6VWK6VWAVOBOwG01muBN4F1wKfAzVrrqI0v3HnoKP9auIPHP9/Imj0V0XqZiHtneQlfbzrAuN6dmHHpaIZ1z/GljvjN26vCem6rNjK+T+ewy5ko+hZk8/TVRqe0DGcVR2qNRI6PXTLKl71XBC+Q0UpXaK2LtNZOrXWx1vp5rfXVWuvjtNYjtdYXaK33Ntr/Ea11f631YK31J9Es/NkjinjxuuOBxOqMfGnBdgAuHlvsS4h3znFF3DFt4DFJ7kJR7/bSId3Bv25IrUFiHc2mg3D+dyLxVdW5ue5Fo7GioGNomYiFIb7GJYbAmrGbSCeFeo9m2tCuvqUuLVnmkNGLn/wm5AVs3F6vLyV2KrGCbCJ9DkTkbS6tovRIHfnZaYyU4athSfjgYE/Ak4Lb4/8Efs4Ioytnxa7ykHMFuTzeuJuL0B6sBIHuBPociMjbeciYCPmPK8fSSRLthSXhzyK+4JBAS0W6PF6/aS16ds7it+cOAUJbG7m63s03Ww76TpSpxJaAnwMRWRv3H+G215YDkJvpjHFpEl/SBIdEGcK4fm8l2w9WtzjUNM0MGq4QRl/99fNN7DhYTV5W6l0xWQHRk0B9TyKySivrAJh+cj+GFoWXcFIkQ3BQidWc8Ks3jTWdu+Zk+L3faSYIe3XxzqCf21rT4KXrjw+xdInLukh45uut1LpSe8TS1rIq/v7FJv72xSa+WL8/1sVpNy5zQaqzR3SL2ATQVJbwwcGcHJswfQ419W7G9Mrj7jP9zzjuV9ABgEdnbaCiOrgFbNxeTffcjBYDTzKzjnnxtkMsNdfOTlXPzNvKY7M3MmP2Rn76ryW8MH9brIvULqzadloK9rlFQ8L/F60rxjvfWMGBqroYl6ZtGujdOavFNZ1P6J/PwxeNAKAmyCtgr1djT8GRSmCk+HjnphOB1J7rMGvtPl7/bhcDu3Tg2WvGA/CHD9dxxTPfcvXzi7jj9eVJ+/+xWg9SKTtANCV8cOjdOZvuuRnUuDysKimPdXHa5PHqNhfMsVJkBzvr2+3VvjxDqcjq5E+kOS+R9t4KI1vNj8cVc8awrnx46xQm9OlMrdvD/M0HeHfFHib/cY5vpcBksfNgNTe9sgwIfw0TYUj4/2Jmmp1nzCukRFgq0uvVLdYaLFaK7NNnzOVonTvg5/Z4ddytt9CerCvGROl/igSXx8uho/Xc9tpyBv7uYz5evY8RPXL4xSn9ARjRI5c3f3kC79w0mRX/dSZDi3I4UFXH6D/MZmcSrX+xbq+RNuX4Pp3oLSkzIiLhgwM0LBWZCFeMXt3Qid6SKQML6NU5C5fHWP82ELUuD6t3V7T53MksFbOzXvr0QsY+NJv3V+7xXRxlOPyvr5Wb6eT9WyYzbWhXwGiCCnWyZbxxm53Rj/zwuJSc5xMNSfFftIYxJsJJwaM1bbX85GQ4uWPaQAC8AX55H/loPTsPVad07nprYuGX35fiToDPQrg27DvC8p3lTOrXmQcvGM6wohwAcloZ4++023jggmEAPPLxer7dGug6XvHN+u5Lk1LkJMWZxPpA/PvbHZw1vNsxK5fFG28AfQ4QfFqQQ2Yb8uOXjQ65bIkuJ8M4Kb63Yg8XjOrO6eYVcksOVNXx8eq99C3I5qSBhe1RxJB4vJqZy0qoatTEqLXR0Qxw2pAuXHtiH84Z0Y2VJRWMLG49bURxpyz+dPFx/Obt1ZQlwCCOQFi1plScABotSREcrGnyS3ccZu6GUs45rqiNR8SOVwfWL2D1SwTafO72eBnctWNKpyjulJ3Gqz+fyJXPLqKytvVhwJtLq7jgH/OprveQ6bSz/iF/y6QHZtuBo7y+eCfDuudw4Wi/Cx+GZWVJOXe/5T9b7y9P6c9Pp/QDoEtOBmcMC2wY8xQzGP7pk++ZMqAgIisQxsrho/XM+GwjIDWHSEqK4NAh3cHnvzqFaTO+4mh9fA/TC2S0EoAVPwJtVnJ7tAzhw0jfDVDnat6s9OmavXyw0kggPH/zAarNz0qNy8P/fLye+84dGtJrvrpoB89+vY2cDIff4KC15pGP1nOgqo5fnzWY4k4tB/C1eyp46quteL2a/oXZ3DClL7e+aqSEeOVnExnePce3r82mfLWlYOVnp9GlYzq7y2s4+c9z+PDWKfQx/3eJZu7GUvZV1tIx3UFelqTNiJSkCA4AOZnGocTz7Nj/+WQ9lbXugIKD1bEccHDwaumIA9LNzth7Z65mbO9ODOrakEbhxQXbWVVS4Zs/Utwpk79ePpqLn1zI0/O2cuXEXtw3czVOu41/XjW2zRXE3luxmxcXbKfksDHqp6VaXllVHc+ZE9HeXbGH92+ZzMjiPL/7frx6Lx+s3OP7+x9zNuPVkJflZGRxLh1DDAZNZTjtfHvf6Vz2zEK+236YORtKub6gb0Seu71ZQ74/vfNkMpzx26ScaJLmbGKdFO5/dw3LdsbnDFlrlbezhrfeFg74pv8H2udQ6/JIeyuQl+n0jcZZvM3obNVa84cP1rFo2yEmDyjgxeuP55RBhVx3Yh/G9e7sm3R4yqNz+WbLQb7aWMb3+474fX6tNW6Pl79+vonbX1/Bil3lDOtutPH7GxDh9WqqzMVnrPkrF/xjAV9+f2xaC7fHi9aaOpeX7DQ7X9x1ivF48+1/ffqkiAUGi82mePH6CS2WPVFY/Q2pmKo+mpKm5pCb6eS6E/vw0jfbWbunMi5XgFJKccWEnkzsl9/mvla/RCAVh4c/NE58J/Zv+3mTnc2mmHHZKEY+8Bl7K2rYebCam19dxurdxkqBPzupL5P65TN1cBffY84Y1pVN+49Q7/Gy61AN8zcf4OInv2He3VPplZ/FkVoXFTUuOmencdVzi1i+s9z32OevHc/pQ7vyl1kb+OfczceUpfRILaf95StfR/Ljl41mX0UND3ywjuU7yzltSFfq3V5+9eYKPly1lx+N6cGh6nocdhv9Czv4Oo2h4eIn0qxUE4m2zG5jvpFKKTwBNBqSJjgA3DltEC99sz2oD7rXq1lRUk5Wmp0h3XL4fl8lNfUeRhXntTlZLVjGiT6w57ReOpCaw8bSKgDuPst/vqZUk+W047QrnpizhSfmbAGMfqn3bplM/8IOzfbvmpPBgxcatQe3x8vtb6zgo1V72XHoKD07ZzL1L3M5UNUw3yTdYeOWqQOYOqQLI8wFZZx2G14N2w8c9bXdl1bWUVXn5sLR3RnRPZeTBxWQlebgj59+z1cby7jp1AHc/dZKPlxl9IPMXG7Mbu5lDirIzWzoJO7QRhNXqKyr7QWbDzL95P6+OUOJwu3x8u3Wg0BD0koRGUkVHJyO4OY71Lo8/O6dNby9zGjuee/myVz4xAIALhlXzEMXjYhwG6Ym0DlqDaOV2g4Obo+X8b07MSYOa0ux4LDbeOVnk9hlLvyiFJwyqJD8Dm0vG+mw27jxlP58tGovby8tobrec0xgGNKtI//+6UQKmyxBaXWEnv+P+ax+4Cyg4b07f2R3pg1raErsmpPBqpIKfvD3r31NIqcOLmTuhjIA/nnVWACmDinkiSvH0iHD0ez1IkUpRW6mk4VbD/LKoh1cPzmx+h3eWb6bWWuNJrp0CQ4RlVTBwaoiP/XVFi4eW9zmF2rW2n2+wABw38zVvtv/WVrClIEFER2aqHWg9YaGeQ4vfbO9zVpMS4sHpbIJfTszoW/nkB7bJcf43Ly7Yg/vrjA6h3977hBGFecxqmee3wuGKyb04tM1+1hoXsVCQ5Ng09aOV38+ibMfn8eWsqMAXHNCb+45ewirSyroV5jtyzCb7rBz3sjoD8v+4JYpnPzoHA5WJV6+pYNmBoGPbpsi34EIS6r/psNuo1fnLMqrXbxrVtEB5m0s4963V3Hv26v4ZPVe3/YjZkfh01ePAxryszxkdlDeN3M1u8trIlY+DQHXHHrkZQLGhK5NZrNRS1wyjDWiunTM8GV4Bbj99IFMP7k/E/vlt1iTTHPYmGT2JVkLT1k1B9XkkqBHXibf3T+Nr++Zytf3TOX35w+nQ7qDE/rnxyTdeq/8LDKddv4xZzMbWuiIj0fbDhzlj598D8DQbjlt7C2ClVTBAWDur08F4Eij2aTPfr2Vt5eV8M7y3fzty4ZOwzqzb2JSv3wW/+50+hVk068gm6mDCxnePYfqeg+z1uyLWNm01s1OFC0Z0KUDT/3ECFqtNZO9+d0uVuwql6umCBtalMOIHjn07JzJmQGMLoOGxH/WojNWg6C/C4IMp52enbPo2TkrLpIlnjbU6KCf2agmHe+sDLQnDyqMeP+gSLJmJTDa6jOddl5euJ2PVhlNAlvKjjJlQAFdczJ4e1kJD3+4jnNHFvGQmX4g3WEjN9PJl2ZgAZh504kMvv/ToNdUaI2moaM5EI4A+h3eXLILgHNGdAunaKKJDKedD289KajHWO+X26NJd+BLapcIq5I9ceVY5m2c5btgindffr+f//18ExlOGy/fMCHWxUlKSXm5efu0gUweUMCQohxfu25mmp1LxxcDMGvdPpZsN8bAXz+5j9+mAqv/4tFZG/hsbWRqD16vDupEYV1RtjZiyeXxcsqgQi4Z3zPs8onwWJMQj9YbtVZfn0P8xwbAuEhKhPkOWmvfTPe7zpARetGSdDUHMPLNWK44/gDzNpVx9ohujO3ViUvHFzN3Q5lvrPr95w3z+xxKKf7845Hc89Yq1uyp5Mzh4V+ZB5scOZARSy6PlialOJHhNN6HCY98wby7p/omsAUyIz4eOGw2VpaUU+/2xvWQ1n/O3cI7y3fTOz+Ln5/cL9bFSVrx+wmIkCkDC/jtuUN9k+KcdhulR+r4ZM0+cjIcrbb3Xjq+J2kOGx+v3ntMRsyQ6cA7pKEhhUZrF3PGSKXEOPkku/NHdWfyAKNT+uRH53DETP6XKO9ObqaTNbsrmTF7Y6yL0qptB4zWgBmXjopxSZJb0geHphpfEb35yxPa3L97bgabS6t47uutYb+2pvnIldZYQyBbalZauaucTaVVUnOIEzkZTl66fgJnmnMarAuKROhzgIZRe4eO1rGlrIqXFmxj3Z7KGJfqWDsOHuWtpSX0L8xmXO/QhiqLwKTcWcWafTqiRw5DAhj+NvOmyUDDsNdwaB34JDhoO/ne79415mX07JwZdtlEZDjtNqYOMUb+WEE9QWIDfQqyfSsQ/mXWBh74YB1/+HBtrIt1jMfNWk3fBM0gm0iSss+hNddP7suPxhSTlR7YzOfO2WnkZjojsrKYUXMIXFsd0jX1HiYPyOfXZ0qnXDxpmvokUfocwEinUe/x+kYtHa2LnyzHs9ft590Ve+hbkM3TV4+PdXGSXsrVHABys5xBNcU47TbqI7A+tdYENR7b2nf6v5f4XUva7dUUdkhPmGaLVNE0o24ivT1Ou42PVu3ly+9LAahzx09w+Pe3OwC4ZHxxXMwNSXYpGRyC5bQr6iIw38GrdVA1h0FdO9IjL5Nal5fv9zZv+3W5vbKGQxyyagpuX80hlqUJzlUTex3z98b9Vfz+vTUxKk0DrTVHal2c0C+fm04dEOvipAQ5swQg3WFj5vLdYXdKB5GUFTAycVpJ2HaYSeQsNfUe9lTUykilONR0Fb9EqtldfUIfBnYxMtdaxzF/84EYlshw79urWb6zvM0FmETkSHAIgJVryZpQFzId3GglaMj2ed/M1Tz39VZfU8XlzywEICtNvizxxldz8Fi5lRKL1WQzvk9nfjSmB0dq3SzaetCX5ba9lR6p5Q0zE8CdZwyMSRlSkQSHAJw0sJCi3IywO6V1ECm7Lb3zs3n0xyMBePij9Xyx3khPvOtwDXlZTm48tX9rDxcxYL3Hn6wxZvEmUoc0NOSIsitFutOYF3TZM99yyVMLY1Kem/5vGQBXTuzFcHPVPRF9EhwC5LArXxtyqIJJ2d3YJeN78urPJgLwP598z3+W7OLQ0XouHltMQQBrFIj2ZQWD77Yby9V2zk5rbfe4Yzcn2Nhtim45DcOk91XW8uGqPS09LGoOHa2nKDeD3547tN1fO5W1GRyUUi8opUqVUmsabeuslJqtlNpk/u5kbldKqb8ppTYrpVYppcZGs/DtyWkLP+9MMCm7mzq+b2cKOqSz7cBR7n5rFQCDu3UMqzwiOhrXFJ6+ehw9zbk1icJKIGizKW49bQBf3zOVxy4xZiPf8urygNc1j5Q6t5cT+xdEbTU84V8gNYeXgLObbLsX+EJrPRD4wvwb4BxgoPkzHXgyMsWMPbtNhf2lCCZld1NOu43Fvz2dE/rl0y0ngxeuG8+lkmwvLjUeQFaU2/7rM4TL6nOwKyNA9OycxcXjivntuUMAuOONFb6Ms9H25Nwt7C6vId0pjRztrc1QrLWep5Tq02TzhcCp5u1/AXOB35jbX9bGJ+dbpVSeUqpIa72XBOew2/hkzT7e/G4Xlx4f2kk52JTdTdlsitemTwr9CUS7aDw6KZ4T2LXkByOLqHd7ObtJGviTBhYC3/PByj1sKa1i5k0nRngZ3eZe+mYbAKebs85F+wn1k9u10Ql/H2CthtID2NVovxJzWzNKqelKqSVKqSVlZWUhFqP9/HSKsbbuvE2hl1WH064kEoaj0RVAWgLOQ7nmhD68e/NkLjv+2DkPQ4ty+Pa+0+mWk8G6vZWMfOAzKqpdUS2Ly6P5yaRenD40sAWXROSE/ck1awlB1zG11s9orcdrrccXFhaGW4yo+/G4YgZ37Rhyv8OBqjog8YY1iuBN7JfPbacN4J6zB9MnP7lyAHXLzeDzu05hcNeO1Hu87K2M3DK6TR2squPQ0XrSHdGtnQj/Qg0O+5VSRQDm71Jz+26gcZtLsbktKTjsyjd2PVjn/30+AFlp8kFPdh3SHfzqzMHcdOqApFy+skO6g1+fZeTzcrmj1/dw4RMLACOVuGh/oQaH94FrzdvXAu812n6NOWppElCRDP0NFqfdhivETumyI3UM6NKBq0/oHeFSCdH+rL6Uek90ci/N3VBKyeEahnfP4QazSVe0r0CGsr4GLAQGK6VKlFI/Bf4InKGU2gRMM/8G+BjYCmwGngVuikqpY8RpV8zbWOZbYjQYdpvi9CFdZEazSApW2pYZszdSH+F1p7XWXP/SdwD87KS+MoQ1RgIZrXRFC3ed7mdfDdwcbqHi1ajiPL7bfpgfP7WQ80YWccqgwoCHkxp90cnXxCBSU2+zL2XB5oOs21vJ6J55EXvuOrcXreHGU/vzwzHFEXteEZzEG0oRQ/f/YBgPnD+M/oXZzP2+lOe/3hbwY4Nd6EeIeNYjL5OXb5gAEJG1Tixaa278v6UAdO0os/9jSYJDkK6b3Jcv7jqVUwYX4gliIpDWiZW6WYi2tLUYVSiq6tzM2WAMF58yMP5HMSYzCQ4hsimFN4gvhTeM2dFCxCNfcIjgbGlrNODvzx/GADN1uIgNCQ4hctiCS8QX7uxoIeJNNGoOLq/RRCWLWMWevAMhsttsQX0pZHa0SDY2FYXgYNYc0mQRq5iT4BAiuy3wL4WVpExqDiKZWDUHbwSblV5dZKwT7bDJqSnW5B0Ikd1mC7it1Yoh0ucgkondV3OIzPPtq6jliTlbAOidn1hpzpORBIcQ2W3GrOcn525pc1+pOYhkZF3c3/nGCg4drQ/ruercHn7+8hIA/n7FGMb36Rxu8USYJDiE6DQzhfDLC7e3ua+v5iDBQSSRPvnZdOmYTlWdm1Ul5WE915bSo6zeXYHTrhjXu1NkCijCIsEhRKcN6cpl43sG1N6qzaS1MkNaJJPsdAfPXTseIOSElAD7K2s5929fA/DyDRPpnpfZxiNEe5DgEAaHPbDV4bTUHESScppDTt3e0DsePl+/H4DJA/IZ0ysvEsUSESDBIQyBznWwgoNNooNIMlYCvvoQaw4rd5Xzu3eM5ekfvGBE1FeWE4GT4BAGu82GJ4AvhdX0JKFBJBur5vDKtzuodQWfvnt/ZS0A9583VGZExxkJDmFw2AOsOZi/peYgkk2n7DQAFm07xNwNwS2hW1nr4k+ffg/AVFkjOu5IcAiD3aaocXl4Zl7rw1lnfLYRkD4HkXxyMpx8esdJAFTXuwN+XMnhaqY+OpctZUfJTrPTLScjWkUUIZLgEIYJfY2x2H8xT/7+uD1eXlhgpPaOZM57IeJFXqZRe6gLYtGfrzaWcfBoPcOKcljx+zPJlgV94o68I2GYOrgLd50xiMdmb2TsQ7PpkO6g1uUhL8vJf35xIrlZTl+umN+cPUQm9oiklG4uGXrfzNUMLcrxXQRprfHqhjQbjR2tM2oZr02f5Ou3EPFF3pUwnT+qOzYFh47Ws/NQNU67jY37qxj1h8/YU17jyzLplERiIknlZTm5xlwbffXuCgBqXR6uem4R/X/7MX82+xUss9ft578/NrZlpcnopHglwSFMfQqyeeSHx/n+/vj2k3yzp3eX1+ByW8FB/tUiOSmluOfsIQDM31SGy+Pl2hcW882WgwC8tngn5dVGeo06t8eXVWDGpaPkexHHpFkpAi4c3Z2sNDuFHdPJzXRy46n9+fL7UupcXr7edAAwRjYJkawynXYcNsWstft5a2kJ+yprcdoVw7vnsmJXOfe8tYo/XjyS615czKqSCvKz0/jRWFkfOp5J2I6ArDQHF47uwYn9C4CGNthHP9vAHW+sAKBrRxmNIZKX3ab44NYpAJRXu3B7NOeP6s6L1x1PbqaTNbsrOPnPc1hVUoHdpnjnpskxLrFoiwSHKCjKNXLDrNxVDsDtpw9k2rCuMSyRENE3qGtHAOrdXlweL2l2G52y07hqYi/2VNRSVedmePccVv3+THpJSu64J81KUVDYMZ3P7jyZMx+fB0C/wuwYl0iI6LPbFHabwuXx4vZqX1PqPWcP4c4zBgFGyhlJQJkYJDhESe/8LKYN7cKRWjdjekoKYpEanHbFK4t2UFHjOmY1N+l4TjwSHKIk3WHnuWuPj3UxhGhXt542kLV7KlBKceHo7rEujgiDBAchRMTcPHVArIsgIkTqekIIIZqR4CCEEKIZCQ5CCCGakeAghBCiGQkOQgghmpHgIIQQohkJDkIIIZqR4CCEEKIZpbWOdRlQSpUBO0J8eAFwIILFiQdyTIlBjikxJNsxNT6e3lrrwmi8SFwEh3AopZZorcfHuhyRJMeUGOSYEkOyHVN7HY80KwkhhGhGgoMQQohmkiE4PBPrAkSBHFNikGNKDMl2TO1yPAnf5yCEECLykqHmIIQQIsIkOAghhGgmoYODUupspdQGpdRmpdS9sS5PU0qp7Uqp1UqpFUqpJea2zkqp2UqpTebvTuZ2pZT6m3ksq5RSYxs9z7Xm/puUUtc22j7OfP7N5mMjvjivUuoFpVSpUmpNo21RP4aWXiOKx/SAUmq3+V6tUEqd2+i++8zybVBKndVou9/Pn1Kqr1Jqkbn9DaVUmrk93fx7s3l/nwgeU0+l1Byl1Dql1Fql1O3m9oR8r1o5noR9n5RSGUqpxUqpleYxPRhqOSJ1rK3SWifkD2AHtgD9gDRgJTAs1uVqUsbtQEGTbX8G7jVv3wv8ybx9LvAJoIBJwCJze2dgq/m7k3m7k3nfYnNfZT72nCgcw8nAWGBNex5DS68RxWN6APi1n32HmZ+tdKCv+Zmzt/b5A94ELjdvPwXcaN6+CXjKvH058EYEj6kIGGve7ghsNMuekO9VK8eTsO+T+X/rYN52AovM/2dQ5YjksbZa3kh9ONv7BzgBmNXo7/uA+2JdriZl3E7z4LABKGr0Bdhg3n4auKLpfsAVwNONtj9tbisCvm+0/Zj9InwcfTj2RBr1Y2jpNaJ4TA/g/6RzzOcKmGV+9vx+/swTwAHA0fRzaj3WvO0w91NRes/eA85IhveqyfEkxfsEZAHLgInBliOSx9raTyI3K/UAdjX6u8TcFk808JlSaqlSarq5ravWeq95ex/Q1bzd0vG0tr3Ez/b20B7H0NJrRNMtZhPLC42aRoI9pnygXGvtbrL9mOcy768w948os/lhDMaVacK/V02OBxL4fVJK2ZVSK4BSYDbGlX6w5YjksbYokYNDIpiitR4LnAPcrJQ6ufGd2gjjCT2WuD2OoZ3+T08C/YHRwF7gsSi/XlQopToAbwN3aK0rG9+XiO+Vn+NJ6PdJa+3RWo8GioEJwJDYlqhliRwcdgM9G/1dbG6LG1rr3ebvUuAdjA/DfqVUEYD5u9TcvaXjaW17sZ/t7aE9jqGl14gKrfV+84vrBZ7FeK9oo+z+th8E8pRSjibbj3ku8/5cc/+IUEo5MU6kr2itZ5qbE/a98nc8yfA+mcdRDszBaOIJthyRPNYWJXJw+A4YaPbCp2F02Lwf4zL5KKWylVIdrdvAmcAajDJaI0CuxWhLxdx+jTmKZBJQYVbVZwFnKqU6mVXoMzHaC/cClUqpSeaokWsaPVe0tccxtPQaUWGd3Ew/xHivrHJcbo4c6QsMxOiY9fv5M6+c5wA/9lP2xsf0Y+BLc/9IlF8BzwPrtdYzGt2VkO9VS8eTyO+TUqpQKZVn3s7E6ENZH0I5InmsLYt0x1F7/mCMuNiI0W73u1iXp0nZ+mGMFlgJrLXKh9H+9wWwCfgc6GxuV8AT5rGsBsY3eq4bgM3mz/WNto/H+HJsAf5BFDo3gdcwqu8ujLbKn7bHMbT0GlE8pn+bZV5lfvmKGu3/O7N8G2g0Iqylz5/53i82j/U/QLq5PcP8e7N5f78IHtMUjOacVcAK8+fcRH2vWjmehH2fgJHAcrPsa4D/CrUckTrW1n4kfYYQQohmErlZSQghRJRIcBBCCNGMBAchhBDNSHAQQgjRjAQHIYQQzUhwEEII0YwEByGEEM38fyfDBDWIB9OeAAAAAElFTkSuQmCC\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# We need to up-sample our 288 data points representing one day, to over 44 Thousand data points\n",
"\n",
"import resampy\n",
"import numpy as np\n",
"# upsampled_glucose = resampy.resample(np.array(glucose_values), 288, 44100)\n",
"# I tried doing some fancy sampling above, but it was just way too noisy, so ima just hack a function to do it\n",
"upsampled_glucose = []\n",
"for sample in glucose_values:\n",
" # 200\n",
" upsampled_glucose.extend(1000*[sample])\n",
"\n",
"plt.plot(upsampled_glucose)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 124,
"outputs": [
{
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x7f9cb3d9ecf8>]"
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# ok we have the upsampled data, but we need to normalize it\n",
"from sklearn.preprocessing import minmax_scale\n",
"\n",
"upsampled_glucose_scaled = minmax_scale(upsampled_glucose, feature_range=(0.0,255.0))\n",
"plt.plot(upsampled_glucose_scaled)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 125,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"v1 created\n"
]
}
],
"source": [
"# now i need to convert the data to sound\n",
"\n",
"import scipy.io.wavfile as wavf\n",
"\n",
"# samples = np.random.randn(44100)\n",
"samples = upsampled_glucose_scaled\n",
"fs = 22257\n",
"out_f = 'v1.wav'\n",
"\n",
"wavf.write(out_f, fs, samples)\n",
"print(\"v1 created\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 126,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"control created\n"
]
}
],
"source": [
"# need a ref wav file to figure out what normal array values are\n",
"samplerate, taunt_sound = wavf.read('./taunt.wav')\n",
"\n",
"# samples = np.random.randn(44100)\n",
"samples = taunt_sound\n",
"fs = 22257\n",
"out_f = 'control.wav'\n",
"\n",
"wavf.write(out_f, fs, samples)\n",
"print(\"control created\")\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"OK, so at this point, the audio sounds super wonky. it doesnt actually sound like the smooth beeps i expected. now i\n",
"guess this is turning into a lesson about sound... lol. I am guessing this has something to do with not acutally\n",
"generating anything that is sinusodal like. so lets see if we can do that."
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 132,
"outputs": [],
"source": [
"# Gunna try just hand generating sine waves lol\n",
"\n",
"sampling_rate = 44100\n",
"freq = 400\n",
"samples = 44100\n",
"x = np.arange(samples)\n",
"\n",
"# sin wave\n",
"y = 100*np.sin(2 * np.pi * freq * x / sampling_rate)\n",
"\n",
"wavf.write('test.wav', sampling_rate, y)\n"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 156,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Music generated\n"
]
}
],
"source": [
"# OK so lets map each glucose value to a freq and sin wave\n",
"\n",
"glucose_music = []\n",
"\n",
"# og values\n",
"# sampling_rate = 44100\n",
"# samples = 44100\n",
"sampling_rate = 44100\n",
"samples = 44100\n",
"x = np.arange(samples)\n",
"\n",
"for reading in glucose_values:\n",
" # sin wave\n",
" y = 100*np.sin(2 * np.pi * reading * x / sampling_rate)\n",
" glucose_music.append(y)\n",
"\n",
"glucose_music_final = np.concatenate(glucose_music)\n",
"wavf.write('glucose-v1.wav', sampling_rate, glucose_music_final)\n",
"print(\"Music generated\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# IT Worked!\n",
"Holy cow it freakin worked. I had to manually jam sin waves together at frequences based on glucose, but it worked.\n",
"I am not going to clean this notebook up much, because I feel like its a good record of trying different things, and\n",
"just rolling with it till it works."
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 162,
"outputs": [
{
"data": {
"text/plain": "[<matplotlib.lines.Line2D at 0x7f9c85723860>]"
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# theres one more thing i want to do.\n",
"# when i play through my headphones, it sounds fine, but playing through my computer it seems to clip a lot.\n",
"# let me see what i can do...\n",
"\n",
"# if an A is a sine wave at 440 hz, i should probably stay around there\n",
"# according to this site: https://www.szynalski.com/tone-generator/ tones can be anywhere from 5 hz to 1500 hz\n",
"\n",
"glucose_values_normalized = minmax_scale(glucose_values, feature_range=(100,500.0))\n",
"plt.plot(glucose_values_normalized)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 171,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"final song generated\n"
]
}
],
"source": [
"# actually scratch that, i have one more option\n",
"# found this thing called pydub, lets see if it helps\n",
"# https://medium.com/better-programming/simple-audio-processing-in-python-with-pydub-c3a217dabf11\n",
"\n",
"\n",
"from pydub import AudioSegment\n",
"from pydub.generators import Sine\n",
"# Create an empty segment to store our result\n",
"result = AudioSegment.silent(duration=0)\n",
"for n in glucose_values:\n",
"\n",
" # Generate a sine tone with frequency 200 * n\n",
" gen = Sine(3 * n)\n",
"\n",
" # Turn the tone into an AudioSegment with duration 200ms and gain -3\n",
" sine = gen.to_audio_segment(duration=100).apply_gain(-3)\n",
"\n",
" # Fade in / out\n",
" sine = sine.fade_in(50).fade_out(100)\n",
"\n",
" # Append the sine to our result\n",
" result += sine\n",
"\n",
"# Save the result to an MP3 file\n",
"result.export(\"glucose.mp3\", format=\"mp3\")\n",
"print(\"final song generated\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"# Done... For now!\n",
"OK, it sounds way better. The final version is available as glucose.mp3 ! In summary, we pulled a day's worth of\n",
"glucose data from a continuous glucose monitor that I wear using a tool called nightscout. Using that data, I attempted\n",
"to manually generate sine waves based on the glucose reading, then after some searching, I found a way nicer way to\n",
"generate those tones and output them as mp3.\n",
"If it all sounds a little hectic, thats because life with Type 1 Diabetes can be! ;p\n",
"Anyway, hope you enjoyed this fun little project."
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment