From c14972f451b3e79916873ead00bf39db3cced31c Mon Sep 17 00:00:00 2001 From: Milan anand raj <84122339+manandraj20@users.noreply.github.com> Date: Wed, 13 Nov 2024 20:06:32 -0500 Subject: [PATCH] estimating the contact matrix --- consumption_distribution.csv | 11 + contact_others.csv | 17 + demo_final_contact_matrix.ipynb | 383 +++++++++++++++++++++ fractions_offline.csv | 17 + learnConsumptionDistribution.ipynb | 457 +++++++------------------- src/DP_epidemiology/contact_matrix.py | 8 +- src/DP_epidemiology/utilities.py | 3 +- 7 files changed, 556 insertions(+), 340 deletions(-) create mode 100644 consumption_distribution.csv create mode 100644 contact_others.csv create mode 100644 demo_final_contact_matrix.ipynb create mode 100644 fractions_offline.csv diff --git a/consumption_distribution.csv b/consumption_distribution.csv new file mode 100644 index 0000000..5ec3a7c --- /dev/null +++ b/consumption_distribution.csv @@ -0,0 +1,11 @@ +0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,categories +3.9831134220168636,5.06535693898893,9.412513264548464,16.47669445152705,14.597838377392605,10.783063027724065,8.839317180273994,7.246249535139835,5.8380845302932665,0.8847316368904793,10.558386678115566,0.44427993082554235,3.7403527519670887,0.797822739409194,0.4309127615318391,0.9080663936568211,Airlines +4.269706274741251,5.51584019034016,9.925027098030341,17.24910707364407,15.888040810835838,11.597888776410938,8.590887523370377,7.160906175197589,5.825350802619889,4.207369464615332,2.825037836786188,3.4382567596816647,1.5043639705111975,0.9993647865996371,0.5543839427954547,0.42297865759171077,Bars/Discotheques +4.6576587158892115,5.807818393798755,10.218495929523346,17.674036288476692,14.975431722296308,12.035208306568082,8.244494010171506,6.8856251154757615,5.795880276496676,5.272084848694022,0.22100688090336104,5.6014260677600305,0.5385279415745637,1.1204021150226238,0.6161864025084424,0.3266780292986436,Computer Network/Information Services +3.868910526597812,4.964923989135904,9.287599672717272,16.246500482110903,14.083572663431884,10.511919951099278,8.924763378029258,7.287604736427168,5.85455662538091,0.0806726290741993,12.530185535397143,-0.1005902190915681,4.333120091520807,0.7607112607593921,0.4040842874523356,0.9922223266493075,Drug Stores/Pharmacies +3.710988017220926,4.8954977568688784,9.255832460959343,16.23127099747642,14.458123509911672,10.482236347087795,8.893099426408055,7.209016831223323,5.771362634058494,-0.07031876131520942,12.88770131544909,-0.08351529778370403,4.293018885153057,0.7340303276596061,0.39595791080833265,0.974778037486566,General Retail Stores +4.041791130614517,5.363216544428241,9.659596089925127,16.84932012720208,15.300577517432082,11.181759623457873,8.779841546983189,7.2596021356316776,5.825838817803204,2.590873282049732,7.025758974911309,1.3856593738128338,2.67898917069746,0.8916137911350646,0.49234132790982765,0.6579676081017725,Grocery Stores/Supermarkets +4.11517400847324,5.378979996397452,9.729832790279593,16.943082788216593,15.429862724415699,11.267742311474356,8.718506744165198,7.25244112496185,5.837748421784723,2.968987668274615,5.932145378191999,2.0104969866343843,2.3764080075475964,0.924224515585339,0.510178404078296,0.5897642930716149,Hospitals +4.5227982899972154,5.627296194410789,10.088481671119629,17.518086060822533,15.67172627772557,11.886565510005333,8.414294844499254,6.999014033181855,5.757593017266954,4.924462816946865,1.1099804201723777,4.724989197570179,0.758459085363594,1.0543691775117945,0.585157837731053,0.34479440970132724,Hotels/Motels +4.081777443629556,5.421020222155726,9.714617326563257,16.93327276894294,15.3302614983164,11.273419109412734,8.754001008086536,7.23747397272346,5.8307354535199325,2.9646104167020213,6.122568108719801,1.8070229907660516,2.4557359179329876,0.9146719734769836,0.5049012843990994,0.6121611230626945,Restaurants +4.214941812551088,5.459473427430981,9.854759889436918,17.138957867125974,15.729181255233387,11.47780029714453,8.633058657388395,7.185546782195898,5.8296313989687,3.7550058154974835,3.9492413438197747,2.9448213868202027,1.8135932937385926,0.9728363296577092,0.5383893712497742,0.48226511872609495,"Utilities: Electric, Gas, Water" diff --git a/contact_others.csv b/contact_others.csv new file mode 100644 index 0000000..8f94998 --- /dev/null +++ b/contact_others.csv @@ -0,0 +1,17 @@ +"V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12","V13","V14","V15","V16" +0.86093,0.36829,0.19757,0.17076,0.28803,0.42588,0.4481,0.35819,0.24854,0.15806,0.17132,0.14242,0.09615,0.07543,0.04209,0.01827 +0.41038,1.51673,0.58945,0.19243,0.16044,0.30825,0.3445,0.35671,0.30705,0.13301,0.09596,0.09895,0.09305,0.06339,0.02689,0.01771 +0.13684,0.70604,2.65463,0.48501,0.31742,0.25982,0.27493,0.3061,0.35912,0.20688,0.12182,0.07524,0.05328,0.05058,0.03285,0.02497 +0.07835,0.24016,1.19158,4.1714,1.00423,0.45481,0.26128,0.29327,0.30599,0.24558,0.09849,0.0495,0.03703,0.03003,0.01585,0.00981 +0.11275,0.14289,0.22716,1.69957,2.73443,1.04338,0.56509,0.35195,0.27811,0.29181,0.15917,0.10494,0.04286,0.0303,0.02947,0.02098 +0.21222,0.1083,0.09967,0.47053,1.29932,1.60445,0.83465,0.51887,0.35154,0.28868,0.22139,0.11683,0.04598,0.03192,0.01807,0.00785 +0.22899,0.15882,0.25578,0.2417,0.63038,0.89336,1.02174,0.68406,0.43924,0.30117,0.27338,0.19659,0.09287,0.06097,0.02739,0.02318 +0.21426,0.24961,0.19965,0.16845,0.40542,0.69404,0.78814,0.89548,0.63465,0.3681,0.22597,0.17791,0.15505,0.09785,0.05205,0.01948 +0.16068,0.20336,0.34111,0.25528,0.45595,0.52851,0.66543,0.67371,0.74116,0.40815,0.25114,0.11688,0.11263,0.07465,0.05052,0.01849 +0.05257,0.08135,0.11177,0.25285,0.34799,0.41306,0.46408,0.48345,0.47069,0.43673,0.30403,0.13996,0.10039,0.06041,0.04813,0.0337 +0.0824,0.15325,0.18399,0.31666,0.57611,0.70835,0.47522,0.42916,0.49506,0.49795,0.3513,0.27818,0.17113,0.08579,0.05157,0.03188 +0.12014,0.10706,0.12402,0.17092,0.42346,0.68927,0.65199,0.50394,0.50296,0.31862,0.42107,0.39126,0.25783,0.13282,0.0651,0.03205 +0.09868,0.10344,0.09022,0.17186,0.3624,0.5385,0.50708,0.56803,0.49718,0.36283,0.29572,0.36425,0.32088,0.21736,0.13675,0.05194 +0.08753,0.11417,0.08027,0.10094,0.27975,0.42179,0.48736,0.40993,0.39475,0.28353,0.28199,0.30527,0.29239,0.23512,0.11122,0.06111 +0.03709,0.08269,0.12261,0.25765,0.23921,0.34653,0.32363,0.41689,0.49232,0.34191,0.24456,0.24556,0.41305,0.34529,0.28289,0.09248 +0.06364,0.05985,0.08721,0.06281,0.14629,0.17248,0.29452,0.22279,0.21608,0.24675,0.16311,0.15267,0.14362,0.18024,0.14458,0.08826 diff --git a/demo_final_contact_matrix.ipynb b/demo_final_contact_matrix.ipynb new file mode 100644 index 0000000..f15f795 --- /dev/null +++ b/demo_final_contact_matrix.ipynb @@ -0,0 +1,383 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from datetime import datetime\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "sys.path.append(os.path.abspath(os.path.join(os.getcwd(), 'src')))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDmerch_categorymerch_postal_codetransaction_typedatespendamtnb_transactions
01Hospitals111921ONLINE2019-01-0180797.323317398
12Bars/Discotheques050025OFFLINE2019-01-015331.031100283
22Bars/Discotheques050032OFFLINE2019-01-015180.722635268
33Drug Stores/Pharmacies050012OFFLINE2019-01-015032.333763177
43Drug Stores/Pharmacies050031OFFLINE2019-01-014899.182326150
\n", + "
" + ], + "text/plain": [ + " ID merch_category merch_postal_code transaction_type date \\\n", + "0 1 Hospitals 111921 ONLINE 2019-01-01 \n", + "1 2 Bars/Discotheques 050025 OFFLINE 2019-01-01 \n", + "2 2 Bars/Discotheques 050032 OFFLINE 2019-01-01 \n", + "3 3 Drug Stores/Pharmacies 050012 OFFLINE 2019-01-01 \n", + "4 3 Drug Stores/Pharmacies 050031 OFFLINE 2019-01-01 \n", + "\n", + " spendamt nb_transactions \n", + "0 80797.323317 398 \n", + "1 5331.031100 283 \n", + "2 5180.722635 268 \n", + "3 5032.333763 177 \n", + "4 4899.182326 150 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv(r\"C:\\Users\\Milan Anand Raj\\Desktop\\KNOWLEDGEEDGEAI\\PET\\final_data\\final_technical_data.csv\")\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Public info about the column names" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "txn_channel_col = \"transaction_type\"\n", + "category_col = \"merch_category\"\n", + "time_col = \"date\"\n", + "postal_code_col = \"merch_postal_code\"\n", + "num_txns_col = \"nb_transactions\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Categorising cities in the data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def categorize_city(code):\n", + " if code.startswith(\"5\"):\n", + " return \"Medellian\"\n", + " elif code.startswith(\"11\"):\n", + " return \"Bogota\"\n", + " elif code.startswith(\"70\"):\n", + " return \"Brasilia\"\n", + " else:\n", + " return \"Santiago\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "age_groups = ['0-4', '5-9', '10-14', '15-19', '20-24', '25-29', '30-34', '35-39', '40-44', '45-49', '50-54', '55-59', '60-64', '65-69', '70-74', '75+']" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "consumption_distribution_raw = pd.read_csv('consumption_distribution.csv')\n", + "categories = consumption_distribution_raw['categories'].values\n", + "consumption_distribution = {}\n", + "for category in categories:\n", + " consumption_distribution[category] = consumption_distribution_raw[consumption_distribution_raw['categories'] == category].values[0][:-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "scaling_factor = pd.read_csv('fractions_offline.csv')['0'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from DP_epidemiology.contact_matrix import get_age_group_count_map\n", + "week =\"2021-01-05\"\n", + "start_date = datetime.strptime(week, '%Y-%m-%d')\n", + "end_date = datetime.strptime(week, '%Y-%m-%d')\n", + "cities = data[postal_code_col].astype(str).apply(categorize_city).unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "counts_per_city = []\n", + "for city in cities:\n", + " counts = get_age_group_count_map(data, age_groups, consumption_distribution, start_date, end_date, city)\n", + " counts_per_city.append(list(counts.values()))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "age_groups = ['0-4', '5-9', '10-14', '15-19', '20-24', '25-29', '30-34', '35-39', '40-44', '45-49', '50-54', '55-59', '60-64', '65-69', '70-74', '75+']\n", + "consumption_distribution_raw = pd.read_csv('consumption_distribution.csv')\n", + "categories = consumption_distribution_raw['categories'].values\n", + "consumption_distribution = {}\n", + "for category in categories:\n", + " consumption_distribution[category] = consumption_distribution_raw[consumption_distribution_raw['categories'] == category].values[0][:-1]\n", + "fraction_offline_raw = pd.read_csv('fractions_offline.csv')\n", + "fraction_offline = fraction_offline_raw['0'].values\n", + "from DP_epidemiology.contact_matrix import get_age_group_count_map\n", + "week =\"2021-01-05\"\n", + "start_date = datetime.strptime(week, '%Y-%m-%d')\n", + "end_date = datetime.strptime(week, '%Y-%m-%d')\n", + "cities = data[\"merch_postal_code\"].astype(str).apply(categorize_city).unique()\n", + "counts_per_city = []\n", + "for city in cities:\n", + " counts = get_age_group_count_map(data, age_groups, consumption_distribution, start_date, end_date, city)\n", + " counts_per_city.append(list(counts.values()))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "P = np.array([4136344, 4100716, 3991988, 3934088, 4090149, 4141051, 3895117, 3439202,\n", + " 3075077, 3025100, 3031855, 2683253, 2187561, 1612948, 1088448, 1394217]) \n", + "from DP_epidemiology.contact_matrix import get_contact_matrix_country\n", + "estimated_contact_matrix = get_contact_matrix_country(counts_per_city, P, scaling_factor)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.09639499, 0.12729707, 0.23459434, 0.41401698, 0.36048598,\n", + " 0.26723388, 0.21151241, 0.1940109 , 0.18478214, 0.13886226,\n", + " 0.13810061, 0.1138968 , 0.09122256, 0.06328202, 0.04659307,\n", + " 0.02991427],\n", + " [0.12620061, 0.16665576, 0.30711986, 0.54200709, 0.47192923,\n", + " 0.34987358, 0.27687683, 0.25394952, 0.24191389, 0.18202519,\n", + " 0.18046582, 0.14933275, 0.11932049, 0.0828854 , 0.06100833,\n", + " 0.03909869],\n", + " [0.22640714, 0.29897676, 0.55092938, 0.97226376, 0.84656522,\n", + " 0.62773045, 0.49656496, 0.45536685, 0.43398723, 0.3275752 ,\n", + " 0.32224618, 0.26887916, 0.21358051, 0.1488641 , 0.10948895,\n", + " 0.06984912],\n", + " [0.39377267, 0.51998324, 0.958162 , 1.69092516, 1.47231947,\n", + " 1.09178936, 0.86355278, 0.79186499, 0.75479419, 0.5702682 ,\n", + " 0.55965221, 0.46815897, 0.3712068 , 0.25899607, 0.19044626,\n", + " 0.12132627],\n", + " [0.35646004, 0.47071313, 0.86738183, 1.53072478, 1.33282797,\n", + " 0.98832319, 0.78176311, 0.7168841 , 0.68327506, 0.51598867,\n", + " 0.50698298, 0.42356656, 0.33614752, 0.23441478, 0.17239101,\n", + " 0.10990033],\n", + " [0.26753799, 0.35331497, 0.65117025, 1.1492258 , 1.00062289,\n", + " 0.74162317, 0.58725333, 0.53876943, 0.51286585, 0.38402453,\n", + " 0.38534348, 0.31480214, 0.25383525, 0.17540956, 0.12926391,\n", + " 0.083426 ],\n", + " [0.19917724, 0.26299497, 0.48451514, 0.85499845, 0.74448603,\n", + " 0.55237678, 0.43636769, 0.39992833, 0.38175352, 0.29121348,\n", + " 0.2789736 , 0.23944631, 0.18644949, 0.13145362, 0.09643546,\n", + " 0.06056907],\n", + " [0.16131218, 0.21298322, 0.39231044, 0.69225286, 0.60279203,\n", + " 0.44745571, 0.35311759, 0.3234834 , 0.30915709, 0.23773022,\n", + " 0.22314176, 0.19571837, 0.15011226, 0.10676955, 0.07817335,\n", + " 0.04850929],\n", + " [0.13737235, 0.18140828, 0.33430565, 0.58998432, 0.51370339,\n", + " 0.38084582, 0.30138285, 0.27642513, 0.26332769, 0.19816065,\n", + " 0.19641011, 0.16257702, 0.1298715 , 0.0902256 , 0.06640984,\n", + " 0.04255421],\n", + " [0.10155641, 0.13428006, 0.24823415, 0.43850527, 0.38162848,\n", + " 0.28053569, 0.22616776, 0.20910597, 0.19494009, 0.12503586,\n", + " 0.1771629 , 0.09967098, 0.10622315, 0.06321094, 0.04828421,\n", + " 0.03768237],\n", + " [0.1012249 , 0.13342699, 0.24474114, 0.4313031 , 0.37580511,\n", + " 0.28212779, 0.2171456 , 0.19671234, 0.19364945, 0.1775585 ,\n", + " 0.09782913, 0.14995707, 0.0807196 , 0.0716148 , 0.05012645,\n", + " 0.02221963],\n", + " [0.07388504, 0.09771405, 0.18072971, 0.31930881, 0.2778716 ,\n", + " 0.20398053, 0.16494884, 0.15269876, 0.14186158, 0.08840781,\n", + " 0.13271504, 0.07005195, 0.0785104 , 0.04557405, 0.03503114,\n", + " 0.02815644],\n", + " [0.04824427, 0.06365251, 0.11703953, 0.20641061, 0.17978397,\n", + " 0.13409158, 0.10471307, 0.09548137, 0.09238852, 0.07681386,\n", + " 0.05824126, 0.06400674, 0.04217825, 0.03286025, 0.02359547,\n", + " 0.01285376],\n", + " [0.02467653, 0.03260159, 0.06014799, 0.10618654, 0.09244134,\n", + " 0.06832239, 0.05443427, 0.05007375, 0.04732539, 0.03370333,\n", + " 0.0380991 , 0.02739532, 0.02422875, 0.01589938, 0.01185784,\n", + " 0.00819294],\n", + " [0.01226062, 0.01619337, 0.02985305, 0.05269095, 0.04587575,\n", + " 0.03397617, 0.02694784, 0.02474051, 0.02350629, 0.01737293,\n", + " 0.01799559, 0.0142102 , 0.01174022, 0.00800189, 0.00591531,\n", + " 0.00388865],\n", + " [0.01008305, 0.0132933 , 0.02439507, 0.0429973 , 0.03746194,\n", + " 0.02808803, 0.02168008, 0.01966516, 0.01929376, 0.01736716,\n", + " 0.01021783, 0.01463007, 0.0081922 , 0.0070819 , 0.00498106,\n", + " 0.00230539]])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "estimated_contact_matrix" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/fractions_offline.csv b/fractions_offline.csv new file mode 100644 index 0000000..7e4b3c2 --- /dev/null +++ b/fractions_offline.csv @@ -0,0 +1,17 @@ +0 +0.09639499267221661 +0.16665576151505287 +0.5509293775800783 +1.6909251559357241 +1.3328279709246307 +0.7416231743835766 +0.4363676927094427 +0.3234834001840291 +0.2633276881700197 +0.12503585760156408 +0.09782912908619215 +0.07005194670140537 +0.04217824580741681 +0.0158993752169871 +0.0059153120403053466 +0.0023053870404303937 diff --git a/learnConsumptionDistribution.ipynb b/learnConsumptionDistribution.ipynb index dcf9b7d..32f695e 100644 --- a/learnConsumptionDistribution.ipynb +++ b/learnConsumptionDistribution.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 27, "metadata": { "id": "7L6EQkQ50gkR" }, @@ -130,7 +130,7 @@ "4 4899.182326 150 " ] }, - "execution_count": 3, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -142,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -163,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -179,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -194,36 +194,6 @@ " return \"Santiago\"" ] }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "data_t = data\n", - "data_t[\"city\"] = data[postal_code_col].astype(str).apply(categorize_city)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['70640-000', '70000-000'], dtype=object)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_t[data_t[\"city\"]==\"Brasilia\"][\"merch_postal_code\"].unique()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -233,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -241,26 +211,9 @@ "output_type": "stream", "text": [ "City: Bogota\n", - "{'Airlines': 694.2645988925163, 'Bars/Discotheques': 938.8304299835585, 'Computer Network/Information Services': 138.27595054301423, 'Drug Stores/Pharmacies': 745.0404457585972, 'General Retail Stores': 1098.1383922062796, 'Grocery Stores/Supermarkets': 4105.163373337119, 'Hospitals': 1536.995204166018, 'Hotels/Motels': 211.33068313976673, 'Restaurants': 5750.492793907174, 'Utilities: Electric, Gas, Water': 1164.8615359779465}\n", "City: Santiago\n", - "{'Airlines': 775.690312082757, 'Bars/Discotheques': 1192.1697652298033, 'Computer Network/Information Services': 130.0848846505698, 'Drug Stores/Pharmacies': 1080.6051216491312, 'General Retail Stores': 1432.3301065873393, 'Grocery Stores/Supermarkets': 5128.047125312137, 'Hospitals': 2178.9284555521135, 'Hotels/Motels': 281.88545031373854, 'Restaurants': 7335.879379150183, 'Utilities: Electric, Gas, Water': 1422.6421925557495}\n", "City: Brasilia\n" ] - }, - { - "ename": "OpenDPException", - "evalue": "\n FFI(\"Continued stack trace from Exception in user-defined function:\nTraceback (most recent call last):\n File \"c:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\opendp\\_convert.py\", line 629, in wrapper_func\n py_out = func(py_arg)\n ^^^^^^^^^^^^\n File \"c:\\Users\\Milan Anand Raj\\Desktop\\KNOWLEDGEEDGEAI\\PET\\src\\DP_epidemiology\\utilities.py\", line 279, in compute_private_sum\n return dp_sum/dp_dataset_size\n ~~~~~~^~~~~~~~~~~~~~~~\nZeroDivisionError: float division by zero\n\")", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mOpenDPException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[8], line 9\u001b[0m\n\u001b[0;32m 7\u001b[0m end_date \u001b[38;5;241m=\u001b[39m datetime\u001b[38;5;241m.\u001b[39mstrptime(week, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m%\u001b[39m\u001b[38;5;124mY-\u001b[39m\u001b[38;5;124m%\u001b[39m\u001b[38;5;124mm-\u001b[39m\u001b[38;5;132;01m%d\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCity: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcity\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m----> 9\u001b[0m transactions_per_category \u001b[38;5;241m=\u001b[39m get_private_counts(data, categories\u001b[38;5;241m=\u001b[39mcategories, start_date\u001b[38;5;241m=\u001b[39mstart_date, end_date\u001b[38;5;241m=\u001b[39mend_date, city\u001b[38;5;241m=\u001b[39mcity, epsilon\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1.0\u001b[39m)\n\u001b[0;32m 10\u001b[0m \u001b[38;5;28mprint\u001b[39m(transactions_per_category)\n\u001b[0;32m 11\u001b[0m transactions_per_city\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mlist\u001b[39m(transactions_per_category\u001b[38;5;241m.\u001b[39mvalues()))\n", - "File \u001b[1;32mc:\\Users\\Milan Anand Raj\\Desktop\\KNOWLEDGEEDGEAI\\PET\\src\\DP_epidemiology\\contact_matrix.py:73\u001b[0m, in \u001b[0;36mget_private_counts\u001b[1;34m(df, categories, start_date, end_date, city, epsilon)\u001b[0m\n\u001b[0;32m 64\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m category \u001b[38;5;129;01min\u001b[39;00m categories:\n\u001b[0;32m 65\u001b[0m m_count \u001b[38;5;241m=\u001b[39m (\n\u001b[0;32m 66\u001b[0m t_pre\n\u001b[0;32m 67\u001b[0m \u001b[38;5;66;03m# TODO: The scale has to be equal to bound/epsilon, which can be equal to the mean itself in cases where number of entries\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 71\u001b[0m \u001b[38;5;241m>>\u001b[39m make_private_nb_transactions_avg_count(merch_category\u001b[38;5;241m=\u001b[39mcategory, upper_bound\u001b[38;5;241m=\u001b[39mUPPER_BOUND, dp_dataset_size\u001b[38;5;241m=\u001b[39mdp_count, scale\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m3\u001b[39m\u001b[38;5;241m*\u001b[39mUPPER_BOUND\u001b[38;5;241m*\u001b[39mnumber_of_timesteps)\u001b[38;5;241m/\u001b[39mepsilon)\n\u001b[0;32m 72\u001b[0m )\n\u001b[1;32m---> 73\u001b[0m nb_transactions_avg_count_map[category] \u001b[38;5;241m=\u001b[39m m_count(df)\n\u001b[0;32m 75\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m nb_transactions_avg_count_map\n", - "File \u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\opendp\\mod.py:74\u001b[0m, in \u001b[0;36mMeasurement.__call__\u001b[1;34m(self, arg)\u001b[0m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__call__\u001b[39m(\u001b[38;5;28mself\u001b[39m, arg):\n\u001b[0;32m 73\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mopendp\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m measurement_invoke\n\u001b[1;32m---> 74\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m measurement_invoke(\u001b[38;5;28mself\u001b[39m, arg)\n", - "File \u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\opendp\\core.py:370\u001b[0m, in \u001b[0;36mmeasurement_invoke\u001b[1;34m(this, arg)\u001b[0m\n\u001b[0;32m 367\u001b[0m lib_function\u001b[38;5;241m.\u001b[39margtypes \u001b[38;5;241m=\u001b[39m [Measurement, AnyObjectPtr]\n\u001b[0;32m 368\u001b[0m lib_function\u001b[38;5;241m.\u001b[39mrestype \u001b[38;5;241m=\u001b[39m FfiResult\n\u001b[1;32m--> 370\u001b[0m output \u001b[38;5;241m=\u001b[39m c_to_py(unwrap(lib_function(c_this, c_arg), AnyObjectPtr))\n\u001b[0;32m 372\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m output\n", - "File \u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\opendp\\_lib.py:254\u001b[0m, in \u001b[0;36munwrap\u001b[1;34m(result, type_)\u001b[0m\n\u001b[0;32m 252\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpolars\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mstr\u001b[39m(message)\u001b[38;5;241m.\u001b[39mlower() \u001b[38;5;129;01mand\u001b[39;00m pl\u001b[38;5;241m.\u001b[39m__version__ \u001b[38;5;241m!=\u001b[39m _EXPECTED_POLARS_VERSION:\n\u001b[0;32m 253\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mInstalled python polars version (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpl\u001b[38;5;241m.\u001b[39m__version__\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) != expected version (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m_EXPECTED_POLARS_VERSION\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m). \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmessage\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[1;32m--> 254\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m OpenDPException(variant, message, backtrace)\n", - "\u001b[1;31mOpenDPException\u001b[0m: \n FFI(\"Continued stack trace from Exception in user-defined function:\nTraceback (most recent call last):\n File \"c:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\opendp\\_convert.py\", line 629, in wrapper_func\n py_out = func(py_arg)\n ^^^^^^^^^^^^\n File \"c:\\Users\\Milan Anand Raj\\Desktop\\KNOWLEDGEEDGEAI\\PET\\src\\DP_epidemiology\\utilities.py\", line 279, in compute_private_sum\n return dp_sum/dp_dataset_size\n ~~~~~~^~~~~~~~~~~~~~~~\nZeroDivisionError: float division by zero\n\")" - ] } ], "source": [ @@ -273,13 +226,12 @@ " end_date = datetime.strptime(week, '%Y-%m-%d')\n", " print(f\"City: {city}\")\n", " transactions_per_category = get_private_counts(data, categories=categories, start_date=start_date, end_date=end_date, city=city, epsilon=1.0)\n", - " print(transactions_per_category)\n", " transactions_per_city.append(list(transactions_per_category.values()))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 33, "metadata": { "id": "Oo1El4A40gkU" }, @@ -289,65 +241,6 @@ "contact_others = np.array(contact_others)" ] }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[665.827343044052,\n", - " 2376.0030054715944,\n", - " 4287.216254772609,\n", - " 63941.44098236439,\n", - " 21478.388863581316,\n", - " 40690.41606936624,\n", - " 2963.936491985296,\n", - " 5094.1112587002735,\n", - " 33376.344825964065,\n", - " 3277.412704119104],\n", - " [-10.471957055996297,\n", - " 6140.521392653215,\n", - " -2593.3432371460517,\n", - " 3218.708044630042,\n", - " 2882.8266155488673,\n", - " -118.73193866793521,\n", - " -1502.70368483887,\n", - " 2643.1117283735766,\n", - " 2515.2197469338525,\n", - " 2010.369461726336],\n", - " [909.4191757659195,\n", - " 14061.87451760006,\n", - " 10965.389937129481,\n", - " 174970.32876629836,\n", - " 40193.28386099822,\n", - " 98156.80895732576,\n", - " 4871.752947048472,\n", - " 10026.12926489293,\n", - " 74465.54906523543,\n", - " 2910.016018267648],\n", - " [-3542.2378675749783,\n", - " 1250.3608001315356,\n", - " 1736.475733452081,\n", - " 59610.73284853197,\n", - " 14309.168756153636,\n", - " 37408.784637817975,\n", - " 302.2175965746237,\n", - " 2275.2427407967584,\n", - " 22940.966562785838,\n", - " 2720.585656936167]]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "transactions_per_city" - ] - }, { "cell_type": "markdown", "metadata": { @@ -359,7 +252,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": { "colab": { "background_save": true, @@ -373,58 +266,27 @@ "name": "stdout", "output_type": "stream", "text": [ - "Step: 0, Loss: 94.10587900174727\n", - "Step: 100, Loss: 33.359764471824434\n", - "Step: 200, Loss: 31.544671445447932\n", - "Step: 300, Loss: 31.413592926334598\n", - "Step: 400, Loss: 31.40243082658344\n", - "Step: 500, Loss: 31.40212694394862\n", - "Step: 600, Loss: 31.402122757334677\n", - "Step: 700, Loss: 31.402123427405275\n", - "Step: 800, Loss: 31.402122713168243\n", - "Step: 900, Loss: 31.402122705699163\n", - "Step: 1000, Loss: 31.40212491914406\n", - "Step: 1100, Loss: 31.4021226954282\n", - "Step: 1200, Loss: 31.402122691606444\n", - "Step: 1300, Loss: 31.40213079580314\n", - "Step: 1400, Loss: 31.402122686265916\n", - "Step: 1500, Loss: 31.402122684024533\n", - "Step: 1600, Loss: 31.402140614669783\n", - "Step: 1700, Loss: 31.40212268161008\n", - "Step: 1800, Loss: 31.40212268005513\n", - "Step: 1900, Loss: 31.40216548637534\n", - "Step: 2000, Loss: 31.402122681491136\n", - "Step: 2100, Loss: 31.4021226778284\n", - "Step: 2200, Loss: 31.402122677259698\n", - "Step: 2300, Loss: 31.402123758030374\n", - "Step: 2400, Loss: 31.402122676221257\n", - "Step: 2500, Loss: 31.402122675537353\n", - "Step: 2600, Loss: 31.402124518646147\n", - "Step: 2700, Loss: 31.40215292226199\n", - "Step: 2800, Loss: 31.402126098246065\n", - "Step: 2900, Loss: 31.402146506092766\n", - "Step: 3000, Loss: 31.402192845670616\n" + "Step: 0, Loss: 85.82141824079703\n", + "Step: 100, Loss: 32.142649946338636\n", + "Step: 200, Loss: 31.41479591356331\n", + "Step: 300, Loss: 31.404196453643934\n", + "Step: 400, Loss: 31.402196832687252\n", + "Step: 500, Loss: 31.402123071842432\n", + "Step: 600, Loss: 31.402122728475618\n", + "Step: 700, Loss: 31.40212229653494\n", + "Step: 800, Loss: 31.402117143215843\n", + "Step: 900, Loss: 31.402044592763584\n" ] }, { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp\\ipykernel_4520\\139899758.py\u001b[0m in \u001b[0;36m?\u001b[1;34m()\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[1;31m# with tf.device('/GPU:0'):\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 36\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mstep\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m5000\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# Adjust max iterations as needed\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 37\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mGradientTape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mtape\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 38\u001b[0m \u001b[0mloss\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mloss_fn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 39\u001b[1;33m \u001b[0mgrads\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtape\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgradient\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mW\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mP_var\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 40\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 41\u001b[0m \u001b[1;31m# Apply gradients\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 42\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply_gradients\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgrads\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mW\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mP_var\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\eager\\backprop.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(self, target, sources, output_gradients, unconnected_gradients)\u001b[0m\n\u001b[0;32m 1062\u001b[0m \u001b[0moutput_gradients\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1063\u001b[0m output_gradients = [None if x is None else ops.convert_to_tensor(x)\n\u001b[0;32m 1064\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[1;32min\u001b[0m \u001b[0moutput_gradients\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1065\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1066\u001b[1;33m flat_grad = imperative_grad.imperative_grad(\n\u001b[0m\u001b[0;32m 1067\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_tape\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1068\u001b[0m \u001b[0mflat_targets\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1069\u001b[0m \u001b[0mflat_sources\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\eager\\imperative_grad.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(tape, target, sources, output_gradients, sources_raw, unconnected_gradients)\u001b[0m\n\u001b[0;32m 63\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 64\u001b[0m raise ValueError(\n\u001b[0;32m 65\u001b[0m \u001b[1;34m\"Unknown value for unconnected_gradients: %r\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0munconnected_gradients\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 67\u001b[1;33m return pywrap_tfe.TFE_Py_TapeGradient(\n\u001b[0m\u001b[0;32m 68\u001b[0m \u001b[0mtape\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_tape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;31m# pylint: disable=protected-access\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[0mtarget\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 70\u001b[0m \u001b[0msources\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\eager\\backprop.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(op_name, attr_tuple, num_inputs, inputs, outputs, out_grads, skip_input_indices, forward_pass_name_scope)\u001b[0m\n\u001b[0;32m 144\u001b[0m \u001b[0mgradient_name_scope\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"gradient_tape/\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 145\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mforward_pass_name_scope\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 146\u001b[0m \u001b[0mgradient_name_scope\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mforward_pass_name_scope\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m\"/\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 147\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname_scope\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgradient_name_scope\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 148\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mgrad_fn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmock_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mout_grads\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 149\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 150\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mgrad_fn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmock_op\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mout_grads\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\ops\\math_grad.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(op, grad)\u001b[0m\n\u001b[0;32m 175\u001b[0m \u001b[0mnew_shape\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconstant_op\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconstant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mrank\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtypes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mint32\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 176\u001b[0m \u001b[0mctx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mones_rank_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrank\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnew_shape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 177\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 178\u001b[0m \u001b[0mnew_shape\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mrank\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 179\u001b[1;33m \u001b[0mgrad\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0marray_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgrad\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnew_shape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 180\u001b[0m \u001b[1;31m# If shape is not fully defined (but rank is), we use Shape.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 181\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0minput_0_shape\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 182\u001b[0m \u001b[0minput_shape\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconstant_op\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconstant\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput_0_shape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtypes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mint32\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\ops\\weak_tensor_ops.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 86\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_auto_dtype_conversion_enabled\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 88\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 89\u001b[0m \u001b[0mbound_arguments\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msignature\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 90\u001b[0m \u001b[0mbound_arguments\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapply_defaults\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 91\u001b[0m \u001b[0mbound_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbound_arguments\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marguments\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\util\\traceback_utils.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 151\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 152\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 153\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfiltered_tb\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 154\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 155\u001b[1;33m \u001b[1;32mdel\u001b[0m \u001b[0mfiltered_tb\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\util\\dispatch.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 1257\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1258\u001b[0m \u001b[1;31m# Fallback dispatch system (dispatch v1):\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1259\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1260\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mdispatch_target\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1261\u001b[1;33m \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1262\u001b[0m \u001b[1;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1263\u001b[0m \u001b[1;31m# TypeError, when given unexpected types. So we need to catch both.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1264\u001b[0m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdispatch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mop_dispatch_handler\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\ops\\array_ops.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(tensor, shape, name)\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 196\u001b[0m \u001b[0mReturns\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 197\u001b[0m \u001b[0mA\u001b[0m \u001b[1;33m`\u001b[0m\u001b[0mTensor\u001b[0m\u001b[1;33m`\u001b[0m\u001b[1;33m.\u001b[0m \u001b[0mHas\u001b[0m \u001b[0mthe\u001b[0m \u001b[0msame\u001b[0m \u001b[0mtype\u001b[0m \u001b[1;32mas\u001b[0m \u001b[1;33m`\u001b[0m\u001b[0mtensor\u001b[0m\u001b[1;33m`\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 198\u001b[0m \"\"\"\n\u001b[1;32m--> 199\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgen_array_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtensor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 200\u001b[0m \u001b[0mshape_util\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmaybe_set_static_shape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32mc:\\Users\\Public\\anaconda3\\envs\\.venv\\Lib\\site-packages\\tensorflow\\python\\ops\\gen_array_ops.py\u001b[0m in \u001b[0;36m?\u001b[1;34m(tensor, shape, name)\u001b[0m\n\u001b[0;32m 10882\u001b[0m \u001b[0m_ctx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"Reshape\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtensor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10883\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_result\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10884\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10885\u001b[0m \u001b[0m_ops\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mraise_from_not_ok_status\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m> 10886\u001b[1;33m \u001b[1;32mexcept\u001b[0m \u001b[0m_core\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_FallbackException\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10887\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10888\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10889\u001b[0m return reshape_eager_fallback(\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " - ] + "data": { + "image/png": "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7b56rQl6qbmkARERUU2j9wnxqHwd/F3ValfL2lzPlRAREVV/DDK6pu6wFw6PISIiemYMMjp2+26hTtsRERFRxdQKMrm5ufquo9pQ986lq7fz9VwJERFR9adWkHFwcEBGRgYAoEOHDsjOztZnTUYtxNsRbnZPH/+y/lgKSp42ex4RERE9kVpBxsbGBnfu3AEA7N27F8XFT769uCaTSSWICKn31HapOQU4mpxZCRURERFVX2rNIxMeHo4XX3wRDRs2BAD06dMHZmZm5bbdvXu37qozUl61rNVqx1WwiYiIno1aQWbNmjVYtWoVrly5gn379qFRo0awsrLSd21GS91bq3kLNhER0bNRK8hYWlrinXfeAQAcP34cc+fOhb29vT7rMm68BZuIiKhSaHz79Z49e5QhRgiBaj4xsFbUvbU65kK6nishIiKq3rSaR2b16tUICgqCpaUlLC0t0bhxY/z0008aH2fGjBmQSCQqD39/f+X+goICjB49Gk5OTrCxsUG/fv2Qnl71P/w1WTySdy4RERFpT+Mgs2DBAowaNQovv/wyoqOjER0djS5duuCdd97BwoULNS6gUaNGSE1NVT4OHjyo3Ddu3Dhs2bIFGzduxL59+3Dz5k307dtX49eobKWLRz5N6eKRREREpB21V78utWjRIixZsgSDBw9WbuvZsycaNWqEGTNmYNy4cZoVYGICNze3MttzcnLwww8/4Oeff0aHDh0AACtWrEDDhg1x+PBhtGrVStPSK41MKkGv5z2w4tC1p7ZNy7lfCRURERFVTxr3yKSmpqJ169Zltrdu3RqpqakaF5CUlAQPDw/4+Phg4MCBSElJAQCcOHECxcXFCA8PV7b19/dHvXr1EBcXV+HxCgsLkZubq/IwhDoO6t3VlXmvSM+VEBERVV8aB5n69esjOjq6zPYNGzbAz89Po2O1bNkSK1euxLZt27BkyRIkJyejbdu2yMvLQ1paGszMzMrcHeXq6oq0tLQKjxkVFQW5XK581K1bV6OadMXRRr1bq29ks0eGiIhIWxpfWpo5cyYGDBiA/fv3IywsDAAQGxuLmJiYcgPOk3Tt2lX598aNG6Nly5bw9PREdHQ0LC0tNS0NADB58mRERkYqn+fm5hokzLjZqTfg949TN/FxtwDIpLwXm4iISFMa98j069cPR44cQa1atbB582Zs3rwZtWrVwtGj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REaLQYaIiIiMFoMMERERGS0GGS19++238PLygoWFBVq2bImjR48auiSjEhUVhRYtWsDW1hYuLi7o3bs3EhMTVdoUFBRg9OjRcHJygo2NDfr164f09HSVNikpKejWrRusrKzg4uKCDz/8EA8ePKjMt2JU5syZA4lEgrFjxyq38Tzrxr///otBgwbByckJlpaWCAoKwvHjx5X7hRCYNm0a3N3dYWlpifDwcCQlJakcIzMzEwMHDoSdnR3s7e0xfPhw3L17t7LfSpVVUlKCqVOnwtvbG5aWlvD19cWnn36qshYPz7N29u/fjx49esDDwwMSiQSbN29W2a+r83rmzBm0bdsWFhYWqFu3Lj7//PNnL16QxtavXy/MzMzEjz/+KBISEsTbb78t7O3tRXp6uqFLMxqdO3cWK1asEOfOnROnTp0SL7/8sqhXr564e/euss0777wj6tatK2JiYsTx48dFq1atROvWrZX7Hzx4IAIDA0V4eLg4efKk+Ouvv0StWrXE5MmTDfGWqryjR48KLy8v0bhxY/HBBx8ot/M8P7vMzEzh6ekphg4dKo4cOSL++ecfsX37dnH58mVlmzlz5gi5XC42b94sTp8+LXr27Cm8vb3F/fv3lW26dOkinn/+eXH48GFx4MABUb9+fREREWGIt1QlzZo1Szg5OYmtW7eK5ORksXHjRmFjYyO++uorZRueZ+389ddfYsqUKWLTpk0CgPjtt99U9uvivObk5AhXV1cxcOBAce7cObFu3TphaWkpvvvuu2eqnUFGCyEhIWL06NHK5yUlJcLDw0NERUUZsCrjlpGRIQCIffv2CSGEyM7OFqampmLjxo3KNhcuXBAARFxcnBDi4T88qVQq0tLSlG2WLFki7OzsRGFhYeW+gSouLy9P+Pn5iZ07d4r27dsrgwzPs2589NFHok2bNhXuVygUws3NTcybN0+5LTs7W5ibm4t169YJIYQ4f/68ACCOHTumbPP3338LiUQi/v33X/0Vb0S6desm3nzzTZVtffv2FQMHDhRC8DzryuNBRlfndfHixcLBwUHl/42PPvpIPPfcc89ULy8taaioqAgnTpxAeHi4cptUKkV4eDji4uIMWJlxy8nJAQA4OjoCAE6cOIHi4mKV8+zv74969eopz3NcXByCgoLg6uqqbNO5c2fk5uYiISGhEquv+kaPHo1u3bqpnE+A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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -453,7 +315,7 @@ " K = (K + tf.transpose(K))/2\n", " estimated_C = K/P\n", " residuals = estimated_C - contact_others\n", - " return tf.reduce_sum(tf.square(residuals)) +tf.reduce_sum(tf.square(1- tf.reduce_sum(W, axis=1))) + tf.reduce_sum(tf.square(tf.minimum(W, tf.zeros_like(W)))) + tf.reduce_sum(tf.square(tf.minimum(P_var, tf.zeros_like(P_var)) + tf.minimum(tf.ones_like(P_var)-P_var, tf.zeros_like(P_var))))\n", + " return tf.reduce_sum(tf.square(residuals)) +tf.reduce_sum(tf.square(1- tf.reduce_sum(W, axis=1))) + 2*tf.reduce_sum(tf.square(tf.minimum(W, tf.zeros_like(W)))) + 2*tf.reduce_sum(tf.square(tf.minimum(P_var, tf.zeros_like(P_var)))) + tf.reduce_sum(tf.square(tf.minimum(tf.ones_like(P_var)-P_var, tf.zeros_like(P_var))))\n", "\n", "\n", "optimizer = tf.optimizers.Adam(learning_rate=0.01)\n", @@ -463,7 +325,7 @@ "\n", "# Run the training loop on the GPU\n", "# with tf.device('/GPU:0'):\n", - "for step in range(5000): # Adjust max iterations as needed\n", + "for step in range(1000): # Adjust max iterations as needed\n", " with tf.GradientTape() as tape:\n", " loss = loss_fn()\n", " grads = tape.gradient(loss, [W, P_var])\n", @@ -485,7 +347,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -495,146 +357,28 @@ "tf.matmul(tf.reshape(x, (-1, 1)), tf.reshape(1 / x, (1, -1)))\n", "for x in tf.unstack(age_bins, axis=0)], axis=0)/len(cities)\n", "K = contact_matrix*(P*P_var)\n", - "# print(age_bins) \n", - "# K = tf.matmul(tf.transpose(age_bins), (P*P_var)/age_bins)\n", "K = (K + tf.transpose(K))/2\n", "estimated_C = K/P" ] }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "estimated_C" - ] - }, - { - "cell_type": "code", - "execution_count": 19, + "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 19, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAAKTCAYAAABxShXIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB60lEQVR4nO39e5RddX0//r/2mWQmFzIDgSSTkQTCZREu4S40wGqh5GtIEaG1KH4ol2ix2kTFsCjEj0AFMUWtRpGCuAqBVVDr+ghSPxV/NHKplWtiVD7FSDSQGDoJCMyQxMwkc/bvj5SpMefMZGD22XuHx2OtvRbnzD7n/ZzNZGZe83q/9ztJ0zQNAACAYVbJOwAAALB7UmwAAACZUGwAAACZUGwAAACZUGwAAACZUGwAAACZUGwAAACZGJF3gN9XrVbjhRdeiHHjxkWSJHnHAQB4y0vTNF577bXo6OiISqV4f6vesmVL9Pb25jJ2c3NzjBo1Kpexy6BwxcYLL7wQU6ZMyTsGAAC/Z+3atbHvvvvmHWMHW7ZsiY7Re8Qr0ZfL+O3t7bF69WoFRx2FKzbGjRsXERHLf/CvscceY3NOs7PWNT/NO0JN2371bN4R6tq2cVPeEWpq3nuvvCPU1TRxUt4RahtRuG8Z/2PLlrwT1FTt7so7Ql3bXnst7wils23j5rwj1NXbtTHvCDW1jG/LO0Jdow86MO8INW1+ZmXeEXbyWk9vHPn3d/f/nlYkvb298Ur0xZKmaTGmwSsENkc1Lu5cHb29vYqNOgr3m8PrU6f22GNsjNtjj5zT7Kx17Oi8I9S0bXRL3hHq2rZta94Ramou8DVrGlPMr7NCFxvF6+pHRER1azGLoIiIbVvzmXJQZtu2bcs7Ql09W0bmHaGmUaOa845Q1+gxxfzlsKnA16zIU9zHRCXGJE2NHTQd+ktuuumm+NznPhednZ1x1FFHxY033hgnnHBCzXOXLFkSc+fO3eG5lpaW2FLQP7DVUuDfHAAAYNckI5OGF0NJmsRQZm9985vfjAULFsQtt9wSJ554YixevDhmz54dK1eujIkTJ9Z8TWtra6xc+T/driIXfLUU9G+BAACwe/nCF74Ql1xyScydOzcOO+ywuOWWW2LMmDFx22231X1NkiTR3t7ef0yaVNCp1nUoNgAAKL1kRBKVBh/JiO1dhu7u7h2Onp6enfL19vbGsmXLYtasWf3PVSqVmDVrVjz66KN1P6+NGzfGfvvtF1OmTImzzz47/t//+3/Df/EypNgAAIA3YcqUKdHW1tZ/LFq0aKdzXnrppejr69upMzFp0qTo7Oys+b6HHHJI3HbbbfGd73wn/umf/imq1WqcdNJJ8etf/zqTzyML1mwAAFB6ychKJElj/46epNtXiK9duzZaW1v7n29pGZ6b0MycOTNmzpzZ//ikk06KQw89NL761a/GddddNyxjZE2xAQAAb0Jra+sOxUYt++yzTzQ1NcX69et3eH79+vXR3t6+S+OMHDkyjjnmmFi1atUbztpoplEBAEDGmpub47jjjoulS5f2P1etVmPp0qU7dC8G0tfXFz/72c9i8uTJWcUcdjobAACUXqUpiUqlsbeFrVSHNt6CBQvioosuiuOPPz5OOOGEWLx4cWzatKl/L40LL7ww3va2t/Wv+bj22mvjD/7gD+Kggw6KV199NT73uc/F888/H3/5l3857J9LVhQbAADQAO9973vjxRdfjKuvvjo6Ozvj6KOPjvvvv79/0fiaNWuiUvmfiUevvPJKXHLJJdHZ2Rl77bVXHHfccfGjH/0oDjvssLw+hSFTbAAAUHrJyCSSBnc2kiF2NiIi5s+fH/Pnz6/5sYceemiHx1/84hfji1/84huJVhjWbAAAAJlQbAAAAJkwjQoAgNKrjCj+AvG3osw6GzfddFPsv//+MWrUqDjxxBPjiSeeyGooAACggDIpNr75zW/GggUL4pprronly5fHUUcdFbNnz44NGzZkMRwAAG9xycgkl4OBZVJsfOELX4hLLrkk5s6dG4cddljccsstMWbMmLjtttuyGA4AACigYS82ent7Y9myZTFr1qz/GaRSiVmzZsWjjz660/k9PT3R3d29wwEAAJTfsBcbL730UvT19fVvTvK6SZMmRWdn507nL1q0KNra2vqPKVOmDHckAAB2c5WmZPsi8UYeTaZRDSb3W98uXLgwurq6+o+1a9fmHQkAABgGw37r23322Seamppi/fr1Ozy/fv36aG9v3+n8lpaWaGlpGe4YAAC8hSRNSSQN7jQkobMxmGHvbDQ3N8dxxx0XS5cu7X+uWq3G0qVLY+bMmcM9HAAAUFCZbOq3YMGCuOiii+L444+PE044IRYvXhybNm2KuXPnZjEcAABvcZWmxq+hqOhsDCqTYuO9731vvPjii3H11VdHZ2dnHH300XH//ffvtGgcAADYfWVSbEREzJ8/P+bPn5/V2wMAAAWXWbEBAACNklSSSCoNXiCemkY1mNxvfQsAAOyedDYAACi9pKkSSVNj/46eRNrQ8cpIZwMAAMiEYgMAAMiEaVQAAJSefTaKSWcDAADIhM4GAACllyQ53Pq2qrMxGJ0NAAAgEzobAACUXtIUDV+zkbjz7aB0NgAAgEwUtrPR+l8/j9axo/OOsZNbeufmHaGmD5z4/bwj1DXquf/MO0JtPVvyTsBwGlW87xcREZURI/OOUNfI5pa8I9TV+1//lXeEmra+tjnvCHW9+qv1eUeo6W37tucdoa503J55R6hpzEHT8o6wk22b/czkjSlssQEAALsqaUoiafg0KgvEB2MaFQAAkAmdDQAASi+pVCKpNPbv6I0er4xcIQAAIBOKDQAAIBOmUQEAUHpJJYcdxBs8XhnpbAAAAJnQ2QAAoPQqTUnDdxCvuPXtoHQ2AACATOhsAABQetZsFJPOBgAAkAnFBgAAkAnTqAAAKL0kyWEH8cTf7QfjCgEAAJnQ2QAAoPQsEC8mnQ0AACATig0AACATplEBAFB6uewgXjWNajA6GwAAQCZ0NgAAKD0LxItJZwMAAMiEzgYAAKWXVHLY1K/B45WRKwQAAGRCsQEAAGTCNCoAAErPAvFi0tkAAAAyobMBAEDp6WwUk84GAACQCcUGAACQCdOoAAAoPdOoiklnAwAAyITOBgAApbe9s9HoHcR1NgajswEAAGRCZwMAgNJLKklUmhq8ZqNPZ2MwOhsAAEAmFBsAAEAmTKMCAKD03Pq2mHQ2AACATBS2s9H70+XRO6o57xg7ueCMg/KOUNOchWPyjlDXP018JO8INW3d3JN3hLpap0zIO0JNoyfulXeEuprGjM47Qk3JqFF5R6ir77WNeUeo67cbXsk7Qk3bfrsl7wh1jZ3YlneEmrZ2F/frrHljd94Ratqydl3eEXbSs6U37wiDSiqVHG596+/2g3GFAACATCg2AACATBR2GhUAAOwqC8SLSWcDAADIhM4GAAClp7NRTDobAABAJnQ2AAAoPbe+LSZXCAAAyIRiAwAAyIRpVAAAlJ4F4sWkswEAAGRCZwMAgNKzQLyYXCEAACATig0AACATplEBAFB+SbL9aPSYDGjYOxuLFi2Kt7/97TFu3LiYOHFinHPOObFy5crhHgYAACi4YS82Hn744Zg3b1489thj8cADD8TWrVvjHe94R2zatGm4hwIAgIiISJKk//a3DTt0NgY17NOo7r///h0eL1myJCZOnBjLli2LP/zDPxzu4QAAgILKfM1GV1dXRESMHz++5sd7enqip6en/3F3d3fWkQAAgAbI9G5U1Wo1Lr300jj55JPjiCOOqHnOokWLoq2trf+YMmVKlpEAANgNvb7PRqMPBpbpFZo3b148/fTT8Y1vfKPuOQsXLoyurq7+Y+3atVlGAgAAGiSzaVTz58+P7373u/HII4/EvvvuW/e8lpaWaGlpySoGAABvAa8v2m70mAxs2IuNNE3jIx/5SNxzzz3x0EMPxbRp04Z7CAAAoASGvdiYN29e3H333fGd73wnxo0bF52dnRER0dbWFqNHjx7u4QAAIJc1FNZsDG7Yr9DNN98cXV1dceqpp8bkyZP7j29+85vDPRQAAFBgmUyjAgAAyHyfDQAAyFpSafyC7cQsqkG5RAAA0CA33XRT7L///jFq1Kg48cQT44knnhjw/G9961sxffr0GDVqVMyYMSP+9V//tUFJh4diAwCA0nv91reNPobim9/8ZixYsCCuueaaWL58eRx11FExe/bs2LBhQ83zf/SjH8X73ve++MAHPhA//vGP45xzzolzzjknnn766eG4ZA2h2AAAgAb4whe+EJdccknMnTs3DjvssLjllltizJgxcdttt9U8/0tf+lKcccYZcfnll8ehhx4a1113XRx77LHxla98pcHJ3zjFBgAAvAnd3d07HD09PTud09vbG8uWLYtZs2b1P1epVGLWrFnx6KOP1nzfRx99dIfzIyJmz55d9/wiUmwAAFB+lUo+R0RMmTIl2tra+o9FixbtFO+ll16Kvr6+mDRp0g7PT5o0qX9fut/X2dk5pPOLyN2oAADgTVi7dm20trb2P25packxTbEoNgAAKL0kSSJJGnzr2/8er7W1dYdio5Z99tknmpqaYv369Ts8v379+mhvb6/5mvb29iGdX0SmUQEAQMaam5vjuOOOi6VLl/Y/V61WY+nSpTFz5syar5k5c+YO50dEPPDAA3XPLyKdDQAASi+pVCKpNPbv6EMdb8GCBXHRRRfF8ccfHyeccEIsXrw4Nm3aFHPnzo2IiAsvvDDe9ra39a/5+NjHPhZ/9Ed/FH//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", + "image/png": "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qli+fHmMGzcupk6dGhdddFF8/vOfj7322iumTZsWl19+eXR0dMScOXMamRsAAPrkcStat74d3JCLjWeeeSaOPfbYvo/nzZsXERFnn312LF68OP72b/821q9fH+eff3688cYbcfTRR8eDDz4YI0aMaFxqAACg8IZcbBxzzDGRDlDGJUkSV199dVx99dXvKRgAAFBuDV0gDgAAeTCNqphyv/UtAACwbdLZAACg9KppEtW0uZvsNXu8MtLZAAAAMqHYAAAAMmEaFQAApWeBeDHpbAAAAJnQ2QAAoPR0NopJZwMAAMiEzgYAAKWXphFVnY3C0dkAAAAyUdjORsvItmgZ0ZZ3jC2kvb15R6itwKV1b8+mvCPUlG7ckHeEutKWYv7X3Dxhat4R6hrW/au8I9SWFHjDp9+szTtBXckO7XlHqG3EyLwT1JVWivl9Y9gOo/KOAOSomN+ZAABgCNI0ibTJO3o3e7wyMo0KAADIhM4GAACl59a3xaSzAQAAZEKxAQAAZMI0KgAASq+awz4bzR6vjHQ2AACgYK699to48sgjY9SoUbHjjju+q+ecc845kSRJv+PEE0/MNuggdDYAACi9bW2B+KZNm+K0006LmTNnxj/+4z++6+edeOKJcfvtt/d93NaW7751ig0AACiYq666KiIiFi9ePKTntbW1xaRJkzJItHVMowIAoPTe6Ww0+4iI6O7u7nf09PTkdh0eeeSRmDBhQuy9997xyU9+Mn7961/nliVCsQEAAO/JlClTYuzYsX3HggULcslx4oknxje+8Y1YsmRJLFy4MB599NGYPXt29Pb25pInwjQqAAB4T1avXh3t7e19H9dbJ3HZZZfFwoULB3yt559/PqZPn75VOU4//fS+P8+YMSMOOOCA2HPPPeORRx6J4447bqte871SbAAAUHp53vq2vb29X7FRz8UXXxznnHPOgOfsscceDUj2u9faZZddYuXKlYoNAADYlo0fPz7Gjx/ftPF++ctfxq9//euYPHly08b8Q9ZsAABQenkuEM/Cyy+/HMuXL4+XX345ent7Y/ny5bF8+fJYt25d3znTp0+Pe++9NyIi1q1bF5dcckk88cQT8eKLL8aSJUvilFNOife///1xwgknZBd0EDobAABQMFdccUXccccdfR8ffPDBERHx8MMPxzHHHBMREStWrIiurq6IiGhpaYlnn302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", "text/plain": [ "
" ] @@ -653,22 +397,22 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 36, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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VFlZqYULF2r79u268847lZKSorKyMrfD86z58+ervb1do0aNUlJSksLhsB544AHNnDnT7dB8IRQKSVLM7w3HP4dTO3LkiO655x7deOON/Ab2JJYuXark5GTdeeedbocCeILvEgqcvtmzZ2vXrl167bXX3A7F05qbmzVnzhxt3rxZqampbofjG6ZpKj8/Xw8++KAkafz48dq1a5dqa2tJKE7iF7/4hZ5++mmtXbtWF198sXbu3Km5c+cqOzub+wZHdHd36/rrr5dlWVq1apXb4XhWY2OjHnnkETU1NckwDLfDOWNZliXT4YoBFYr4fLfkafDgwUpKSlJLS0vU+ZaWFmVlZbkUlX9UVFRo06ZNevnll3Xuuee6HY6nNTY2qrW1VRMmTFBycrKSk5O1detWPfroo0pOTlY4HHY7RE8aOnSoRo8eHXXuoosu0t69e12KyB/mzZun+fPn64YbbtDYsWN100036a677lJ1dbXbofnC8a//fG+w53gysWfPHm3evJnqxEm8+uqram1t1XnnnRf53rBnzx7dfffdys3NdTs8wBW+SyhSUlI0ceJE1dfXR86Zpqn6+noVFRW5GJm3WZaliooKbdiwQS+99JJGjBjhdkie97WvfU2///3vtXPnzsiRn5+vmTNnaufOnUpKSnI7RE+aMmXKCY8k/uCDDzR8+HCXIvKHw4cPKxCI/pKclJQk0zRdishfRowYoaysrKjvDe3t7XrzzTf53nAKx5OJDz/8UL/5zW80aNAgt0PytJtuuklvv/121PeG7OxszZs3Ty+++KLb4QGu8OWSp8rKSpWVlSk/P1+TJk1STU2NOjo6VF5e7nZonjV79mytXbtWv/rVrzRw4MDImuKMjAylpaW5HJ03DRw48IQekwEDBmjQoEH0npzEXXfdpcmTJ+vBBx/U9ddfr23btmn16tVavXq126F52te//nU98MADOu+883TxxRfrrbfe0vLly3XLLbe4HZpnHDp0SH/4wx8iH3/00UfauXOnzjnnHJ133nmaO3eufvSjH2nkyJEaMWKEFi1apOzs7JM+0ehMcLL7NnToUH3rW99SU1OTNm3apHA4HPn+cM455yglJcWtsF11qr9rf5t09evXT1lZWbrwwgudDvWMdbxR2uk5EZsvE4oZM2bowIEDqqqqUigUUl5enurq6k5oxsNfHV8Pe/nll0ed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", "text/plain": [ "
" ] @@ -687,7 +431,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -700,22 +444,22 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 57, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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AABVL4maronUmbUC/yt90kknxeuvvx4REVdffXXs2LGjYu9d3KsGAAD65Te/+U20tbVFRMRVV10V27dvr9h7m0QNAEDVM4m6uxNOOCHmzJkTH/7whyNJkvj6178ehx56aI/nLly4sE/vLYEAAIADzLJly2LRokVx3333RalUip/+9KcxZMje//qXSiUJBAAAg09SKuWwkVxxKxDvf//7484774yIiJqamli+fHmMHDmyIu9tDgQAABxgfn8S9aJFi3odvtQfEggAADjA/P4k6quvvtokagAA+H0mUXdnEjUAAJDaoJxEvat9V0TsyjuMvQwZUpt3CD3avn133iH06rc7GvIOoUdvbC/m1zIionVbZ94h9Khte/F+Jt/SsauY96zcmeQdQq92vtmRdwi9SsrFvG8dO4v7M7C7oD8DnbuLGVdERLnAsdF3eyZRZ1yBGKSTqAubQAAAAPuvXC5X9P0kEAAAcIC59957Y+bMmXHQQQfFvffeu89zzzzzzD69twQCAICqlySlSJKMhzBl3F9fnHXWWbFp06YYOXJknHXWWb2eVyqVorOzb8P5JBAAAHCA+f1hS4YwAQDAXmoiyXyLs+JvqVYul2PZsmXxox/9KF588cUolUrx7ne/O/7bf/tvccEFF0SpHxPBi3/VAABAnyVJEmeeeWZ88pOfjI0bN8bxxx8fxx57bLz44ovxiU98Iv7rf/2v/XpfFQgAAKqejeT2tmzZslixYkUsX748pk2b1u25hx9+OM4666y47bbb4sILL+zT+6pAAADAAej73/9+fP7zn98reYiI+JM/+ZO48sor4/bbb+/z+0ogAADgAPQv//Iv8Z//83/u9fmZM2fGL3/5yz6/ryFMAABUPUOY9va73/0uRo0a1evzo0aNitdff73P76sCAQAAB6DOzs4YMqT3ekFtbW3s3r27z++rAgEAQNVTgdhbkiTxiU98Iurr63t8vr29vV/vK4EAAIAD0OzZs9/2nL6uwBQhgQAAgMwsWbIkvva1r8WmTZti4sSJceONN8Ypp5zS6/mLFy+Om266KdavXx9HHHFEnH322dHS0hINDQ1v29d3v/vdSobeRQIBAEDVq4YhTHfddVc0NzfH0qVLY/LkybF48eKYMWNGPPvsszFy5Mi9zr/jjjviyiuvjFtvvTVOPfXUeO655+ITn/hElEqluOGGGyp1GX1W8UnUnZ2dsWDBgpgwYUIMHTo03vOe98Q111wTSZJUuisAAMhda2trt9bb3IIbbrghLr744pgzZ04cc8wxsXTp0jj44IPj1ltv7fH8n//853HaaafFeeedF+PHj4/TTz89Pv7xj8dTTz01kJfztiqeQFx33XVx0003xbe//e34zW9+E9ddd11cf/31ceONN1a6KwAAiIiIJCnl0iIixo4dG8OHD+9qLS0te8XX0dERq1atiunTp3cdq6mpienTp8cTTzzR4zWdeuqpsWrVqq6E4YUXXoif/OQn8V/+y38ZgDuYXsWHMP385z+PP/uzP4szzjgjIiLGjx8f3//+93PPlAAAYCBs2LAhGhsbux73tOrRa6+9Fp2dnXvtyzBq1Kj413/91x7f97zzzovXXnstPvzhD0eSJLF79+645JJL4vOf/3xlL6CPKl6BOPXUU2P58uXx3HPPRUTEL3/5y3j88cdj5syZPZ7f3t6+V9kHAACqRWNjY7fW27KpffXoo4/GtddeG9/5zndi9erV8aMf/Sjuv//+uOaaayry/v1V8QrElVdeGa2trXH00UdHbW1tdHZ2xle+8pU4//zzezy/paUlrrrqqkqHAQDAIFL0SdRHHHFE1NbWxubNm7sd37x5c4wePbrH1yxYsCAuuOCC+OQnPxkREccff3y0tbXFpz71qfjCF74QNTX57Ald8V5/8IMfxO233x533HFHrF69Or73ve/F17/+9fje977X4/nz58+PrVu3drUNGzZUOiQAAMhVXV1dnHzyybF8+fKuY+VyOZYvXx5Tpkzp8TU7duzYK0mora2NiMh1gaKKVyAuv/zyuPLKK+NjH/tYROzJlF566aVoaWnpcTOL+vr6ipV5AAAYnIpegYiIaG5ujtmzZ8ekSZPilFNOicWLF0dbW1vMmTMnIvZs6nbkkUd2TcKeNWtW3HDDDXHiiSfG5MmTY+3atbFgwYKYNWtWVyKRh4onEL1lSuVyudJdAQBA1Tj33HPj1VdfjYULF8amTZvihBNOiAceeKBrYvX69eu7/R/9xS9+MUqlUnzxi1+MjRs3xjvf+c6YNWtWfOUrX8nrEiJiABKIty5q3Lhxceyxx8YzzzwTN9xwQ1x00UWV7goAACKiOioQERHz5s2LefPm9fjco48+2u3xkCFDYtGiRbFo0aL+hDdgKp5A3HjjjbFgwYL49Kc/HVu2bImmpqb4H//jf8TChQsr3RUAAJCxiicQw4YNi8WLF8fixYsr/dYAAEDOKp5AAABA1pL4j52hs+xzMMpn8VgAAKAqqUAAAFD1ylGKcsYVgaz7KwoVCAAAIDUJBAAAkJohTAAAVL1q2QfiQKACAQAApKYCAQBA1UuSHJZxzbi/olCBAAAAUlOBAACg6iWR/ZyEJNPeikMFAgAASK2wFYj2N9uj3HlQ3mHsJSkXM9f87atteYfQq3WvvCPvEHq0fXtn3iH06tVXd+QdQo92bGvPO4Re7d5VzK9nZ2c57xB6tf2N4v7eqD+4Pu8QetS2dXveIVSd3e0deYfQq927ducdQo+ScvF+bxT1/x/yUdgEAgAA0jKJOjuGMAEAAKmpQAAAUPVsJJcdFQgAACA1CQQAAJCaIUwAAFQ9k6izowIBAACkpgIBAEDVSyIi6x00BuvuGCoQAABAaioQAABUPXMgsqMCAQAApCaBAAAAUjOECQCAqmcn6uyoQAAAAKmpQAAAUPVMos6OCgQAAJCaBAIAAEjNECYAAKqeSdTZUYEAAABSU4EAAKDqlZM9Les+ByMVCAAAIDUVCAAAqp45ENlRgQAAAFKTQAAAAKkZwgQAQNWzE3V2VCAAAIDUVCAAAKh6SbKnZd3nYKQCAQAApCaBAAAAUjOECQCAqleOUpQz3pch6/6KQgUCAABITQUCAICqZxnX7KhAAAAAqalAAABQ9Szjmh0VCAAAIDUJBAAAkJohTAAAVL0kSpFkvKxq1v0VhQoEAACQmgrEAaJcLu4sns7OvCPoWXmwznzaD52d5bxD6FWRYyuq+oPr8w6hV9tf35Z3CD2qP7gh7xB6taO1Le8QelSq8VllX5UL+IeziDH9oXKyp2Xd52DkpxoAAEhNAgEAAKRmCBMAANUvh52ow07UAAAA+6YCAQBA1bMTdXZUIAAAgNRUIAAAqHrlKEU5443dsu6vKFQgAACA1CQQAACQkSVLlsT48eOjoaEhJk+eHE899dQ+z3/jjTdi7ty5MWbMmKivr4/3ve998ZOf/CSjaHtmCBMAAFWvGiZR33XXXdHc3BxLly6NyZMnx+LFi2PGjBnx7LPPxsiRI/c6v6OjIz760Y/GyJEj44c//GEceeSR8dJLL8U73vGOylxAP0kgAAAgAzfccENcfPHFMWfOnIiIWLp0adx///1x6623xpVXXrnX+bfeemv87ne/i5///Odx0EEHRUTE+PHjswy5R4YwAQBQ9ZJ/30gu6xYR0dra2q21t7fvFV9HR0esWrUqpk+f3nWspqYmpk+fHk888USP13TvvffGlClTYu7cuTFq1Kg47rjj4tprr43Ozs6BuYkpSSAAAGA/jB07NoYPH97VWlpa9jrntddei87Ozhg1alS346NGjYpNmzb1+L4vvPBC/PCHP4zOzs74yU9+EgsWLIhvfOMb8eUvf3lAriMtQ5gAAGA/bNiwIRobG7se19fXV+R9y+VyjBw5Mm6++eaora2Nk08+OTZu3Bhf+9rXYtGiRRXpoz8kEAAAVL1ysqdl3WdERGNjY7cEoidHHHFE1NbWxubNm7sd37x5c4wePbrH14wZMyYOOuigqK2t7Tr2gQ98IDZt2hQdHR1RV1e3fxfQT30ewrRixYqYNWtWNDU1RalUinvuuafb80mSxMKFC2PMmDExdOjQmD59ejz//POVihcAAKpOXV1dnHzyybF8+fKuY+VyOZYvXx5Tpkzp8TWnnXZarF27Nsrlctex5557LsaMGZNb8hDRjwSira0tJk6cGEuWLOnx+euvvz6+9a1vxdKlS+MXv/hFHHLIITFjxozYuXPnfgcLAAA9eWsZ16xbXzQ3N8ctt9wS3/ve9+I3v/lN/NVf/VW0tbV1rcp04YUXxvz587vO/6u/+qv43e9+F5deemk899xzcf/998e1114bc+fOreSt67M+D2GaOXNmzJw5s8fnkiSJxYsXxxe/+MX4sz/7s4iIuO2222LUqFFxzz33xMc+9rH9ixYAAKrUueeeG6+++mosXLgwNm3aFCeccEI88MADXROr169fHzU1//H5/tixY+PBBx+Mz33uc/HBD34wjjzyyLj00kvjiiuuyOsSIqLCcyDWrVsXmzZt6rY81fDhw2Py5MnxxBNP9JhAtLe3d1vqqrW1tZIhAQBAYcybNy/mzZvX43OPPvroXsemTJkSTz755ABH1TcVXcb1rSWo+rI8VUtLS7dlr8aOHVvJkAAAGASSKOXSBqPc94GYP39+bN26tatt2LAh75AAAIBeVHQI01tLUG3evDnGjBnTdXzz5s1xwgkn9Pia+vr6iq2VCwDA4FSOHJZxzba7wqhoBWLChAkxevTobstTtba2xi9+8Ytel6cCAACqR58rENu3b4+1a9d2PV63bl2sWbMmRowYEePGjYvLLrssvvzlL8d73/vemDBhQixYsCCamprirLPOqmTcAADQpT/Lqlaiz8GozwnEypUrY9q0aV2Pm5ubIyJi9uzZsWzZsvjbv/3baGtri0996lPxxhtvxIc//OF44IEHoqGhoXJRAwAAuehzAjF16tRI9pFulUqluPrqq+Pqq6/er8AAAIDiqegkagAAyIMhTNnJfRlXAACgeqhAAABQ9cpJKcpJthu7Zd1fUahAAAAAqUkgAACA1AxhAgCg6plEnR0VCAAAIDUVCAAAqp4KRHZUIAAAgNRUIAAAqHpJElFWgciECgQAAJBaYSsQu9t3RSS78g6jarS1vpl3CL3asuXgvEPo0Zs7ivv9te2NHXmH0KOdb3bkHUKvyrs78w6hR52d5bxD6NWb24v7e6N+aH3eIfRo++vb8g6h6uxqL/Dvjc5i/t6AoitsAgEAAGklSSmSjHeGzrq/ojCECQAASE0FAgCAqmcZ1+yoQAAAAKlJIAAAgNQMYQIAoOqVc9gHIuv+ikIFAgAASE0FAgCAqmcSdXZUIAAAgNRUIAAAqHoqENlRgQAAAFKTQAAAAKkZwgQAQNWzjGt2VCAAAIDUVCAAAKh6JlFnRwUCAABITQIBAACkZggTAABVr1ze07LuczBSgQAAAFJTgQAAoOqZRJ0dFQgAACA1FQgAAKqeCkR2VCAAAIDUJBAAAEBqhjABAFD1yhFRznhI0SBdxVUFAgAASE8FAgCAqpckSSQZz2rOur+iUIEAAABSk0AAAACpGcIEAEDVsw9EdlQgAACA1FQgAACoekk5opzxuqrJIF3HVQUCAABITQUCAICqZw5EdlQgAACA1CQQAABAaoYwAQBQ9crJnpZ1n4ORCgQAAJBaYSsQuzo6Ikk68g5jL0nW64OltH1rW94h9GrLy8X8NtvVsTvvEHr15vadeYfQo10du/IOoVdF/dksF/jjqc5dxf0Z2LazPe8Qqk55d2feIfSo3FnMuCKK+3ujs4BfyyLG9IdMos6OCgQAAJCaBAIAAEitmGNLAACgD5JyEknGw0az7q8oVCAAAIDUJBAAAFS9t5Zxzbr11ZIlS2L8+PHR0NAQkydPjqeeeirV6+68884olUpx1lln9b3TCpNAAABABu66665obm6ORYsWxerVq2PixIkxY8aM2LJlyz5f9+KLL8bf/M3fxB//8R9nFOm+SSAAAKh6by3jmnXrixtuuCEuvvjimDNnThxzzDGxdOnSOPjgg+PWW2/t9TWdnZ1x/vnnx1VXXRXvfve79/MuVYYEAgAA9kNra2u31t6+9142HR0dsWrVqpg+fXrXsZqampg+fXo88cQTvb731VdfHSNHjoz//t//+4DE3h8SCAAA2A9jx46N4cOHd7WWlpa9znnttdeis7MzRo0a1e34qFGjYtOmTT2+7+OPPx7/+I//GLfccsuAxN1flnEFAKDqlctJlDNeVvWt/jZs2BCNjY1dx+vr6/f7vbdt2xYXXHBB3HLLLXHEEUfs9/tVkgQCAAD2Q2NjY7cEoidHHHFE1NbWxubNm7sd37x5c4wePXqv8//f//t/8eKLL8asWbO6jpXL5YiIGDJkSDz77LPxnve8pwLR950hTAAAVL2iT6Kuq6uLk08+OZYvX951rFwux/Lly2PKlCl7nX/00UfHr371q1izZk1XO/PMM2PatGmxZs2aGDt2bCVuW7+oQAAAQAaam5tj9uzZMWnSpDjllFNi8eLF0dbWFnPmzImIiAsvvDCOPPLIaGlpiYaGhjjuuOO6vf4d73hHRMRex7MmgQAAgAyce+658eqrr8bChQtj06ZNccIJJ8QDDzzQNbF6/fr1UVNT/AFCEggAAKpef/ZlqESffTVv3ryYN29ej889+uij+3ztsmXL+t7hAOhzirNixYqYNWtWNDU1RalUinvuuafruV27dsUVV1wRxx9/fBxyyCHR1NQUF154Ybz88suVjBkAAMhJnxOItra2mDhxYixZsmSv53bs2BGrV6+OBQsWxOrVq+NHP/pRPPvss3HmmWdWJFgAAOhJOUlyaYNRn4cwzZw5M2bOnNnjc8OHD4+HHnqo27Fvf/vbccopp8T69etj3Lhx/YsSAAAohAGfA7F169YolUpds8b/UHt7e7ftvltbWwc6JAAAoJ8GdJr3zp0744orroiPf/zjvW6u0dLS0m3r7zzXtAUAoDol5XzaYDRgCcSuXbvinHPOiSRJ4qabbur1vPnz58fWrVu72oYNGwYqJAAAYD8NyBCmt5KHl156KR5++OF9bu1dX18f9fX1AxEGAACDRBJJJBlPak7CJOqKeCt5eP755+ORRx6Jww8/vNJdAAAAOelzArF9+/ZYu3Zt1+N169bFmjVrYsSIETFmzJg4++yzY/Xq1XHfffdFZ2dnbNq0KSIiRowYEXV1dZWLHAAA/l1SjihnPCdhsM6B6HMCsXLlypg2bVrX4+bm5oiImD17dnzpS1+Ke++9NyIiTjjhhG6ve+SRR2Lq1Kn9jxQAAMhdnxOIqVOn7nN8WdZjzwAAgOwM+D4QAAAw0JIkh0nUg/SD8wHdBwIAADiwqEAAAFD1ysmelnWfg5EKBAAAkJoEAgAASM0QJgAAql5STiLJeExR1v0VhQoEAACQmgoEAABVL0n2tKz7HIxUIAAAgNRUIAAAqHrlchLljOckZN1fUahAAAAAqRW2AtG5a3eUYlfeYeyl3NmZdwg9Khd4EF65s5x3CD3q3F3Mr2VExO72jrxD6FFnQb//i6zIK3QU9fdZRESpVMo7hB4V+Z4VVZE/oU3Kxfz7lBTwb3oRYyI/hU0gAAAgrSRJMk90BmtiZQgTAACQmgoEAABVLynvaVn3ORipQAAAAKlJIAAAgNQMYQIAoOqVkyTzVSmLvArmQFKBAAAAUlOBAACg6lnGNTsqEAAAQGoqEAAAVL1yOcl85/Mi77Q+kFQgAACA1CQQAABAaoYwAQBQ9ZJkT8u6z8FIBQIAAEhNBQIAgKqXJEkkGU9qtowrAADA25BAAAAAqRnCBABA1UuSJMp2os6ECgQAAJCaCgQAAFUvKecwidpO1AAAAPumAgEAQNVTgciOCgQAAJCaBAIAAEjNECYAAKpeOdnTsu5zMFKBAAAAUlOBAACg6plEnR0VCAAAIDUJBAAAkJohTAAAVL0kSSJJMh7ClHF/RaECAQAApKYCAQBA1SuXI8oZT2oulzPtrjBUIAAAgNRUIAAAqHrmQGRHBQIAAEhNAgEAAKRmCBMAAFXPTtTZUYEAAABSK2wFonN3Z5RKnXmHsZdSTVEzzY68A+jVjoKucVbkTw3KncX73o+ISAr6taR/sl7u8EDgZ6DvBuskU7KnApEdFQgAAMjIkiVLYvz48dHQ0BCTJ0+Op556qtdzb7nllvjjP/7jOOyww+Kwww6L6dOn7/P8rEggAAAgA3fddVc0NzfHokWLYvXq1TFx4sSYMWNGbNmypcfzH3300fj4xz8ejzzySDzxxBMxduzYOP3002Pjxo0ZR96dBAIAgKpXjiTKScYt+jaE6YYbboiLL7445syZE8ccc0wsXbo0Dj744Lj11lt7PP/222+PT3/603HCCSfE0UcfHf/wD/8Q5XI5li9fXolb1m8SCAAA2A+tra3dWnt7+17ndHR0xKpVq2L69Oldx2pqamL69OnxxBNPpOpnx44dsWvXrhgxYkTFYu8PCQQAAFXvrUnUWbeIiLFjx8bw4cO7WktLy17xvfbaa9HZ2RmjRo3qdnzUqFGxadOmVNd4xRVXRFNTU7ckJA+FXYUJAACqwYYNG6KxsbHrcX19fcX7+OpXvxp33nlnPProo9HQ0FDx9+8LCQQAAFUvSZLMlw1+q7/GxsZuCURPjjjiiKitrY3Nmzd3O7558+YYPXr0Pl/79a9/Pb761a/GP//zP8cHP/jB/Qu6AgxhAgCAAVZXVxcnn3xytwnQb02InjJlSq+vu/766+Oaa66JBx54ICZNmpRFqG9LBQIAADLQ3Nwcs2fPjkmTJsUpp5wSixcvjra2tpgzZ05ERFx44YVx5JFHds2huO6662LhwoVxxx13xPjx47vmShx66KFx6KGH5nYdEggAAKpeUk6iXPCdqM8999x49dVXY+HChbFp06Y44YQT4oEHHuiaWL1+/fqoqfmPAUI33XRTdHR0xNlnn93tfRYtWhRf+tKX9jv+/pJAAABARubNmxfz5s3r8blHH3202+MXX3xx4APqBwkEAABV7/eXVc2yz8HIJGoAACA1CQQAAJCaIUwAAFS9PPeBGGz6XIFYsWJFzJo1K5qamqJUKsU999zT67mXXHJJlEqlWLx48X6ECAAAFEWfE4i2traYOHFiLFmyZJ/n3X333fHkk09GU1NTv4MDAIA0knI5lzYY9XkI08yZM2PmzJn7PGfjxo3xmc98Jh588ME444wz+h0cAABQLBWfA1Eul+OCCy6Iyy+/PI499ti3Pb+9vT3a29u7Hre2tlY6JAAAoEIqvgrTddddF0OGDInPfvazqc5vaWmJ4cOHd7WxY8dWOiQAAA5w5X/fiTrrNhhVNIFYtWpVfPOb34xly5ZFqVRK9Zr58+fH1q1bu9qGDRsqGRIAAFBBFU0gfvazn8WWLVti3LhxMWTIkBgyZEi89NJL8dd//dcxfvz4Hl9TX18fjY2N3RoAAPTFW8u4Zt0Go4rOgbjgggti+vTp3Y7NmDEjLrjggpgzZ04luwIAAHLQ5wRi+/btsXbt2q7H69atizVr1sSIESNi3Lhxcfjhh3c7/6CDDorRo0fH+9///v2PFgAAepCUk0gynpOQdX9F0ecEYuXKlTFt2rSux83NzRERMXv27Fi2bFnFAgMAAIqnzwnE1KlT+zTe68UXX+xrFwAAQEFVfB8IAADImiFM2an4PhAAAMCBSwUCAICqV45ylJNy5n0ORioQAABAahIIAAAgNUOYAACoekk5+0nNGY+YKgwVCAAAIDUVCAAAqp5lXLOjAgEAAKSmAgEAQNVLkiSSJOMKRMb9FYUKBAAAkJoKRB8l5WJOt0/KpbxD6FVRxwcW9WsZUdzYygX9WnLgKerPQJEN1k9CgexJIAAAqHrlcjnKGX/4kHV/RWEIEwAAkJoKBAAAVc8yrtlRgQAAAFKTQAAAAKkZwgQAQNVLknIkSbaTmrPuryhUIAAAgNRUIAAAqHomUWdHBQIAAEhNBQIAgOqXQwUiVCAAAAD2TQIBAACkZggTAABVr5yUo5zxsqpZ91cUKhAAAEBqKhAAAFQ9y7hmRwUCAABITQIBAACkZggTAABVL0nKkZSzndScmEQNAACwbyoQAABUPZOos6MCAQAApKYCAQBA1UuScuZzEsyBAAAAeBsSCAAAIDVDmAAAqHrlckQ540nNGa8aWxgqEAAAQGoqEAAAVL2knMNGcoO0BKECAQAApCaBAAAAUjOECQCAqmcn6uyoQAAAAKmpQAAAUPXsRJ0dFQgAACA1FQgAAKqeORDZUYEAAABSk0AAAACpGcIEAEDVsxN1dgqXQCTJnrFku3fvyDmS6pIktXmH0KukeN9mEVHscYvlzs68Q+hRucD3jAPLYP2jvD/e+vsJA6Hz3/8vK/L3WefutkHRZxEU7j+7bdu2RUTEqn8+O+dIAAD4fdu2bYvhw4fnHUY3dXV1MXr06Fi5/Jxc+h89enTU1dXl0ndeSknBUslyuRwvv/xyDBs2LEql0n6/X2tra4wdOzY2bNgQjY2NFYjwwOee9Z171nfuWd+5Z33nnvWde9Z3g+GeJUkS27Zti6ampqipKd4U2p07d0ZHR0cufdfV1UVDQ0MufeelcBWImpqaOOqooyr+vo2NjQfsD/VAcc/6zj3rO/es79yzvnPP+s4967sD/Z4VrfLw+xoaGgbdP/F5Kl4KCQAAFJYEAgAASO2ATyDq6+tj0aJFUV9fn3coVcM96zv3rO/cs75zz/rOPes796zv3DMGm8JNogYAAIrrgK9AAAAAlSOBAAAAUpNAAAAAqUkgAACA1CQQAABAagd0ArFkyZIYP358NDQ0xOTJk+Opp57KO6TCamlpiQ996EMxbNiwGDlyZJx11lnx7LPP5h1WVfnqV78apVIpLrvssrxDKbSNGzfGX/7lX8bhhx8eQ4cOjeOPPz5WrlyZd1iF1dnZGQsWLIgJEybE0KFD4z3veU9cc801YQG9/7BixYqYNWtWNDU1RalUinvuuafb80mSxMKFC2PMmDExdOjQmD59ejz//PP5BFsQ+7pnu3btiiuuuCKOP/74OOSQQ6KpqSkuvPDCePnll/MLuADe7vvs911yySVRKpVi8eLFmcUHWTpgE4i77rormpubY9GiRbF69eqYOHFizJgxI7Zs2ZJ3aIX02GOPxdy5c+PJJ5+Mhx56KHbt2hWnn356tLW15R1aVXj66afj7//+7+ODH/xg3qEU2uuvvx6nnXZaHHTQQfHTn/40/u///b/xjW98Iw477LC8Qyus6667Lm666ab49re/Hb/5zW/iuuuui+uvvz5uvPHGvEMrjLa2tpg4cWIsWbKkx+evv/76+Na3vhVLly6NX/ziF3HIIYfEjBkzYufOnRlHWhz7umc7duyI1atXx4IFC2L16tXxox/9KJ599tk488wzc4i0ON7u++wtd999dzz55JPR1NSUUWSQg+QAdcoppyRz587tetzZ2Zk0NTUlLS0tOUZVPbZs2ZJERPLYY4/lHUrhbdu2LXnve9+bPPTQQ8n/9//9f8mll16ad0iFdcUVVyQf/vCH8w6jqpxxxhnJRRdd1O3Yn//5nyfnn39+ThEVW0Qkd999d9fjcrmcjB49Ovna177WdeyNN95I6uvrk+9///s5RFg8f3jPevLUU08lEZG89NJL2QRVcL3ds3/7t39LjjzyyOTXv/518q53vSv5u7/7u8xjgywckBWIjo6OWLVqVUyfPr3rWE1NTUyfPj2eeOKJHCOrHlu3bo2IiBEjRuQcSfHNnTs3zjjjjG7fb/Ts3nvvjUmTJsVf/MVfxMiRI+PEE0+MW265Je+wCu3UU0+N5cuXx3PPPRcREb/85S/j8ccfj5kzZ+YcWXVYt25dbNq0qdvP5/Dhw2Py5Mn+HvTB1q1bo1QqxTve8Y68QymscrkcF1xwQVx++eVx7LHH5h0ODKgheQcwEF577bXo7OyMUaNGdTs+atSo+Nd//decoqoe5XI5LrvssjjttNPiuOOOyzucQrvzzjtj9erV8fTTT+cdSlV44YUX4qabborm5ub4/Oc/H08//XR89rOfjbq6upg9e3be4RXSlVdeGa2trXH00UdHbW1tdHZ2xle+8pU4//zz8w6tKmzatCkiose/B289x77t3Lkzrrjiivj4xz8ejY2NeYdTWNddd10MGTIkPvvZz+YdCgy4AzKBYP/MnTs3fv3rX8fjjz+edyiFtmHDhrj00kvjoYceioaGhrzDqQrlcjkmTZoU1157bUREnHjiifHrX/86li5dKoHoxQ9+8IO4/fbb44477ohjjz021qxZE5dddlk0NTW5Zwy4Xbt2xTnnnBNJksRNN92UdziFtWrVqvjmN78Zq1evjlKplHc4MOAOyCFMRxxxRNTW1sbmzZu7Hd+8eXOMHj06p6iqw7x58+K+++6LRx55JI466qi8wym0VatWxZYtW+Kkk06KIUOGxJAhQ+Kxxx6Lb33rWzFkyJDo7OzMO8TCGTNmTBxzzDHdjn3gAx+I9evX5xRR8V1++eVx5ZVXxsc+9rE4/vjj44ILLojPfe5z0dLSkndoVeGt3/n+HvTdW8nDSy+9FA899JDqwz787Gc/iy1btsS4ceO6/h689NJL8dd//dcxfvz4vMODijsgE4i6uro4+eSTY/ny5V3HyuVyLF++PKZMmZJjZMWVJEnMmzcv7r777nj44YdjwoQJeYdUeB/5yEfiV7/6VaxZs6arTZo0Kc4///xYs2ZN1NbW5h1i4Zx22ml7LQ/83HPPxbve9a6cIiq+HTt2RE1N91/VtbW1US6Xc4qoukyYMCFGjx7d7e9Ba2tr/OIXv/D3YB/eSh6ef/75+Od//uc4/PDD8w6p0C644IL4l3/5l25/D5qamuLyyy+PBx98MO/woOIO2CFMzc3NMXv27Jg0aVKccsopsXjx4mhra4s5c+bkHVohzZ07N+6444748Y9/HMOGDesaGzx8+PAYOnRoztEV07Bhw/aaI3LIIYfE4Ycfbu5ILz73uc/FqaeeGtdee22cc8458dRTT8XNN98cN998c96hFdasWbPiK1/5SowbNy6OPfbYeOaZZ+KGG26Iiy66KO/QCmP79u2xdu3arsfr1q2LNWvWxIgRI2LcuHFx2WWXxZe//OV473vfGxMmTIgFCxZEU1NTnHXWWfkFnbN93bMxY8bE2WefHatXr4777rsvOjs7u/4mjBgxIurq6vIKO1dv9332h0nWQQcdFKNHj473v//9WYcKAy/vZaAG0o033piMGzcuqaurS0455ZTkySefzDukwoqIHtt3v/vdvEOrKpZxfXv/9E//lBx33HFJfX19cvTRRyc333xz3iEVWmtra3LppZcm48aNSxoaGpJ3v/vdyRe+8IWkvb0979AK45FHHunx99fs2bOTJNmzlOuCBQuSUaNGJfX19clHPvKR5Nlnn8036Jzt656tW7eu178JjzzySN6h5+btvs/+kGVcOZCVksR2pgAAQDoH5BwIAABgYEggAACA1CQQAABAahIIAAAgNQkEAACQmgQCAABITQIBAACkJoEAAABSk0AAAACpSSAAAIDUJBAAAEBq/z/8nq3tD+9OkQAAAABJRU5ErkJggg==", + "image/png": "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vhgREVdeeWXs2rWrau9d3qsGAAAG5Te/+U10dHRERMQVV1wRO3furNp7m0QNAEDNM4m6t5NPPjkWLFgQ73znOyNN0/jiF78Yr3nNa/o8d+nSpQN6bwkEAAAcYlatWhXLli2L73//+5EkSfzoRz+KESP2/9c/SRIJBAAAw0+aJAVsJFfeCsRb3vKWuO222yIioq6uLlavXh1jx46tynubAwEAAIeY359EvWzZsn6HLw2GBAIAAA4xvz+J+sorrzSJGgAAfp9J1L2ZRA0AAGQ2LCdR7+ncExF7ig5jPyNG1BcdQp927txbdAj9+u2upqJD6NNLO8v5tYyIaN/RXXQIferYWb6fyVd07SnnPat0p0WH0K/dL3cVHUK/0ko571vX7vL+DOwt6c9A995yxhURUSlxbAzcvknUOVcghukk6tImEAAAwMGrVCpVfT8JBAAAHGLuuuuumDt3bhx22GFx1113HfDc97znPQN6bwkEAAA1L02TSNOchzDl3N9AnH322bFly5YYO3ZsnH322f2elyRJdHcPbDifBAIAAA4xvz9syRAmAADYT12kuW9xVv4t1SqVSqxatSq++93vxtNPPx1JksQb3vCG+G//7b/F+eefH8kgJoKX/6oBAIABS9M03vOe98SHPvSh2Lx5c5x00klxwgknxNNPPx0f/OAH47/+1/86qPdVgQAAoObZSG5/q1atijVr1sTq1atj1qxZvZ77yU9+EmeffXbcfPPNccEFFwzofVUgAADgEPStb30rPvnJT+6XPERE/Mmf/Elcfvnlccsttwz4fSUQAABwCPqXf/mX+M//+T/3+/zcuXPjl7/85YDf1xAmAABqniFM+/vd734X48aN6/f5cePGxYsvvjjg91WBAACAQ1B3d3eMGNF/vaC+vj727t074PdVgQAAoOapQOwvTdP44Ac/GI2NjX0+39nZOaj3lUAAAMAhaP78+a96zkBXYIqQQAAAQG5WrFgRX/jCF2LLli0xderU+OpXvxqnnXZav+cvX748rr/++ti4cWMcffTRcc4550RbW1s0NTW9al/f+MY3qhl6DwkEAAA1rxaGMN1+++3R2toaK1eujOnTp8fy5ctjzpw58dhjj8XYsWP3O//WW2+Nyy+/PG666aY4/fTT4/HHH48PfvCDkSRJXHfdddW6jAGr+iTq7u7uWLJkSUyZMiVGjhwZ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mRPbtm074Ouefvrp+Ju/+Zv44z/+45wiPTAJBAAANe+VZVzzbgNx3XXXxUUXXRQLFiyI448/PlauXBmHH3543HTTTf2+pru7O84777y44oor4g1veMNB3qXqkEAAAMBBaG9v79U6O/ffy6arqyvWrl0bs2fP7jlWV1cXs2fPjgcffLDf977yyitj7Nix8d//+38fktgHQwIBAAAHYeLEiTF69Oie1tbWtt85L7zwQnR3d8e4ceN6HR83blxs2bKlz/d94IEH4h//8R/jxhtvHJK4B8syrgAA1LxKJY1KzsuqvtLfpk2borm5ued4Y2PjQb/3jh074vzzz48bb7wxjj766IN+v2qSQAAAwEFobm7ulUD05eijj476+vrYunVrr+Nbt26N8ePH73f+//t//y+efvrpmDdvXs+xSqUSEREjRoyIxx57LN74xjdWIfqBM4QJAICaV/ZJ1A0NDXHqqafG6tWre45VKpVYvXp1zJgxY7/zjzvuuPjVr34V69ev72nvec97YtasWbF+/fqYOHFiNW7boKhAAABADlpbW2P+/Pkxbdq0OO2002L58uXR0dERCxYsiIiICy64II455phoa2uLpqamOPHEE3u9/rWvfW1ExH7H8yaBAACAHLz3ve+N559/PpYuXRpbtmyJk08+Oe6+++6eidUbN26MurryDxCSQAAAUPMGsy9DNfocqEWLFsWiRYv6fO6+++474GtXrVo18A6HwIBTnDVr1sS8efOipaUlkiSJO++8s+e5PXv2xGWXXRYnnXRSHHHEEdHS0hIXXHBBPPvss9WMGQAAKMiAE4iOjo6YOnVqrFixYr/ndu3aFevWrYslS5bEunXr4rvf/W489thj8Z73vKcqwQIAQF8qaVpIG44GPIRp7ty5MXfu3D6fGz16dNxzzz29jn3ta1+L0047LTZu3BiTJk0aXJQAAEApDPkciO3bt0eSJD2zxv9QZ2dnr+2+29vbhzokAABgkIZ0mvfu3bvjsssui/e///39bq7R1tbWa+vvIte0BQCgNqWVYtpwNGQJxJ49e+Lcc8+NNE3j+uuv7/e8xYsXx/bt23vapk2bhiokAADgIA3JEKZXkodnnnkmfvKTnxxwa+/GxsZobGwcijAAABgm0kgjzXlScxomUVfFK8nDE088Effee28cddRR1e4CAAAoyIATiJ07d8aTTz7Z83jDhg2xfv36GDNmTEyYMCHOOeecWLduXXz/+9+P7u7u2LJlS0REjBkzJhoaGqoXOQAA/Lu0ElHJeU7CcJ0DMeAE4tFHH41Zs2b1PG5tbY2IiPnz58dnPvOZuOuuuyIi4uSTT+71unvvvTdmzpw5+EgBAIDCDTiBmDlz5gHHl+U99gwAAMjPkO8DAQAAQy1NC5hEPUw/OB/SfSAAAIBDiwoEAAA1r5Lua3n3ORypQAAAAJlJIAAAgMwMYQIAoOallTTSnMcU5d1fWahAAAAAmalAAABQ89J0X8u7z+FIBQIAAMhMBQIAgJpXqaRRyXlOQt79lYUKBAAAkFlpKxDde/ZGEnuKDmM/le7uokPoU6XEg/Aq3ZWiQ+hT995yfi0j9n3/l9HePeX7mSy7Mq/QUdbfZxERSZIUHUKfynzPyqrMn9CmlXL+fUpL+De9jDFRnNImEAAAkFWaprknOsM1sTKECQAAyEwFAgCAmpdW9rW8+xyOVCAAAIDMJBAAAEBmhjABAFDzKmma+6qUZV4FcyipQAAAAJmpQAAAUPMs45ofFQgAACAzFQgAAGpepZLmvvN5mXdaH0oqEAAAQGYSCAAAIDNDmAAAqHlpuq/l3edwpAIBAABkpgIBAEDNS9M00pwnNVvGFQAA4FVIIAAAgMwMYQIAoOalaRoVO1HnQgUCAADITAUCAICal1YKmERtJ2oAAIADU4EAAKDmqUDkRwUCAADITAIBAABkZggTAAA1r5Lua3n3ORypQAAAAJmpQAAAUPNMos6PCgQAAJCZBAIAAMjMECYAAGpemqaRpjkPYcq5v7JQgQAAADJTgQAAoOZVKhGVnCc1Vyq5dlcaKhAAAEBmKhAAANQ8cyDyowIBAABkJoEAAAAyM4QJAICaZyfq/KhAAAAAmZW2AtG9tzuSpLvoMPaT1JU10+wqOoB+7SrpGmdl/tSg0l2+7/2IiLSkX0sGJ+/lDg8FfgYGbrhOMiV/KhD5UYEAAICcrFixIiZPnhxNTU0xffr0ePjhh/s998Ybb4w//uM/jiOPPDKOPPLImD179gHPz4sEAgAAcnD77bdHa2trLFu2LNatWxdTp06NOXPmxLZt2/o8/7777ov3v//9ce+998aDDz4YEydOjDPPPDM2b96cc+S9SSAAAKh5lUijkubcYmBDmK677rq46KKLYsGCBXH88cfHypUr4/DDD4+bbrqpz/NvueWW+OhHPxonn3xyHHfccfEP//APUalUYvXq1dW4ZYMmgQAAgIPQ3t7eq3V2du53TldXV6xduzZmz57dc6yuri5mz54dDz74YKZ+du3aFXv27IkxY8ZULfbBkEAAAFDzXplEnXeLiJg4cWKMHj26p7W1te0X3wsvvBDd3d0xbty4XsfHjRsXW7ZsyXSNl112WbS0tPRKQopQ2lWYAACgFmzatCmam5t7Hjc2Nla9j89//vNx2223xX333RdNTU1Vf/+BkEAAAFDz0jTNfdngV/prbm7ulUD05eijj476+vrYunVrr+Nbt26N8ePHH/C1X/ziF+Pzn/98/PM//3O87W1vO7igq8AQJgAAGGINDQ1x6qmn9poA/cqE6BkzZvT7umuvvTauuuqquPvuu2PatGl5hPqqVCAAACAHra2tMX/+/Jg2bVqcdtppsXz58ujo6IgFCxZERMQFF1wQxxxzTM8cimuuuSaWLl0at956a0yePLlnrsRrXvOaeM1rXlPYdUggAACoeWkljUrJd6J+73vfG88//3wsXbo0tmzZEieffHLcfffdPROrN27cGHV1/zFA6Prrr4+urq4455xzer3PsmXL4jOf+cxBxz9YEggAAMjJokWLYtGiRX0+d9999/V6/PTTTw99QIMggQAAoOb9/rKqefY5HJlEDQAAZCaBAAAAMjOECQCAmlfkPhDDzYArEGvWrIl58+ZFS0tLJEkSd955Z7/nfuQjH4kkSWL58uUHESIAAFAWA04gOjo6YurUqbFixYoDnnfHHXfEQw89FC0tLYMODgAAskgrlULacDTgIUxz586NuXPnHvCczZs3x8c+9rH48Y9/HGedddaggwMAAMql6nMgKpVKnH/++XHppZfGCSec8Krnd3Z2RmdnZ8/j9vb2aocEAABUSdVXYbrmmmtixIgR8fGPfzzT+W1tbTF69OieNnHixGqHBADAIa7y7ztR592Go6omEGvXro0vf/nLsWrVqkiSJNNrFi9eHNu3b+9pmzZtqmZIAABAFVU1gfjpT38a27Zti0mTJsWIESNixIgR8cwzz8Rf//Vfx+TJk/t8TWNjYzQ3N/dqAAAwEK8s45p3G46qOgfi/PPPj9mzZ/c6NmfOnDj//PNjwYIF1ewKAAAowIATiJ07d8aTTz7Z83jDhg2xfv36GDNmTEyaNCmOOuqoXucfdthhMX78+HjLW95y8NECAEAf0koaac5zEvLurywGnEA8+uijMWvWrJ7Hra2tERExf/78WLVqVdUCAwAAymfACcTMmTMHNN7r6aefHmgXAABASVV9HwgAAMibIUz5qfo+EAAAwKFLBQIAgJpXiUpU0krufQ5HKhAAAEBmEggAACAzQ5gAAKh5aSX/Sc05j5gqDRUIAAAgMxUIAABqnmVc86MCAQAAZKYCAQBAzUvTNNI05wpEzv2VhQoEAACQmQrEAKWVck63TytJ0SH0q6zjA8v6tYwob2yVkn4tOfSU9WegzIbrJ6FA/iQQAADUvEqlEpWcP3zIu7+yMIQJAADITAUCAICaZxnX/KhAAAAAmUkgAACAzAxhAgCg5qVpJdI030nNefdXFioQAABAZioQAADUPJOo86MCAQAAZKYCAQBA7SugAhEqEAAAAAcmgQAAADIzhAkAgJpXSStRyXlZ1bz7KwsVCAAAIDMVCAAAap5lXPOjAgEAAGQmgQAAADIzhAkAgJqXppVIK/lOak5NogYAADgwFQgAAGqeSdT5UYEAAAAyU4EAAKDmpWkl9zkJ5kAAAAC8CgkEAACQmSFMAADUvEolopLzpOacV40tDRUIAAAgMxUIAABqXlopYCO5YVqCUIEAAAAyk0AAAACZGcIEAEDNsxN1flQgAACAzFQgAACoeXaizo8KBAAAkJkKBAAANc8ciPyoQAAAAJlJIAAAgMwMYQIAoObZiTo/pUsg0nTfWLK9e3cVHEltSdP6okPoV1q+b7OIKPe4xUp3d9Eh9KlS4nvGoWW4/lE+GK/8/YSh0P3v/5eV+fuse2/HsOizDEr3n92OHTsiImLtP59TcCQAAPy+HTt2xOjRo4sOo5eGhoYYP358PLr63EL6Hz9+fDQ0NBTSd1GStGSpZKVSiWeffTZGjRoVSZIc9Pu1t7fHxIkTY9OmTdHc3FyFCA997tnAuWcD554NnHs2cO7ZwLlnAzcc7lmaprFjx45oaWmJurryTaHdvXt3dHV1FdJ3Q0NDNDU1FdJ3UUpXgairq4tjjz226u/b3Nx8yP5QDxX3bODcs4FzzwbOPRs492zg3LOBO9TvWdkqD7+vqalp2P0TX6TypZAAAEBpSSAAAIDMDvkEorGxMZYtWxaNjY1Fh1Iz3LOBc88Gzj0bOPds4NyzgXPPBs49Y7gp3SRqAACgvA75CgQAAFA9EggAACAzCQQAAJCZBAIAAMhMAgEAAGR2SCcQK1asiMmTJ0dTU1NMnz49Hn744aJDKq22trZ4xzveEaNGjYqxY8fG2WefHY899ljRYdWUz3/+85EkSVxyySVFh1Jqmzdvjr/8y7+Mo446KkaOHBknnXRSPProo0WHVVrd3d2xZMmSmDJlSowcOTLe+MY3xlVXXRUW0PsPa9asiXnz5kVLS0skSRJ33nlnr+fTNI2lS5fGhAkTYuTIkTF79ux44oknigm2JA50z/bs2ROXXXZZnHTSSXHEEUdES0tLXHDBBfHss88WF3AJvNr32e/7yEc+EkmSxPLly3OLD/J0yCYQt99+e7S2tsayZcti3bp1MXXq1JgzZ05s27at6NBK6f7774+FCxfGQw89FPfcc0/s2bMnzjzzzOjo6Cg6tJrwyCOPxN///d/H2972tqJDKbUXX3wxzjjjjDjssMPiRz/6Ufzf//t/40tf+lIceeSRRYdWWtdcc01cf/318bWvfS1+85vfxDXXXBPXXnttfPWrXy06tNLo6OiIqVOnxooVK/p8/tprr42vfOUrsXLlyvj5z38eRxxxRMyZMyd2796dc6TlcaB7tmvXrli3bl0sWbIk1q1bF9/97nfjsccei/e85z0FRFoer/Z99oo77rgjHnrooWhpackpMihAeog67bTT0oULF/Y87u7uTltaWtK2trYCo6od27ZtSyMivf/++4sOpfR27NiRvulNb0rvueee9P/7//6/9OKLLy46pNK67LLL0ne+851Fh1FTzjrrrPTCCy/sdezP//zP0/POO6+giMotItI77rij53GlUknHjx+ffuELX+g59tJLL6WNjY3pt771rQIiLJ8/vGd9efjhh9OISJ955pl8giq5/u7Zv/3bv6XHHHNM+utf/zp9/etfn/7d3/1d7rFBHg7JCkRXV1esXbs2Zs+e3XOsrq4uZs+eHQ8++GCBkdWO7du3R0TEmDFjCo6k/BYuXBhnnXVWr+83+nbXXXfFtGnT4i/+4i9i7Nixccopp8SNN95YdFildvrpp8fq1avj8ccfj4iIX/7yl/HAAw/E3LlzC46sNmzYsCG2bNnS6+dz9OjRMX36dH8PBmD79u2RJEm89rWvLTqU0qpUKnH++efHpZdeGieccELR4cCQGlF0AEPhhRdeiO7u7hg3blyv4+PGjYt//dd/LSiq2lGpVOKSSy6JM844I0488cSiwym12267LdatWxePPPJI0aHUhKeeeiquv/76aG1tjU9+8pPxyCOPxMc//vFoaGiI+fPnFx1eKV1++eXR3t4exx13XNTX10d3d3d87nOfi/POO6/o0GrCli1bIiL6/HvwynMc2O7du+Oyyy6L97///dHc3Fx0OKV1zTXXxIgRI+LjH/940aHAkDskEwgOzsKFC+PXv/51PPDAA0WHUmqbNm2Kiy++OO65555oamoqOpyaUKlUYtq0aXH11VdHRMQpp5wSv/71r2PlypUSiH58+9vfjltuuSVuvfXWOOGEE2L9+vVxySWXREtLi3vGkNuzZ0+ce+65kaZpXH/99UWHU1pr166NL3/5y7Fu3bpIkqTocGDIHZJDmI4++uior6+PrVu39jq+devWGD9+fEFR1YZFixbF97///bj33nvj2GOPLTqcUlu7dm1s27Yt3v72t8eIESNixIgRcf/998dXvvKVGDFiRHR3dxcdYulMmDAhjj/++F7H3vrWt8bGjRsLiqj8Lr300rj88svjfe97X5x00klx/vnnxyc+8Yloa2srOrSa8MrvfH8PBu6V5OGZZ56Je+65R/XhAH7605/Gtm3bYtKkST1/D5555pn467/+65g8eXLR4UHVHZIJRENDQ5x66qmxevXqnmOVSiVWr14dM2bMKDCy8krTNBYtWhR33HFH/OQnP4kpU6YUHVLpvetd74pf/epXsX79+p42bdq0OO+882L9+vVRX19fdIilc8YZZ+y3PPDjjz8er3/96wuKqPx27doVdXW9f1XX19dHpVIpKKLaMmXKlBg/fnyvvwft7e3x85//3N+DA3gleXjiiSfin//5n+Ooo44qOqRSO//88+Nf/uVfev09aGlpiUsvvTR+/OMfFx0eVN0hO4SptbU15s+fH9OmTYvTTjstli9fHh0dHbFgwYKiQyulhQsXxq233hrf+973YtSoUT1jg0ePHh0jR44sOLpyGjVq1H5zRI444og46qijzB3pxyc+8Yk4/fTT4+qrr45zzz03Hn744bjhhhvihhtuKDq00po3b1587nOfi0mTJsUJJ5wQv/jFL+K6666LCy+8sOjQSmPnzp3x5JNP9jzesGFDrF+/PsaMGROTJk2KSy65JD772c/Gm970ppgyZUosWbIkWlpa4uyzzy4u6IId6J5NmDAhzjnnnFi3bl18//vfj+7u7p6/CWPGjImGhoaiwi7Uq32f/WGSddhhh8X48ePjLW95S96hwtArehmoofTVr341nTRpUtrQ0JCedtpp6UMPPVR0SKUVEX22b3zjG0WHVlMs4/rq/umf/ik98cQT08bGxvS4445Lb7jhhqJDKrX29vb04osvTidNmpQ2NTWlb3jDG9JPfepTaWdnZ9Ghlca9997b5++v+fPnp2m6bynXJUuWpOPGjUsbGxvTd73rXeljjz1WbNAFO9A927BhQ79/E+69996iQy/Mq32f/SHLuHIoS9LUdqYAAEA2h+QcCAAAYGhIIAAAgMwkEAAAQGYSCAAAIDMJBAAAkJkEAgAAyEwCAQAAZCaBAAAAMpNAAAAAmUkgAACAzCQQAABAZv8/v6mlCyfJK8EAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -732,16 +476,16 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 58, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, @@ -764,49 +508,94 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 46, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "tf.reduce_sum(W, axis = 1)" + "# save P_var in a csv file\n", + "P_var = pd.DataFrame(P_var.numpy())\n", + "P_var.to_csv('fractions_offline.csv', index=False)\n" ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.09639499 0.12729793 0.23459957 0.41402875 0.36049844 0.26723058\n", + " 0.2115465 0.19405711 0.18478479 0.13980062 0.13994262 0.11607832\n", + " 0.09175488 0.0632941 0.04659629 0.03013343]\n", + " [0.12620146 0.16665576 0.30712037 0.54200889 0.47193314 0.3498748\n", + " 0.27690055 0.25398197 0.24191404 0.18338147 0.18269152 0.15232642\n", + " 0.11995352 0.08292079 0.06101759 0.03935048]\n", + " [0.22641218 0.29897726 0.55092938 0.97226403 0.84656621 0.62773663\n", + " 0.49659521 0.45541238 0.43398238 0.33008539 0.3261457 0.27436976\n", + " 0.21467129 0.14893569 0.10950967 0.07028655]\n", + " [0.39378387 0.51998497 0.95816226 1.69092516 1.47231897 1.09180417\n", + " 0.86359832 0.79193614 0.75478386 0.57468617 0.56636982 0.47778342\n", + " 0.37307542 0.25912693 0.19048511 0.12207662]\n", + " [0.35647237 0.47071703 0.86738285 1.53072426 1.33282797 0.98834823\n", + " 0.78179446 0.71693113 0.68326978 0.52008892 0.5129196 0.4323717\n", + " 0.33779588 0.23455139 0.17243091 0.11055099]\n", + " [0.26753468 0.3533162 0.65117665 1.14924139 1.00064824 0.74162317\n", + " 0.58732927 0.53886382 0.51287895 0.38676528 0.39022833 0.32093044\n", + " 0.25525988 0.17547171 0.12927692 0.08398485]\n", + " [0.19920935 0.26301749 0.48454465 0.85504353 0.74451588 0.55244822\n", + " 0.43636769 0.39992703 0.38176326 0.29384136 0.28190307 0.24482138\n", + " 0.18721051 0.13157848 0.09648029 0.06086883]\n", + " [0.1613506 0.21301044 0.39234967 0.69231506 0.60283158 0.4475341\n", + " 0.35311644 0.3234834 0.30916702 0.23995134 0.22543669 0.20024725\n", + " 0.15067804 0.10687982 0.07821788 0.04874455]\n", + " [0.13737432 0.18140839 0.33430192 0.58997625 0.51369942 0.38085556\n", + " 0.30139054 0.27643401 0.26332769 0.19976474 0.19864603 0.16596112\n", + " 0.13050066 0.0902852 0.06642514 0.04279204]\n", + " [0.10224267 0.13528059 0.25013635 0.44190245 0.38466104 0.28253785\n", + " 0.22820868 0.21105966 0.19651811 0.12503586 0.18285417 0.09987932\n", + " 0.10867575 0.06347763 0.04855189 0.03858458]\n", + " [0.10257506 0.13507256 0.24770277 0.43648011 0.38020567 0.28570421\n", + " 0.21942582 0.19873545 0.19585395 0.18326248 0.09782913 0.15801886\n", + " 0.08078539 0.0727779 0.0508764 0.02223603]\n", + " [0.07530019 0.09967291 0.18442026 0.32587319 0.28364802 0.20795145\n", + " 0.16865159 0.15623218 0.14481448 0.08859261 0.13984989 0.07005195\n", + " 0.08175096 0.04620127 0.03562711 0.02941309]\n", + " [0.0485258 0.0639902 0.11763726 0.20744966 0.18066557 0.13484416\n", + " 0.10514047 0.09584125 0.0928361 0.07858743 0.05828873 0.06664866\n", + " 0.04217825 0.03315391 0.02376446 0.01282988]\n", + " [0.02468124 0.0326155 0.06017691 0.10624019 0.09249521 0.0683466\n", + " 0.05448597 0.05012546 0.04735665 0.03384553 0.03871787 0.02777235\n", + " 0.02444527 0.01589938 0.01185758 0.00827086]\n", + " [0.01226147 0.01619582 0.0298587 0.0527017 0.04588637 0.03397959\n", + " 0.02696037 0.02475461 0.02351171 0.01746924 0.01826483 0.01445196\n", + " 0.0118243 0.00800172 0.00591531 0.00392228]\n", + " [0.01015693 0.01337891 0.02454785 0.04326322 0.03768373 0.02827618\n", + " 0.02178737 0.01976054 0.01940159 0.01778297 0.01022538 0.01528303\n", + " 0.00817698 0.00714926 0.00502414 0.00230539]]\n" + ] } ], "source": [ - "P_var" + "age_groups = ['0-4', '5-9', '10-14', '15-19', '20-24', '25-29', '30-34', '35-39', '40-44', '45-49', '50-54', '55-59', '60-64', '65-69', '70-74', '75+']\n", + "consumption_distribution_raw = pd.read_csv('consumption_distribution.csv')\n", + "categories = consumption_distribution_raw['categories'].values\n", + "# take the category columns from consumption distribution and build a dictionary consumption_distribution with that as keys and the values should be other columns from the consumption distribution\n", + "consumption_distribution = {}\n", + "for category in categories:\n", + " consumption_distribution[category] = consumption_distribution_raw[consumption_distribution_raw['categories'] == category].values[0][:-1]\n", + "fraction_offline_raw = pd.read_csv('fractions_offline.csv')\n", + "fraction_offline = fraction_offline_raw['0'].values\n", + "from DP_epidemiology.contact_matrix import get_contact_matrix, get_age_group_count_map\n", + "week =\"2021-01-05\"\n", + "start_date = datetime.strptime(week, '%Y-%m-%d')\n", + "end_date = datetime.strptime(week, '%Y-%m-%d')\n", + "cities = data[\"merch_postal_code\"].astype(str).apply(categorize_city).unique()\n", + "counts_per_city = []\n", + "for city in cities:\n", + " counts = get_age_group_count_map(data, age_groups, consumption_distribution, start_date, end_date, city)\n", + " counts_per_city.append(list(counts.values()))" ] } ], diff --git a/src/DP_epidemiology/contact_matrix.py b/src/DP_epidemiology/contact_matrix.py index 4441690..e87999a 100644 --- a/src/DP_epidemiology/contact_matrix.py +++ b/src/DP_epidemiology/contact_matrix.py @@ -92,14 +92,12 @@ def get_age_group_count_map(df, age_groups, consumption_distribution, start_date return age_group_count_map # get average contact matrix for a group of cities - - -def get_contact_matrix(counts_per_city, population_distribution, fractions_offline): +def get_contact_matrix_country(counts_per_city, population_distribution, fractions_offline): age_bins = np.array(counts_per_city) num_cities = len(counts_per_city) - + delta = 1e-6 contact_matrix = np.sum([np.matmul(np.reshape( - x, (-1, 1)), np.reshape(1 / x, (1, -1))) for x in age_bins], axis=0) / num_cities + x, (-1, 1)), np.reshape(1 / (x + delta), (1, -1))) for x in age_bins], axis=0) / num_cities contact_matrix = contact_matrix*(population_distribution*fractions_offline) contact_matrix = (contact_matrix + np.transpose(contact_matrix))/2 return contact_matrix/population_distribution diff --git a/src/DP_epidemiology/utilities.py b/src/DP_epidemiology/utilities.py index 3c663c7..e205560 100644 --- a/src/DP_epidemiology/utilities.py +++ b/src/DP_epidemiology/utilities.py @@ -276,7 +276,8 @@ def compute_private_sum(df): df = df.copy() sum = df[df["merch_category"]==merch_category]["nb_transactions"].clip(lower=0, upper=upper_bound).sum() dp_sum = np.random.laplace(loc=sum, scale=scale) - return dp_sum/dp_dataset_size + # return dp_sum/dp_dataset_size + return dp_sum return dp.m.make_user_measurement( input_domain=dataframe_domain(),