{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# TCR restriction for every patient so far" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from nero import Harmonia, Hoplites\n", "from glob import glob\n", "import os\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "import scanpy as sc\n", "import matplotlib\n", "%matplotlib inline\n", "matplotlib.rcParams['pdf.fonttype'] = 42\n", "matplotlib.rcParams['ps.fonttype'] = 42" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "adata = sc.read(\"/covid/count_mat/run12345_combi_final2.h5ad\")\n", "adata = adata[~adata.obs.donor.isin(['Rep_C_1011', 'Rep_C_1035']),:]\n", "# Split adata into runs\n", "adata_split = {\"run{}\".format(n) : adata[adata.obs.run == run,:] for n, run in enumerate(adata.obs.run.unique())}\n", "clono_list = sorted(glob(\"/covid/yun/TCR/clonotypes*\"))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "master_df = pd.DataFrame()" ] }, { "cell_type": "code", "execution_count": 4, "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", " \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", " \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", " \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", " \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", "
wellrunpercent_miton_umin_genesbarcodeassignmentfreemux_clusterscrubletn_counts...GGT1-1TNFSF14-1DR3EGFR-1cell_type_highrescell_type_highres_mRNAcell_type_major_highrescell_type_major_lowcell_type_major_middlecell_type_major_top
AAACCTGAGAAGATTC-1-0-0200423_lane1200423_run10.0168973906.01320AAACCTGAGAAGATTC-0SNG2SNG3906.0...1.4796441.1607610.8683361.424757central_memory_CD4Tnaive_CD4TCD4Tmemory_CD4TTNKLymphoid
AAACCTGAGACGCACA-1-0-0200423_lane1200423_run10.0650101046.0498AAACCTGAGACGCACA-0SNG7SNG1046.0...1.8979011.5213411.0614581.278155cMonocMonoMonocytecMonoMonoDCMyeloid
AAACCTGAGACTAAGT-1-0-0200423_lane1200423_run10.0252672058.0890AAACCTGAGACTAAGT-0SNG0SNG2058.0...1.5921651.1018730.8420441.442111memory_CD4Tmemory_CD4TCD4Tmemory_CD4TTNKLymphoid
AAACCTGAGCCATCGC-1-0-0200423_lane1200423_run10.0319183415.01560AAACCTGAGCCATCGC-0SNG3SNG3414.0...1.6751701.2024930.8603291.448289T_boundplateletCD8T_boundplateletleuko_plateletleuko_plateletleuko_platelet_megakaryocyteMegakaryocyte_LeukoPlatelets
AAACCTGAGCTATGCT-1-0-0200423_lane1200423_run10.0445711234.0561AAACCTGAGCTATGCT-0SNG9SNG1234.0...2.0941331.4309830.8777671.574764ISG_cMonoISG_cMonoMonocytecMonoMonoDCMyeloid
..................................................................
TTTGTCATCAGCGATT-1-5-4200605_lane6200605_run50.0446637926.02417TTTGTCATCAGCGATT-5SNG21SNG7926.0...1.5931611.4079440.9221871.633517ncMononcMonoMonocytencMonoMonoDCMyeloid
TTTGTCATCAGGTTCA-1-5-4200605_lane6200605_run50.075439570.0284TTTGTCATCAGGTTCA-5SNG10SNG570.0...1.7713441.2727560.9039611.498104MegakaryocytesMegakaryocytes_highMegakaryocyteleuko_plateletleuko_platelet_megakaryocyteMegakaryocyte_LeukoPlatelets
TTTGTCATCAGTGTTG-1-5-4200605_lane6200605_run50.0645762710.01145TTTGTCATCAGTGTTG-5SNG14SNG2710.0...1.4688291.3148151.2608041.418170EMRA_CD4Tnaive_CD8TCD4Tmemory_CD4TTNKLymphoid
TTTGTCATCCAAGTAC-1-5-4200605_lane6200605_run50.0359377068.02014TTTGTCATCCAAGTAC-5SNG21SNG7067.0...2.1206841.2640180.6745741.353770cMonocMonoMonocytecMonoMonoDCMyeloid
TTTGTCATCCTAGTGA-1-5-4200605_lane6200605_run50.0533832941.01137TTTGTCATCCTAGTGA-5SNG20SNG2941.0...1.6800101.4599230.8435391.306694CD8T_boundplateletCD4T_boundplateletleuko_plateletleuko_plateletleuko_platelet_megakaryocyteMegakaryocyte_LeukoPlatelets
\n", "

357244 rows × 222 columns

\n", "
" ], "text/plain": [ " well run percent_mito n_umi \\\n", "AAACCTGAGAAGATTC-1-0-0 200423_lane1 200423_run1 0.016897 3906.0 \n", "AAACCTGAGACGCACA-1-0-0 200423_lane1 200423_run1 0.065010 1046.0 \n", "AAACCTGAGACTAAGT-1-0-0 200423_lane1 200423_run1 0.025267 2058.0 \n", "AAACCTGAGCCATCGC-1-0-0 200423_lane1 200423_run1 0.031918 3415.0 \n", "AAACCTGAGCTATGCT-1-0-0 200423_lane1 200423_run1 0.044571 1234.0 \n", "... ... ... ... ... \n", "TTTGTCATCAGCGATT-1-5-4 200605_lane6 200605_run5 0.044663 7926.0 \n", "TTTGTCATCAGGTTCA-1-5-4 200605_lane6 200605_run5 0.075439 570.0 \n", "TTTGTCATCAGTGTTG-1-5-4 200605_lane6 200605_run5 0.064576 2710.0 \n", "TTTGTCATCCAAGTAC-1-5-4 200605_lane6 200605_run5 0.035937 7068.0 \n", "TTTGTCATCCTAGTGA-1-5-4 200605_lane6 200605_run5 0.053383 2941.0 \n", "\n", " n_genes barcode assignment \\\n", "AAACCTGAGAAGATTC-1-0-0 1320 AAACCTGAGAAGATTC-0 SNG \n", "AAACCTGAGACGCACA-1-0-0 498 AAACCTGAGACGCACA-0 SNG \n", "AAACCTGAGACTAAGT-1-0-0 890 AAACCTGAGACTAAGT-0 SNG \n", "AAACCTGAGCCATCGC-1-0-0 1560 AAACCTGAGCCATCGC-0 SNG \n", "AAACCTGAGCTATGCT-1-0-0 561 AAACCTGAGCTATGCT-0 SNG \n", "... ... ... ... \n", "TTTGTCATCAGCGATT-1-5-4 2417 TTTGTCATCAGCGATT-5 SNG \n", "TTTGTCATCAGGTTCA-1-5-4 284 TTTGTCATCAGGTTCA-5 SNG \n", "TTTGTCATCAGTGTTG-1-5-4 1145 TTTGTCATCAGTGTTG-5 SNG \n", "TTTGTCATCCAAGTAC-1-5-4 2014 TTTGTCATCCAAGTAC-5 SNG \n", "TTTGTCATCCTAGTGA-1-5-4 1137 TTTGTCATCCTAGTGA-5 SNG \n", "\n", " freemux_cluster scrublet n_counts ... GGT1-1 \\\n", "AAACCTGAGAAGATTC-1-0-0 2 SNG 3906.0 ... 1.479644 \n", "AAACCTGAGACGCACA-1-0-0 7 SNG 1046.0 ... 1.897901 \n", "AAACCTGAGACTAAGT-1-0-0 0 SNG 2058.0 ... 1.592165 \n", "AAACCTGAGCCATCGC-1-0-0 3 SNG 3414.0 ... 1.675170 \n", "AAACCTGAGCTATGCT-1-0-0 9 SNG 1234.0 ... 2.094133 \n", "... ... ... ... ... ... \n", "TTTGTCATCAGCGATT-1-5-4 21 SNG 7926.0 ... 1.593161 \n", "TTTGTCATCAGGTTCA-1-5-4 10 SNG 570.0 ... 1.771344 \n", "TTTGTCATCAGTGTTG-1-5-4 14 SNG 2710.0 ... 1.468829 \n", "TTTGTCATCCAAGTAC-1-5-4 21 SNG 7067.0 ... 2.120684 \n", "TTTGTCATCCTAGTGA-1-5-4 20 SNG 2941.0 ... 1.680010 \n", "\n", " TNFSF14-1 DR3 EGFR-1 cell_type_highres \\\n", "AAACCTGAGAAGATTC-1-0-0 1.160761 0.868336 1.424757 central_memory_CD4T \n", "AAACCTGAGACGCACA-1-0-0 1.521341 1.061458 1.278155 cMono \n", "AAACCTGAGACTAAGT-1-0-0 1.101873 0.842044 1.442111 memory_CD4T \n", "AAACCTGAGCCATCGC-1-0-0 1.202493 0.860329 1.448289 T_boundplatelet \n", "AAACCTGAGCTATGCT-1-0-0 1.430983 0.877767 1.574764 ISG_cMono \n", "... ... ... ... ... \n", "TTTGTCATCAGCGATT-1-5-4 1.407944 0.922187 1.633517 ncMono \n", "TTTGTCATCAGGTTCA-1-5-4 1.272756 0.903961 1.498104 Megakaryocytes \n", "TTTGTCATCAGTGTTG-1-5-4 1.314815 1.260804 1.418170 EMRA_CD4T \n", "TTTGTCATCCAAGTAC-1-5-4 1.264018 0.674574 1.353770 cMono \n", "TTTGTCATCCTAGTGA-1-5-4 1.459923 0.843539 1.306694 CD8T_boundplatelet \n", "\n", " cell_type_highres_mRNA cell_type_major_highres \\\n", "AAACCTGAGAAGATTC-1-0-0 naive_CD4T CD4T \n", "AAACCTGAGACGCACA-1-0-0 cMono Monocyte \n", "AAACCTGAGACTAAGT-1-0-0 memory_CD4T CD4T \n", "AAACCTGAGCCATCGC-1-0-0 CD8T_boundplatelet leuko_platelet \n", "AAACCTGAGCTATGCT-1-0-0 ISG_cMono Monocyte \n", "... ... ... \n", "TTTGTCATCAGCGATT-1-5-4 ncMono Monocyte \n", "TTTGTCATCAGGTTCA-1-5-4 Megakaryocytes_high Megakaryocyte \n", "TTTGTCATCAGTGTTG-1-5-4 naive_CD8T CD4T \n", "TTTGTCATCCAAGTAC-1-5-4 cMono Monocyte \n", "TTTGTCATCCTAGTGA-1-5-4 CD4T_boundplatelet leuko_platelet \n", "\n", " cell_type_major_low cell_type_major_middle \\\n", "AAACCTGAGAAGATTC-1-0-0 memory_CD4T TNK \n", "AAACCTGAGACGCACA-1-0-0 cMono MonoDC \n", "AAACCTGAGACTAAGT-1-0-0 memory_CD4T TNK \n", "AAACCTGAGCCATCGC-1-0-0 leuko_platelet leuko_platelet_megakaryocyte \n", "AAACCTGAGCTATGCT-1-0-0 cMono MonoDC \n", "... ... ... \n", "TTTGTCATCAGCGATT-1-5-4 ncMono MonoDC \n", "TTTGTCATCAGGTTCA-1-5-4 leuko_platelet leuko_platelet_megakaryocyte \n", "TTTGTCATCAGTGTTG-1-5-4 memory_CD4T TNK \n", "TTTGTCATCCAAGTAC-1-5-4 cMono MonoDC \n", "TTTGTCATCCTAGTGA-1-5-4 leuko_platelet leuko_platelet_megakaryocyte \n", "\n", " cell_type_major_top \n", "AAACCTGAGAAGATTC-1-0-0 Lymphoid \n", "AAACCTGAGACGCACA-1-0-0 Myeloid \n", "AAACCTGAGACTAAGT-1-0-0 Lymphoid \n", "AAACCTGAGCCATCGC-1-0-0 Megakaryocyte_LeukoPlatelets \n", "AAACCTGAGCTATGCT-1-0-0 Myeloid \n", "... ... \n", "TTTGTCATCAGCGATT-1-5-4 Myeloid \n", "TTTGTCATCAGGTTCA-1-5-4 Megakaryocyte_LeukoPlatelets \n", "TTTGTCATCAGTGTTG-1-5-4 Lymphoid \n", "TTTGTCATCCAAGTAC-1-5-4 Myeloid \n", "TTTGTCATCCTAGTGA-1-5-4 Megakaryocyte_LeukoPlatelets \n", "\n", "[357244 rows x 222 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "adata.obs" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Gini index for ID ICC_C_0001: 0.36562779414821805\n", "Gini index for ID ICC_C_0002: 0.045312977099236644\n", "Gini index for ID ICC_C_0003: 0.21444225727014082\n", "Gini index for ID ICC_C_0004: 0.026675579159417637\n", "Gini index for ID ICC_C_0005: 0.38568831859808583\n", "Gini index for ID Rep_C_1001: 0.14186159590247052\n", "Gini index for ID Rep_C_1002: 0.0\n", "Gini index for ID Rep_C_1003: 0.04567702642225149\n", "Gini index for ID Rep_C_1005: 0.2644538600522889\n", "Gini index for ID Rep_C_1006: 0.07712765957446809\n", "Gini index for ID Rep_C_1007: 0.4742294965405967\n", "Gini index for ID Rep_C_1008: 0.04997137593288437\n", "Gini index for ID Rep_C_1009: 0.05524164391019915\n", "Gini index for ID Rep_C_1010: 0.05360068586455412\n", "Gini index for ID Rep_C_1012: 0.24989480574126888\n", "Gini index for ID Rep_C_1014: 0.1765332268754844\n", "Gini index for ID Rep_C_1015: 0.4765969662597367\n", "Gini index for ID Rep_C_1016: 0.01207108249817482\n", "Gini index for ID Rep_C_1017: 0.39915694630775783\n", "Gini index for ID Rep_C_1018: 0.16480674443831236\n", "Gini index for ID Rep_C_1020: 0.10570686410228493\n", "Gini index for ID Rep_C_1023: 0.5156233251152321\n", "Gini index for ID Rep_C_1025: 0.2552383968797375\n", "Gini index for ID Rep_C_1030: 0.0343253635179101\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Gini index for ID ICC_C_0001: 0.19150579375323656\n", "Gini index for ID ICC_C_0003: 0.3278959343855228\n", "Gini index for ID Rep_C_1001: 0.09726013865440569\n", "Gini index for ID Rep_C_1002: 0.10498979092663127\n", "Gini index for ID Rep_C_1003: 0.033008095180171816\n", "Gini index for ID Rep_C_1005: 0.12055480664659032\n", "Gini index for ID Rep_C_1006: 0.12268023065494926\n", "Gini index for ID Rep_C_1008: 0.04313220233804613\n", "Gini index for ID Rep_C_1009: 0.061458601397961804\n", "Gini index for ID Rep_C_1010: 0.0631224395078749\n", "Gini index for ID Rep_C_1014: 0.10292504539674488\n", "Gini index for ID Rep_C_1015: 0.46401117535506153\n", "Gini index for ID Rep_C_1021: 0.18256162599228293\n", "Gini index for ID Rep_C_1026: 0.1356431590412634\n", "Gini index for ID Rep_C_1028: 0.018148030158224488\n", "Gini index for ID Rep_C_1029: 0.036599578828823295\n", "Gini index for ID Rep_C_1033: 0.30064909729365447\n", "Gini index for ID Rep_C_1036: 0.14961482575395169\n", "Gini index for ID Rep_C_1037: 0.2079804357604165\n", "Gini index for ID Rep_C_1038: 0.37476635163937805\n", "Gini index for ID Rep_C_1040: 0.02659736956437305\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Gini index for ID ICC_C_0001: 0.3250842709965342\n", "Gini index for ID ICC_C_0003: 0.1752136752136752\n", "Gini index for ID None: 0.08210853742760076\n", "Gini index for ID Rep_C_1001: 0.10951859025659465\n", "Gini index for ID Rep_C_1002: 0.08526652090156889\n", "Gini index for ID Rep_C_1003: 0.02009832710234263\n", "Gini index for ID Rep_C_1005: 0.14139557925426066\n", "Gini index for ID Rep_C_1016: 0.03434904331596367\n", "Gini index for ID Rep_C_1018: 0.1133869505204287\n", "Gini index for ID Rep_C_1023: 0.2820465681034999\n", "Gini index for ID Rep_C_1025: 0.21851923722413358\n", "Gini index for ID Rep_C_1026: 0.13582361685325406\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Gini index for ID ICC_C_0001: 0.4013605442176871\n", "Gini index for ID ICC_C_0003: 0.21606830265050206\n", "Gini index for ID None: 0.17645491577604838\n", "Gini index for ID Rep_C_1016: 0.11586731484801636\n", "Gini index for ID Rep_C_1023: 0.4021464106636463\n", "Gini index for ID Rep_C_1025: 0.2271908464185571\n", "Gini index for ID Rep_C_1028: 0.05022679324894515\n", "Gini index for ID Rep_C_1033: 0.11823200873082108\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Clonotype frequencies can be also found in Hoplites.summary_attr\n", "Gini index for ID ICC_C_0001: 0.4033771739654093\n", "Gini index for ID ICC_C_0003: 0.22157519435979442\n", "Gini index for ID None: 0.13989784704019223\n", "Gini index for ID Rep_C_1002: 0.12700922796287353\n", "Gini index for ID Rep_C_1003: 0.06795403161108159\n", "Gini index for ID Rep_C_1005: 0.16748211061325485\n", "Gini index for ID Rep_C_1014: 0.1315047631524004\n", "Gini index for ID Rep_C_1023: 0.39877595398428733\n", "Gini index for ID Rep_C_1025: 0.2743605459879817\n", "Gini index for ID Rep_C_1028: 0.059489394058951386\n", "Gini index for ID Rep_C_1033: 0.10753070400215173\n", "Gini index for ID Rep_C_1037: 0.0\n" ] } ], "source": [ "for n, clono in enumerate(clono_list):\n", " df = pd.read_csv(clono, sep='\\t')\n", " df = df.merge(adata_split[\"run{}\".format(n)].obs[['barcode', 'donor', 'timepoint', 'COVID_status']], on='barcode', how='left')\n", " df.dropna(axis=0, subset=['donor'], inplace=True)\n", " hop = Hoplites.Hoplites(meta=None, clonotypes=df, verbose=True)\n", " hop.summary(genotypes='donor')\n", " gini_df = hop.gini(plot=False)\n", " gini_df = gini_df.merge(hop.clonotypes[['donor', 'timepoint', 'COVID_status']].drop_duplicates(), left_on='ID', right_on='donor', how='left')\n", " gini_df.drop('donor', axis=1, inplace=True)\n", " master_df = pd.concat([master_df, gini_df], ignore_index=True)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "master_df = master_df[master_df.ID != \"None\"].sort_values(\"COVID_status\", axis=0)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "master_df.to_csv(\"out_gini_12345.csv\", index=False)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[Text(0, 0, 'Rep_C_1021'),\n", " Text(0, 0, 'Rep_C_1008'),\n", " Text(0, 0, 'Rep_C_1020'),\n", " Text(0, 0, 'Rep_C_1009'),\n", " Text(0, 0, 'Rep_C_1017'),\n", " Text(0, 0, 'Rep_C_1016'),\n", " Text(0, 0, 'Rep_C_1010'),\n", " Text(0, 0, 'Rep_C_1028'),\n", " Text(0, 0, 'Rep_C_1040'),\n", " Text(0, 0, 'Rep_C_1030'),\n", " Text(0, 0, 'ICC_C_0001'),\n", " Text(0, 0, 'ICC_C_0003'),\n", " Text(0, 0, 'ICC_C_0005'),\n", " Text(0, 0, 'ICC_C_0004'),\n", " Text(0, 0, 'ICC_C_0002'),\n", " Text(0, 0, 'Rep_C_1014'),\n", " Text(0, 0, 'Rep_C_1005'),\n", " Text(0, 0, 'Rep_C_1018'),\n", " Text(0, 0, 'Rep_C_1023'),\n", " Text(0, 0, 'Rep_C_1025'),\n", " Text(0, 0, 'Rep_C_1026'),\n", " Text(0, 0, 'Rep_C_1003'),\n", " Text(0, 0, 'Rep_C_1002'),\n", " Text(0, 0, 'Rep_C_1001'),\n", " Text(0, 0, 'Rep_C_1033'),\n", " Text(0, 0, 'Rep_C_1006'),\n", " Text(0, 0, 'Rep_C_1015'),\n", " Text(0, 0, 'Rep_C_1029'),\n", " Text(0, 0, 'Rep_C_1036'),\n", " Text(0, 0, 'Rep_C_1037'),\n", " Text(0, 0, 'Rep_C_1038'),\n", " Text(0, 0, 'Rep_C_1012'),\n", " Text(0, 0, 'Rep_C_1007')]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJ0AAAMQCAYAAACNORTPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde5ieVWEu/HvlACQkIWGHk0CIyoYAV/DDBAE5JIKIyKYVKkV2UaMgiICWY6lICEGrQJF+lSKfUqVWBWkAEeSgcggqVIHSbhCwxQLBcAhoIMCEk6z9xwz5cphkZpJn5p2Z/H7XNde873pO9zt/5bqz1npLrTUAAAAA0KQhrQ4AAAAAwOCjdAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABo3rNUB+sr48ePrxIkTWx0DAAAAYNC45557nq21btTZsbWmdJo4cWLuvvvuVscAAAAAGDRKKY+t7JjldQAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOGtToAAEBvWbRoURYsWJDXXnut1VEGveHDh2fjjTfOmDFjWh0FAOgnlE4AwKC0aNGiPP3009l8880zYsSIlFJaHWnQqrVm8eLFmT9/fpIongCAJJbXAQCD1IIFC7L55ptn5MiRCqdeVkrJyJEjs/nmm2fBggWtjgMA9BNKJwBgUHrttdcyYsSIVsdYq4wYMcJSRgBgCaUTADBomeHUt/y9AYClKZ0AAAAAaJzSCQAAAIDGKZ0AAJJcccUVufTSS5cZmz59ej70oQ+1JtAaWt3s5557bm677bbmAwEAa51hrQ4AANAfXHHFFXn22WczY8aMJWMXXXRRhg8f3rpQa2B1s5977rk57rjjMn369OZDAQBrFaUTAMBKbL/99q2OsNoGcnYAYHCwvA4AWOvNmDEjV155ZebOnZtSSkopmTVr1gpL1GbNmpXx48fnl7/8ZaZOnZoRI0Zkjz32yCOPPJIFCxbkgx/8YEaNGpXtttsut9xyywrPueSSS7LDDjtk3XXXzVZbbZVzzz13hRxTp07ND37wg0yaNCnrrbde9thjjzzwwAPLnNfW1pbPfOYz2XTTTbPeeutl5513zo9//ONlzllZ9nvvvTe77rprRo4cmZ122ik/+9nPlpwzceLE/P73v89ZZ5215O9gqR0AsLqUTgDAWu+MM87Ie97znuy000658847c+edd+bII4/s9Ny2trYcddRROeGEE3LZZZdl3rx5+chHPpLDDjsse+yxR6666qpsvvnmOeSQQ9LW1rbkuvPOOy/HHHNMPvjBD+a6667LMccckzPOOCMXXnjhMvd/7LHHcuKJJ+aMM87I9773vTz//PPZb7/98vLLLy8555Of/GS+9a1v5fTTT8/VV1+dLbfcMgcccEB+/vOfr/JztrW15WMf+1iOPvroXHnllVl33XVz0EEHLcl59dVXZ4MNNsgRRxyx5O/wzne+c3X/rADAWs7yOgBgrff2t789G264Yd54443suuuuqzx38eLF+fu///tMmzYtSfLEE0/k2GOPzVlnnZWTTz45SbLFFltkhx12yNy5c7P//vtn0aJFOeuss/L5z38+Z555ZpJk3333TVtbW77whS/kmGOOydChQ5Mkzz77bK655pq8+93vTpJMmTIlb3/723PppZfmU5/6VB588MFcdtll+da3vpWPfexjSZL99tsvO+64Y84+++zcdNNNq8z+d3/3d9l7772TJJtttll22mmn3H777Xn/+9+fnXbaKcOGDcsWW2zR5d8BAKArZjoBAPTAOuuskz333HPJ+6233jpJlhQ5S4/Nnz8/SXLnnXfmpZdeyiGHHJLXX399yc/ee++dp59+Or/73e+WXLvxxhsvKZySZKuttsqUKVPyq1/9Kkly1113pdaaQw45ZMk5Q4YMySGHHNLlTKfhw4cvs0H4m/s+Lf18AICmmOkEANADo0ePzpAh////262zzjpJkrFjx64w9uaSuGeffTZJssMOO3R6z8cffzxbbbVVkvbSaXkbb7xxnnzyySTJk08+mVGjRmXkyJHLnLPJJpukra0tr7zyStZdd91OnzNmzJhOsy+9dA8AoClKJwCAXrbhhhsmSa677rpssskmKxzfdtttl7xesGDBCscXLFiwpLDabLPN8uKLL6atrW2Z4unpp5/OyJEjV1o4AQD0NaUTAEDaZ/301oyf3XbbLSNGjMgTTzyRAw44YJXnLliwIHfccceSJXbz5s3Lv/3bv+XjH/94kmTnnXdOKSVz5szJRz/60SRJrTVz5szJHnvsscZZe/PvAACsXZROAABJJk2alGuuuSY/+MEPssUWW+Qtb3lLY/ceO3ZsZs2alc9+9rN57LHHstdee+WNN97If/7nf+bWW2/N1VdfveTc8ePH5yMf+UjOPvvsjBgxIjNnzszGG2+cGTNmJEm22267HHbYYTnuuOOyaNGibL311vnGN76Rhx56KF/72tfWOOukSZPyox/9KO9///szatSobLvtthk9evQa3xcAWPsonQAAknz605/Ovffem0984hNZuHDhkm+Za8qpp56at7zlLbngggty/vnnZ7311ss222yTQw89dJnzttpqq3zuc5/LaaedlsceeyxTp07NZZddlvXWW2/JOd/4xjfyV3/1Vzn77LPz3HPPZfLkybnuuusamel03nnn5dhjj80BBxyQtra23HrrrctsPg4A0F2l1trqDH1i6tSp9e677251DACgjzz44IPZbrvtWh2jR2bMmJH7778/A/nfLAPx7w4ArL5Syj211qmdHRvS2SAAAAAArAmlEwAAAACNs6cTAEA/cemll7Y6AgBAY5ROAAC01LzZk1cYmzDzvhYkAQCaZHkdAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEA9GOzZs1KKSX77bffCsc+9KEPZfr06X0fCgCgG4a1OgAAQF+acsq3W/Lce8776Bpd/+Mf/zh33XVXdt5554YSAQD0LjOdAAD6uQ033DA77rhjvvjFL7Y6CgBAtymdAAD6uVJKPve5z+WHP/xh7rvvvpWe9+///u/ZZ599MnLkyIwbNy5/8Rd/kaeffnrJ8UcffTSllFxxxRU5+uijs8EGG2SLLbbImWeemTfeeGOZe91///054IADMnr06IwePTqHHHJInnrqqV77jADA4KN0AgAYAA455JBss802K53t9Mwzz2T69Olpa2vL9773vXz1q1/N3Llzs+++++bVV19d5txTTz01o0aNypw5c3L44Ydn9uzZmTNnzpLjDz/8cHbfffe8/PLL+ed//udceuml+fWvf50DDzwwtdZe/ZwAwOBhTycAgAFgyJAhOe2003LEEUdk9uzZ2WabbZY5fv755ydJbrrppowZMyZJss0222SXXXbJlVdemcMOO2zJuXvttdeS8/fdd9/ceOONueqqq/Lnf/7nSZKzzjorm266aW644Yass846SZIdd9wxkyZNyvXXX58DDjig1z8vADDwmekEADBAHH744ZkwYUK+9KUvrXDsV7/6Vd73vvctKZyS5F3velcmTpyYn//858uc+773vW+Z99tvv31+97vfLXn/05/+NAcddFCGDBmS119/Pa+//nre+ta3ZuLEibn77rsb/lQAwGCldAIAGCCGDRuWU089Nd/5znfy2GOPLXPsySefzCabbLLCNZtsskn+8Ic/LDM2duzYZd6vs846efnll5e8f/bZZ3POOedk+PDhy/z893//dx5//PEGPxEAMJhZXgcAMIB84hOfyBe+8IWcc845y4xvttlmWbBgwQrnP/3005kyZUqPnrHhhhvmoIMOypFHHrnCsfHjx/csMACw1mpJ6VRK2T7JV5PsluS5JJckOavW+sdVXDMxySOdHPp+rfXDvRATAKDfWXfddXPyySfnr//6rzNlypQMHz48SbLLLrvka1/7Wl544YWMHj06SXLXXXfl0UcfzR577NGjZ+yzzz65//77M2XKlJRSGv8MAMDaoc+X15VSxiX5aZKa5E+TzE5yUpKzunmLk9NeVr358/leiAkA0G8dffTRGT16dO64444lYyeeeGKSZL/99ss111yT7373uzn44IMzefLk/Nmf/VmP7j9r1qzcf//9OeCAAzJnzpzcdttt+e53v5sZM2bktttua/KjAACDWCtmOn0qyYgkB9daFyX5SSllTJJZpZRzO8ZW5Te11n/t9ZQAwKB0z3kfbXWENTZy5MiccMIJOf3005eMbbTRRrn11ltz0kkn5bDDDss666yTD3zgA7nggguWfANdd22zzTb513/913z+85/PUUcdlcWLF2fzzTfPPvvsk6233rrpjwMADFKl1tq3Dyzl9iRPLL0krpQyIcljSf6k1nrtSq6bmPbldQfWWq/r6XOnTp1afdsKAKw9HnzwwWy33XatjrHWWZ2/+7zZk1cYmzDzvqYiAQC9qJRyT611amfHWvHtdZOSPLT0QK11XpK2jmNd+VYp5Y+llCdLKV8ppYzojZAAAAAArL5WLK8bl/bNw5e3sOPYyryS5B+S/DjJoiTTk/xVkrenfW+oFZRSjkpyVJJMmDBhtQMDAAAA0DMt+fa6tG8ivryykvH2C2p9MslxSw3dVkp5OslFpZT/p9b6751c8/UkX0/al9etWWQAAAAAuqsVy+sWJhnbyfgG6XwG1KrM6fj9zjVKBAAAAECjWlE6PZTl9m4qpWyZZP0st9dTN9TlfgMAAADQD7SidLohyX6llNFLjR2aZHGSuT2814c6ft/TRDAAAAAAmtGKPZ0uTvKZJFeVUs5J8rYks5J8pda66M2TSikPJ5lbaz2i4/2sJKOT/CLtG4nvleSUJFfVWv9PX34AAAAAAFatz0unWuvCUso+SS5Mcm3a93G6IO3F09KGJRm61PuHkpyc5MgkI5LMS3Jeki/2cmQAAAAAeqgl315Xa30gyd5dnDNxufeXJ7m8F2MBAAAA0JBW7OkEAAAAwCDXkplOAACtMm/25JY8d8LM+1brugceeCDHH3987rzzzowdOzZHHnlkzjzzzAwdOrTriwEAWkjpBADQTy1cuDDvfe97s/322+eaa67Jb3/725x00kl544038oUvfKHV8QAAVknpBADQT1188cVZvHhxrrrqqowZMyb77rtvFi1alFmzZuXUU0/NmDFjWh0RAGCl7OkEANBP3XDDDdlvv/2WKZc+/OEPZ/HixZk7d24LkwEAdE3pBADQTz300EOZNGnSMmMTJkzIyJEj89BDD7UoFQBA9yidAAD6qYULF2bs2LErjI8bNy4LFy5sQSIAgO5TOgEA9GOllBXGaq2djgMA9CdKJwCAfmrcuHF57rnnVhh//vnnO50BBQDQnyidAAD6qUmTJq2wd9Pjjz+el156aYW9ngAA+hulEwBAP7X//vvnpptuygsvvLBk7Pvf/35GjBiRadOmtTAZAEDXlE4AAP3Upz71qay77ro5+OCD89Of/jRf//rXM2vWrJx44okZM2ZMq+MBAKzSsFYHAADoSxNm3tfqCN02bty43HzzzTnuuONy4IEHZuzYsTnhhBMya9asVkcDAOiS0gkAoB/bfvvtc8stt7Q6BgBAj1leBwAAAEDjlE4AAAAANE7pBAAAAEDjlE4AAAAANE7pBAAAAEDjfHsdAAAAA8q82ZM7HZ8w874+TgKsiplOAAAAADRO6QQAAABA45ROAAAAADTOnk4AAAPE/Pnzs+222+all17KCy+8kFGjRrU6EgDQj7V6/zOlEwCwVtn9q7u35Lm/OP4Xa3yPU045JaNGjcpLL73UQCIAgN5leR0AwADws5/9LDfeeGNOPvnkVkcBAOgWM50AAPq5P/7xjzn++OMzc+bMjB07ttVxAAC6xUwnAIB+7uKLL87LL7+cY489ttVRAAC6zUwnAIB+7Pe//33OOOOMfOc738nw4cNbHQcAoNvMdAIA6MdOP/307LLLLvnABz7Q6igAAD1iphMAQD/161//Ot/85jdz++2357nnnkuStLW1JUmef/75DB06NCNGjGhlRACAlVI6AQD0U//1X/+V1157LbvtttsKx7bYYoscccQRueSSS1qQDACga0onAIB+ao899sitt966zNiNN96Yc845J9dff33e9ra3tSgZAEDXlE4AAP3U+PHjM3369GXGHn300STJnnvumVGjRvV9KACAblI6AQBrlV8c/4tWRwAAWCsonQAABpAZM2ZkxowZrY4B0C/t/tXdVxjznw3QOkNaHQAAAACAwUfpBAAAAEDjlE4AAAAANE7pBAAAAEDjlE4AAAAANE7pBAAAAEDjlE4AAAAANE7pBAAAAEDjlE4AAAAANE7pBAAAAEDjhrU6AABAX5q717SWPHfa7XNX67rp06dn7tzOr73jjjuy2267rUksAIBeo3QCAOjHLrrooixatGiZsZkzZ+bee+/Nzjvv3KJUAABdUzoBAPRj22+//TLvX3311dx999059NBDM2yYf8oBAP2XPZ0AAAaQG2+8MQsXLsxhhx3W6igAAKukdAIAGEAuv/zybL755tlzzz1bHQUAYJWUTgAAA0RbW1uuvfbaHHrooSmltDoOAMAqKZ0AAAaIa6+9Ni+++KKldQDAgKB0AgAYIC6//PJsvfXWmTp1aqujAAB0SekEADAAPP/887nhhhvMcgIABgylEwDAAHD11VfnlVdeUToBAAOG0gkAYAC4/PLL8453vCPbbbddq6MAAHTLsFYHAADoS9Nun9vqCD327LPP5uabb87ZZ5/d6igAAN2mdAIA6OfGjx+f1157rdUxAAB6xPI6AAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIA6McefvjhHH300XnHO96RoUOHZvr06as8/y//8i9TSsnJJ5/cNwEBAFZiWKsDAAD0pQtPurYlzz3u/ANX67pf//rXuf7667Prrrvm1VdfXeW5DzzwQL75zW9mzJgxq/UsAIAmmekEANCPHXjggXn88cfzL//yL9lhhx1Wee5nPvOZfPazn824ceP6KB0AwMopnQAA+rEhQ7r3z7U5c+bkwQcfzGmnndbLiQAAukfpBAAwwC1evDgnnXRSvvzlL2f99ddvdRwAgCRKJwCAAe9LX/pSNttssxx++OGtjgIAsISNxAEABrBHHnkkf/u3f5tbbrklpZRWxwEAWELpBAAwgJ122mnZf//9M2nSpDz33HNJkjfeeCOvvPJKnnvuuWywwQbKKACgJSyvAwAYwH7zm9/kqquuyrhx45b8PP7447nwwgszbty4zJ8/v9URAYC1lJlOAAAD2CWXXJIXX3xxmbEPf/jDmTZtWo455phstNFGLUoGAKztlE4AAP1YW1tbrr/++iTJ/Pnzs2jRosyZMydJ8oEPfCBTp05d4Zr11lsvW265ZaZPn96XUQEAlqF0AgDWKsedf2CrI/TIggULcsghhywz9ub7Rx55JBMnTmxBKgCArimdAAD6sYkTJ6bW2qNrHn300d4JAwDQAzYSBwAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAGrZ5uwM2a8fcGAJamdAIABqXhw4dn8eLFrY6xVlm8eHGGDx/e6hgAQD+hdAIABqWNN9448+fPT1tbmxk4vazWmra2tsyfPz8bb7xxq+MAAP3EsFYHAADoDWPGjEmSPPHEE3nttddanGbwGz58eDbZZJMlf3cAAKUTADBojRkzRgkCANAiltcBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0DilEwAAAACNUzoBAAAA0LiWlE6llO1LKTeXUtpKKU+UUmaXUob24PohpZR7Sim1lPK/ejMrAAAAAD03rK8fWEoZl+SnSR5I8qdJ3p7k/LQXYJ/v5m2OTLJ5rwQEAAAAYI21YqbTp5KMSHJwrfUntdaLk5yV5MRSypiuLu4orb6Y5PTejQkAAADA6urzmU5J9k9yU6110VJjlyc5J8m0JNd2cf3ZSX6R5ObeiQcAQH80d69pnY5Pu31uHycBALqjFTOdJiV5aOmBWuu8JG0dx1aqlLJjko8nObnX0gEAAACwxlpROo1L8lwn4ws7jq3KV5P8Q6314e48qJRyVCnl7lLK3c8880wPYwIAAACwulqxvC5JaidjZSXj7QdL+XCSbZMc2O2H1Pr1JF9PkqlTp6703tCVebMndzo+YeZ9fZwEAFjehSetuDvDced3+5+MAEAvacVMp4VJxnYyvkE6nwGVUsrwJOelfd+nIaWUsUne3HR8/VLK6N4ICgAAAMDqaUXp9FCW27uplLJlkvWz3F5PS1k/yRZJvpL20mphkv/oOHZ5knt7JSkAAAAAq6UVy+tuSHJKKWV0rfWFjrFDkyxOsrKvHnkxyXuWG9s0yWVJPpfklt4ICgAAAMDqaUXpdHGSzyS5qpRyTpK3JZmV5Cu11kVvnlRKeTjJ3FrrEbXW15PctvRNSikTO17eV2v9Ze/HBmB5p556ap566qlsuummOffcc1sdBwAA6Ef6vHSqtS4speyT5MIk16Z9H6cL0l48LW1YkqF9mw6Annjqqacyf/78VscAAAD6oZZ8e12t9YEke3dxzsQujj+a9m+8AwAAAKCfacVG4gAAAAAMckonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgccNaHQAABropp3y70/F7zvtoHycBAID+w0wnAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgccNaHQAAAACgCfNmT+50fMLM+/o4CYmZTgAAAAD0AqUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgGwWqac8u3Me/aFJMm8Z1/IlFO+3eJEAABAf6J0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxLSmdSinbl1JuLqW0lVKeKKXMLqUM7eKaHUopN3ac/0opZV4p5ZJSymZ9lRsAAACA7hnW1w8spYxL8tMkDyT50yRvT3J+2guwz6/i0g2SPJLk20meSPLWJGcmmVJK2bnW+npv5gYAAACg+/q8dEryqSQjkhxca12U5CellDFJZpVSzu0YW0Gt9Y4kdyw1dFsp5XdJfpxkxyT/1su5AQAAAOimViyv2z/JTcuVS5envYia1sN7/b7j9zpNBAMAAACgGY3NdCqllFpr7capk5LcsvRArXVeKaWt49i1XTxnSNpzvzXJl5PcleRXqxUaAABggJg3e/IKYxNm3teCJADd0+2ZTqWUb3csg+vs2DZZdunbqoxL8lwn4ws7jnXl+iSvJHkoyYZJ/let9Y2V5DqqlHJ3KeXuZ555ppvxAAAAAFhTPVle954kvy6l7Lf0YCnlhCT/nqTT4mclOpsRVVYyvrzjk+ya5CNJRiW5oZSyXqcPqfXrtdaptdapG220UQ/iAQAAALAmelI67ZD2ZXE3lFIuLqW8o5TysyRfSnJWkj27eZ+FScZ2Mr5BOp8BtYxa63/VWn9Za/1Okv2S7JTkf3fz2QAAAAD0gW7v6dSx8ffHSilXJvl+kk+mfYnbO2utD/TgmQ+lfe+mJUopWyZZv+NYt9VaHyul/CHJ23pyHQAAAAC9q0ffXldK2SLJcR3X/Z+0lz37rfKiFd2QZL9Syuilxg5NsjjJ3B7m2TbJ/0jySA8zAAAAANCLerKR+Iwk9yfZJMm7aq07Jflcki+UUm4vpXR3ttHFad8I/KpSyntLKUclmZXkKx2zqd583sOllH9c6v3fllK+XEo5qJTynlLKp5PclOS3SS7v7ucAAAAAoPf1ZKbTN5JclGRqrfU/kqTWekGSdyZZJ8l/dOcmtdaFSfZJMjTJtWnfD+qCJGcud+qwjnPedHfa9436xyQ/SvKZJFcm2bXW+lIPPgcAAAAAvazbezol2aPW+svlB2utvymlvDvJqd29UcceUHt3cc7E5d5fHjOaAAAAAAaEbs90erNwKu22LKW8u5SyfsexN2qtX+6tkAAAAAAMLD3dSPzTSeYneSzJz5Js2zF+VSnls83HAwAAAGAg6slG4qck+Ura93baO0lZ6vBtST7caDIAAEquUjEAACAASURBVAAABqye7Ol0bJKZtdZzSylDlzv2myTbNBcLAAAAgIGsJ8vrNk1yz0qOvZFkvTWPAwAAAMBg0JPS6eEk01ZybK8kD6x5HAAAAAAGg54sr/u7JBeVUl5NMqdjbONSyhFJTkzyyabDAQAAADAwdbt0qrVeUkoZl2RmkrM6hq9P0pZkVq31e72QDwAAAIABqCcznVJrPa+UcnGS3ZKMT/KHJHfWWp/vjXAAAAAADEw9Kp2SpNb6QpIf90IWAAAAAAaJVZZOpZSP9uRmtdZvr1kcAAAAAAaDrmY6Xbrc+9rxu3QyliRKJwAAAAAypIvjo5f62TnJo0nOSLJ92vd02j7tG4s/muRdvRUSAAAAgIFllTOdaq0vvfm6lHJ+kn+otX5lqVP+kOSLpZSXk3wlybReSQkAq3Dqqafmqaeeyqabbppzzz231XEAAID0bCPxdyX50kqO3Z/k7DWPAwA999RTT2X+/PmtjgE0aPev7r7C2N/0/DtwAIAW6mp53dIeT/LxlRw7Isnv1jwOAAAAAINBT/676HNJLi+l3J/kh0kWJNk4yZ8kmZTk0ObjAQAAADAQdbt0qrVeWUrZJclpSQ5LsmmSp5LcleRjtdZ7eiciAAAAAANNjxbG11r/Lcmf91IWAAAAAAaJnuzpBAAAAADd0qOZTqWUDyU5OMkWSdZb/nit9V0N5QIAAABgAOt26VRKmZVkZpL/SPJAkld7KRMAAAAAA1xPZjodkeTLtdbP9VYYAAAAAAaHnuzpNDrJzb0VBAAAAIDBoycznS5P8v4ongAAYAUXnnTtCmPHnX9gC5IAQP/Qk9Lp5iTnlFLGJ/lJkueWP6HWen1TwQAAAAAYuHpSOn2/4/fEJB/r5HhNMnRNAwEAAAAw8PWkdHprr6UAAAAAYFDpdulUa32sN4MAAAAAMHissnQqpYystba9+bqrm715LgAAAABrt65mOr1QStmt1vqrJC+mfd+mVbGnEwAAAABdlk6fSPLbpV53VToBAAAAwKpLp1rrPy31+tKe3LiU8tEk19ZaF65eNAAAAAAGqiG9cdNSytAk34pvvAMAAABYK/VK6dSh9OK9AQAAAOjHerN0AgAAAGAt1dVG4gAANGze7MkrjE2YeV8LkgAA9B4znQAAAABonNIJAAAAgMYpnQAAAABoXK+UTrXWPyb5eJJHeuP+AAAAAPRvq9xIvJTygSQ/r7Uu6ni9SrXW65d6/U8N5AOgH3tjnfWX+Q0AAPCmrr697rokuyb5VcfrmqSs5NyaZGhz0QDo7176n+9rdQQAAKCf6qp0emuSJ5d6DQAAAABdWmXpVGt9rLPXAAAAALAqXc10WkEpZd0kmydZb/ljtdYHmggFAAAAwMDW7dKplPKWJF9Psn9nh2NPJwAAAAA69GSm0yVJ3pnkxCQPJHm1VxIBAEAfmzd7cqfjE2be18dJAGDw6EnptHuST9Zar+itMAAAAAAMDkN6cO6CJIt7KwgAAAAAg0dPSqeZSf6qlDKmt8IAAAAAMDj0ZHndwUkmJHmslHJXkueWO15rrYc2lgwAAACAAasnpdP4JL/teD08yUbNxwEAAABgMOh26VRrfU9vBgEAAAAYDHwrarue7OkEAAAAAN2yyplOpZRPJ/mXWuszHa9XqdZ6UWPJAAAAABiwulped2GSu5M80/F6VWoSpRMAAAAAqy6daq1DOnsNAAAAAKvS5UbipZS3Jllca31qqbHll9q9UGv956bDAQAAADAwdbWn07uT/CzJnyT5UcfY0Ky41K6WUhbUWm/qlZQAAAAADChdLZk7PskNtdYfdXJsaq11SMeyu4uTHNl4OgAAAAAGpK5Kpz2TXNaN+/w4yW5rHgcAAACAwaCr0mmjJI8tPVBr/WOSU5I8vtTw7zvOBQAAAIAuNxJ/Icn/WH6w1nr+ckPjO84FAAAAgC5nOt2T5MBu3OfAjnMBAAAAoMvS6WtJZpRSPrKyE0ophyf5aJKLmgwGAAAAwMC1yuV1tdYflFK+muSfSinHpn3D8MeT1CRbJHlfkl2S/L+11mt6OywAAAAAA0NXezql1npCKeW2JJ9N+wbi63YceiXJnUkOqrX+sNcSAgAAADDgdFk6JUnHLKZrSilD076xeEnybMc32QEAAADAMrpVOr2po2Ra0EtZAAAAABgkutpIHAAAAAB6TOkEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAMaFNO+XbmPftCkmTesy9kyinfbnEiAAAgUToBAAAA0AuUTgAAAAA0TukEAAAAQOOGtToAAAAMJHP3mtb5gZ1P7tsgANDPmekEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOGtToAAAD0V7t/dfcVxv7GP6EBoFvMdAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABqndAIAAACgcUonAAAAABo3rNUBAAAAgIFv3uzJK4xNmHlfC5LQX5jpBAAAAEDjlE4AAAAANE7pBAAAAEDjlE4AAAAANK4lpVMpZftSys2llLZSyhOllNmllKFdXLNzKeVbpZSHO677TSnlzFLKen2VGwAAAIDu6fNvryuljEvy0yQPJPnTJG9Pcn7aC7DPr+LSQzvOPSfJfyXZMcnZHb//rBcjAwAAANBDfV46JflUkhFJDq61Lkryk1LKmCSzSinndox15pxa6zNLvb+tlPJykv+vlLJVrfWxXs4NAAAAQDe1Ynnd/kluWq5cujztRdS0lV20XOH0pns7fm/cXDwAAAAA1lQrSqdJSR5aeqDWOi9JW8exnnh3kjeS/KaZaAAAAAA0oRWl07gkz3UyvrDjWLeUUjZNcnqSf17ZkrxSylGllLtLKXc/80xnE6UAAAAA6A0t+fa6JLWTsbKS8RVPLGWdJFckeTHJCSt9SK1fr7VOrbVO3WijjVYrKAAAAAA914qNxBcmGdvJ+AbpfAbUMkopJcm3k+yQZPda68Jm4wEAAACwplpROj2U5fZuKqVsmWT9LLfX00pckORPk+xba+3O+QAAAAD0sVYsr7shyX6llNFLjR2aZHGSuau6sJTy10mOT3J4rfXnvRcRAAAAgDXRitLp4iSvJLmqlPLeUspRSWYl+crSG4KXUh4upfzjUu//d5K/SfvSuvmllF2X+rFhEwAAAEA/0ufL62qtC0sp+yS5MMm1ad/H6YK0F09LG5Zk6FLv39fxe0bHz9I+nuTSZpMCAAAAsLpasadTaq0PJNm7i3MmLvd+RlYsmwAAAADoh1qxvA4AAACAQU7pBAAAAEDjWrK8DgCa9MY66y/zGwAAaD2lEwAD3kv/831dnwQAAPQpy+sAAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGDWt1gP5k3uzJK4xNmHlfC5IAAAAADGxmOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQOKUTAAAAAI1TOgEAAADQuGGtDgAA0FfmzZ7c6fiEmff1cRIAgMHPTCcAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGqd0AgAAAKBxSicAAAAAGjes1QEAAOiZC0+6ttPx484/sI+TAACsnJlOAAAAADTOTCcAgLXUvNmTVxibMPO+FiQBAAYjM50AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaNywVgcAAAAAVt+82ZNXGJsw874WJIFlmekEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOUTgAAAAA0TukEAAAAQOOGtToAAABAfzZv9uQVxibMvK8FSQAGFqUTAEA/NnevaSsO7nxy3wcBAOghy+sAAAAAaJzSCQAAAIDGKZ0AAAAAaJzSCQAAAIDGKZ0AAAAAaJxvrwMAgH5i3uzJnY4fNm7MCmO/OP4XvR0HANaImU4AAAAANE7pBAAAAEDjlE4AAAAANE7pBAAAAEDjbCQOANCJuXtNW2Fs2u1zW5AEAGBgMtMJAAAAgMYpnQAAAABonNIJAAAAgMYpnQAAAABonNIJAAAA/m97dx4tSV0fbPz5woCIYdNBjcMSREXxkNfEBc3oDOACGo0ritHXxAWPG1ED+OYQNUCMHkWUN2hc4kr0uCXE112j0QFHlkCIgoAKKKOCMCCbMyjL/N4/qmbm3u6+yzBVXd/qfj7n9Jl7q+veeqa7qrr7d6urJTXOT6+TJEmSNJHec/QXR05/zclPG3OJJE0nj3SSJEmSJElS4xx0kiRJkiRJUuMcdJIkSZIkSVLjHHSSJEmSJElS4zyRuCRJkiRpqyw/dfnQtNVHre6gRFImHukkSZIkSZKkxnmkkyRJUgKjjhIAeKtP1yRJUk95pJMkSZIkSZIa56CTJEmSJEmSGuegkyRJkiRJkhrnSQIkSZIkqaf81DhJmXmkkyRJkiRJkhrnkU7ShFq1YuXQtJVnrOqgRJIkSZI0jTzSSZIkSZIkSY1z0EmSJEmSJEmNc9BJkiRJkiRJjfOcTpIkSdpk1CdhgZ+GJUmStpxHOkmSJEmSJKlxDjpJkiRJkiSpcb69TpIkSZIasmrFyqFpK89Y1UGJJHXPI50kSZIkSZLUOAedJEmSJEmS1DjfXidJkiRJE2TUW/zAt/lJGj+PdJIkSZIkSVLjPNJJc1pz4gFD0/Z684UdlEiSJEmSpL5x0EmSJElSbyw/dfnI6auPWj3mEknSQjp5e11E7B8R34qI9RFxVUScGBHbLvAz20fESRFxZkTcGhFlXL2SJEmSJEnaMmMfdIqI3YBvAgV4OnAicDRwwgI/uiPwMmA98L02GyVJkiRJkrR1unh73SuAuwPPKqXcDPxHROwMHB8R76inDSml3BgR9yyllIh4DXDIGJslSdIEG/V2nbd6FgJJkqSt0sXb654MfH1gcOnTVANRoz/bs1ZK8S11kiRJkiRJPdDFoNODgUtnTiilrKF629yDO+iRJEmSJElSw7oYdNoNuHHE9Bvq6xoTES+PiPMi4ry1a9c2+aslSZIkSZI0j04+vY7qJOKDYo7pd30hpXywlPKIUsojdt999yZ/tSRJkiRJkubRxaDTDcCuI6bvwugjoCRJkiRJktQzXQw6XcrAuZsiYk/gHgyc60mSJEmSJEn91MVnAX8VODYidiql3FJPex5wK7Cqgx5JkiRJ2iLLT10+cvpbO3mJJUk5dXGk0/uB3wGnR8QTIuLlwPHAu0opN2+cKSIui4gPz/zBiHhyRDwHeFj9/XPqy97jy5ckSZIkSdJCxj4MX0q5ISIeD7wH+CLVeZzeTTXwNNMSYNuBae8DZg4wfa7+98XAx5pulSRJkiRJ0l3TybGfpZSLgUMWmOcPFjNNkiRJkiRJ+XTx9jpJkiRJkiRNOAedJEmSJEmS1DgHnSRJkiRJktQ4B50kSZIkSZLUOAedJEmSJEmS1DgHnSRJkiRJktQ4B50kSZIkSZLUOAedJEmSJEmS1DgHnSRJkiRJktQ4B50kSZIkSZLUuCVdB0iSJEnS1lq1YuXwxEceM/4QSdImHukkSZIkSZKkxjnoJEmSJEmSpMY56CRJkiRJkqTGOegkSZIkSZKkxjnoJEmSJEmSpMY56CRJkiRJkqTGOegkSZIkSZKkxjnoJEmSJEmSpMY56CRJkiRJkqTGLek6QJIkSZLUD2tOPGD0FbvtPN4QSb3gkU6SJEmSJElqnINOkiRJkiRJapyDTpIkSZIkSWqcg06SJEmSJElqnINOkiRJkiRJapyDTpIkSZIkSWqcg06SJEmSJElqnINOkiRJkiRJapyDTpIkSZIkSWqcg06SJEmSJElq3JKuAyRJkiRNlvcc/cWR019z8tPGXCJJ6pJHOkmSJEmSJKlxDjpJkiRJkiSpcQ46SZIkSZIkqXEOOkmSJEmSJKlxDjpJkiRJkiSpcX56naRGLD91+cjpq49aPeYSSZIkSVIGHukkSZIkSZKkxnmkk3pp1FE1HlEjSZIkSVIeHukkSZIkSZKkxjnoJEmSJEmSpMb59jpJE2/VipUjp688Y9WYSyRJkiRpenikkyRJkiRJkhrnoJMkSZIkSZIa56CTJEmSJEmSGuc5nZTamhMPGH3FbjuPN0SSJEmSJG0Rj3SSJEmSJElS4zzSSdIWG3kEmkefSZIkSZJm8EgnSZIkSZIkNc5BJ0mSJEmSJDXOQSdJkiRJkiQ1znM6JTTqfDl7vfnCDkqk/ll+6vKhaW91VydJkiRJY+eRTpIkSZIkSWqcg06SJEmSJElqnINOkiRJkiRJapyDTpIkSZIkSWqcZ9eVJEmSNMuoD7YBP9xGkrRlHHSSJEmNevixpw1NO/+kF3VQIkmSpC759jpJkiRJkiQ1zkEnSZIkSZIkNc631/XE8lOXj5y++qjVYy6RJEmSJElamEc6SZIkSZIkqXEOOkmSJEmSJKlxDjpJkiRJkiSpcQ46SZIkSZIkqXEOOkmSJEmSJKlxDjpJkiRJkiSpcUu6DpAkSZIkqY/WnHjA0LS93nxhByVSTh7pJEmSJEmSpMY56CRJkiRJkqTGOegkSZIkSZKkxnlOJ6nnlp+6fOT0t7p5T5VR5xMAzykgSZIkqTu+KpUkSZK0KKP+2LX6qNUdlEiS+sC310mSJEmSJKlxDjpJkiRJkiSpcQ46SZIkSZIkqXEOOkmSJEmSJKlxDjpJkiRJkiSpcQ46SZIkSZIkqXFLug6QpD5bc+IBI6fv9eYLx1wiwcOPPW3k9PNPetGYSyRJkiSPdJIkSZIkSVILHHSSJEmSJElS4xx0kiRJkiRJUuMcdJIkSZIkSVLjHHSSJEmSJElS4xx0kiRJkiRJUuMcdJIkSZIkSVLjHHSSJEmSJElS45Z0HSBJkiSpv1atWDk88ZHHjD9EkpSORzpJkiRJkiSpcR7pJKm31px4wPDE3XYef4gkSZIkaYhHOkmSJEmSJKlxDjpJkiRJkiSpcQ46SZIkSZIkqXEOOkmSJEmSJKlxDjpJkiRJkiSpcQ46SZIkSZIkqXFLug6QtHhrTjxgeOJuO48/RJIkSZKkBXikkyRJkiRJkhrnoJMkSZIkSZIa56CTJEmSJEmSGuegkyRJkiRJkhrnoJMkSZIkSZIa56CTJEmSJEmSGuegkyRJkiRJkhrnoJMkSZIkSZIa56CTJEmSJEmSGtfJoFNE7B8R34qI9RFxVUScGBHbLuLndomIj0bEDRFxU0R8MiLuNY5mSZIkSZIkLd6ScS8wInYDvglcDDwd2Bc4mWoA7I0L/PhngP2AlwEbgLcDnwce11avJEmSJEmSttzYB52AVwB3B55VSrkZ+I+I2Bk4PiLeUU8bEhGPAQ4FVpZSzqin/RI4JyKeUEr55pj6JUmSJEmStIAu3l73ZODrA4NLn6YaiFq5wM9ds3HACaCUci7w0/o6SZIkSZIkJdHFoNODgUtnTiilrAHW19ct+udqlyzwc5IkSZIkSRqzKKWMd4ERtwPHllJOGZj+C+C0Uspxc/zcfwDrSinPGJj+CeD+pZQ/GfEzLwdeXn+7H/CjrcxfCly3lb+jCXbMlqEjQwPYMciOXA1gxyA7ZsvQkaEB7BhkR64GsGOQHbNl6MjQAHYMsiNXAzTTsXcpZfdRV3RxTieAUSNdMcf0u/xzpZQPAh/csrS5RcR5pZRHNPX77JicjgwNdtiRvcEOO/rQkaHBDjuyN9hhRx86MjTYYUf2hnF0dPH2uhuAXUdM3wW48S783K4L/JwkSZIkSZLGrItBp0sZOAdTROwJ3IPR52ya8+dqc53rSZIkSZIkSR3pYtDpq8ChEbHTjGnPA24FVi3wc/eNiMdunBARjwDuX183Do29VW8r2TFbho4MDWDHIDs2y9AAdgyyY7YMHRkawI5BdmyWoQHsGGTHbBk6MjSAHYPs2CxDA7Tc0cWJxHcDLgYuAt5ONWj0LuCUUsobZ8x3GbCqlPLSGdO+BjwIOAbYUP/8taWUx43vfyBJkiRJkqSFjP1Ip1LKDcDjgW2BLwInAO8G/m5g1iX1PDMdQXU01EeA04DzgWe22StJkiRJkqQtN/YjnSRJkiRJkjT5ujinkyRJkiRJkiacg06SJEmSJElqnINOkiRJkiRJatySrgO05SLiXqWU67tYLrAbUIAbu2ioO3YAdgXuBH5dSrmzi46MIuL3gA2llPUdLDvF+jGT20qOjrlExEOAw0spJ7a4jJ2BQ4DtgS+XUtZFxO7Aq6k+PfUK4IOllKvaahjRFMDTgD+mum/OA75SOjrJYn0bXQccUkr57piW+Tjg3sDFpZRLRly/DHhpm+vGPG3bAI8GLiyl3DLu5WfU1b5Uo3X5WC8thutoztcr3i+z+dg2Ph7pdBdFxIqI+M8Wf/9rI+KsiDg7Il5YT3txRFwPXBsRN0fE2yKi1YHDiNg/Ik6LiLXAtcCPgB/XDWsj4uMRsX+bDXXHnhHxjxFxOfAb4JfAr4B1EfG9iHjJGBouiYiTI+IRbS9rgY4nRcTTB6a9IiKuBG4CbomIH0fEEWNo6Xz9cFvJ2bFI+zP8yaWNiYgHABcCpwOfBn4QEfsC5wB/BTwE+GvggojYo6WG79WDaxu/3w04F/h8veyjqT7JdXVE7NRGQ73cV811AY6k+iPUs2dMa6tjl4g4G/gO8Dngooj4VkTsPTDrHrS4bixgJ+BM4GFtLygith8xba+IeFdEfCcivh0RJ7W1fg4st/N9aUQ8KiJOiYh/ioiH19NW1LfFmohYFRGHtrX8enkp7pNkj/Wd3y/1MpdFxJsi4tT6tthtxDwPiRafny9GtPwaoV5G5/dJlnU0yzZbLzfD65XO75dI8pqpbun8sa1eZuf7r07vl1KKl7twAZ4N3NnS734t1aj4vwEfBm4GjgXWA28FDgfeDvwWeEOL/8dD6mX+AHgT8Bzg8cAT6q/fCHwfWAcc1GLHw4EbgF8AnwI+BlwM3A6cBJwKXAN8A9ihxY4NwG31fXMZcCLw0A7WvQuAv57x/d8Ad9TryguAF9a30e3AkZO8fritpO3Ya5GXV7S1H607Plv/fx8A3BP4F+AnwPeAnep5ltbzfKClhg3Ao2Z8/2Hg18BhM6YdVu/j3t3ibbGh3lY2zHGZeV2b98kpVE/Cn1jf9k8HLgHWAn8yY74Dx7BuzHX59/p2+PbGaS123DmwfhxQrws3AF+qLzfUt8+DWuzofF9a76tuA66csZ96av3vN6ke71dTPbY9qo2GZPdJlsf6LPfLA+t95y3ARfW6uBb4s4H5Wt13LLK1tdcIye6TLOtolm02y+uVzu8X8rxm6vyxre5Isf/q8n4Z6x3fhwvwokVeTm1rpah3UCfM+P6p9c7ibwbmezPwwxZvi/OAjwMxzzxR77jOa7HjDODLwPYD098G/KD+eilwOfDWFjs2ACvrHdTp9Q7rTqoX+H8D7DOmdXQd1dtgNn7/c+D4EfP9A/DjSV4/3FbSdmwcxFjo0vYAx1XAc2d8v3e9zGcNzPfitrYVhged1gKvGzHfMcCVLd4Wnweurv+vMXDdrnXniraWP2NZlwN/OTDt7lRP0NcDz66njeOJ16+oBpYGL2fW11+wcVrLHTPXj68BPwTuM2PafagG5toc/Op8XwqsAv4V2Kb+/vVULxA+PjDfF4AvTMF9kuWxPsv9cjpwFrBb/f3uwGn1ejrzBXZr+w4SvEZIdp9kWUezbLNZXq90fr+Q5zVT549t9e/vfP/V9f3S+p3dtwsL/zV41l+GW2qYdRQC8Hv18h47MN/BwG9avC1uBVYuYr6DgFtb7FgHHDpi+tL6vnpg/f2RtPuibfBBbSeqJxdfYfOo8VnAUcB9W+y4HnjajO9vG3U/UR3d8ttJXj/cVtJ23ER1tMifLnB5W8sPrrcyYyCF6i1kG4CHD8y3EljfUsPgfuP2wfWznn4w8Lu2bot6GU+iegJ2HrB8xvRdGN+g07q5lgO8g+oJ2F/R/hOv19X70o8Dvz9w3TgH4QbXj3XAn4+Y7y+AtS3fLwfN+H7s+1KqvwI/ecb396wbnjQw37OANVNwn2R5rM9yv1w98/aYMf2V9X71/9bftzno1PlrhGT3SZZ1NMs2m+X1Suf3y4j7pKvXTJ0/ttW/v/P9V9f3i+d0GvYr4ENUd8J8lxe12HAtsO+M7zd+vc/AfPtQ/dW8LT8Hli9ivuX1vG25meqtOIM2Tru9/vfHVCemHYtSyi2llNNKKU8B7gu8iupwyXfT7u3xDaq3JW10LtWLyUFPovprSlsyrB9uKzk7zgV2KaV8eb4L1eBHm66lOrppozuBD1Ad3j7TvakOeW7LzHMl3UD1F65BS6n2da0ppXwD+EOq81t9OSI+PY5zXAy4kuqtD0NKKW+gOuz93bR8PqdSyinAg6kePy6NiOMi4m4br25z2aNyBr6/csQ8V1I992hLhn3pdlRPeje6qf73uoH5rmf0NtSkDPdJlsf6LPfL3an+Kj9LKeV9VG9ne1lEfA7YocWGDK8RIM99kmUdhRzbbJbXK5nuF6DT10wZHtsgx/5ryDjvFz+9bthZVH8FXzffTBFxa4sN/w94W/0E+GbgDVTvRX1LRPyS6v3bfwycAHy1xY6TgPdFxD5UJ3y9FLiRTebIQgAAG89JREFUase+K9UT9sOp3q7xirl+SQM+BbwjIm4DvkX1QPtI4J3A/5RSflbPt4zq7TRjV0r5NdWL2Q9ExP2obpe2/B/grIhYBbyX6jDu90fEH1CdnBeq9/s/h3af+GRYP9xWcnacAbx8EfOtredtywVUf736F4BS/VnnlSPmW0F1wvG2HDvw/dOojgSb6QlU91erSil3AO+MiE9QHVl0KdW+a1wDLd8GXkq17xrV9+6IuAb4aNshpZS1VE/0PkC1Hz0yIo6hOifKOL0tIn5df3071TnIVg/MszfVC8i2ZNiX/gLYj+pxnlLKnRHxfIZfFO1Fuy8OIMd9kuWxPsv98iPgcRs7ZiqlfCEinkj1oQyPbLEhw2sEyHOfZFlHIcc2m+X1Sqb7ZciYXzNleGyDHPuvebV+v7R1+FZfL8BzWcT7fak+9ejvWmrYiep9lndQHQb3KaqP+/4nZh/aey5w75ZvjyOoXpSMOkfLhvq6I1pu2L7eCG4fWPaZwL4z5juKdk8CN+uQxC4vVJ/s9Gngd4w+1PtC4Blj6Oh0/XBbyduR4UJ1DocF359O9Slyj++49UhmnINhjMt9DHA21RFYfzKG5T0IeDX1eQ3mmW9lW4+x8yzzJVSHwJ9Tby/jeHvddxg+p9TQ/5v6ZLgtdnS+LwXeB3x0EfP9O+2elyXFfVIvo/PH+kT3ywlUgy13m2eeh1L9db6tt9d1/hoh031SLyPDOppimyXJ65UM9wtJXjNleGyrOzrff3V9v0QdoIQi4u7AklLKLTOm/SHVXzeupDoR8IYxtexDdZTExo93vAG4tJTy03Esv25YRvW2jB2Ay0opF41r2fXy9wauLqXctuDMYxIRO1ON0N8X2Ibqff6XlFJGHVbcZken68cc28oBddPUbSuZOqQ+qfepf0s1OPa3pZSLO04CNu3Pri+ltHo0b6Z96Vwi4rHAz8f9ODeiYyz3Sb2sFI/182n7fomInaiO3LmilDLnkUQRsTuwfyllVRsdfTLObaUn6+i49qOdvl4ZaOnkfsn2mqnr19RZ9l9d3i8OOkmSWhMRD2Xz4FehervfpaWUH05bR4aGeTouGfcAS5bbQ5IkSe1x0GkOEbEdsHMpZeR7f+sRyz8qpbR2PpKI2Bc4jBFPyoGvlVLGcvK3DLdFvZwUt8dCIuJewEPbvj0W0bGUarR84juyrKNzLHtHqo+rP7qU0uZ5g2Yuc1eqj+y9dsa0g4D7Az8tpXx7DA0voToZ9B5ADFxdqA4hPqGU0uq5ezJ0ZGiw464Z1/68R49vU7M/t2NoOSnW0QwdGRrqjs4f6+tlprg9FjLG/XmWbbbz9SNDQ6aOhYzrtVsn22wX7+nLfKE69PAkqo9YvJPqU47eRHVI3sz52vxI1rsDp1G9//RW4CKq9wN/t/56fX3dx4EdJvm2yHR7bEHvs9u8PeyY9buzrKP7z3M5kOo91C/aOK3Fjp2AL7D5XAKfpTq8+0vM+BjnevvZscWOo6jOafBeqhMnLgW2rS9LgccC76E618CrJ7kjQ4MdW9Xb6n7Ux7dZvzvL/tyOhOtoho4MDXVHlsf6FLfHFvS2vT/Pss12vn5kaMjUkWgd7Wyb7fSGzXihOsHpb4F/oDqr/7vrO+B7wO4z5mtz0OlUqo9lPRzYbsT129VtVwP/OMm3RabbYwt6J36wJ0tHonV01Em7B0/gvenfFjveSfVJNS8DngWcD3yF6uSFjwPuARxK9RGyx7XYcQWLOEkm1aeIXDHJHRka7Niq3rafAPr4tvl3Z9mf2zG7I8U6mqEjQ0O9nCyP9Slujy3obXt/nmWb7Xz9yNCQqSPROtrZNtvpDZvxQnU2/+MGpu0PXAJcBjygntbmoNNa4PmLmO/5wNpJvi2S3R5XLPLyq5ZvDzvyraO/oPr425dTferWzMtTqQabXrtxWosdlwOvnPH9w+plHzkw37HA91vsWA8ctIj5DgLWT3JHhgY7Rv7+zvdfdYePb5sbsuzP7Zi9zCzraOcdGRrq35/lsT7L7dH5/qvuyLLNdr5+ZGhI1pFlHe1sm12CBt2f6hCzTUopF0fEY6gOzzsrIp7acsMOVJ80tZAbgbu12JHhtoA8t8cy4AKqwxDn8yCqgQY72u/Iso4+CHgjcDLwQeDEUspNABGxSz3PBaX9c0otA2aehHnjiaEHzyV1PtUh3235AXBkRJxR5vg0kIgI4Mh63knuyNBgx7AM+y/w8W2mLPtzO2bLso5m6MjQAHke6zPdHl3vvyDPNpth/cjQkK0jwzra2TbroNOwtcCegxNLKTdGxBOBTwHfAk5pseGbwFsi4uJSyppRM0TEnsDf1/O2JcNtAXluj/8BflVKOXa+mSLi2bS7w7BjsxTraCllPXBcRHyE6nDqn0TEm6gGoMbpJmD3Gd/fAfyonj7TjlRv92vL0cDXgIsj4nSqExPeSHWiwl2pTlz4TKoTSR824R0ZGuwYlmH/BT6+zZRif27HkCzraIaODA2Q57E+y+2RYf8FebbZDOtHhoZMHVnW0c62WQedhp0NPA/45OAVpZTfRcRzgPcBx1E9SW7Dq4FvAJdHxH8x+kn5I+vpr2mpAXLcFpDn9jiH6j2wizH4iUx2tCPLOrpxmZcBT4uIp1A9qXgVcPw4ll37IfAY4N/qng3AQ0bM9zCqQ71bUUpZHREPozovzwsYfhL2c+CrwEmlxU+1ydCRocGOkTLsv8DHt5my7M/tmC3LOpqhI0MDJHmsJ8/tkWH/BXm22QzrR4aGTB1Z1tHOttmo37enWkQ8nuq8LK8spfx6nvmOA55YSjm4pY5tgecy++MMoTok7lKqJ+X/Wkq5o43l1w0pbot6GRluj6XAslLK99tahh1b3JBmHR2xzO2ojuo4Dvg9qvPYtP0RqCuAe5ZSPr/AfKcB55RS3ttmz4zl7Uj1YAZwY31k2Nhl6MjQYEeO/deMFh/fyLM/t2PkMjpfR7N0JGlI81if5PbofP9Vd6TYZjOsHxkaknWkWEfrlk62WQedJKlFGx9ogMtKKeu67pEkSZKkcXHQaQERcS+qEcBC9VfY66exwQ47+tCRocGOTcveHngh8GQ2/yWlUB3GeynVR9Z+spRy26R3ZGiwY8Gmqd9ms3VkaLDDjuwNdtjRh44MDXZ03FFa+ki+Pl+oPt7yNKoTwt05cFkLfBzYf9Ib7LCjDx0ZGuwYatgb+DHwO6qTZr6H6qSEb6m//mZ93aXA3pPckaHBjrzbih35GuywI3uDHXb0oSNDgx15OjzSaUBEHAJ8iepkYp8DLqF6j2Ow+QRbhwMPAP60lPKdSWyww44+dGRosGNkx5eApcCzSilXzTHP/ahO7HhdKeVpk9qRocGOkcvIsq3YkajBDjuyN9hhRx86MjTYkayj7dG0vl2A86hG+GKeeQL4GHDepDbYYUcfOjI02DFyGb8BDl3EfIcBt0xyR4YGO0b+/izbih2JGuywI3uDHXb0oSNDgx25Olr5D/X5AtwKrFzEfAcBt05qgx129KEjQ4MdI3//NcALFjHfC4FrJrkjQ4MdI39/lm3FjkQNdtiRvcEOO/rQkaHBjlwd26BBPweWL2K+5fW8k9pghx196MjQYMewTwCnRMQLImLHwSsj4u4R8efAu4B/mfCODA12DMuyrdiRq8EOO7I32GFHHzoyNNiRqaOtkbS+XoAjgTuAfwaeBOwF7AzsBOwJPBH4IHA78NJJbbDDjj50ZGiwY2TH9sAH6uXcBlwB/DdwPnB5Pe124P3AdpPckaHBjtTbih2JGuywI3uDHXb0oSNDgx25Olr5D/X9AhxB9ck5Gxg+q/uG+rojJr3BDjv60JGhwY45W5YBLwHeXj+IfbD++sXAsnE0ZOnI0GDHUEOKbcWOXA122JG9wQ47+tCRocGOPB1+et08ImIfqrO471ZPugG4tJTy02lqsMOOPnRkaLBD6p8s24oduRrssCN7gx129KEjQ4Md3Xc46CRJak1EPJTND2oFuJHqQe2H09aRocEOSZIkjZMnEr+LImJpRKyY9gY77OhDR4aGaeuIiJdExJXAD4DPUb196p/rr38QET+LiBe32ZClI0ODHXfNNG2zfenI0GCHHdkb7LCjDx0ZGuwYT4eDTnfdSuDbNgB2DLJjtgwdGRpgSjoi4iiqk0V/iepjV+8NbFdf7l0v/0vA+yPi1ZPckaHBjq0yFdvsFsjQkaEB7BhkR64GsGOQHbNl6MjQAHYMarxjSZO/TJIk4PXA35ZS3jHiuuuA7wLfjYg1wNHAeye4I0ODHZIkSeqEg04DIuKKRc664yQ32GFHHzoyNNgx0n2Bcxcx37nA8RPekaHBjgFZthU7cjXYYUf2Bjvs6ENHhgY7cnV4IvEBEfE74ALgzAVmfRDw1FLKtpPYYIcdfejI0GDHyI6zgcuB/11K2TDHPAF8Ati3lPLoSe3I0GDHyGVk2VbsSNRghx3ZG+ywow8dGRrsyNXhoNOAiDgHuLqU8owF5ns28NmWNtTOG+ywow8dGRrsGPn7lwNfA34JnA5cSvXJZAXYleoTy54J7AEcVkr53qR2ZGiwY2RHlm3FjkQNdtiRvcEOO/rQkaHBjlwdvr1u2DnA4YucNya4wQ47+tCRocGOAaWU1RHxMOANwAuAPQdm+TnwVeCkUsrlk9yRocGOkVJsK3aka7DDjuwNdtjRh44MDXYk6vBIpwERsRRYVkr5/jQ32GFHHzoyNNixsIjYkeooFoAbSynrp7UjQ4MdebYVO3I12GFH9gY77OhDR4YGO3J1OOjUoIhYAZxfSlk3zQ122NGHjgwNdgw1bAvcBjyylPLf09yRocGOOVs631bsyNdghx3ZG+ywow8dGRrsaL5jm4Z7plb9hPjbwH7T3GCHHX3oyNBgx5zaPKx4S2ToyNAAdmwOSLKt2JGrwQ47sjfYYUcfOjI02NFOh4NOzer8CTE5GsCOQXbMlqEjQwPYIfVNlm3Fjs0yNIAdg+zYLEMD2DHIjtkydGRoADsGbVWHg06SJEmSJElqnINOkiRJkiRJapyDTpIkSZIkSWqcg06SJEmSJElqnINOkqQsCrAKuMWOFA12SJIkaas46NScDcAJwFVT3mCHHX3oyNAwsR0RcY+IODkiDp5nnoPreXbaOK2UsqGUcnAp5SeT0pGhwY5GTeQ22/OODA122JG9wQ47+tCRocGONjpKKV5mXIA9gfOBp8wzz5Pree4/qQ122NGHjgwNdoxcxjHA5cD288xzN+AnwBsnuSNDgx0jl5FlW7EjUYMddmRvsMOOPnRkaLAjV4dHOg07BvhNKeUrc81QSvkqcDNw7AQ32GFHHzoyNNgx7C+A95RSbpun43fAe4HDJ7wjQ4Mdw7JsK3bkarDDjuwNdtjRh44MDXYk6nDQadifAR9ZxHwfAQ6d4AY77OhDR4YGO4Y9ALhgEfP9D/DACe/I0GDHsCzbih25GuywI3uDHXb0oSNDgx2JOhx0GnY/qkP/F/JTYNkEN9hhRx86MjTYMew2YPtFzLc9cMeEd2RosGNYlm3FjlwNdtiRvcEOO/rQkaHBjkQdDjoNuxnYfRHzLa3nndQGO+zoQ0eGBjuGXQQ8YRHzPbGed5I7MjTYMSzLtmJHrgY77MjeYIcdfejI0GBHog4HnYadDTxvEfMdUc87qQ122NGHjgwNdgz7KPCaBT6h7CDgVcCHJrwjQ4Mdw7JsK3bkarDDjuwNdtjRh44MDXZk6mjr7Oh9vQAHAXcCfwdsO+L6bYA3Ux32v3JSG+ywow8dGRrsGNkRwOfq5XwWeCnVkStPAF4CfAa4HfhMWw1ZOjI02DGyI8u2YkeiBjvsyN5ghx196MjQYEeujqgXoBki4q+Ak4G1wLeANUAB9gIeT3VY2tGllFMnucEOO/rQkaHBjpEdAbwGeB2wz8DVVwCnAO8tLT8IZejI0GDHyI4s24odiRrssCN7gx129KEjQ4MdiTraGknr+wX4I6ozt18G3FpfLqM63P9/TUuDHXb0oSNDgx3z9uwBHFhf9hj38jN1ZGiwY9byU2wrduRqsMOO7A122NGHjgwNduTo8EinBkXECuD8Usq6aW6ww44+dGRosGOoYVuqTzd7ZCnlv6e5I0ODHXO2dL6t2JGvwQ47sjfYYUcfOjI02NF8hycSb0j9hPjbwH7T3GCHHX3oyNBgx5yi64Baho4MDWDH5oAk24oduRrssCN7gx129KEjQ4Md7XQ46NSszp8Qk6MB7Bhkx2wZOjI0gB1S32TZVuzYLEMD2DHIjs0yNIAdg+yYLUNHhgawY9BWdTjoJEmSJEmSpMY56CRJkiRJkqTGOegkSZIkSZKkxjnoJEmSJEmSpMY56CRJyqIAq4Bb7EjRYIckSZK2ioNOzdkAnABcNeUNdtjRh44MDRPbERH3iIiTI+LgeeY5uJ5np43TSikbSikHl1J+MikdGRrsaNREbrM978jQYIcd2RvssKMPHRka7GihI0opzeVMoIjYHvhL4FHA7wNXA+cAHy+l3DYtDXbY0YeODA12QEQcA7wSeMhcy4mIuwEX1S1vmdSODA12LKprqrfZjB0ZGuywI3uDHXb0oSNDgx0dd5RSvMxxAR4CXAncDpwNfKH+9zZgDbD/NDTYYUcfOjI02LFp2RcCr1/EfK8Dvj/JHRka7FhwWVO/zWbryNBghx3ZG+ywow8dGRrs6L6j9f9Qny/AmcAPgL0Gpu9F9cT5jGlosMOOPnRkaLBj0zJuBQ5axHwHAesnuSNDgx0LLmvqt9lsHRka7LAje4MddvShI0ODHd13tP4f6vOF6snxM+a47pnArdPQYIcdfejI0GDHpt9/E/CkRcz3JODmSe7I0GDHgsua+m02W0eGBjvsyN5ghx196MjQYEf3HZ5IfH4/A3aY47odqA49m4YGO+zoQ0eGBjsqFwFPWMR8T6znneSODA12zO9nuM1m68jQYIcd2RvssKMPHRka7Oi6YxwjaX29AE8HLgMOHJj+aOAnzDE6OGkNdtjRh44MDXZsWsbLgPXAwfPMcxCwDnjJJHdkaLBjwaap32azdWRosMOO7A122NGHjgwNdnTf4afXzSMi/gvYG7gXcG19uXd9uZ5qhHCTUsqjJrHBDjv60JGhwY5Nyw7gs1SH554OfJ3qLyaF6r3ihwLPAk4vpTyvqeVm7MjQYMeCTVO/zWbryNBghx3ZG+ywow8dGRrs6L5jydb88BS4iPEd3p+5AewYZMdsGToyNIAdlFJKRDwXeA3Vp5A9Z2CWK4DXA++d9I4MDXYsaOq32QEZOjI0gB2D7MjVAHYMsmO2DB0ZGsCOQWPt8EgnSVKrImIPYFn97S9LKb+Y1o4MDXZIkiRpXBx0WoT67QB7AHsC3y+lrJvGBjvs6ENHhgY7ICJ2Am4vpfx2jut3ALYrpdwy6R0ZGuxYVNdUb7MZOzI02GFH9gY77OhDR4YGO7rr8NPrFhARrwJ+CVwJnAnsV08/PSJeNy0NdtjRh44MDXZARBwI/Bo4cJ7ZDgSuj4gVk9yRocGOhU37NpuxI0ODHXZkb7DDjj50ZGiwo9sOB53mERHHAu8C/hk4BIgZV38HaP0kpxka7LCjDx0ZGuzY5BjgM6WUVXPNUF/3KeC1E96RocGOebjN5uvI0GCHHdkb7LCjDx0ZGuxI0NHkR+FN2oXqrO1vqL/eFtgA/HH9/aHA9dPQYIcdfejI0GDHpmVfCzxzEfM9A7hmkjsyNNix4LKmfpvN1pGhwQ47sjfYYUcfOjI02NF9h0c6ze++wPlzXLcB2GFKGuywow8dGRrsqOwCrF3EfNcBu054R4YGO+bnNpuvI0ODHXZkb7DDjj50ZGiwo+MOB53mdxmwco7rVgAXT0mDHXb0oSNDgx2Va4B9FzHf/et5J7kjQ4Md83ObzdeRocEOO7I32GFHHzoyNNjRdcc4Dt/q6wV4GXAb8EbgwVSjfocBLwXWAX8+DQ122NGHjgwNdmxa9oeBc4El88yzBDgH+NAkd2RosGPBpqnfZrN1ZGiww47sDXbY0YeODA12dN/R+n+o7xfgWOAW4M76zthQ3xHHTlODHXb0oSNDgx0FqqNUbgS+Duw/4vqHAF+r57n/JHdkaLBjUV1Tvc1m7MjQYIcd2RvssKMPHRka7Oi2I+oFah4RsRPwGGAp1Uc9nwU8nOoOefK0NNhhRx86MjTYARGxHPg0cD/gKmANUIC9gGX1tOeVUr7XVkOWjgwNdiyqa6q32YwdGRrssCN7gx129KEjQ4Md3XUsaeoXTZKI2JXq8LI9gSuAL5RSvlFfdzjwLeCPgJ9McoMddvShI0ODHcNKKasj4oHAc6neG76svuobVB/F+q+llN+22ZClI0ODHcOybCt25Gqww47sDXbY0YeODA12JOoY5yFcfbgABwBXs/kQsw3AecDewGqqw88uBJ4PbDOpDXbY0YeODA12ePHSv0uWbcWOXA122JG9wQ47+tCRocGOXB2t/If6fAG+CPwIOJDqowL3o/rr67XATcALp6HBDjv60JGhwY6RHWvrZS7qMskdGRrsSL2t2JGowQ47sjfYYUcfOjI02JGrw3M6DYiIq4HXllI+O2PavlSHmL28lPKhaWiww44+dGRosGNkx/FU5+hZlFLKCZPakaHBjpEdWbYVOxI12GFH9gY77OhDR4YGO3J1eE6nYfcBfjYwbeP335+iBjvs6ENHhgY7BpRSjh/XsuaToSNDA9gxQoptxY50DXbYkb3BDjv60JGhwY5EHdu0+ct7bK6/wt4xZQ1gxyA7ZsvQkaEB7JD6Jsu2YkeuBrBjkB25GsCOQXbMlqEjQwPYMaiTDt9eNyAiNgA3MnzDLx01vZRy70lssMOOPnRkaLBD6p8s24oduRrssCN7gx129KEjQ4MduTp8e92wVs4fsYUyNIAdg+yYLUNHhgawQ+qbLNuKHZtlaAA7BtmxWYYGsGOQHbNl6MjQAHYM6qzDI50kSZIkSZLUOM/pJEmSJEmSpMY56CRJkiRJkqTGOegkSZLUkYg4PiKuq7/+g4goMy7rIuLyiPhkRDyu61ZJkqQt5aCTJElSLscAjwGeAvw9cC/gjIj4u06rJEmStpCfXidJkpTLj0opZ9dfrwI+FhEnAsdHxKpSyne6S5MkSVo8j3SSJEnK7wTgKuAVXYdIkiQtloNOkiRJyZVS7gT+E3h01y2SJEmL5aCTJElSP/wCuE/XEZIkSYvloJMkSVI/RNcBkiRJW8JBJ0mSpH5YBlzTdYQkSdJiOegkSZKUXEQsAQ4Bzuq6RZIkabEcdJIkScrvzcD9gPd3HSJJkrRYS7oOkCRJ0iz7RcR1wPbAPsARwGHA8aWUVZ2WSZIkbQEHnSRJknJ5Z/3vb4Grqd5St6KUcmZ3SZIkSVsuSildN0iSJEmSJGnCeE4nSZIkSZIkNc5BJ0mSJEmSJDXOQSdJkiRJkiQ1zkEnSZIkSZIkNc5BJ0mSJEmSJDXOQSdJkiRJkiQ1zkEnSZIkSZIkNc5BJ0mSJEmSJDXu/wMfWQEf7Xk0rgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(20, 12))\n", "plt.rc('font', size=15)\n", "g = sns.barplot(x=\"ID\", y=\"Gini_index\", hue=\"timepoint\", data=master_df, hue_order = ['None', '0','4','7','14'])\n", "g.set_xticklabels(g.get_xticklabels(), rotation=90)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }