{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example : k fold cross-validation with an input file \n",
"\n",
"DeepBiome package takes microbiome abundance data as input and uses the phylogenetic taxonomy to guide the decision of the optimal number of layers and neurons in the deep learning architecture.\n",
"\n",
"To use DeepBiome, you can experiment (1) __k times repetition__ or (2) __k fold cross-validation__.\n",
"For each experiment, we asuume that the dataset is given by\n",
"- __A list of k input files for k times repetition.__\n",
"- __One input file for k fold cross-validation.__\n",
"\n",
"This notebook contains an example of (2) __k fold cross-validation__ for the deep neural netowrk using deepbiome."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Load library\n",
"\n",
"First, we load the DeepBiome package. The DeepBiome package is built on the tensorflow and keras library"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import os\n",
"import logging\n",
"import json\n",
"from pkg_resources import resource_filename\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"pd.set_option('precision', 3)\n",
"pd.set_option('chop_threshold', .0005)\n",
"np.set_printoptions(precision=3, suppress=True)\n",
"\n",
"from deepbiome import deepbiome"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Prepare the dataset\n",
"\n",
"In this example, we assume that we have __one input file for k times repetition.__\n",
"\n",
"DeepBiome needs 3 data files as follows:\n",
"1. **the tree information**\n",
"1. **the input file**\n",
"1. **y**\n",
"\n",
"In addition, we can set **the training index for each fold**. If we set the index file, DeepBiome builds the training set for each fold based on each fold index in the index file. If not, DeepBiome will generate the index file locally.\n",
" \n",
"Each data should have the csv format as follow:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example of the tree information\n",
"\n",
"First we need a file about the phylogenetic tree information. This tree information file should have the format below:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Genus | \n",
" Family | \n",
" Order | \n",
" Class | \n",
" Phylum | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Streptococcus | \n",
" Streptococcaceae | \n",
" Lactobacillales | \n",
" Bacilli | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 1 | \n",
" Tropheryma | \n",
" Cellulomonadaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 2 | \n",
" Veillonella | \n",
" Veillonellaceae | \n",
" Selenomonadales | \n",
" Negativicutes | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 3 | \n",
" Actinomyces | \n",
" Actinomycetaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 4 | \n",
" Flavobacterium | \n",
" Flavobacteriaceae | \n",
" Flavobacteriales | \n",
" Flavobacteria | \n",
" Bacteroidetes | \n",
"
\n",
" \n",
" 5 | \n",
" Prevotella | \n",
" Prevotellaceae | \n",
" Bacteroidales | \n",
" Bacteroidia | \n",
" Bacteroidetes | \n",
"
\n",
" \n",
" 6 | \n",
" Porphyromonas | \n",
" Porphyromonadaceae | \n",
" Bacteroidales | \n",
" Bacteroidia | \n",
" Bacteroidetes | \n",
"
\n",
" \n",
" 7 | \n",
" Parvimonas | \n",
" Clostridiales_Incertae_Sedis_XI | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 8 | \n",
" Fusobacterium | \n",
" Fusobacteriaceae | \n",
" Fusobacteriales | \n",
" Fusobacteria | \n",
" Fusobacteria | \n",
"
\n",
" \n",
" 9 | \n",
" Propionibacterium | \n",
" Propionibacteriaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 10 | \n",
" Gemella | \n",
" Bacillales_Incertae_Sedis_XI | \n",
" Bacillales | \n",
" Bacilli | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 11 | \n",
" Rothia | \n",
" Micrococcaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 12 | \n",
" Granulicatella | \n",
" Carnobacteriaceae | \n",
" Lactobacillales | \n",
" Bacilli | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 13 | \n",
" Neisseria | \n",
" Neisseriaceae | \n",
" Neisseriales | \n",
" Betaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 14 | \n",
" Lactobacillus | \n",
" Lactobacillaceae | \n",
" Lactobacillales | \n",
" Bacilli | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 15 | \n",
" Megasphaera | \n",
" Veillonellaceae | \n",
" Selenomonadales | \n",
" Negativicutes | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 16 | \n",
" Catonella | \n",
" Lachnospiraceae | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 17 | \n",
" Atopobium | \n",
" Coriobacteriaceae | \n",
" Coriobacteriales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 18 | \n",
" Campylobacter | \n",
" Campylobacteraceae | \n",
" Campylobacterales | \n",
" Epsilonproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 19 | \n",
" Capnocytophaga | \n",
" Flavobacteriaceae | \n",
" Flavobacteriales | \n",
" Flavobacteria | \n",
" Bacteroidetes | \n",
"
\n",
" \n",
" 20 | \n",
" Solobacterium | \n",
" Erysipelotrichaceae | \n",
" Erysipelotrichales | \n",
" Erysipelotrichia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 21 | \n",
" Moryella | \n",
" Lachnospiraceae | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 22 | \n",
" TM7_genera_incertae_sedis | \n",
" TM7_genera_incertae_sedis | \n",
" TM7_genera_incertae_sedis | \n",
" TM7_genera_incertae_sedis | \n",
" TM7 | \n",
"
\n",
" \n",
" 23 | \n",
" Staphylococcus | \n",
" Staphylococcaceae | \n",
" Bacillales | \n",
" Bacilli | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 24 | \n",
" Filifactor | \n",
" Peptostreptococcaceae | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 25 | \n",
" Oribacterium | \n",
" Lachnospiraceae | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 26 | \n",
" Burkholderia | \n",
" Burkholderiaceae | \n",
" Burkholderiales | \n",
" Betaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 27 | \n",
" Sneathia | \n",
" Leptotrichiaceae | \n",
" Fusobacteriales | \n",
" Fusobacteria | \n",
" Fusobacteria | \n",
"
\n",
" \n",
" 28 | \n",
" Treponema | \n",
" Spirochaetaceae | \n",
" Spirochaetales | \n",
" Spirochaetes | \n",
" Spirochaetes | \n",
"
\n",
" \n",
" 29 | \n",
" Moraxella | \n",
" Moraxellaceae | \n",
" Pseudomonadales | \n",
" Gammaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 30 | \n",
" Haemophilus | \n",
" Pasteurellaceae | \n",
" Pasteurellales | \n",
" Gammaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 31 | \n",
" Selenomonas | \n",
" Veillonellaceae | \n",
" Selenomonadales | \n",
" Negativicutes | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 32 | \n",
" Corynebacterium | \n",
" Corynebacteriaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 33 | \n",
" Rhizobium | \n",
" Rhizobiaceae | \n",
" Rhizobiales | \n",
" Alphaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 34 | \n",
" Bradyrhizobium | \n",
" Bradyrhizobiaceae | \n",
" Rhizobiales | \n",
" Alphaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 35 | \n",
" Methylobacterium | \n",
" Methylobacteriaceae | \n",
" Rhizobiales | \n",
" Alphaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 36 | \n",
" OD1_genera_incertae_sedis | \n",
" OD1_genera_incertae_sedis | \n",
" OD1_genera_incertae_sedis | \n",
" OD1_genera_incertae_sedis | \n",
" OD1 | \n",
"
\n",
" \n",
" 37 | \n",
" Finegoldia | \n",
" Clostridiales_Incertae_Sedis_XI | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 38 | \n",
" Microbacterium | \n",
" Microbacteriaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
" 39 | \n",
" Sphingomonas | \n",
" Sphingomonadaceae | \n",
" Sphingomonadales | \n",
" Alphaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 40 | \n",
" Chryseobacterium | \n",
" Flavobacteriaceae | \n",
" Flavobacteriales | \n",
" Flavobacteria | \n",
" Bacteroidetes | \n",
"
\n",
" \n",
" 41 | \n",
" Bacteroides | \n",
" Bacteroidaceae | \n",
" Bacteroidales | \n",
" Bacteroidia | \n",
" Bacteroidetes | \n",
"
\n",
" \n",
" 42 | \n",
" Bdellovibrio | \n",
" Bdellovibrionaceae | \n",
" Bdellovibrionales | \n",
" Deltaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 43 | \n",
" Streptophyta | \n",
" Chloroplast | \n",
" Chloroplast | \n",
" Chloroplast | \n",
" Cyanobacteria_Chloroplast | \n",
"
\n",
" \n",
" 44 | \n",
" Lachnospiracea_incertae_sedis | \n",
" Lachnospiraceae | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 45 | \n",
" Paracoccus | \n",
" Rhodobacteraceae | \n",
" Rhodobacterales | \n",
" Alphaproteobacteria | \n",
" Proteobacteria | \n",
"
\n",
" \n",
" 46 | \n",
" Fastidiosipila | \n",
" Ruminococcaceae | \n",
" Clostridiales | \n",
" Clostridia | \n",
" Firmicutes | \n",
"
\n",
" \n",
" 47 | \n",
" Pseudonocardia | \n",
" Pseudonocardiaceae | \n",
" Actinomycetales | \n",
" Actinobacteria | \n",
" Actinobacteria | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Genus Family \\\n",
"0 Streptococcus Streptococcaceae \n",
"1 Tropheryma Cellulomonadaceae \n",
"2 Veillonella Veillonellaceae \n",
"3 Actinomyces Actinomycetaceae \n",
"4 Flavobacterium Flavobacteriaceae \n",
"5 Prevotella Prevotellaceae \n",
"6 Porphyromonas Porphyromonadaceae \n",
"7 Parvimonas Clostridiales_Incertae_Sedis_XI \n",
"8 Fusobacterium Fusobacteriaceae \n",
"9 Propionibacterium Propionibacteriaceae \n",
"10 Gemella Bacillales_Incertae_Sedis_XI \n",
"11 Rothia Micrococcaceae \n",
"12 Granulicatella Carnobacteriaceae \n",
"13 Neisseria Neisseriaceae \n",
"14 Lactobacillus Lactobacillaceae \n",
"15 Megasphaera Veillonellaceae \n",
"16 Catonella Lachnospiraceae \n",
"17 Atopobium Coriobacteriaceae \n",
"18 Campylobacter Campylobacteraceae \n",
"19 Capnocytophaga Flavobacteriaceae \n",
"20 Solobacterium Erysipelotrichaceae \n",
"21 Moryella Lachnospiraceae \n",
"22 TM7_genera_incertae_sedis TM7_genera_incertae_sedis \n",
"23 Staphylococcus Staphylococcaceae \n",
"24 Filifactor Peptostreptococcaceae \n",
"25 Oribacterium Lachnospiraceae \n",
"26 Burkholderia Burkholderiaceae \n",
"27 Sneathia Leptotrichiaceae \n",
"28 Treponema Spirochaetaceae \n",
"29 Moraxella Moraxellaceae \n",
"30 Haemophilus Pasteurellaceae \n",
"31 Selenomonas Veillonellaceae \n",
"32 Corynebacterium Corynebacteriaceae \n",
"33 Rhizobium Rhizobiaceae \n",
"34 Bradyrhizobium Bradyrhizobiaceae \n",
"35 Methylobacterium Methylobacteriaceae \n",
"36 OD1_genera_incertae_sedis OD1_genera_incertae_sedis \n",
"37 Finegoldia Clostridiales_Incertae_Sedis_XI \n",
"38 Microbacterium Microbacteriaceae \n",
"39 Sphingomonas Sphingomonadaceae \n",
"40 Chryseobacterium Flavobacteriaceae \n",
"41 Bacteroides Bacteroidaceae \n",
"42 Bdellovibrio Bdellovibrionaceae \n",
"43 Streptophyta Chloroplast \n",
"44 Lachnospiracea_incertae_sedis Lachnospiraceae \n",
"45 Paracoccus Rhodobacteraceae \n",
"46 Fastidiosipila Ruminococcaceae \n",
"47 Pseudonocardia Pseudonocardiaceae \n",
"\n",
" Order Class \\\n",
"0 Lactobacillales Bacilli \n",
"1 Actinomycetales Actinobacteria \n",
"2 Selenomonadales Negativicutes \n",
"3 Actinomycetales Actinobacteria \n",
"4 Flavobacteriales Flavobacteria \n",
"5 Bacteroidales Bacteroidia \n",
"6 Bacteroidales Bacteroidia \n",
"7 Clostridiales Clostridia \n",
"8 Fusobacteriales Fusobacteria \n",
"9 Actinomycetales Actinobacteria \n",
"10 Bacillales Bacilli \n",
"11 Actinomycetales Actinobacteria \n",
"12 Lactobacillales Bacilli \n",
"13 Neisseriales Betaproteobacteria \n",
"14 Lactobacillales Bacilli \n",
"15 Selenomonadales Negativicutes \n",
"16 Clostridiales Clostridia \n",
"17 Coriobacteriales Actinobacteria \n",
"18 Campylobacterales Epsilonproteobacteria \n",
"19 Flavobacteriales Flavobacteria \n",
"20 Erysipelotrichales Erysipelotrichia \n",
"21 Clostridiales Clostridia \n",
"22 TM7_genera_incertae_sedis TM7_genera_incertae_sedis \n",
"23 Bacillales Bacilli \n",
"24 Clostridiales Clostridia \n",
"25 Clostridiales Clostridia \n",
"26 Burkholderiales Betaproteobacteria \n",
"27 Fusobacteriales Fusobacteria \n",
"28 Spirochaetales Spirochaetes \n",
"29 Pseudomonadales Gammaproteobacteria \n",
"30 Pasteurellales Gammaproteobacteria \n",
"31 Selenomonadales Negativicutes \n",
"32 Actinomycetales Actinobacteria \n",
"33 Rhizobiales Alphaproteobacteria \n",
"34 Rhizobiales Alphaproteobacteria \n",
"35 Rhizobiales Alphaproteobacteria \n",
"36 OD1_genera_incertae_sedis OD1_genera_incertae_sedis \n",
"37 Clostridiales Clostridia \n",
"38 Actinomycetales Actinobacteria \n",
"39 Sphingomonadales Alphaproteobacteria \n",
"40 Flavobacteriales Flavobacteria \n",
"41 Bacteroidales Bacteroidia \n",
"42 Bdellovibrionales Deltaproteobacteria \n",
"43 Chloroplast Chloroplast \n",
"44 Clostridiales Clostridia \n",
"45 Rhodobacterales Alphaproteobacteria \n",
"46 Clostridiales Clostridia \n",
"47 Actinomycetales Actinobacteria \n",
"\n",
" Phylum \n",
"0 Firmicutes \n",
"1 Actinobacteria \n",
"2 Firmicutes \n",
"3 Actinobacteria \n",
"4 Bacteroidetes \n",
"5 Bacteroidetes \n",
"6 Bacteroidetes \n",
"7 Firmicutes \n",
"8 Fusobacteria \n",
"9 Actinobacteria \n",
"10 Firmicutes \n",
"11 Actinobacteria \n",
"12 Firmicutes \n",
"13 Proteobacteria \n",
"14 Firmicutes \n",
"15 Firmicutes \n",
"16 Firmicutes \n",
"17 Actinobacteria \n",
"18 Proteobacteria \n",
"19 Bacteroidetes \n",
"20 Firmicutes \n",
"21 Firmicutes \n",
"22 TM7 \n",
"23 Firmicutes \n",
"24 Firmicutes \n",
"25 Firmicutes \n",
"26 Proteobacteria \n",
"27 Fusobacteria \n",
"28 Spirochaetes \n",
"29 Proteobacteria \n",
"30 Proteobacteria \n",
"31 Firmicutes \n",
"32 Actinobacteria \n",
"33 Proteobacteria \n",
"34 Proteobacteria \n",
"35 Proteobacteria \n",
"36 OD1 \n",
"37 Firmicutes \n",
"38 Actinobacteria \n",
"39 Proteobacteria \n",
"40 Bacteroidetes \n",
"41 Bacteroidetes \n",
"42 Proteobacteria \n",
"43 Cyanobacteria_Chloroplast \n",
"44 Firmicutes \n",
"45 Proteobacteria \n",
"46 Firmicutes \n",
"47 Actinobacteria "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tree_information = pd.read_csv(resource_filename('deepbiome', 'tests/data/genus48_dic.csv'))\n",
"tree_information"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This file has `.csv` format below:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Genus,Family,Order,Class,Phylum\n",
"Streptococcus,Streptococcaceae,Lactobacillales,Bacilli,Firmicutes\n",
"Tropheryma,Cellulomonadaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"Veillonella,Veillonellaceae,Selenomonadales,Negativicutes,Firmicutes\n",
"Actinomyces,Actinomycetaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"Flavobacterium,Flavobacteriaceae,Flavobacteriales,Flavobacteria,Bacteroidetes\n",
"Prevotella,Prevotellaceae,Bacteroidales,Bacteroidia,Bacteroidetes\n",
"Porphyromonas,Porphyromonadaceae,Bacteroidales,Bacteroidia,Bacteroidetes\n",
"Parvimonas,Clostridiales_Incertae_Sedis_XI,Clostridiales,Clostridia,Firmicutes\n",
"Fusobacterium,Fusobacteriaceae,Fusobacteriales,Fusobacteria,Fusobacteria\n",
"Propionibacterium,Propionibacteriaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"Gemella,Bacillales_Incertae_Sedis_XI,Bacillales,Bacilli,Firmicutes\n",
"Rothia,Micrococcaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"Granulicatella,Carnobacteriaceae,Lactobacillales,Bacilli,Firmicutes\n",
"Neisseria,Neisseriaceae,Neisseriales,Betaproteobacteria,Proteobacteria\n",
"Lactobacillus,Lactobacillaceae,Lactobacillales,Bacilli,Firmicutes\n",
"Megasphaera,Veillonellaceae,Selenomonadales,Negativicutes,Firmicutes\n",
"Catonella,Lachnospiraceae,Clostridiales,Clostridia,Firmicutes\n",
"Atopobium,Coriobacteriaceae,Coriobacteriales,Actinobacteria,Actinobacteria\n",
"Campylobacter,Campylobacteraceae,Campylobacterales,Epsilonproteobacteria,Proteobacteria\n",
"Capnocytophaga,Flavobacteriaceae,Flavobacteriales,Flavobacteria,Bacteroidetes\n",
"Solobacterium,Erysipelotrichaceae,Erysipelotrichales,Erysipelotrichia,Firmicutes\n",
"Moryella,Lachnospiraceae,Clostridiales,Clostridia,Firmicutes\n",
"TM7_genera_incertae_sedis,TM7_genera_incertae_sedis,TM7_genera_incertae_sedis,TM7_genera_incertae_sedis,TM7\n",
"Staphylococcus,Staphylococcaceae,Bacillales,Bacilli,Firmicutes\n",
"Filifactor,Peptostreptococcaceae,Clostridiales,Clostridia,Firmicutes\n",
"Oribacterium,Lachnospiraceae,Clostridiales,Clostridia,Firmicutes\n",
"Burkholderia,Burkholderiaceae,Burkholderiales,Betaproteobacteria,Proteobacteria\n",
"Sneathia,Leptotrichiaceae,Fusobacteriales,Fusobacteria,Fusobacteria\n",
"Treponema,Spirochaetaceae,Spirochaetales,Spirochaetes,Spirochaetes\n",
"Moraxella,Moraxellaceae,Pseudomonadales,Gammaproteobacteria,Proteobacteria\n",
"Haemophilus,Pasteurellaceae,Pasteurellales,Gammaproteobacteria,Proteobacteria\n",
"Selenomonas,Veillonellaceae,Selenomonadales,Negativicutes,Firmicutes\n",
"Corynebacterium,Corynebacteriaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"Rhizobium,Rhizobiaceae,Rhizobiales,Alphaproteobacteria,Proteobacteria\n",
"Bradyrhizobium,Bradyrhizobiaceae,Rhizobiales,Alphaproteobacteria,Proteobacteria\n",
"Methylobacterium,Methylobacteriaceae,Rhizobiales,Alphaproteobacteria,Proteobacteria\n",
"OD1_genera_incertae_sedis,OD1_genera_incertae_sedis,OD1_genera_incertae_sedis,OD1_genera_incertae_sedis,OD1\n",
"Finegoldia,Clostridiales_Incertae_Sedis_XI,Clostridiales,Clostridia,Firmicutes\n",
"Microbacterium,Microbacteriaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"Sphingomonas,Sphingomonadaceae,Sphingomonadales,Alphaproteobacteria,Proteobacteria\n",
"Chryseobacterium,Flavobacteriaceae,Flavobacteriales,Flavobacteria,Bacteroidetes\n",
"Bacteroides,Bacteroidaceae,Bacteroidales,Bacteroidia,Bacteroidetes\n",
"Bdellovibrio,Bdellovibrionaceae,Bdellovibrionales,Deltaproteobacteria,Proteobacteria\n",
"Streptophyta,Chloroplast,Chloroplast,Chloroplast,Cyanobacteria_Chloroplast\n",
"Lachnospiracea_incertae_sedis,Lachnospiraceae,Clostridiales,Clostridia,Firmicutes\n",
"Paracoccus,Rhodobacteraceae,Rhodobacterales,Alphaproteobacteria,Proteobacteria\n",
"Fastidiosipila,Ruminococcaceae,Clostridiales,Clostridia,Firmicutes\n",
"Pseudonocardia,Pseudonocardiaceae,Actinomycetales,Actinobacteria,Actinobacteria\n",
"\n"
]
}
],
"source": [
"with open(resource_filename('deepbiome', 'tests/data/genus48_dic.csv')) as f:\n",
" print(f.read())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example of the input file\n",
"\n",
"Below is an example of the input file.\n",
"This example has 1000 samples' microbiome abandunce. __The order of the microbiome should be same as the order of the microbiome in the Genus level in the tree information above.__"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Streptococcus | \n",
" Tropheryma | \n",
" Veillonella | \n",
" Actinomyces | \n",
" Flavobacterium | \n",
" Prevotella | \n",
" Porphyromonas | \n",
" Parvimonas | \n",
" Fusobacterium | \n",
" Propionibacterium | \n",
" ... | \n",
" Microbacterium | \n",
" Sphingomonas | \n",
" Chryseobacterium | \n",
" Bacteroides | \n",
" Bdellovibrio | \n",
" Streptophyta | \n",
" Lachnospiracea_incertae_sedis | \n",
" Paracoccus | \n",
" Fastidiosipila | \n",
" Pseudonocardia | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 841 | \n",
" 0 | \n",
" 813 | \n",
" 505 | \n",
" 5 | \n",
" 3224 | \n",
" 0 | \n",
" 362 | \n",
" 11 | \n",
" 65 | \n",
" ... | \n",
" 0 | \n",
" 87 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 2133 | \n",
"
\n",
" \n",
" 1 | \n",
" 1445 | \n",
" 0 | \n",
" 1 | \n",
" 573 | \n",
" 0 | \n",
" 1278 | \n",
" 82 | \n",
" 85 | \n",
" 69 | \n",
" 154 | \n",
" ... | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 3638 | \n",
"
\n",
" \n",
" 2 | \n",
" 1259 | \n",
" 0 | \n",
" 805 | \n",
" 650 | \n",
" 0 | \n",
" 1088 | \n",
" 0 | \n",
" 0 | \n",
" 74 | \n",
" 0 | \n",
" ... | \n",
" 0 | \n",
" 2 | \n",
" 8 | \n",
" 1 | \n",
" 39 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 3445 | \n",
"
\n",
" \n",
" 3 | \n",
" 982 | \n",
" 0 | \n",
" 327 | \n",
" 594 | \n",
" 0 | \n",
" 960 | \n",
" 81 | \n",
" 19 | \n",
" 9 | \n",
" 0 | \n",
" ... | \n",
" 157 | \n",
" 1 | \n",
" 0 | \n",
" 4 | \n",
" 60 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 3507 | \n",
"
\n",
" \n",
" 4 | \n",
" 1162 | \n",
" 0 | \n",
" 130 | \n",
" 969 | \n",
" 163 | \n",
" 1515 | \n",
" 167 | \n",
" 4 | \n",
" 162 | \n",
" 3 | \n",
" ... | \n",
" 0 | \n",
" 9 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 60 | \n",
" 0 | \n",
" 0 | \n",
" 3945 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 48 columns
\n",
"
"
],
"text/plain": [
" Streptococcus Tropheryma Veillonella Actinomyces Flavobacterium \\\n",
"0 841 0 813 505 5 \n",
"1 1445 0 1 573 0 \n",
"2 1259 0 805 650 0 \n",
"3 982 0 327 594 0 \n",
"4 1162 0 130 969 163 \n",
"\n",
" Prevotella Porphyromonas Parvimonas Fusobacterium Propionibacterium \\\n",
"0 3224 0 362 11 65 \n",
"1 1278 82 85 69 154 \n",
"2 1088 0 0 74 0 \n",
"3 960 81 19 9 0 \n",
"4 1515 167 4 162 3 \n",
"\n",
" ... Microbacterium Sphingomonas Chryseobacterium Bacteroides \\\n",
"0 ... 0 87 0 0 \n",
"1 ... 0 1 2 0 \n",
"2 ... 0 2 8 1 \n",
"3 ... 157 1 0 4 \n",
"4 ... 0 9 0 0 \n",
"\n",
" Bdellovibrio Streptophyta Lachnospiracea_incertae_sedis Paracoccus \\\n",
"0 0 0 0 0 \n",
"1 0 0 0 0 \n",
"2 39 0 0 0 \n",
"3 60 0 0 0 \n",
"4 0 0 60 0 \n",
"\n",
" Fastidiosipila Pseudonocardia \n",
"0 0 2133 \n",
"1 0 3638 \n",
"2 0 3445 \n",
"3 0 3507 \n",
"4 0 3945 \n",
"\n",
"[5 rows x 48 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = pd.read_csv(resource_filename('deepbiome', 'tests/data/onefile_x.csv'))\n",
"x.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Streptococcus | \n",
" Tropheryma | \n",
" Veillonella | \n",
" Actinomyces | \n",
" Flavobacterium | \n",
" Prevotella | \n",
" Porphyromonas | \n",
" Parvimonas | \n",
" Fusobacterium | \n",
" Propionibacterium | \n",
" ... | \n",
" Microbacterium | \n",
" Sphingomonas | \n",
" Chryseobacterium | \n",
" Bacteroides | \n",
" Bdellovibrio | \n",
" Streptophyta | \n",
" Lachnospiracea_incertae_sedis | \n",
" Paracoccus | \n",
" Fastidiosipila | \n",
" Pseudonocardia | \n",
"
\n",
" \n",
" \n",
" \n",
" 995 | \n",
" 1401 | \n",
" 4 | \n",
" 30 | \n",
" 526 | \n",
" 0 | \n",
" 923 | \n",
" 25 | \n",
" 0 | \n",
" 127 | \n",
" 0 | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 7 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 4470 | \n",
"
\n",
" \n",
" 996 | \n",
" 2655 | \n",
" 6 | \n",
" 106 | \n",
" 74 | \n",
" 0 | \n",
" 952 | \n",
" 76 | \n",
" 13 | \n",
" 158 | \n",
" 125 | \n",
" ... | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 2826 | \n",
"
\n",
" \n",
" 997 | \n",
" 335 | \n",
" 0 | \n",
" 71 | \n",
" 259 | \n",
" 67 | \n",
" 718 | \n",
" 1 | \n",
" 4 | \n",
" 4 | \n",
" 167 | \n",
" ... | \n",
" 0 | \n",
" 246 | \n",
" 0 | \n",
" 0 | \n",
" 6 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 6527 | \n",
"
\n",
" \n",
" 998 | \n",
" 649 | \n",
" 69 | \n",
" 966 | \n",
" 1227 | \n",
" 0 | \n",
" 508 | \n",
" 2 | \n",
" 30 | \n",
" 550 | \n",
" 0 | \n",
" ... | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 6 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 4402 | \n",
"
\n",
" \n",
" 999 | \n",
" 1258 | \n",
" 0 | \n",
" 0 | \n",
" 1119 | \n",
" 0 | \n",
" 2348 | \n",
" 25 | \n",
" 0 | \n",
" 137 | \n",
" 176 | \n",
" ... | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 2585 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 48 columns
\n",
"
"
],
"text/plain": [
" Streptococcus Tropheryma Veillonella Actinomyces Flavobacterium \\\n",
"995 1401 4 30 526 0 \n",
"996 2655 6 106 74 0 \n",
"997 335 0 71 259 67 \n",
"998 649 69 966 1227 0 \n",
"999 1258 0 0 1119 0 \n",
"\n",
" Prevotella Porphyromonas Parvimonas Fusobacterium Propionibacterium \\\n",
"995 923 25 0 127 0 \n",
"996 952 76 13 158 125 \n",
"997 718 1 4 4 167 \n",
"998 508 2 30 550 0 \n",
"999 2348 25 0 137 176 \n",
"\n",
" ... Microbacterium Sphingomonas Chryseobacterium Bacteroides \\\n",
"995 ... 0 0 7 0 \n",
"996 ... 0 2 0 0 \n",
"997 ... 0 246 0 0 \n",
"998 ... 0 0 0 0 \n",
"999 ... 0 2 0 0 \n",
"\n",
" Bdellovibrio Streptophyta Lachnospiracea_incertae_sedis Paracoccus \\\n",
"995 0 0 0 0 \n",
"996 0 0 0 0 \n",
"997 6 0 0 0 \n",
"998 0 6 0 0 \n",
"999 0 0 0 0 \n",
"\n",
" Fastidiosipila Pseudonocardia \n",
"995 0 4470 \n",
"996 0 2826 \n",
"997 0 6527 \n",
"998 0 4402 \n",
"999 0 2585 \n",
"\n",
"[5 rows x 48 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This file has `.csv` format below:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\"Streptococcus\",\"Tropheryma\",\"Veillonella\",\"Actinomyces\",\"Flavobacterium\",\"Prevotella\",\"Porphyromonas\",\"Parvimonas\",\"Fusobacterium\",\"Propionibacterium\",\"Gemella\",\"Rothia\",\"Granulicatella\",\"Neisseria\",\"Lactobacillus\",\"Megasphaera\",\"Catonella\",\"Atopobium\",\"Campylobacter\",\"Capnocytophaga\",\"Solobacterium\",\"Moryella\",\"TM7_genera_incertae_sedis\",\"Staphylococcus\",\"Filifactor\",\"Oribacterium\",\"Burkholderia\",\"Sneathia\",\"Treponema\",\"Moraxella\",\"Haemophilus\",\"Selenomonas\",\"Corynebacterium\",\"Rhizobium\",\"Bradyrhizobium\",\"Methylobacterium\",\"OD1_genera_incertae_sedis\",\"Finegoldia\",\"Microbacterium\",\"Sphingomonas\",\"Chryseobacterium\",\"Bacteroides\",\"Bdellovibrio\",\"Streptophyta\",\"Lachnospiracea_incertae_sedis\",\"Paracoccus\",\"Fastidiosipila\",\"Pseudonocardia\"\n",
"\n",
"841,0,813,505,5,3224,0,362,11,65,156,1,55,0,1,20,382,1,333,24,80,43,309,2,3,4,0,1,32,0,2,4,382,0,0,96,23,0,0,87,0,0,0,0,0,0,0,2133\n",
"\n",
"1445,0,1,573,0,1278,82,85,69,154,436,3,0,61,440,0,394,83,33,123,0,49,414,0,0,37,0,0,42,0,0,384,27,0,0,0,146,0,0,1,2,0,0,0,0,0,0,3638\n",
"\n",
"1259,0,805,650,0,1088,0,0,74,0,155,228,430,765,0,0,11,102,68,90,77,83,322,10,0,7,0,122,76,0,1,25,0,0,0,44,13,0,0,2,8,1,39,0,0,0,0,3445\n",
"\n",
"982,0,327,594,0,960,81,19,9,0,45,457,1049,0,3,450,19,170,388,147,0,0,41,63,0,1,0,0,121,0,0,1,0,0,0,0,344,0,157,1,0,4,60,0,0,0,0,3507\n",
"\n",
"1162,0,130,969,163,1515,167,4,162,3,12,0,48,73,93,259,52,0,201,85,14,14,434,2,0,0,0,0,187,0,0,188,45,0,0,0,4,0,0,9,0,0,0,0,60,0,0,3945\n",
"\n",
"1956,37,41,661,47,1555,374,7,142,19,61,226,0,30,52,0,6,480,142,148,9,575,12,0,0,0,0,3,168,0,56,50,0,0,0,98,989,0,0,12,0,0,0,0,0,0,0,2044\n",
"\n",
"1037,14,83,1595,132,305,103,174,1195,0,410,224,1,320,26,0,476,0,7,37,46,61,20,0,0,0,0,0,226,0,239,8,1,0,0,0,0,188,0,20,4,0,4,0,0,0,0,3044\n",
"\n",
"641,0,172,179,0,1312,84,9,81,376,128,223,160,0,532,155,89,355,1,282,0,0,25,0,0,43,0,9,311,0,0,0,0,0,0,0,845,0,0,8,0,0,0,0,0,0,0,3980\n",
"\n",
"852,146,504,99,2,376,116,152,67,0,120,3,23,2,34,0,127,75,240,60,42,0,9,0,15,0,62,0,13,0,197,187,396,0,0,20,51,0,0,3,0,0,0,0,0,0,0,6007\n",
"\n"
]
}
],
"source": [
"with open(resource_filename('deepbiome', 'tests/data/onefile_x.csv')) as f:\n",
" x_csv = f.readlines()\n",
" _ = [print(l) for l in x_csv[:10]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example of the Y (regression)\n",
"\n",
"This is an example of the output file for regression problem."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" x1 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 4.997 | \n",
"
\n",
" \n",
" 1 | \n",
" 5.004 | \n",
"
\n",
" \n",
" 2 | \n",
" 5.485 | \n",
"
\n",
" \n",
" 3 | \n",
" 5.490 | \n",
"
\n",
" \n",
" 4 | \n",
" 1.500 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" x1\n",
"0 4.997\n",
"1 5.004\n",
"2 5.485\n",
"3 5.490\n",
"4 1.500"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = pd.read_csv(resource_filename('deepbiome', 'tests/data/onefile_regression_y.csv'))\n",
"y.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" x1 | \n",
"
\n",
" \n",
" \n",
" \n",
" 995 | \n",
" 2.610 | \n",
"
\n",
" \n",
" 996 | \n",
" 5.489 | \n",
"
\n",
" \n",
" 997 | \n",
" 3.498 | \n",
"
\n",
" \n",
" 998 | \n",
" 5.486 | \n",
"
\n",
" \n",
" 999 | \n",
" 5.320 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" x1\n",
"995 2.610\n",
"996 5.489\n",
"997 3.498\n",
"998 5.486\n",
"999 5.320"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example of the Y (classification)\n",
"\n",
"This is an example of the output file for classification problem. Below example file has 1000 samples in rows."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" V1 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1.000 | \n",
"
\n",
" \n",
" 1 | \n",
" 1.000 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.000 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.000 | \n",
"
\n",
" \n",
" 4 | \n",
" 1.000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" V1\n",
"0 1.000\n",
"1 1.000\n",
"2 0.000\n",
"3 0.000\n",
"4 1.000"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = pd.read_csv(resource_filename('deepbiome', 'tests/data/onefile_classification_y.csv'))\n",
"y.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" V1 | \n",
"
\n",
" \n",
" \n",
" \n",
" 995 | \n",
" 1.000 | \n",
"
\n",
" \n",
" 996 | \n",
" 0.000 | \n",
"
\n",
" \n",
" 997 | \n",
" 1.000 | \n",
"
\n",
" \n",
" 998 | \n",
" 0.000 | \n",
"
\n",
" \n",
" 999 | \n",
" 1.000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" V1\n",
"995 1.000\n",
"996 0.000\n",
"997 1.000\n",
"998 0.000\n",
"999 1.000"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exmple of the training index file for `k` fold cross-validation\n",
"\n",
"For each fold, we have to set the training and test set. If the index file is given, DeepBiome sets the training set and test set based on the index file for 5 fold cross-validation. Below is the example of the index file. Each column has the training indices for each fold. DeepBiome will only use the samples in this index set for training."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 3 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 2 | \n",
" 4 | \n",
" 2 | \n",
" 2 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 3 | \n",
" 5 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" 3 | \n",
" 6 | \n",
" 4 | \n",
" 7 | \n",
" 4 | \n",
" 5 | \n",
"
\n",
" \n",
" 4 | \n",
" 7 | \n",
" 5 | \n",
" 9 | \n",
" 5 | \n",
" 6 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 1 2 3 4\n",
"0 1 1 3 1 1\n",
"1 2 2 4 2 2\n",
"2 3 3 5 3 4\n",
"3 6 4 7 4 5\n",
"4 7 5 9 5 6"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idxs = pd.read_csv(resource_filename('deepbiome', 'tests/data/onefile_idx.csv'), dtype=np.int)\n",
"idxs.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 0 | \n",
" 1 | \n",
" 2 | \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" \n",
" \n",
" 795 | \n",
" 994 | \n",
" 996 | \n",
" 994 | \n",
" 995 | \n",
" 996 | \n",
"
\n",
" \n",
" 796 | \n",
" 995 | \n",
" 997 | \n",
" 995 | \n",
" 996 | \n",
" 997 | \n",
"
\n",
" \n",
" 797 | \n",
" 997 | \n",
" 998 | \n",
" 996 | \n",
" 997 | \n",
" 998 | \n",
"
\n",
" \n",
" 798 | \n",
" 999 | \n",
" 999 | \n",
" 998 | \n",
" 998 | \n",
" 999 | \n",
"
\n",
" \n",
" 799 | \n",
" 1000 | \n",
" 1000 | \n",
" 999 | \n",
" 1000 | \n",
" 1000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 1 2 3 4\n",
"795 994 996 994 995 996\n",
"796 995 997 995 996 997\n",
"797 997 998 996 997 998\n",
"798 999 999 998 998 999\n",
"799 1000 1000 999 1000 1000"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idxs.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below is the index set for 1st fold. From 1000 samples above, it uses 800 samples for training."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 1\n",
"1 2\n",
"2 3\n",
"3 6\n",
"4 7\n",
"Name: 0, dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idxs.iloc[:,0].head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"795 994\n",
"796 995\n",
"797 997\n",
"798 999\n",
"799 1000\n",
"Name: 0, dtype: int64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idxs.iloc[:,0].tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Prepare the configuration\n",
"\n",
"For detailed configuration, we can build the configuration information for the network training by:\n",
"1. the python dictionary format\n",
"1. the configufation file (.cfg).\n",
"\n",
"In this notebook, we show the python dictionary format configuration.\n",
"\n",
"Please check the detailed information about each option in the [documantation](https://young-won.github.io/deepbiome/prerequisites.html#configuration)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### For preparing the configuration about the network information (`network_info`)\n",
"\n",
"To give the information about the training process, we provide a dictionary of configurations to the `netowrk_info` field.\n",
"Your configuration for the network training should include the information about:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"network_info = {\n",
" 'architecture_info': {\n",
" 'batch_normalization': 'False',\n",
" 'drop_out': '0',\n",
" 'weight_initial': 'glorot_uniform',\n",
" 'weight_l1_penalty':'0.',\n",
" 'weight_decay': 'phylogenetic_tree',\n",
" },\n",
" 'model_info': {\n",
" 'lr': '0.01',\n",
" 'decay': '0.001',\n",
" 'loss': 'binary_crossentropy',\n",
" 'metrics': 'binary_accuracy, sensitivity, specificity, gmeasure',\n",
" 'taxa_selection_metrics': 'sensitivity, specificity, gmeasure, accuracy',\n",
" 'network_class': 'DeepBiomeNetwork',\n",
" 'optimizer': 'adam',\n",
" 'reader_class': 'MicroBiomeClassificationReader',\n",
" 'normalizer': 'normalize_minmax',\n",
" },\n",
" 'training_info': {\n",
" 'epochs': '10',\n",
" 'batch_size': '50', \n",
" 'callbacks': 'ModelCheckpoint',\n",
" 'monitor': 'val_loss',\n",
" 'mode' : 'min',\n",
" 'min_delta': '1e-7',\n",
" },\n",
" 'validation_info': {\n",
" 'batch_size': 'None', \n",
" 'validation_size': '0.2'\n",
" },\n",
" 'test_info': {\n",
" 'batch_size': 'None'\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### For preparing the configuration about the path information (`path_info`)\n",
"\n",
"To give the information about the path of dataset, paths for saving the trained weights and the evaluation results, we provide a dictionary of configurations to the `path_info` field.\n",
"Your configuration for the network training should include the information about:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_info = {\n",
" 'data_info': {\n",
" 'data_path': resource_filename('deepbiome', 'tests/data'),\n",
" 'idx_path': resource_filename('deepbiome', 'tests/data/onefile_idx.csv'),\n",
" 'tree_info_path': resource_filename('deepbiome', 'tests/data/genus48_dic.csv'),\n",
" 'x_path': 'onefile_x.csv',\n",
" 'y_path': 'classification_y.csv'\n",
" },\n",
" 'model_info': {\n",
" 'evaluation': 'eval.npy',\n",
" 'history': 'hist.json',\n",
" 'model_dir': './example_result/',\n",
" 'weight': 'weight.h5'\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Deepbiome Training\n",
"\n",
"Now we can train the DeepBiome network based on the configurations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For logging, we used the python logging library."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"logging.basicConfig(format = '[%(name)-8s|%(levelname)s|%(filename)s:%(lineno)s] %(message)s',\n",
" level=logging.DEBUG)\n",
"log = logging.getLogger()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The deeobiome_train function provide the test evaluation, train evaluation and the deepbiome network instance.\n",
"\n",
"If we set `number_of_fold`, then DeepBiome performs cross-validation based on that value. If not, DeepBiome package performs cross-validation based on the index file. If both `number_of_fold` option and the index file are missing, then the library performs leave-one-out-cross-validation (LOOCV)."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|deepbiome.py:115] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------1 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 1 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/resource_variable_ops.py:432: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[tensorflow|WARNING|deprecation.py:328] From /usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/resource_variable_ops.py:432: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 1 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py:2862: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[tensorflow|WARNING|deprecation.py:328] From /usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/math_ops.py:2862: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 1ms/step - loss: 0.6650 - binary_accuracy: 0.6625 - sensitivity: 0.9644 - specificity: 0.0427 - gmeasure: 0.0420 - val_loss: 0.6235 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 134us/step - loss: 0.6316 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6170 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 134us/step - loss: 0.6259 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6176 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 139us/step - loss: 0.6239 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6162 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 152us/step - loss: 0.6237 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6161 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 161us/step - loss: 0.6246 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6169 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 153us/step - loss: 0.6237 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6161 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 150us/step - loss: 0.6249 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6161 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 145us/step - loss: 0.6247 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6174 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 137us/step - loss: 0.6237 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6159 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 4.15680456161499!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_0.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_0.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_0.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.009856224060058594!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6216976642608643, 0.6862499713897705, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 10us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008182048797607422!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6188781261444092, 0.6899999976158142, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 5.385685920715332\n",
"[root |INFO|deepbiome.py:200] 1 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------2 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 2 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 2 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 0s 768us/step - loss: 0.6595 - binary_accuracy: 0.7078 - sensitivity: 0.9801 - specificity: 0.0121 - gmeasure: 0.0263 - val_loss: 0.6135 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 127us/step - loss: 0.6079 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5757 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 142us/step - loss: 0.5986 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5757 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 127us/step - loss: 0.5984 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5782 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 128us/step - loss: 0.5978 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5766 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 135us/step - loss: 0.5974 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5773 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 138us/step - loss: 0.5976 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5764 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 132us/step - loss: 0.5971 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5770 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 134us/step - loss: 0.5972 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5774 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 145us/step - loss: 0.5975 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5778 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_1.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.7704906463623047!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_1.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_1.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_1.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.010298490524291992!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5934057831764221, 0.7200000286102295, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 12us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.009493350982666016!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5934092998504639, 0.7200000286102295, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.284306764602661\n",
"[root |INFO|deepbiome.py:200] 2 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------3 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 3 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # "
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 3 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 792us/step - loss: 0.6701 - binary_accuracy: 0.6609 - sensitivity: 0.9231 - specificity: 0.0714 - gmeasure: 0.0000e+00 - val_loss: 0.6407 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 390us/step - loss: 0.6271 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6137 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 398us/step - loss: 0.6143 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6111 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 112us/step - loss: 0.6141 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6111 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 110us/step - loss: 0.6137 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 140us/step - loss: 0.6137 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6113 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 146us/step - loss: 0.6137 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6110 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 148us/step - loss: 0.6151 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6110 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 108us/step - loss: 0.6147 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6111 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 310us/step - loss: 0.6151 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_2.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 3.3226778507232666!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_2.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_2.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_2.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 9us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.017215967178344727!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6130363345146179, 0.6974999904632568, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 35us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.018899202346801758!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6496703624725342, 0.6549999713897705, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 4.089082717895508\n",
"[root |INFO|deepbiome.py:200] 3 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------4 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 4 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 4 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 1ms/step - loss: 0.6553 - binary_accuracy: 0.6844 - sensitivity: 0.9976 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6216 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 330us/step - loss: 0.6256 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6219 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 494us/step - loss: 0.6227 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6209 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 119us/step - loss: 0.6224 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6209 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 259us/step - loss: 0.6223 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6205 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 493us/step - loss: 0.6222 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6203 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 107us/step - loss: 0.6205 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6190 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 103us/step - loss: 0.6185 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6155 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 393us/step - loss: 0.6139 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6095 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 372us/step - loss: 0.6019 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5981 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_3.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 4.37174129486084!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_3.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_3.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_3.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 19us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.026946306228637695!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5943012833595276, 0.6862499713897705, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 13us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.010583877563476562!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5873210430145264, 0.6899999976158142, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 4.833027362823486\n",
"[root |INFO|deepbiome.py:200] 4 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------5 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 5 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 5 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 1ms/step - loss: 0.6673 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6302 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 111us/step - loss: 0.6310 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6165 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 106us/step - loss: 0.6284 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6163 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 129us/step - loss: 0.6275 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6173 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 145us/step - loss: 0.6274 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6167 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 156us/step - loss: 0.6276 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6168 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 163us/step - loss: 0.6272 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6163 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 170us/step - loss: 0.6274 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6162 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 141us/step - loss: 0.6273 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6165 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 132us/step - loss: 0.6279 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6163 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_4.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 3.268160104751587!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_4.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_4.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_4.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 5us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.011313438415527344!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6249020099639893, 0.6825000047683716, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 15us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.010974407196044922!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6075432896614075, 0.7049999833106995, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.72648286819458\n",
"[root |INFO|deepbiome.py:200] 5 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:211] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:212] Train Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure']\n",
"[root |INFO|deepbiome.py:213] mean : [0.609 0.694 1.000 0.000 0.000]\n",
"[root |INFO|deepbiome.py:214] std : [0.013 0.014 0.000 0.000 0.000]\n",
"[root |INFO|deepbiome.py:215] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:216] Test Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure']\n",
"[root |INFO|deepbiome.py:217] mean : [0.611 0.692 1.000 0.000 0.000]\n",
"[root |INFO|deepbiome.py:218] std : [0.022 0.022 0.000 0.000 0.000]\n",
"[root |INFO|deepbiome.py:219] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:230] Total Computing Ended\n",
"[root |INFO|deepbiome.py:231] -----------------------------------------------------------------\n"
]
}
],
"source": [
"test_evaluation, train_evaluation, network = deepbiome.deepbiome_train(log, network_info, path_info, number_of_fold=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `deepbiome_train` saves the trained model weights, evaluation results and history based on the path information from the configuration.\n",
"\n",
"From the example above, we can check that `hist_*.json`, `weight_*.h5`, `test_eval.npy`, `train_eval.npy` files were saved."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['hist_0.json',\n",
" 'weight_2.h5',\n",
" 'test_eval.npy',\n",
" 'weight_0.h5',\n",
" 'train_eval.npy',\n",
" 'hist_2.json',\n",
" 'hist_4.json',\n",
" 'weight_3.h5',\n",
" 'hist_3.json',\n",
" 'weight_1.h5',\n",
" 'weight_4.h5',\n",
" 'hist_1.json']"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.listdir(path_info['model_info']['model_dir'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets check the history files."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XmcVPWd7//Xp/e9G+hmbaBaAREE\nWVpQ6VaJy2CS0esSI9GbaCb6kCSaSSbOJbm5Sa43eVxzf/78GR0nic6o40TlGo3GMUaymUQkKuAI\nCogga7M2jUAv0Ovn98ep7q5ulmqgi1Pd/X4+HvWoOt8659Sn6wHnXd/zPYu5OyIiIseTEnYBIiKS\n/BQWIiISl8JCRETiUliIiEhcCgsREYlLYSEiInEpLEREJC6FhYiIxKWwEBGRuNLCLqC3FBcXeyQS\nCbsMEZE+ZcWKFXvdvSTefP0mLCKRCMuXLw+7DBGRPsXMtvRkPu2GEhGRuBQWIiISl8JCRETi6jdj\nFiLSfzQ3N1NVVcXhw4fDLqXfyMrKorS0lPT09JNaXmEhIkmnqqqK/Px8IpEIZhZ2OX2eu1NTU0NV\nVRVlZWUntQ7thhKRpHP48GGGDBmioOglZsaQIUNOqaemsBCRpKSg6F2n+n0qLBr2wZ9+BDveDbsS\nEZGkpbBISYU/3wvrXgm7EhFJEnPnzmXx4sVd2h544AEWLFhwzGXy8vIA2LFjB9dff/1R57nkkkvi\nnjz8wAMP0NDQ0DH9yU9+kv379/e09IRRWGQVwohzYfOSsCsRkSQxf/58Fi1a1KVt0aJFzJ8/P+6y\nI0eO5Lnnnjvpz+4eFq+88gpFRUUnvb7eorAAiFRC1TJoPhR2JSKSBK6//np+/etf09TUBMDmzZvZ\nsWMH06dP59JLL2XGjBlMmTKFX/3qV0csu3nzZs455xwADh06xI033sjZZ5/NNddcw6FDnduYBQsW\nUF5ezuTJk/ne974HwIMPPsiOHTuYO3cuc+fOBYJLGe3duxeA+++/n3POOYdzzjmHBx54oOPzzj77\nbG677TYmT57MFVdc0eVzeosOnYUgLJY+CNvehjMuDrsaEYnxP/9jNWt2HOzVdU4aWcD3/nbyMd8f\nPHgws2bN4je/+Q1XX301ixYt4oYbbiA7O5sXXniBgoIC9u7dy/nnn89VV111zMHjn/zkJ+Tk5LB2\n7VpWrVrFjBkzOt774Q9/yODBg2ltbeXSSy9l1apV3HXXXdx///289tprFBcXd1nXihUrePzxx3nr\nrbdwd2bPns3FF1/MoEGDWL9+Pc888wyPPvooN9xwA88//zw333xz73xZUepZAIw5HywVNr8ediUi\nkiRid0W174Jyd7797W8zdepULrvsMrZv387u3buPuY6//OUvHRvtqVOnMnXq1I73nn32WWbMmMH0\n6dNZvXo1a9asOW49S5Ys4ZprriE3N5e8vDyuvfZaXn892GaVlZUxbdo0AGbOnMnmzZtP5U8/KvUs\nALIKYOQ0jVuIJKHj9QAS6eqrr+brX/8677zzDg0NDcycOZMnnniC6upqVqxYQXp6OpFI5KTOXdi0\naRP33Xcfy5YtY9CgQdxyyy2ndA5EZmZmx+vU1NSE7IZSz6JdpAKqlkNTQ/x5RaTfy8vLY+7cuXzx\ni1/sGNg+cOAAQ4cOJT09nddee40tW45/de+LLrqIp59+GoD333+fVatWAXDw4EFyc3MpLCxk9+7d\n/OY3v+lYJj8/n9ra2iPWVVlZyYsvvkhDQwP19fW88MILVFZW9tafG5fCol3kImhrhm1vhV2JiCSJ\n+fPns3Llyo6wuOmmm1i+fDlTpkzhySefZOLEicddfsGCBdTV1XH22Wfz3e9+l5kzZwJw7rnnMn36\ndCZOnMjnPvc55syZ07HM7bffzrx58zoGuNvNmDGDW265hVmzZjF79my+9KUvMX369F7+i4/N3P20\nfVgilZeX+ynd/KixFu4dCxVfh0v/R+8VJiInbO3atZx99tlhl9HvHO17NbMV7l4eb1n1LNpl5sOo\nGRrkFhE5CoVFrEgFbF8BTfVhVyIiklQUFrEiFdDWAlvfDLsSEZGkorCINfp8SEnTIbQiIt0oLGJl\n5sHIGQoLEZFuFBbdlVXCjnegsS7sSkREkobCorv2cYttGrcQGahqamqYNm0a06ZNY/jw4YwaNapj\nuv3igvHceuutrFu37rjzPPzwwzz11FO9UXLC6XIf3Y2eDSnpsOl1GHdZ2NWISAiGDBnCu+8GN0T7\n/ve/T15eHt/85je7zOPuuDspKUf/zf3444/H/ZyvfOUrp17saZLQnoWZzTOzdWa2wcwWHmOeG8xs\njZmtNrOnY9rHmNlvzWxt9P1IImvtkJELo2Zq3EJEjrBhwwYmTZrETTfdxOTJk9m5cye33357x6XG\n77nnno55KyoqePfdd2lpaaGoqIiFCxdy7rnncsEFF7Bnzx4AvvOd73RcaryiooKFCxcya9Yszjrr\nLJYuXQpAfX091113HZMmTeL666+nvLy8I8hOp4T1LMwsFXgYuByoApaZ2UvuviZmnvHAt4A57v6x\nmQ2NWcWTwA/d/Xdmlge0JarWI0QqYMn/F5zVnZl/2j5WRI7iNwth13u9u87hU+DKe09q0Q8++IAn\nn3yS8vLgpOd7772XwYMH09LSwty5c7n++uuZNGlSl2UOHDjAxRdfzL333ss3vvENHnvsMRYuPPL3\ns7vz9ttv89JLL3HPPffw6quv8tBDDzF8+HCef/55Vq5c2eUy56dTInsWs4AN7r7R3ZuARcDV3ea5\nDXjY3T8GcPc9AGY2CUhz999F2+vc/fRd4a+sErxV51uIyBHOPPPMjqAAeOaZZ5gxYwYzZsxg7dq1\nR73UeHZ2NldeeSVw/EuIX3vttUfMs2TJEm688UYguKbU5MnhXIU3kWMWo4BtMdNVwOxu80wAMLM3\ngFTg++7+arR9v5n9EigDfg8sdPfW2IXN7HbgdoAxY8b0XuWls4Jxi82vw/jLe2+9InLiTrIHkCi5\nubkdr9evX8+Pf/xj3n77bYqKirj55puPeqnxjIyMjtepqam0tLQcdd3tlxo/3jxhCftoqDRgPHAJ\nMB941MyKou2VwDeB84AzgFu6L+zuj7h7ubuXl5SU9F5VGTlQWh4McouIHMPBgwfJz8+noKCAnTt3\nsnjx4l7/jDlz5vDss88C8N5778W9SVKiJLJnsR0YHTNdGm2LVQW85e7NwCYz+5AgPKqAd919I4CZ\nvQicD/xrAuvtKlIJr98Hhw8GN0cSEelmxowZTJo0iYkTJzJ27NgulxrvLXfeeSef//znmTRpUsej\nsLCw1z8nnoRdotzM0oAPgUsJQmIZ8Dl3Xx0zzzxgvrt/wcyKgf8EpgH7gXeAy9y92sweB5a7+8PH\n+rxTvkR5dxv/DE9eBZ97Fib8Te+tV0Ti0iXKO7W0tNDS0kJWVhbr16/niiuuYP369aSlnfhv/VO5\nRHnCehbu3mJmXwUWE4xHPObuq83sHoIN/0vR964wszVAK3C3u9dE/4BvAn+w4E7oK4BHE1XrUY2e\nBakZwbiFwkJEQlJXV8ell15KS0sL7s7PfvazkwqKU5XQT3T3V4BXurV9N+a1A9+IProv+ztgavf2\n0yY9G0rP0/kWIhKqoqIiVqxYEXYZoQ9wJ7dIJexcCYcPhF2JyIDTX+7imSxO9ftUWBxPpAK8Dbb8\nNexKRAaUrKwsampqFBi9xN2pqakhKyvrpNeha0MdT+l5kJoZjFucNS/sakQGjNLSUqqqqqiurg67\nlH4jKyuL0tLSk15eYXE86VnBQLfuyy1yWqWnp1NWVhZ2GRJDu6HiiVTAzlVwaH/YlYiIhEZhEU+k\nEnDYsjTsSkREQqOwiGfUTEjL0iG0IjKgKSziSc+Knm/xl7ArEREJjcKiJ8ougl3vQ8O+sCsREQmF\nwqInIhVo3EJEBjKFRU+Mmglp2Rq3EJEBS2HRE2mZ0fMtFBYiMjApLHoqUgm739O4hYgMSAqLniqr\nDJ63vBFuHSIiIVBY9NTIGZCeo1utisiApLDoqbQMGD1b4xYiMiApLE5EpAL2rIb6mrArERE5rRQW\nJ6LsouB5i3oXIjKwKCxOxMjpwbiFdkWJyACjsDgRqekw5nwNcovIgKOwOFGRSqheC3W6g5eIDBwK\nixMVaT/fQruiRGTgUFicqJHTICNP4xYiMqAoLE5U+7iFwkJEBhCFxcmIVED1B1C3J+xKREROC4XF\nyYhEz7dQ70JEBgiFxckYcS5k5MNmHUIrIgODwuJkpKbB2AvUsxCRAUNhcbIiFbD3Q6jdHXYlIiIJ\np7A4WZGK4Fm7okRkAFBYnKzh50JmgXZFiciAkNCwMLN5ZrbOzDaY2cJjzHODma0xs9Vm9nRMe6uZ\nvRt9vJTIOk9KahqMuUA9CxEZENIStWIzSwUeBi4HqoBlZvaSu6+JmWc88C1gjrt/bGZDY1ZxyN2n\nJaq+XlFWCesXw8GdUDAi7GpERBImkT2LWcAGd9/o7k3AIuDqbvPcBjzs7h8DuHvfOsutY9xCu6JE\npH9LZFiMArbFTFdF22JNACaY2Rtm9qaZzYt5L8vMlkfb/0sC6zx5w6dCZqF2RYlIv5ew3VAn8Pnj\ngUuAUuAvZjbF3fcDY919u5mdAfzRzN5z949iFzaz24HbAcaMGXN6KwdISYWxF6pnISL9XiJ7FtuB\n0THTpdG2WFXAS+7e7O6bgA8JwgN33x593gj8CZje/QPc/RF3L3f38pKSkt7/C3oiUgH7PoKDO8L5\nfBGR0yCRYbEMGG9mZWaWAdwIdD+q6UWCXgVmVkywW2qjmQ0ys8yY9jnAGpJRWfT+FupdiEg/lrCw\ncPcW4KvAYmAt8Ky7rzaze8zsquhsi4EaM1sDvAbc7e41wNnAcjNbGW2/N/YoqqQy7BzIKoRNfwm7\nEhGRhEnomIW7vwK80q3tuzGvHfhG9BE7z1JgSiJr6zUpqTC2Qj0LEenXdAZ3b4hUwMeb4EBV2JWI\niCSEwqI36HwLEennFBa9Ydg5kFWk8y1EpN9SWPSGlJSgd7FJYSEi/ZPCordEKmH/Fti/NexKRER6\nncKit2jcQkT6MYVFbxk6CbIHKyxEpF9SWPSWlBSIzNEgt4j0SwqL3hSpDMYsPt4SdiUiIr1KYdGb\nIrpOlIj0TwqL3lQyEXKGaFeUiPQ7CovelJICY+cEPQv3sKsREek1CoveVnYRHNgWnHMhItJPKCx6\nW/v5FjqbW0T6EYVFbyuZCDnFGuQWkX5FYdHbzILexebXNW4hIv2GwiIRyirh4PbgHhciIv2AwiIR\n2s+30LiFiPQTCotEKJ4AuUM1biEi/YbCIhE6xi10voWI9A8Ki0SJVEDtDti3MexKREROmcIiUcou\nCp516Q8R6QcUFokyZBzkDdMgt4j0CwqLRNG4hYj0Iz0KCzM708wyo68vMbO7zKwosaX1A5FKqNsF\nNR+FXYmIyCnpac/ieaDVzMYBjwCjgacTVlV/0XF/i7+EW4eIyCnqaVi0uXsLcA3wkLvfDYxIXFn9\nxJAzIX+EzrcQkT6vp2HRbGbzgS8AL0fb0hNTUj/SPm6xSdeJEpG+radhcStwAfBDd99kZmXAvyeu\nrH4kUgH1e2Dv+rArERE5aWk9mcnd1wB3AZjZICDf3X+UyML6jdhxi5IJ4dYiInKSeno01J/MrMDM\nBgPvAI+a2f2JLa2fGHwG5I/UuIWI9Gk93Q1V6O4HgWuBJ919NnBZvIXMbJ6ZrTOzDWa28Bjz3GBm\na8xstZk93e29AjOrMrN/6mGdyccsuGS5zrcQkT6sp2GRZmYjgBvoHOA+LjNLBR4GrgQmAfPNbFK3\necYD3wLmuPtk4O+7reZ/AX3/uNNIBdRXQ/W6sCsRETkpPQ2Le4DFwEfuvszMzgDijdjOAja4+0Z3\nbwIWAVd3m+c24GF3/xjA3fe0v2FmM4FhwG97WGPy6hi30KU/RKRv6lFYuPsv3H2quy+ITm909+vi\nLDYK2BYzXRVtizUBmGBmb5jZm2Y2D8DMUoD/F/hmT+pLeoMiUFCqsBCRPqunA9ylZvaCme2JPp43\ns9Je+Pw0YDxwCTCfYOC8CPgy8Iq7V8Wp63YzW25my6urq3uhnATRdaJEpI/r6W6ox4GXgJHRx39E\n245nO8FlQdqVRttiVQEvuXuzu28CPiQIjwuAr5rZZuA+4PNmdm/3D3D3R9y93N3LS0pKevinhKSs\nEhpqoPqDsCsRETlhPQ2LEnd/3N1boo8ngHhb52XAeDMrM7MM4EaCwIn1IkGvAjMrJtgttdHdb3L3\nMe4eIdgV9aS7H/Voqj4jUhE865LlItIH9TQsaszsZjNLjT5uBmqOt0D0WlJfJRgYXws86+6rzewe\nM7sqOtvi6LrXAK8Bd7v7cdfbZw2KQOEYjVuISJ9k3oN96GY2FniIYPeQA0uBO91923EXPI3Ky8t9\n+fLlYZdxfC8sgA9fhbs/ghTdSkREwmdmK9y9PN58PT0aaou7X+XuJe4+1N3/CxDvaCjpLlIBh/ZB\n9dqwKxEROSGn8vP2G71WxUChcQsR6aNOJSys16oYKAaNhSKNW4hI33MqYaETBk5G5CLY8ga0tYVd\niYhIjx03LMys1swOHuVRS3C+hZyoSAUc+hj2rA67EhGRHjvu/SzcPf90FTJgtI9bbF4Cw6eEW4uI\nSA/p+M3TrWh0cM6FBrlFpA9RWIQhUqFxCxHpUxQWYYhcBIf3w+73w65ERKRHFBZh6Bi30K4oEekb\nFBZhKBwV3Jtb9+UWkT5CYRGWSAVsfgPaWsOuREQkLoVFWCKV0HgAdr0XdiUiInEpLMKicQsR6UMU\nFmEpGAmDz9S4hYj0CQqLMJVVwpalGrcQkaSnsAhTpBIaD8LOlWFXIiJyXAqLMMVeJ0pEJIkpLMKU\nPxyGjNcgt4gkPYVF2CIVsOWv0NoSdiUiIseksAhbWSU01WrcQkSSmsIibGN1voWIJD+FRdjyh0Hx\nBA1yi0hSU1gkg0glbP0rtDaHXYmIyFEpLJJBpAKa6jRuISJJS2GRDCKVwfOmv4Rbh4jIMSgskkFe\nCZRM1LiFiCQthUWyiFTA1jc1biEiSUlhkSzKLobmevjNP0JTfdjViIh0obBIFhM/BbMXwPLH4KfR\nXoaISJJQWCSLlFS48l74wsvQ1gKPzYPffgeaD4ddmYiIwiLplFXCgqUw8xZY+hD87CLYviLsqkRk\ngEtoWJjZPDNbZ2YbzGzhMea5wczWmNlqM3s62jbWzN4xs3ej7Xckss6kk5kPf/sA3PzL4PyLf7kc\n/vC/oKUp7MpEZIAyd0/Mis1SgQ+By4EqYBkw393XxMwzHngW+IS7f2xmQ919j5llRGtrNLM84H3g\nQnffcazPKy8v9+XLlyfkbwnVof3w6rdg5dMwbApc8xMYPiXsqkSknzCzFe5eHm++RPYsZgEb3H2j\nuzcBi4Cru81zG/Cwu38M4O57os9N7t4YnSczwXUmt+yiICBufAbqdsMjc+HP/48uaS4ip1UiN8Kj\ngG0x01XRtlgTgAlm9oaZvWlm89rfMLPRZrYquo4fHa1XYWa3m9lyM1teXV2dgD8hiUz8JHzlLZh0\nFbz2A/jXy2DPB2FXJSIDRNi/2NOA8cAlwHzgUTMrAnD3be4+FRgHfMHMhnVf2N0fcfdydy8vKSk5\njWWHJGcwXP8YfOYJ2L81GPx+48fQ1hp2ZSLSzyUyLLYDo2OmS6NtsaqAl9y92d03EYxxjI+dIdqj\neB+oTGCtfcvka+DLb8L4y+F334XHr4Saj8KuSkT6sUSGxTJgvJmVRQesbwRe6jbPiwS9CsysmGC3\n1EYzKzWz7Gj7IKACWJfAWvuevKHw2Z/DNY9A9Qfwkznw1s+grS3sykSkH0pYWLh7C/BVYDGwFnjW\n3Veb2T1mdlV0tsVAjZmtAV4D7nb3GuBs4C0zWwn8GbjP3d9LVK19lhmc+9mglxGpCC4V8uRV8PGW\nsCsTkX4mYYfOnm799tDZnnKH//x3ePXbgMPf/BBmfCEIFBGRY0iGQ2fldDKDGZ+HLy+FUTPgP74G\nT10PB7oPE4mInDiFRX9TNAb+66/gk/fBlqXwzxfAu88EPQ8RkZOksOiPUlJg1m1wxxIYeja8eAcs\nugnq9oRdmYj0UQqL/mzImXDrK3DFD2DD7+Hh2fD+L8OuSkT6IIVFf5eSChfeCXe8DoMi8Nyt8Itb\noL4m7MpEpA9RWAwUJWfB3/0OPvE/YO3L8M/nwwe/DrsqEekjFBYDSWoaXPRNuP01yBsGiz4HL9wR\nXNlWROQ4FBYD0fApcNsf4aJ/hFXPBkdMbfh92FWJSBJTWAxUaRnwif8OX/o9ZBXAz6+Dl+6Cxtqw\nKxORJKSwGOhGzYDb/wxzvgbvPAn/fCGs/72uZCsiXaSFXYAkgfQsuPweOOtTwTkZT10HmQUw5nwY\nOye47tSIcyE1PexKRSQkCgvpNGY23PFGcJTUljeCx/rfBu+l5wbvj70QxlYEPZK0zHDrFZHTRmEh\nXWXkwNTPBA8Izvre8gZsjobHH38QtKdlQel5Qa9j7BwoLYf07PDqFpGEUljI8eUNDW62NPmaYLq+\nBrYujYbHEvjTvYBDagaMKofInKD3MXo2ZOSGWrr0U00NULsTUtKC3m1qRvQ5Mzg8XBJClyiXU3No\nP2x9MwiOzW/AzpXgrcF/5JHTO8c8Rs8OjroS6YnGWti3CfZthH0fRZ+j07U7j72cpR4ZIGkZ0efM\nbu9Fn9OyjmxrXy7eexl5UDASsgf12dsB9PQS5QoL6V2NtbD1rc7w2PEOtLWApQSD5O3hMeYCyC4K\nu9rk0dYGh/bBwR1Quwtqo8/t03W7ID0H8odD/oiY5xGd05l5Yf8VJ+bwgWgIbISajZ2v922E+m4X\nvcwbBoPP6HwUjAp+lLQ0QmtT1+eWw0e2tTYF7Udta4LWxpjnRuAEt4vpuVA4CgpLg9oKS7u+LhgV\n7OJNQgoLSQ5N9bDt7eBy6VvegKplwX9SDIafEwyWj70wCJHcIWFXmxiNdZ0BcHBn8Mu4/XFwZ/S9\nndDW3G1Bg9wSKBgRbCybD3Uu01x/5Odk5EdDJBokBSO6BctwyBseHP12ujTsO0oPIfpo6HZ9svyR\n0TAoCy6C2R4Mg8pObxC6Q2vzkQFyRLg0QuPB4J4xB7fDgW3B6wNVR4YdQPbgI0Mk9nX+iFB2oyks\nJDk1H4btyzvHPLYtg5ZDwXslZ0fHPKK9j7yh4dYaT2sz1O0+RgC0P3YFG5TuMgu69g4KRgQby/zh\nwW6N/OFBQBzrcOXG2pjP2XWU52iPpLXpyGWzBx8ZIt0DJndozzZc7sFGPzYEamJC4XDspWQs2CgO\nLoPBZ3btKQyKJO0v75PS0hj0Cg9URYOkKuZ1dLrxQNdlLCUI88LSmF5Kt9e5xb2+u0thIX1DS1Ow\nq2rzkqD3se0taKoL3sspDvYTp6QFG66UNEhJD66km5p+jOmYR2r0vZT0btNpMW1px59OSQ3qiQ2A\n9l1D9dUcsbsiJb1zA9zxy35EZwC0B8Lp+KXsDoc+7hpc3XsztbuCwPPuJ2FaENbdd3flDA6WiR1H\niA1DS4HC0Z0hENtDKBp7ens1ya6xtjM4DlYd/XVrY9dlUjOD8OjeMykeH/zAOgkKix5qbm3j7l+s\n5EuVZ3DOqMIEVCYnpLUlGCTfsiTYELW1BGeTtzUHr1ubu023ROfpPt3e1hpdJqa9tfkou3x6IKe4\nawAcrUeQPTi4+VRf0tYK9XuP7JV0763UVwfzWyoMGhvTM4gNhDHB4K+cuvZeW5deSbceSu0O8Lbg\nMPYvndz13XoaFgP+OLMd+w/x1qZ9vPL+Ln5w9TnccN7osEsa2FLToHRm8Ei0ttaY8DhOKGXkBrsH\n+utGMCUV8ocFj+NpaQoG4XOG6Gz+08Es2O2UWwwjpx19ntaW4OCH5sOJL2eg9ywAauoa+dqid1my\nYS83njea7181maz01F6uUEQk+fS0Z9HH+suJMSQvk3/74iy+Oncci5Zt4zM//Svb9jWEXZaISNJQ\nWESlphjf/Juz+JfPl7O5pp6//acl/GndUQ5/ExEZgBQW3Vw2aRgv31nBiMJsbn1iGQ/8/kPa2vrH\nrjoRkZOlsDiKsUNy+eWCC7l2eikP/H49tz6xjP0NRzleXURkgFBYHEN2Rir3fWYqP7zmHP76UQ2f\nenAJ71UdiL+giEg/pLA4DjPjptlj+cUdF+DuXPfTpSx6e2vYZYmInHYKix44d3QRL99VyeyywSz8\n5Xv843MrOdys246KyMChsOihwbkZPHHrLO78xDieXV7FdT9ZytYaHV4rIgODwuIEpKYY/3DFWTx2\nSznb9jXw6Yde57UPdHitiPR/CQ0LM5tnZuvMbIOZLTzGPDeY2RozW21mT0fbppnZX6Ntq8zss4ms\n80R9YuIwXr6zktJBOdz6xDLu/+06WnV4rYj0YwkLCzNLBR4GrgQmAfPNbFK3ecYD3wLmuPtk4O+j\nbzUAn4+2zQMeMLOkulPOmCE5/PLLF/KZmaU8+McN3PL423xcr8NrRaR/SmTPYhawwd03unsTsAi4\nuts8twEPu/vHAO6+J/r8obuvj77eAewBShJY60nJSk/l/1w/lf997RTe2riPTz+0hJXb9sdfUESk\nj0lkWIwCtsVMV0XbYk0AJpjZG2b2ppnN674SM5sFZAAfHeW9281suZktr66u7sXSe87MmD9rDM8t\nuACAz/z0rzz91lb6ywUaRUQg/AHuNGA8cAkwH3g0dneTmY0A/h241d3bui/s7o+4e7m7l5eUhNvx\nmFpaxMt3VnD+mUP49gvvcfdzq3R4rYj0G4kMi+1A7M0hSqNtsaqAl9y92d03AR8ShAdmVgD8Gvjv\n7v5mAuvsNYNyM3j8lvO469LxPLeiimv/WYfXikj/kMiwWAaMN7MyM8sAbgRe6jbPiwS9CsysmGC3\n1Mbo/C8AT7r7cwmssdelphjfuHwCj99yHtv3H+LTD73OH9buDrssEZFTkrCwcPcW4KvAYmAt8Ky7\nrzaze8zsquhsi4EaM1sDvAbc7e41wA3ARcAtZvZu9HGMW0Ulp7kTh/LynRWMHpzD3/3bcu5brMNr\nRaTv0p3yEuxwcyvf+9Vq/u+RnNQsAAALbklEQVTybVSOL+bHN05ncG4/vT2niPQ5ulNekshKT+VH\n10/lR9dN4a1N+/j0g6/zrg6vFZE+RmFxmnz2vDE8f8eFpKQYn/npUn7+5hYdXisifYbC4jSaUlrI\ny3dWMGdcMd958X3+4RcrOdSkw2tFJPmlhV3AQFOUk8FjXziPB/+4nh//YT1rdhzkpzfPJFKcm/DP\nbmtz6ppaONDQzP6GZg4camb/oaaO1wcONXOgoZnmtjbOKM5l3NB8xg/LY+zgHNJS9btCZCDTAHeI\n/rRuD3//f9+ltc25/4ZpXD5pWI+Wa2xp5UDHxj5mw9/QxMHubYeaOdDQ1BEGxzsgKzMthaKcdAxj\n18HDHe0ZqSmUFecyblge44fmMW5oHuOH5hMpziEzLfVUvwaRPqGusYVN1fVs3FvHpr31bKyup6Gp\nhXFD85k4PJ8Jw/I5c2hun/s/0dMBboVFyLbta+DLT73De9sP8MU5ZZxRktux4T8Q3ejvP9QchEA0\nAA4d58xwMyjISqcoJ53C7OBRlJNBYXYaRdkZFOWkU5CdTlFHe+e8Wemd/8jrGlv4aE8d6/fUsX5P\nLRt217Ghuo6t+xpo/yeTmmKMHZLD+Gh4jB+Wx5klwSM7o2/9hxEBaG5tY+u+BjZV1weBsLeOjdHX\ne2obO+Yzg5GF2eRmprJpbz3NrcF/irQUo6w4l7OG53PWsHzOGp7PxOEFlA7KJiXFwvqzjkth0Ycc\nbm7lf/7Hap55u/NSWlnpKcGGPDvYoBfmBBv4jo17+4Y+ZmNflJ1BflZaQv9RHm5u5aPqOjbsqWP9\n7iBI1u+pY0tNQ8d5JGYwelAQIkFvJJ9x0R5JXqb2fB5LfWML1bWN7KltjD4f7pjeW9dITkYqJXmZ\nlOTHPPKyKMnPZEheBunaVdgj7s7ug40dPYSgtxAEwtZ9DV3Ohxqcm0FZcW7H48ySXMqK8xg7JKfj\nx1VTSxub9tazbnct63YdZN2uWtbtrmXbvkMd68nJSGX8sHwmDstnwvCgJ3LW8HyK8zJP+9/fncKi\nD9q+/xBpKXbEr/y+oLGllS01DV0CZMPuOjburev41QUwsjCLccPyo72RPMYPy2NcST6FOekhVp84\nrW3OvvqmLhv+6phHbHvDUQ52SEuxjjA43NzGnoOHOXi45aifNTg3g6EdIdI9VDpfF2anY5acv3J7\n08HDzTE9hHo2VkfDYW99l+86Kz2FyJBczigJAuGM4jzKSnI5oziXopyTPyeqrrGFD3fXBuHR/thd\ny76YWxkU52UwoaMHEuzKmjAsn9zT+KNKYSFJoSXarV+/p703UtvxurGl89qQJfmZHQEyblg+40ry\nGFWUTVqqkZZqpKekBK87ni3UDd6hptYjAuDI6UZq6hqPOk6Un5VGSX5mdOOeRUleJkMLMjuf8zMZ\nmp9FUXb6ET3Fw82t7K2LCZ26rgHUPr2ntpGmliOuv0lGagol+ZkUHydU2kMn2X+0NLW0sXVffceu\noo0x4bC3rnO3UYpB6aCcI3oIZSW5jCjIOm27iNyd6rpGPtxVxwfRXsiHu2v5cHddl93LYwbndNuV\nlU+kODchvUeFhSS11jZn+8eHgvGQjrGROjbsrqW+h4cTp6VYtwBJIT3VSE0x0lNTou/HtLXP1/5e\n+3zd3m9fNjUaUvVNLR0BsDe6Ea5rPPLXfWqKUZyXwdD8rC4b3NjXQ/OzKM7LPC1jOu7OwcMtcUOl\nuraRmvpGjrYpyM9Mo6SgM0SK8zJJMcPxjvndHQfc6Whvn6Z9+ijvOcGEH7GOzmlil4t5fbiljS01\n9Wzb19AljIvzOncbnVGSF+0p5DJmSHIfjNHW5mzd18AH0fBYt6uWD3YdZNPe+o6/LyM1hTNKcqO7\nsAo4a3geZw0vYGRh1in9cFJYSJ/k7uw8cJj1e+rYc/AwLW0ePFrbaGl1mtvaaG11mtvb2pyWVqel\nrY3m1qCtta3z/eZWp7UtmK85uo5gndH1dVtHe1vsOnIy0hga/SXeNQC6hsLgnIykHcSMp6W1Lbq7\n7Nihsjc6dtLmYAAWPJsZFvuaYNwKYtvB6Dof7e1Hee+I9XdbR3pqCmOG5HBmcS5l7b2E4lwKs/vX\n7sz2McLY3VjrdtWy80Dn0Yr5mWlcfFYJ//S5GSf1GT0NC402SlIxM0YWZTOyKDvsUgaUtNQUhhZk\nMbQgK+xSJEZWeiqTRxYyeWRhl/YDDc18uKeWD3YFg+oFWYkPSYWFiEgfU5iTznmRwZwXGXzaPlPH\n2omISFwKCxERiUthISIicSksREQkLoWFiIjEpbAQEZG4FBYiIhKXwkJEROLqN5f7MLNqYMsprKIY\n2NtL5fR1+i660vfRlb6PTv3huxjr7iXxZuo3YXGqzGx5T66PMhDou+hK30dX+j46DaTvQruhREQk\nLoWFiIjEpbDo9EjYBSQRfRdd6fvoSt9HpwHzXWjMQkRE4lLPQkRE4hrwYWFm88xsnZltMLOFYdcT\nJjMbbWavmdkaM1ttZl8Lu6awmVmqmf2nmb0cdi1hM7MiM3vOzD4ws7VmdkHYNYXJzL4e/X/yvpk9\nY2b9+s5RAzoszCwVeBi4EpgEzDezSeFWFaoW4B/cfRJwPvCVAf59AHwNWBt2EUnix8Cr7j4ROJcB\n/L2Y2SjgLqDc3c8BUoEbw60qsQZ0WACzgA3uvtHdm4BFwNUh1xQad9/p7u9EX9cSbAxGhVtVeMys\nFPgU8C9h1xI2MysELgL+FcDdm9x9f7hVhS4NyDazNCAH2BFyPQk10MNiFLAtZrqKAbxxjGVmEWA6\n8Fa4lYTqAeAfgbawC0kCZUA18Hh0t9y/mFlu2EWFxd23A/cBW4GdwAF3/224VSXWQA8LOQozywOe\nB/7e3Q+GXU8YzOzTwB53XxF2LUkiDZgB/MTdpwP1wIAd4zOzQQR7IcqAkUCumd0cblWJNdDDYjsw\nOma6NNo2YJlZOkFQPOXuvwy7nhDNAa4ys80Euyc/YWY/D7ekUFUBVe7e3tN8jiA8BqrLgE3uXu3u\nzcAvgQtDrimhBnpYLAPGm1mZmWUQDFC9FHJNoTEzI9gnvdbd7w+7njC5+7fcvdTdIwT/Lv7o7v36\nl+PxuPsuYJuZnRVtuhRYE2JJYdsKnG9mOdH/N5fSzwf808IuIEzu3mJmXwUWExzN8Ji7rw65rDDN\nAf4r8J6ZvRtt+7a7vxJiTZI87gSeiv6w2gjcGnI9oXH3t8zsOeAdgqMI/5N+fja3zuAWEZG4Bvpu\nKBER6QGFhYiIxKWwEBGRuBQWIiISl8JCRETiUliIxGFmrWb2bsyj185cNrOImb3fW+sTSZQBfZ6F\nSA8dcvdpYRchEib1LEROkpltNrP/Y2bvmdnbZjYu2h4xsz+a2Soz+4OZjYm2DzOzF8xsZfTRfnmI\nVDN7NHpvhN+aWXZ0/rui9xZZZWaLQvozRQCFhUhPZHfbDfXZmPcOuPsU4J8IrlIL8BDwb+4+FXgK\neDDa/iDwZ3c/l+C6Su1XCxgPPOzuk4H9wHXR9oXA9Oh67kjUHyfSEzqDWyQOM6tz97yjtG8GPuHu\nG6MXYNzl7kPMbC8wwt2bo+073b3YzKqBUndvjFlHBPidu4+PTv83IN3df2BmrwJ1wIvAi+5el+A/\nVeSY1LMQOTV+jNcnojHmdSudY4mfIriT4wxgWfQmOyKhUFiInJrPxjz/Nfp6KZ232LwJeD36+g/A\nAui4t3fhsVZqZinAaHd/DfhvQCFwRO9G5HTRLxWR+LJjrsILwX2o2w+fHWRmqwh6B/OjbXcS3FHu\nboK7y7VfnfVrwCNm9ncEPYgFBHdZO5pU4OfRQDHgQd3GVMKkMQuRkxQdsyh3971h1yKSaNoNJSIi\ncalnISIicalnISIicSksREQkLoWFiIjEpbAQEZG4FBYiIhKXwkJEROL6/wFSUn24xKny1AAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with open('./%s/hist_0.json' % path_info['model_info']['model_dir'], 'r') as f:\n",
" history = json.load(f)\n",
" \n",
"plt.plot(history['val_loss'], label='Validation')\n",
"plt.plot(history['loss'], label='Training')\n",
"plt.legend()\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Test evauation and train evauation is the numpy array of the shape (number of folds, number of evaluation measures)."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.619, 0.690, 1.000, 0.000, 0.000],\n",
" [0.593, 0.720, 1.000, 0.000, 0.000],\n",
" [0.650, 0.655, 1.000, 0.000, 0.000],\n",
" [0.587, 0.690, 1.000, 0.000, 0.000],\n",
" [0.608, 0.705, 1.000, 0.000, 0.000]])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_evaluation"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.622, 0.686, 1.000, 0.000, 0.000],\n",
" [0.593, 0.720, 1.000, 0.000, 0.000],\n",
" [0.613, 0.697, 1.000, 0.000, 0.000],\n",
" [0.594, 0.686, 1.000, 0.000, 0.000],\n",
" [0.625, 0.683, 1.000, 0.000, 0.000]])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_evaluation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Load the pre-trained network for training\n",
"\n",
"If you have a pre-trianed model, you warm_start next training using the pre-trained weights by setting the `warm_start` option in `training_info` to `True`. The file path of the pre-trained weights passed in the `warm_start_model` option. Below is the example:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"warm_start_network_info = {\n",
" 'architecture_info': {\n",
" 'batch_normalization': 'False',\n",
" 'drop_out': '0',\n",
" 'weight_initial': 'glorot_uniform',\n",
" 'weight_l1_penalty':'0.',\n",
" 'weight_decay': 'phylogenetic_tree',\n",
" },\n",
" 'model_info': {\n",
" 'decay': '0.001',\n",
" 'loss': 'binary_crossentropy',\n",
" 'lr': '0.01',\n",
" 'metrics': 'binary_accuracy, sensitivity, specificity, gmeasure',\n",
" 'network_class': 'DeepBiomeNetwork',\n",
" 'normalizer': 'normalize_minmax',\n",
" 'optimizer': 'adam',\n",
" 'reader_class': 'MicroBiomeClassificationReader',\n",
" 'taxa_selection_metrics': 'sensitivity, specificity, gmeasure, accuracy',\n",
" },\n",
" 'training_info': {\n",
" 'warm_start':'True',\n",
" 'warm_start_model':'./example_result/weight.h5',\n",
" 'epochs': '10',\n",
" 'batch_size': '50',\n",
" 'callbacks': 'ModelCheckpoint',\n",
" 'monitor': 'val_loss',\n",
" 'mode' : 'min',\n",
" 'min_delta': '1e-7',\n",
" },\n",
" 'validation_info': {\n",
" 'batch_size': 'None', \n",
" 'validation_size': '0.2'\n",
" },\n",
" 'test_info': {\n",
" 'batch_size': 'None'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|deepbiome.py:115] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------1 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 1 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 1 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 0s 769us/step - loss: 0.6264 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6162 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 138us/step - loss: 0.6246 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6156 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 152us/step - loss: 0.6226 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6167 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 144us/step - loss: 0.6238 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6160 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 153us/step - loss: 0.6271 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6140 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 159us/step - loss: 0.6199 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6135 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 131us/step - loss: 0.6213 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6118 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 136us/step - loss: 0.6186 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6086 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 143us/step - loss: 0.6157 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6055 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 154us/step - loss: 0.6128 - binary_accuracy: 0.6844 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6016 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.9706335067749023!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_0.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_0.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_0.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 4us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.01216745376586914!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6077973246574402, 0.6862499713897705, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 14us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.010446786880493164!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.608977735042572, 0.6899999976158142, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.626851797103882\n",
"[root |INFO|deepbiome.py:200] 1 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------2 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 2 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_1.h5 \n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 2 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 856us/step - loss: 0.5983 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5809 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 135us/step - loss: 0.5976 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5766 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 151us/step - loss: 0.5978 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5759 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 135us/step - loss: 0.5980 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5787 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 139us/step - loss: 0.5975 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5767 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 123us/step - loss: 0.5977 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5761 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 108us/step - loss: 0.5986 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5784 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 114us/step - loss: 0.5970 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5763 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 106us/step - loss: 0.5976 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5771 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 127us/step - loss: 0.5973 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5763 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_1.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.6066670417785645!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_1.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_1.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_1.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008038043975830078!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5931535363197327, 0.7200000286102295, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 8us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.009198188781738281!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5931748747825623, 0.7200000286102295, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.5099010467529297\n",
"[root |INFO|deepbiome.py:200] 2 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------3 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 3 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_2.h5 \n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 3 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 841us/step - loss: 0.6138 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 132us/step - loss: 0.6140 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6112 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 156us/step - loss: 0.6138 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 127us/step - loss: 0.6136 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 167us/step - loss: 0.6142 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 146us/step - loss: 0.6135 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 136us/step - loss: 0.6139 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6115 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 100us/step - loss: 0.6146 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6110 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 124us/step - loss: 0.6138 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6109 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 118us/step - loss: 0.6135 - binary_accuracy: 0.6969 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6110 - val_binary_accuracy: 0.7000 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_2.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.8092546463012695!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_2.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_2.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_2.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008527040481567383!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6130011081695557, 0.6974999904632568, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 12us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008930444717407227!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6493600606918335, 0.6549999713897705, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.428178071975708\n",
"[root |INFO|deepbiome.py:200] 3 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------4 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 4 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_3.h5 \n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 4 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 1ms/step - loss: 0.5932 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5896 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 502us/step - loss: 0.5770 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5793 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 146us/step - loss: 0.5591 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5682 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 422us/step - loss: 0.5451 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5566 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 402us/step - loss: 0.5403 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5552 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 158us/step - loss: 0.5326 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5409 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 399us/step - loss: 0.5136 - binary_accuracy: 0.7203 - sensitivity: 1.0000 - specificity: 0.1122 - gmeasure: 0.2577 - val_loss: 0.5357 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 315us/step - loss: 0.5015 - binary_accuracy: 0.7063 - sensitivity: 1.0000 - specificity: 0.0668 - gmeasure: 0.1809 - val_loss: 0.5221 - val_binary_accuracy: 0.7250 - val_sensitivity: 1.0000 - val_specificity: 0.0944 - val_gmeasure: 0.2541\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 190us/step - loss: 0.4920 - binary_accuracy: 0.7219 - sensitivity: 1.0000 - specificity: 0.1111 - gmeasure: 0.2697 - val_loss: 0.5115 - val_binary_accuracy: 0.7125 - val_sensitivity: 1.0000 - val_specificity: 0.0588 - val_gmeasure: 0.1657\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 448us/step - loss: 0.4800 - binary_accuracy: 0.7766 - sensitivity: 0.9957 - specificity: 0.3070 - gmeasure: 0.5399 - val_loss: 0.5035 - val_binary_accuracy: 0.7125 - val_sensitivity: 1.0000 - val_specificity: 0.0588 - val_gmeasure: 0.1657\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_3.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 4.435325384140015!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_3.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_3.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_3.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 4us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.010611295700073242!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.4794653058052063, 0.7200000286102295, 1.0, 0.10756972432136536, 0.3279782235622406]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 10us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008459091186523438!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.45449164509773254, 0.7200000286102295, 1.0, 0.09677419066429138, 0.3110854923725128]\n",
"[root |INFO|deepbiome.py:199] Compute time : 5.07786226272583\n",
"[root |INFO|deepbiome.py:200] 4 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------5 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 5 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_4.h5 \n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 5 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 0s 776us/step - loss: 0.6277 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6167 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 123us/step - loss: 0.6281 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6162 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 249us/step - loss: 0.6274 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6164 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 444us/step - loss: 0.6275 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6163 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 258us/step - loss: 0.6278 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6175 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 130us/step - loss: 0.6274 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6163 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 99us/step - loss: 0.6270 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6164 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 96us/step - loss: 0.6271 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6163 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 110us/step - loss: 0.6269 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6164 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 121us/step - loss: 0.6267 - binary_accuracy: 0.6797 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6166 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_4.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.8508307933807373!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_4.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_4.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_4.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008268117904663086!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6248783469200134, 0.6825000047683716, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 9us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.007416963577270508!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6074368953704834, 0.7049999833106995, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.8774726390838623\n",
"[root |INFO|deepbiome.py:200] 5 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:211] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:212] Train Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure']\n",
"[root |INFO|deepbiome.py:213] mean : [0.584 0.701 1.000 0.022 0.066]\n",
"[root |INFO|deepbiome.py:214] std : [0.053 0.016 0.000 0.043 0.131]\n",
"[root |INFO|deepbiome.py:215] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:216] Test Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure']\n",
"[root |INFO|deepbiome.py:217] mean : [0.583 0.698 1.000 0.019 0.062]\n",
"[root |INFO|deepbiome.py:218] std : [0.067 0.024 0.000 0.039 0.124]\n",
"[root |INFO|deepbiome.py:219] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:230] Total Computing Ended\n",
"[root |INFO|deepbiome.py:231] -----------------------------------------------------------------\n"
]
}
],
"source": [
"test_evaluation, train_evaluation, network = deepbiome.deepbiome_train(log, warm_start_network_info, path_info, \n",
" number_of_fold=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check the history plot again."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nFgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with open('./%s/hist_0.json' % path_info['model_info']['model_dir'], 'r') as f:\n",
" history = json.load(f)\n",
" \n",
"plt.plot(history['val_loss'], label='Validation')\n",
"plt.plot(history['loss'], label='Training')\n",
"plt.legend()\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Load the pre-trained network for testing\n",
"\n",
"To test the trained model, we can use the `deepbiome_test` function. \n",
"\n",
"If you use the index file (`idx_path`), this function provides the evaluation using the test index (index set not included in the index file) for each fold. If not, this function provides the evaluation using the whole samples. \n",
"\n",
"If `number_of_fold` is set to `k`, the function will test the model only with first `k` folds.\n",
"\n",
"We can use the testing metrics different with the training. In the example below, we additionally used `AUC` metric."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"test_network_info = {\n",
" 'architecture_info': {\n",
" 'batch_normalization': 'False',\n",
" 'drop_out': '0',\n",
" 'weight_initial': 'glorot_uniform',\n",
" 'weight_l1_penalty':'0.',\n",
" 'weight_decay': 'phylogenetic_tree',\n",
" },\n",
" 'model_info': {\n",
" 'lr': '0.01',\n",
" 'decay': '0.001',\n",
" 'loss': 'binary_crossentropy',\n",
" 'metrics': 'binary_accuracy, sensitivity, specificity, gmeasure, auc',\n",
" 'taxa_selection_metrics': 'sensitivity, specificity, gmeasure, accuracy',\n",
" 'network_class': 'DeepBiomeNetwork',\n",
" 'optimizer': 'adam',\n",
" 'reader_class': 'MicroBiomeClassificationReader',\n",
" 'normalizer': 'normalize_minmax',\n",
" },\n",
" 'test_info': {\n",
" 'batch_size': 'None'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"test_path_info = {\n",
" 'data_info': {\n",
" 'data_path': resource_filename('deepbiome', 'tests/data'),\n",
" 'idx_path': resource_filename('deepbiome', 'tests/data/onefile_idx.csv'),\n",
" 'tree_info_path': resource_filename('deepbiome', 'tests/data/genus48_dic.csv'),\n",
" 'x_path': 'onefile_x.csv',\n",
" 'y_path': 'classification_y.csv'\n",
" },\n",
" 'model_info': {\n",
" 'evaluation': 'eval.npy',\n",
" 'model_dir': './example_result/',\n",
" 'weight': 'weight.h5'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|deepbiome.py:293] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:325] Test Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure' 'auc']\n",
"[root |INFO|deepbiome.py:327] -------1 fold test start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:338] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:339] Build network for 1 fold testing\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|deepbiome.py:350] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:351] 1 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 594us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.26632118225097656!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.608977735042572, 0.6899999976158142, 1.0, 0.0, 0.0, 0.6397265195846558]\n",
"[root |INFO|deepbiome.py:356] \n",
"[root |INFO|deepbiome.py:357] Compute time : 0.8801772594451904\n",
"[root |INFO|deepbiome.py:358] 1 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:327] -------2 fold test start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:338] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:339] Build network for 2 fold testing\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_1.h5 \n",
"[root |INFO|deepbiome.py:350] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:351] 2 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 542us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.3015158176422119!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.5931748747825623, 0.7200000286102295, 1.0, 0.0, 0.0, 0.4986979067325592]\n",
"[root |INFO|deepbiome.py:356] \n",
"[root |INFO|deepbiome.py:357] Compute time : 0.8466978073120117\n",
"[root |INFO|deepbiome.py:358] 2 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:327] -------3 fold test start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:338] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:339] Build network for 3 fold testing\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"================================================================="
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_2.h5 \n",
"[root |INFO|deepbiome.py:350] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:351] 3 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 501us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.2538328170776367!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6493600606918335, 0.6549999713897705, 1.0, 0.0, 0.0, 0.4984511435031891]\n",
"[root |INFO|deepbiome.py:356] \n",
"[root |INFO|deepbiome.py:357] Compute time : 0.9096362590789795\n",
"[root |INFO|deepbiome.py:358] 3 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:327] -------4 fold test start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:338] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:339] Build network for 4 fold testing\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_3.h5 \n",
"[root |INFO|deepbiome.py:350] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:351] 4 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 432us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.25353074073791504!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.45449164509773254, 0.7200000286102295, 1.0, 0.09677419066429138, 0.3110854923725128, 0.8937587738037109]\n",
"[root |INFO|deepbiome.py:356] \n",
"[root |INFO|deepbiome.py:357] Compute time : 1.1399180889129639\n",
"[root |INFO|deepbiome.py:358] 4 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:327] -------5 fold test start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:338] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:339] Build network for 5 fold testing\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_4.h5 \n",
"[root |INFO|deepbiome.py:350] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:351] 5 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 375us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.25330519676208496!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6074368953704834, 0.7049999833106995, 1.0, 0.0, 0.0, 0.6676283478736877]\n",
"[root |INFO|deepbiome.py:356] \n",
"[root |INFO|deepbiome.py:357] Compute time : 0.8034312725067139\n",
"[root |INFO|deepbiome.py:358] 5 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:367] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:368] Test Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure' 'auc']\n",
"[root |INFO|deepbiome.py:369] mean : [0.583 0.698 1.000 0.019 0.062 0.640]\n",
"[root |INFO|deepbiome.py:370] std : [0.067 0.024 0.000 0.039 0.124 0.145]\n",
"[root |INFO|deepbiome.py:371] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:372] Total Computing Ended\n",
"[root |INFO|deepbiome.py:373] -----------------------------------------------------------------\n"
]
}
],
"source": [
"evaluation = deepbiome.deepbiome_test(log, test_network_info, test_path_info, number_of_fold=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function provides the evaluation result as a numpy array with a shape of (number of folds, number of evaluation measures)."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" loss binary_accuracy sensitivity specificity gmeasure auc\n",
"Mean: 0.5827 0.6980 1.0000 0.0194 0.0622 0.6397\n",
"Std : 0.0668 0.0242 0.0000 0.0387 0.1244 0.1450\n"
]
}
],
"source": [
"print(' %s' % ''.join(['%16s'%'loss']+ ['%16s'%s.strip() for s in test_network_info['model_info']['metrics'].split(',')]))\n",
"print('Mean: %s' % ''.join(['%16.4f'%v for v in np.mean(evaluation, axis=0)]))\n",
"print('Std : %s' % ''.join(['%16.4f'%v for v in np.std(evaluation, axis=0)]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 7. Load the pre-trained network for prediction\n",
"\n",
"If you want to predict using the pre-trained model, you can use the `deepbiome_prediction` function. If `number_of_fold` is setted as `k`, the function will predict only with first `k` folds sample's outputs. \n",
"\n",
"If `change_weight_for_each_fold` is set as `False`, the function will predict the output of every folds by same weight from the given path. If `change_weight_for_each_fold` is set as `True`, the function will predict the output of by each fold weight.\n",
"\n",
"If 'get_y=True', the function will provide a list of tuples (prediction, true output) as a output with the shape of `(n_samples, 2, n_classes)`. If 'get_y=False', the function will provide predictions only. The output will have the shape of `(n_samples, n_classes)`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 7.1 Prediction with fixed weight\n",
"\n",
"If we want to predict new data from one pre-trained model, we can use the option below. We fixed the weight `weight_0.h5` for predicting the whole samples from `onefile_x.csv` (without using index file)."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"prediction_network_info = {\n",
" 'architecture_info': {\n",
" 'batch_normalization': 'False',\n",
" 'drop_out': '0',\n",
" 'weight_initial': 'glorot_uniform',\n",
" 'weight_l1_penalty':'0.',\n",
" 'weight_decay': 'phylogenetic_tree',\n",
" },\n",
" 'model_info': {\n",
" 'decay': '0.001',\n",
" 'loss': 'binary_crossentropy',\n",
" 'lr': '0.01',\n",
" 'metrics': 'binary_accuracy, sensitivity, specificity, gmeasure, auc',\n",
" 'network_class': 'DeepBiomeNetwork',\n",
" 'normalizer': 'normalize_minmax',\n",
" 'optimizer': 'adam',\n",
" 'reader_class': 'MicroBiomeClassificationReader',\n",
" 'taxa_selection_metrics': 'sensitivity, specificity, gmeasure, accuracy',\n",
" },\n",
" 'test_info': {\n",
" 'batch_size': 'None'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"prediction_path_info = {\n",
" 'data_info': {\n",
" 'data_path': resource_filename('deepbiome', 'tests/data'),\n",
" 'tree_info_path': resource_filename('deepbiome', 'tests/data/genus48_dic.csv'),\n",
" 'x_path': 'onefile_x.csv',\n",
" 'y_path': 'classification_y.csv'\n",
" },\n",
" 'model_info': {\n",
" 'model_dir': './example_result/',\n",
" 'weight': 'weight_0.h5'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|deepbiome.py:450] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:480] -------1 th repeatition prediction start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:498] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|deepbiome.py:509] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:193] Prediction start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"1000/1000 [==============================] - 0s 51us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:198] Prediction end with time 0.05417037010192871!\n",
"[root |INFO|deepbiome.py:513] Compute time : 0.5956833362579346\n",
"[root |INFO|deepbiome.py:514] 1 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:519] Total Computing Ended\n",
"[root |INFO|deepbiome.py:520] -----------------------------------------------------------------\n"
]
}
],
"source": [
"prediction = deepbiome.deepbiome_prediction(log, prediction_network_info, prediction_path_info,\n",
" num_classes = 1, number_of_fold=None)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1, 1000, 1)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prediction.shape"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.684],\n",
" [0.688],\n",
" [0.676],\n",
" [0.662],\n",
" [0.674],\n",
" [0.739],\n",
" [0.688],\n",
" [0.670],\n",
" [0.669],\n",
" [0.667]], dtype=float32)"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prediction[0,:10]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 7.2 Prediction with each fold weight\n",
"\n",
"If we want to predict the cross-validation outputs, we can use the option belows.\n",
"\n",
"The example below shows how to predict the 5-fold cross-validation outputs. (If we use the leave-one-out-cross-validation (LOOCV) for training, we can predict the LOOCV outputs by same way.)\n",
"We set `idx_path` for using the index file `onefile_idx.csv` to predict only the test set for each fold."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"prediction_network_info = {\n",
" 'architecture_info': {\n",
" 'batch_normalization': 'False',\n",
" 'drop_out': '0',\n",
" 'weight_initial': 'glorot_uniform',\n",
" 'weight_l1_penalty':'0.',\n",
" 'weight_decay': 'phylogenetic_tree',\n",
" },\n",
" 'model_info': {\n",
" 'decay': '0.001',\n",
" 'loss': 'binary_crossentropy',\n",
" 'lr': '0.01',\n",
" 'metrics': 'binary_accuracy, sensitivity, specificity, gmeasure, auc',\n",
" 'network_class': 'DeepBiomeNetwork',\n",
" 'normalizer': 'normalize_minmax',\n",
" 'optimizer': 'adam',\n",
" 'reader_class': 'MicroBiomeClassificationReader',\n",
" 'taxa_selection_metrics': 'sensitivity, specificity, gmeasure, accuracy',\n",
" },\n",
" 'test_info': {\n",
" 'batch_size': 'None'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"prediction_path_info = {\n",
" 'data_info': {\n",
" 'data_path': resource_filename('deepbiome', 'tests/data'),\n",
" 'idx_path': resource_filename('deepbiome', 'tests/data/onefile_idx.csv'),\n",
" 'tree_info_path': resource_filename('deepbiome', 'tests/data/genus48_dic.csv'),\n",
" 'x_path': 'onefile_x.csv',\n",
" 'y_path': 'classification_y.csv'\n",
" },\n",
" 'model_info': {\n",
" 'model_dir': './example_result/',\n",
" 'weight': 'weight.h5'\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To predict the CV outputs from each fold, we set `change_weight_for_each_fold = True`. Also, we set `get_y=True` to get the paired output of each prediction too."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|deepbiome.py:450] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:480] -------1 th repeatition prediction start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:498] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|deepbiome.py:509] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:193] Prediction start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 147us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:198] Prediction end with time 0.032140254974365234!\n",
"[root |INFO|deepbiome.py:513] Compute time : 0.6093075275421143\n",
"[root |INFO|deepbiome.py:514] 1 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:480] -------2 th repeatition prediction start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:498] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_2\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_1.h5 \n",
"[root |INFO|deepbiome.py:509] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:193] Prediction start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 219us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:198] Prediction end with time 0.0466768741607666!\n",
"[root |INFO|deepbiome.py:513] Compute time : 0.6837012767791748\n",
"[root |INFO|deepbiome.py:514] 2 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:480] -------3 th repeatition prediction start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:498] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_3\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_2.h5 \n",
"[root |INFO|deepbiome.py:509] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:193] Prediction start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 282us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:198] Prediction end with time 0.05935072898864746!\n",
"[root |INFO|deepbiome.py:513] Compute time : 0.673020601272583\n",
"[root |INFO|deepbiome.py:514] 3 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:480] -------4 th repeatition prediction start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:498] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_4\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_3.h5 \n",
"[root |INFO|deepbiome.py:509] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:193] Prediction start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 516us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:198] Prediction end with time 0.10687398910522461!\n",
"[root |INFO|deepbiome.py:513] Compute time : 0.9963078498840332\n",
"[root |INFO|deepbiome.py:514] 4 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:480] -------5 th repeatition prediction start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:498] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_5\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure, auc\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_4.h5 \n",
"[root |INFO|deepbiome.py:509] -----------------------------------------------------------------\n",
"[root |INFO|build_network.py:193] Prediction start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 723us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:198] Prediction end with time 0.1472012996673584!\n",
"[root |INFO|deepbiome.py:513] Compute time : 0.9382455348968506\n",
"[root |INFO|deepbiome.py:514] 5 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:519] Total Computing Ended\n",
"[root |INFO|deepbiome.py:520] -----------------------------------------------------------------\n"
]
}
],
"source": [
"prediction = deepbiome.deepbiome_prediction(log, prediction_network_info, prediction_path_info,\n",
" num_classes = 1, number_of_fold=None, \n",
" change_weight_for_each_fold = True, \n",
" get_y=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We gathered the outputs from each fold. "
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"prediction = np.vstack(prediction)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since we set the option `get_y=True`, the output has the shape of `(n_samples, 2, n_classes)`. With this options, we can get the CV predictions and the true output of each predictions.\n",
"\n",
"Now, we can calculate the CV performance by the CV predictions."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:4] Shape of the predict function output: (1000, 2, 1)\n",
"[root |INFO|:5] Shape of the prediction: (1000, 1)\n",
"[root |INFO|:6] Shape of the true_output for each prediction: (1000, 1)\n"
]
}
],
"source": [
"predict_output = prediction[:,0]\n",
"true_output = prediction[:,1]\n",
"\n",
"log.info('Shape of the predict function output: %s' % str(prediction.shape))\n",
"log.info('Shape of the prediction: %s' % str(predict_output.shape))\n",
"log.info('Shape of the true_output for each prediction: %s' % str(true_output.shape))"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:1] CV accuracy: 0.698\n"
]
}
],
"source": [
"log.info('CV accuracy: %6.3f' % np.mean((predict_output >= 0.5) == true_output))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 8. Load trained weight matrix\n",
"\n",
"The `deepbiome_get_trained_weight` function convert the trained weight `*.h5` saved from the `deepbiome_train` to a list of pandas dataframe.\n",
"In this exampe, the list has numpy array of weights from 6 layers. (`[genus to family, family to order, order to Class, class to phylum, phylum to output]`)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"_________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 \n",
"_________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 \n",
"_________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 \n",
"_________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 \n",
"_________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 \n",
"_________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 \n",
"_________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 \n",
"_________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 \n",
"_________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 10 \n",
"_________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 \n",
"=================================================================\n",
"Total params: 3,483\n",
"Trainable params: 3,483\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:3] 5\n"
]
}
],
"source": [
"weight_path = '%s/%s' % (path_info['model_info']['model_dir'], 'weight_0.h5')\n",
"trained_weight_list = deepbiome.deepbiome_get_trained_weight(log, network_info, path_info, num_classes=1, weight_path=weight_path)\n",
"log.info(len(trained_weight_list))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First weight between the `genus` and `family` layers has the shape of `(number of genus = 48, number of family = 40)`"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:1] (48, 40)\n"
]
}
],
"source": [
"log.info(trained_weight_list[0].shape)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Streptococcaceae | \n",
" Cellulomonadaceae | \n",
" Veillonellaceae | \n",
" Actinomycetaceae | \n",
" Flavobacteriaceae | \n",
" Prevotellaceae | \n",
" Porphyromonadaceae | \n",
" Clostridiales_Incertae_Sedis_XI | \n",
" Fusobacteriaceae | \n",
" Propionibacteriaceae | \n",
" ... | \n",
" Methylobacteriaceae | \n",
" OD1_genera_incertae_sedis | \n",
" Microbacteriaceae | \n",
" Sphingomonadaceae | \n",
" Bacteroidaceae | \n",
" Bdellovibrionaceae | \n",
" Chloroplast | \n",
" Rhodobacteraceae | \n",
" Ruminococcaceae | \n",
" Pseudonocardiaceae | \n",
"
\n",
" \n",
" \n",
" \n",
" Streptococcus | \n",
" -0.174 | \n",
" -0.001 | \n",
" -0.003 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" ... | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.003 | \n",
" 0.000 | \n",
" 0.003 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
"
\n",
" \n",
" Tropheryma | \n",
" -0.003 | \n",
" -0.248 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.003 | \n",
" 0.006 | \n",
" 0.005 | \n",
" ... | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.007 | \n",
" -0.001 | \n",
" 0.003 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
"
\n",
" \n",
" Veillonella | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.205 | \n",
" 0.002 | \n",
" -0.000 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.003 | \n",
" 0.005 | \n",
" ... | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.003 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
"
\n",
" \n",
" Actinomyces | \n",
" -0.000 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.115 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.005 | \n",
" ... | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.005 | \n",
" 0.003 | \n",
" -0.000 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Flavobacterium | \n",
" -0.002 | \n",
" -0.000 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.049 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.003 | \n",
" -0.003 | \n",
" 0.001 | \n",
" ... | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
"
\n",
" \n",
" Prevotella | \n",
" -0.001 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.047 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.004 | \n",
" ... | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.000 | \n",
" 0.001 | \n",
"
\n",
" \n",
" Porphyromonas | \n",
" -0.000 | \n",
" 0.003 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.017 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
" ... | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.000 | \n",
" 0.004 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
"
\n",
" \n",
" Parvimonas | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.000 | \n",
" -0.002 | \n",
" 0.263 | \n",
" -0.001 | \n",
" -0.001 | \n",
" ... | \n",
" -0.000 | \n",
" -0.000 | \n",
" -0.000 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
"
\n",
" \n",
" Fusobacterium | \n",
" -0.000 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.000 | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.265 | \n",
" -0.001 | \n",
" ... | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.002 | \n",
" -0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Propionibacterium | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.003 | \n",
" 0.000 | \n",
" -0.006 | \n",
" -0.004 | \n",
" -2.003 | \n",
" ... | \n",
" 0.000 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.008 | \n",
" -0.002 | \n",
" -0.000 | \n",
" -0.000 | \n",
" -0.002 | \n",
" 0.001 | \n",
"
\n",
" \n",
" Gemella | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.003 | \n",
" -0.003 | \n",
" 0.002 | \n",
" ... | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.001 | \n",
" 0.000 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Rothia | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.008 | \n",
" -0.008 | \n",
" -0.011 | \n",
" ... | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.006 | \n",
" -0.003 | \n",
" 0.009 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Granulicatella | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.001 | \n",
" 0.001 | \n",
" ... | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Neisseria | \n",
" -0.000 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.004 | \n",
" -0.000 | \n",
" -0.002 | \n",
" ... | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.004 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.000 | \n",
" -0.001 | \n",
"
\n",
" \n",
" Lactobacillus | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" ... | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Megasphaera | \n",
" -0.000 | \n",
" 0.000 | \n",
" -0.251 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.004 | \n",
" -0.004 | \n",
" ... | \n",
" 0.000 | \n",
" 0.000 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Catonella | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.003 | \n",
" 0.002 | \n",
" ... | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
" -0.003 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Atopobium | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.003 | \n",
" 0.000 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.003 | \n",
" -0.001 | \n",
" ... | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.004 | \n",
" 0.001 | \n",
" -0.003 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Campylobacter | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.003 | \n",
" 0.001 | \n",
" -0.000 | \n",
" ... | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.003 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.003 | \n",
" -0.002 | \n",
" -0.001 | \n",
"
\n",
" \n",
" Capnocytophaga | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.036 | \n",
" 0.002 | \n",
" -0.000 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.000 | \n",
" ... | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.000 | \n",
" -0.003 | \n",
" -0.002 | \n",
" 0.003 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Solobacterium | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.001 | \n",
" ... | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Moryella | \n",
" -0.000 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.004 | \n",
" 0.007 | \n",
" 0.006 | \n",
" ... | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.003 | \n",
" -0.000 | \n",
" -0.005 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
"
\n",
" \n",
" TM7_genera_incertae_sedis | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
" ... | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.000 | \n",
" -0.002 | \n",
" 0.005 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Staphylococcus | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.000 | \n",
" -0.003 | \n",
" 0.002 | \n",
" 0.001 | \n",
" ... | \n",
" 0.002 | \n",
" 0.003 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Filifactor | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.003 | \n",
" 0.005 | \n",
" ... | \n",
" -0.000 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
"
\n",
" \n",
" Oribacterium | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.003 | \n",
" 0.003 | \n",
" 0.004 | \n",
" 0.009 | \n",
" 0.009 | \n",
" ... | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.003 | \n",
" -0.005 | \n",
" 0.003 | \n",
" 0.003 | \n",
" -0.000 | \n",
" -0.000 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Burkholderia | \n",
" 0.000 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
" ... | \n",
" 0.002 | \n",
" -0.000 | \n",
" 0.001 | \n",
" 0.000 | \n",
" 0.004 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Sneathia | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.003 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.000 | \n",
" ... | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.003 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
"
\n",
" \n",
" Treponema | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.003 | \n",
" 0.002 | \n",
" ... | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Moraxella | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.000 | \n",
" 0.002 | \n",
" -0.002 | \n",
" ... | \n",
" -0.001 | \n",
" -0.000 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.000 | \n",
" -0.003 | \n",
" 0.000 | \n",
" -0.000 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Haemophilus | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.000 | \n",
" ... | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.000 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Selenomonas | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.107 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.005 | \n",
" ... | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.003 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Corynebacterium | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.003 | \n",
" 0.002 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.000 | \n",
" -0.005 | \n",
" ... | \n",
" -0.002 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.000 | \n",
" -0.002 | \n",
" 0.000 | \n",
"
\n",
" \n",
" Rhizobium | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.001 | \n",
" ... | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Bradyrhizobium | \n",
" -0.000 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.003 | \n",
" -0.002 | \n",
" ... | \n",
" -0.003 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.004 | \n",
" -0.000 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.001 | \n",
"
\n",
" \n",
" Methylobacterium | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" -0.003 | \n",
" 0.001 | \n",
" 0.001 | \n",
" ... | \n",
" 0.672 | \n",
" 0.000 | \n",
" 0.002 | \n",
" -0.000 | \n",
" 0.000 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
"
\n",
" \n",
" OD1_genera_incertae_sedis | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.002 | \n",
" 0.002 | \n",
" ... | \n",
" 0.002 | \n",
" -0.299 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.003 | \n",
" -0.000 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Finegoldia | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.152 | \n",
" 0.001 | \n",
" 0.001 | \n",
" ... | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Microbacterium | \n",
" 0.001 | \n",
" -0.000 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.002 | \n",
" -0.003 | \n",
" 0.001 | \n",
" -0.000 | \n",
" ... | \n",
" -0.000 | \n",
" 0.001 | \n",
" -0.416 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Sphingomonas | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" 0.000 | \n",
" -0.002 | \n",
" 0.001 | \n",
" ... | \n",
" 0.000 | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.376 | \n",
" 0.004 | \n",
" -0.003 | \n",
" -0.003 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Chryseobacterium | \n",
" -0.002 | \n",
" -0.000 | \n",
" 0.003 | \n",
" 0.000 | \n",
" 0.269 | \n",
" -0.002 | \n",
" -0.000 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" ... | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.000 | \n",
" -0.000 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Bacteroides | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.000 | \n",
" 0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.003 | \n",
" ... | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 1.461 | \n",
" -0.002 | \n",
" -0.003 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
"
\n",
" \n",
" Bdellovibrio | \n",
" 0.000 | \n",
" 0.002 | \n",
" -0.003 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.003 | \n",
" 0.001 | \n",
" ... | \n",
" -0.002 | \n",
" 0.002 | \n",
" 0.000 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.146 | \n",
" 0.003 | \n",
" -0.001 | \n",
" 0.000 | \n",
" 0.000 | \n",
"
\n",
" \n",
" Streptophyta | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.003 | \n",
" 0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" ... | \n",
" -0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.000 | \n",
" -0.147 | \n",
" -0.002 | \n",
" -0.001 | \n",
" 0.002 | \n",
"
\n",
" \n",
" Lachnospiracea_incertae_sedis | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.000 | \n",
" -0.001 | \n",
" ... | \n",
" 0.002 | \n",
" 0.002 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.000 | \n",
"
\n",
" \n",
" Paracoccus | \n",
" 0.001 | \n",
" 0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.002 | \n",
" ... | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.252 | \n",
" 0.001 | \n",
" -0.001 | \n",
"
\n",
" \n",
" Fastidiosipila | \n",
" 0.003 | \n",
" 0.000 | \n",
" 0.000 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.002 | \n",
" -0.001 | \n",
" ... | \n",
" -0.001 | \n",
" -0.002 | \n",
" 0.001 | \n",
" 0.001 | \n",
" -0.001 | \n",
" 0.000 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.087 | \n",
" -0.002 | \n",
"
\n",
" \n",
" Pseudonocardia | \n",
" 0.000 | \n",
" 0.001 | \n",
" -0.001 | \n",
" -0.002 | \n",
" -0.002 | \n",
" -0.001 | \n",
" -0.001 | \n",
" 0.001 | \n",
" 0.000 | \n",
" 0.004 | \n",
" ... | \n",
" 0.002 | \n",
" -0.002 | \n",
" -0.000 | \n",
" -0.003 | \n",
" 0.000 | \n",
" -0.000 | \n",
" 0.002 | \n",
" -0.000 | \n",
" 0.002 | \n",
" 0.071 | \n",
"
\n",
" \n",
"
\n",
"
48 rows × 40 columns
\n",
"
"
],
"text/plain": [
" Streptococcaceae Cellulomonadaceae \\\n",
"Streptococcus -0.174 -0.001 \n",
"Tropheryma -0.003 -0.248 \n",
"Veillonella -0.001 -0.002 \n",
"Actinomyces -0.000 0.002 \n",
"Flavobacterium -0.002 -0.000 \n",
"Prevotella -0.001 -0.000 \n",
"Porphyromonas -0.000 0.003 \n",
"Parvimonas 0.002 -0.001 \n",
"Fusobacterium -0.000 -0.000 \n",
"Propionibacterium 0.001 0.001 \n",
"Gemella 0.002 -0.002 \n",
"Rothia 0.001 0.001 \n",
"Granulicatella -0.002 -0.001 \n",
"Neisseria -0.000 0.002 \n",
"Lactobacillus -0.002 0.000 \n",
"Megasphaera -0.000 0.000 \n",
"Catonella -0.002 -0.001 \n",
"Atopobium -0.002 0.002 \n",
"Campylobacter -0.002 0.000 \n",
"Capnocytophaga 0.002 0.002 \n",
"Solobacterium 0.000 -0.001 \n",
"Moryella -0.000 -0.002 \n",
"TM7_genera_incertae_sedis 0.000 -0.001 \n",
"Staphylococcus -0.002 0.002 \n",
"Filifactor -0.002 0.002 \n",
"Oribacterium 0.000 -0.001 \n",
"Burkholderia 0.000 0.001 \n",
"Sneathia -0.001 0.000 \n",
"Treponema 0.002 0.001 \n",
"Moraxella 0.001 -0.002 \n",
"Haemophilus 0.001 0.002 \n",
"Selenomonas 0.001 0.002 \n",
"Corynebacterium -0.001 0.000 \n",
"Rhizobium -0.000 -0.001 \n",
"Bradyrhizobium -0.000 -0.002 \n",
"Methylobacterium 0.002 0.001 \n",
"OD1_genera_incertae_sedis 0.001 -0.002 \n",
"Finegoldia 0.002 -0.001 \n",
"Microbacterium 0.001 -0.000 \n",
"Sphingomonas 0.001 0.002 \n",
"Chryseobacterium -0.002 -0.000 \n",
"Bacteroides 0.001 -0.002 \n",
"Bdellovibrio 0.000 0.002 \n",
"Streptophyta -0.002 -0.001 \n",
"Lachnospiracea_incertae_sedis 0.000 0.001 \n",
"Paracoccus 0.001 0.002 \n",
"Fastidiosipila 0.003 0.000 \n",
"Pseudonocardia 0.000 0.001 \n",
"\n",
" Veillonellaceae Actinomycetaceae \\\n",
"Streptococcus -0.003 -0.002 \n",
"Tropheryma 0.001 0.001 \n",
"Veillonella -0.205 0.002 \n",
"Actinomyces 0.001 -0.115 \n",
"Flavobacterium 0.002 -0.002 \n",
"Prevotella -0.001 -0.002 \n",
"Porphyromonas -0.002 -0.001 \n",
"Parvimonas -0.002 -0.001 \n",
"Fusobacterium -0.001 -0.000 \n",
"Propionibacterium -0.001 0.002 \n",
"Gemella 0.000 -0.001 \n",
"Rothia 0.000 -0.002 \n",
"Granulicatella 0.001 -0.000 \n",
"Neisseria 0.002 -0.002 \n",
"Lactobacillus 0.001 0.001 \n",
"Megasphaera -0.251 0.002 \n",
"Catonella -0.002 0.002 \n",
"Atopobium 0.002 -0.002 \n",
"Campylobacter 0.002 0.002 \n",
"Capnocytophaga -0.002 0.000 \n",
"Solobacterium -0.002 0.001 \n",
"Moryella 0.002 -0.002 \n",
"TM7_genera_incertae_sedis 0.002 -0.002 \n",
"Staphylococcus -0.001 0.002 \n",
"Filifactor 0.002 -0.002 \n",
"Oribacterium 0.002 0.000 \n",
"Burkholderia 0.002 0.000 \n",
"Sneathia -0.003 0.000 \n",
"Treponema -0.002 0.001 \n",
"Moraxella -0.001 0.000 \n",
"Haemophilus -0.002 -0.001 \n",
"Selenomonas 0.107 -0.001 \n",
"Corynebacterium -0.003 0.002 \n",
"Rhizobium -0.001 -0.000 \n",
"Bradyrhizobium -0.001 0.001 \n",
"Methylobacterium -0.001 -0.000 \n",
"OD1_genera_incertae_sedis 0.000 -0.002 \n",
"Finegoldia 0.001 -0.001 \n",
"Microbacterium 0.002 -0.002 \n",
"Sphingomonas 0.002 -0.002 \n",
"Chryseobacterium 0.003 0.000 \n",
"Bacteroides 0.001 0.001 \n",
"Bdellovibrio -0.003 -0.001 \n",
"Streptophyta -0.001 0.002 \n",
"Lachnospiracea_incertae_sedis -0.000 -0.001 \n",
"Paracoccus 0.001 0.001 \n",
"Fastidiosipila 0.000 -0.002 \n",
"Pseudonocardia -0.001 -0.002 \n",
"\n",
" Flavobacteriaceae Prevotellaceae \\\n",
"Streptococcus 0.001 -0.001 \n",
"Tropheryma -0.002 -0.001 \n",
"Veillonella -0.000 0.002 \n",
"Actinomyces 0.002 -0.002 \n",
"Flavobacterium -0.049 -0.002 \n",
"Prevotella -0.002 -0.047 \n",
"Porphyromonas 0.001 0.001 \n",
"Parvimonas 0.002 -0.000 \n",
"Fusobacterium 0.000 0.001 \n",
"Propionibacterium -0.001 0.003 \n",
"Gemella -0.002 0.000 \n",
"Rothia -0.002 0.001 \n",
"Granulicatella -0.002 0.001 \n",
"Neisseria 0.001 0.002 \n",
"Lactobacillus -0.001 0.000 \n",
"Megasphaera 0.001 0.002 \n",
"Catonella 0.002 -0.002 \n",
"Atopobium -0.003 0.000 \n",
"Campylobacter -0.001 -0.002 \n",
"Capnocytophaga 0.036 0.002 \n",
"Solobacterium -0.001 -0.001 \n",
"Moryella -0.001 0.001 \n",
"TM7_genera_incertae_sedis 0.000 0.002 \n",
"Staphylococcus 0.001 -0.002 \n",
"Filifactor 0.000 -0.001 \n",
"Oribacterium -0.001 -0.003 \n",
"Burkholderia -0.001 -0.001 \n",
"Sneathia -0.001 -0.001 \n",
"Treponema -0.001 -0.000 \n",
"Moraxella -0.002 0.002 \n",
"Haemophilus -0.001 0.002 \n",
"Selenomonas 0.000 -0.001 \n",
"Corynebacterium 0.002 0.001 \n",
"Rhizobium -0.002 -0.001 \n",
"Bradyrhizobium 0.002 -0.002 \n",
"Methylobacterium -0.001 -0.002 \n",
"OD1_genera_incertae_sedis 0.002 0.001 \n",
"Finegoldia 0.002 -0.002 \n",
"Microbacterium -0.001 -0.002 \n",
"Sphingomonas -0.001 -0.002 \n",
"Chryseobacterium 0.269 -0.002 \n",
"Bacteroides 0.001 -0.000 \n",
"Bdellovibrio -0.001 0.000 \n",
"Streptophyta 0.001 -0.001 \n",
"Lachnospiracea_incertae_sedis -0.001 0.002 \n",
"Paracoccus 0.000 0.001 \n",
"Fastidiosipila -0.001 -0.002 \n",
"Pseudonocardia -0.002 -0.001 \n",
"\n",
" Porphyromonadaceae \\\n",
"Streptococcus -0.000 \n",
"Tropheryma 0.002 \n",
"Veillonella -0.001 \n",
"Actinomyces 0.001 \n",
"Flavobacterium 0.001 \n",
"Prevotella 0.002 \n",
"Porphyromonas -0.017 \n",
"Parvimonas -0.002 \n",
"Fusobacterium -0.001 \n",
"Propionibacterium 0.000 \n",
"Gemella 0.001 \n",
"Rothia 0.001 \n",
"Granulicatella 0.001 \n",
"Neisseria 0.001 \n",
"Lactobacillus -0.001 \n",
"Megasphaera 0.001 \n",
"Catonella -0.002 \n",
"Atopobium -0.000 \n",
"Campylobacter 0.002 \n",
"Capnocytophaga -0.000 \n",
"Solobacterium -0.001 \n",
"Moryella -0.001 \n",
"TM7_genera_incertae_sedis 0.002 \n",
"Staphylococcus -0.000 \n",
"Filifactor -0.002 \n",
"Oribacterium 0.003 \n",
"Burkholderia 0.001 \n",
"Sneathia 0.000 \n",
"Treponema -0.002 \n",
"Moraxella 0.002 \n",
"Haemophilus -0.000 \n",
"Selenomonas -0.001 \n",
"Corynebacterium 0.001 \n",
"Rhizobium 0.001 \n",
"Bradyrhizobium 0.002 \n",
"Methylobacterium 0.001 \n",
"OD1_genera_incertae_sedis 0.001 \n",
"Finegoldia 0.001 \n",
"Microbacterium 0.002 \n",
"Sphingomonas 0.000 \n",
"Chryseobacterium -0.000 \n",
"Bacteroides 0.002 \n",
"Bdellovibrio -0.001 \n",
"Streptophyta 0.003 \n",
"Lachnospiracea_incertae_sedis -0.001 \n",
"Paracoccus -0.002 \n",
"Fastidiosipila 0.000 \n",
"Pseudonocardia -0.001 \n",
"\n",
" Clostridiales_Incertae_Sedis_XI \\\n",
"Streptococcus 0.002 \n",
"Tropheryma 0.003 \n",
"Veillonella -0.001 \n",
"Actinomyces 0.002 \n",
"Flavobacterium -0.003 \n",
"Prevotella -0.002 \n",
"Porphyromonas -0.001 \n",
"Parvimonas 0.263 \n",
"Fusobacterium 0.000 \n",
"Propionibacterium -0.006 \n",
"Gemella -0.003 \n",
"Rothia -0.008 \n",
"Granulicatella -0.000 \n",
"Neisseria -0.004 \n",
"Lactobacillus 0.002 \n",
"Megasphaera -0.002 \n",
"Catonella -0.002 \n",
"Atopobium -0.001 \n",
"Campylobacter -0.003 \n",
"Capnocytophaga 0.002 \n",
"Solobacterium -0.002 \n",
"Moryella 0.004 \n",
"TM7_genera_incertae_sedis -0.001 \n",
"Staphylococcus -0.003 \n",
"Filifactor 0.002 \n",
"Oribacterium 0.004 \n",
"Burkholderia -0.001 \n",
"Sneathia -0.002 \n",
"Treponema -0.002 \n",
"Moraxella 0.000 \n",
"Haemophilus -0.001 \n",
"Selenomonas 0.001 \n",
"Corynebacterium -0.002 \n",
"Rhizobium -0.002 \n",
"Bradyrhizobium -0.002 \n",
"Methylobacterium -0.003 \n",
"OD1_genera_incertae_sedis -0.000 \n",
"Finegoldia 0.152 \n",
"Microbacterium -0.003 \n",
"Sphingomonas 0.000 \n",
"Chryseobacterium 0.001 \n",
"Bacteroides -0.001 \n",
"Bdellovibrio 0.001 \n",
"Streptophyta 0.001 \n",
"Lachnospiracea_incertae_sedis 0.001 \n",
"Paracoccus -0.001 \n",
"Fastidiosipila -0.001 \n",
"Pseudonocardia 0.001 \n",
"\n",
" Fusobacteriaceae Propionibacteriaceae ... \\\n",
"Streptococcus 0.002 0.002 ... \n",
"Tropheryma 0.006 0.005 ... \n",
"Veillonella 0.003 0.005 ... \n",
"Actinomyces 0.002 0.005 ... \n",
"Flavobacterium -0.003 0.001 ... \n",
"Prevotella -0.002 0.004 ... \n",
"Porphyromonas -0.001 -0.000 ... \n",
"Parvimonas -0.001 -0.001 ... \n",
"Fusobacterium 0.265 -0.001 ... \n",
"Propionibacterium -0.004 -2.003 ... \n",
"Gemella -0.003 0.002 ... \n",
"Rothia -0.008 -0.011 ... \n",
"Granulicatella -0.001 0.001 ... \n",
"Neisseria -0.000 -0.002 ... \n",
"Lactobacillus -0.001 0.002 ... \n",
"Megasphaera -0.004 -0.004 ... \n",
"Catonella 0.003 0.002 ... \n",
"Atopobium -0.003 -0.001 ... \n",
"Campylobacter 0.001 -0.000 ... \n",
"Capnocytophaga 0.002 0.000 ... \n",
"Solobacterium 0.002 0.001 ... \n",
"Moryella 0.007 0.006 ... \n",
"TM7_genera_incertae_sedis -0.002 -0.002 ... \n",
"Staphylococcus 0.002 0.001 ... \n",
"Filifactor 0.003 0.005 ... \n",
"Oribacterium 0.009 0.009 ... \n",
"Burkholderia -0.001 -0.000 ... \n",
"Sneathia -0.002 -0.000 ... \n",
"Treponema 0.003 0.002 ... \n",
"Moraxella 0.002 -0.002 ... \n",
"Haemophilus 0.002 -0.000 ... \n",
"Selenomonas 0.001 0.005 ... \n",
"Corynebacterium -0.000 -0.005 ... \n",
"Rhizobium 0.002 0.001 ... \n",
"Bradyrhizobium -0.003 -0.002 ... \n",
"Methylobacterium 0.001 0.001 ... \n",
"OD1_genera_incertae_sedis -0.002 0.002 ... \n",
"Finegoldia 0.001 0.001 ... \n",
"Microbacterium 0.001 -0.000 ... \n",
"Sphingomonas -0.002 0.001 ... \n",
"Chryseobacterium 0.000 -0.001 ... \n",
"Bacteroides -0.001 -0.003 ... \n",
"Bdellovibrio 0.003 0.001 ... \n",
"Streptophyta -0.002 0.000 ... \n",
"Lachnospiracea_incertae_sedis -0.000 -0.001 ... \n",
"Paracoccus -0.001 0.002 ... \n",
"Fastidiosipila 0.002 -0.001 ... \n",
"Pseudonocardia 0.000 0.004 ... \n",
"\n",
" Methylobacteriaceae OD1_genera_incertae_sedis \\\n",
"Streptococcus 0.001 -0.002 \n",
"Tropheryma -0.002 -0.001 \n",
"Veillonella -0.001 0.000 \n",
"Actinomyces -0.002 0.002 \n",
"Flavobacterium -0.001 0.002 \n",
"Prevotella -0.001 0.002 \n",
"Porphyromonas -0.001 -0.002 \n",
"Parvimonas -0.000 -0.000 \n",
"Fusobacterium -0.002 -0.002 \n",
"Propionibacterium 0.000 -0.000 \n",
"Gemella -0.001 -0.001 \n",
"Rothia 0.001 -0.002 \n",
"Granulicatella -0.001 -0.002 \n",
"Neisseria -0.001 0.002 \n",
"Lactobacillus -0.001 0.001 \n",
"Megasphaera 0.000 0.000 \n",
"Catonella -0.001 -0.001 \n",
"Atopobium -0.002 -0.001 \n",
"Campylobacter 0.000 -0.001 \n",
"Capnocytophaga -0.001 -0.002 \n",
"Solobacterium -0.002 -0.002 \n",
"Moryella 0.002 -0.001 \n",
"TM7_genera_incertae_sedis -0.002 0.000 \n",
"Staphylococcus 0.002 0.003 \n",
"Filifactor -0.000 -0.001 \n",
"Oribacterium -0.002 0.001 \n",
"Burkholderia 0.002 -0.000 \n",
"Sneathia -0.001 0.002 \n",
"Treponema -0.001 0.002 \n",
"Moraxella -0.001 -0.000 \n",
"Haemophilus 0.001 -0.000 \n",
"Selenomonas -0.001 -0.002 \n",
"Corynebacterium -0.002 -0.002 \n",
"Rhizobium -0.002 -0.001 \n",
"Bradyrhizobium -0.003 0.001 \n",
"Methylobacterium 0.672 0.000 \n",
"OD1_genera_incertae_sedis 0.002 -0.299 \n",
"Finegoldia 0.002 -0.001 \n",
"Microbacterium -0.000 0.001 \n",
"Sphingomonas 0.000 0.000 \n",
"Chryseobacterium 0.001 0.001 \n",
"Bacteroides -0.001 0.001 \n",
"Bdellovibrio -0.002 0.002 \n",
"Streptophyta -0.001 -0.001 \n",
"Lachnospiracea_incertae_sedis 0.002 0.002 \n",
"Paracoccus 0.002 -0.002 \n",
"Fastidiosipila -0.001 -0.002 \n",
"Pseudonocardia 0.002 -0.002 \n",
"\n",
" Microbacteriaceae Sphingomonadaceae \\\n",
"Streptococcus 0.001 0.000 \n",
"Tropheryma 0.002 -0.001 \n",
"Veillonella 0.001 -0.001 \n",
"Actinomyces -0.001 -0.002 \n",
"Flavobacterium -0.001 0.002 \n",
"Prevotella 0.002 -0.001 \n",
"Porphyromonas 0.000 0.000 \n",
"Parvimonas -0.000 0.001 \n",
"Fusobacterium 0.000 0.002 \n",
"Propionibacterium -0.001 -0.001 \n",
"Gemella 0.002 -0.002 \n",
"Rothia -0.006 -0.003 \n",
"Granulicatella 0.001 -0.001 \n",
"Neisseria 0.002 -0.002 \n",
"Lactobacillus 0.001 0.000 \n",
"Megasphaera 0.002 -0.001 \n",
"Catonella 0.002 0.000 \n",
"Atopobium 0.001 0.001 \n",
"Campylobacter -0.002 -0.003 \n",
"Capnocytophaga 0.000 -0.000 \n",
"Solobacterium -0.001 0.000 \n",
"Moryella 0.003 -0.000 \n",
"TM7_genera_incertae_sedis 0.000 -0.002 \n",
"Staphylococcus -0.001 -0.001 \n",
"Filifactor 0.001 -0.002 \n",
"Oribacterium 0.001 0.003 \n",
"Burkholderia 0.001 0.000 \n",
"Sneathia 0.000 -0.001 \n",
"Treponema 0.002 0.002 \n",
"Moraxella 0.002 0.001 \n",
"Haemophilus -0.000 0.001 \n",
"Selenomonas -0.001 0.003 \n",
"Corynebacterium 0.002 0.000 \n",
"Rhizobium 0.002 -0.002 \n",
"Bradyrhizobium 0.000 -0.001 \n",
"Methylobacterium 0.002 -0.000 \n",
"OD1_genera_incertae_sedis 0.001 0.000 \n",
"Finegoldia -0.001 0.002 \n",
"Microbacterium -0.416 0.002 \n",
"Sphingomonas 0.001 -0.376 \n",
"Chryseobacterium 0.000 -0.000 \n",
"Bacteroides 0.001 0.001 \n",
"Bdellovibrio 0.000 0.001 \n",
"Streptophyta -0.001 0.002 \n",
"Lachnospiracea_incertae_sedis -0.001 0.001 \n",
"Paracoccus -0.001 -0.001 \n",
"Fastidiosipila 0.001 0.001 \n",
"Pseudonocardia -0.000 -0.003 \n",
"\n",
" Bacteroidaceae Bdellovibrionaceae \\\n",
"Streptococcus -0.003 0.000 \n",
"Tropheryma -0.007 -0.001 \n",
"Veillonella -0.003 -0.002 \n",
"Actinomyces -0.005 0.003 \n",
"Flavobacterium -0.001 -0.001 \n",
"Prevotella 0.001 0.001 \n",
"Porphyromonas 0.004 0.000 \n",
"Parvimonas -0.000 -0.001 \n",
"Fusobacterium -0.000 -0.001 \n",
"Propionibacterium 0.008 -0.002 \n",
"Gemella 0.001 -0.001 \n",
"Rothia 0.009 -0.002 \n",
"Granulicatella -0.001 -0.001 \n",
"Neisseria 0.004 0.001 \n",
"Lactobacillus -0.001 -0.001 \n",
"Megasphaera 0.001 0.001 \n",
"Catonella -0.003 0.001 \n",
"Atopobium 0.004 0.001 \n",
"Campylobacter -0.001 -0.001 \n",
"Capnocytophaga -0.003 -0.002 \n",
"Solobacterium -0.002 -0.000 \n",
"Moryella -0.005 -0.002 \n",
"TM7_genera_incertae_sedis 0.005 -0.002 \n",
"Staphylococcus 0.000 0.000 \n",
"Filifactor -0.002 0.000 \n",
"Oribacterium -0.005 0.003 \n",
"Burkholderia 0.004 0.000 \n",
"Sneathia 0.003 -0.002 \n",
"Treponema -0.001 0.000 \n",
"Moraxella -0.000 -0.000 \n",
"Haemophilus -0.001 -0.001 \n",
"Selenomonas -0.002 0.001 \n",
"Corynebacterium 0.001 -0.002 \n",
"Rhizobium 0.001 -0.002 \n",
"Bradyrhizobium 0.004 -0.000 \n",
"Methylobacterium 0.000 0.002 \n",
"OD1_genera_incertae_sedis -0.001 0.003 \n",
"Finegoldia 0.001 0.001 \n",
"Microbacterium -0.001 0.001 \n",
"Sphingomonas 0.004 -0.003 \n",
"Chryseobacterium 0.002 -0.001 \n",
"Bacteroides 1.461 -0.002 \n",
"Bdellovibrio 0.001 -0.146 \n",
"Streptophyta -0.002 -0.000 \n",
"Lachnospiracea_incertae_sedis 0.002 0.001 \n",
"Paracoccus 0.001 -0.001 \n",
"Fastidiosipila -0.001 0.000 \n",
"Pseudonocardia 0.000 -0.000 \n",
"\n",
" Chloroplast Rhodobacteraceae Ruminococcaceae \\\n",
"Streptococcus 0.003 0.002 -0.002 \n",
"Tropheryma 0.003 0.002 -0.002 \n",
"Veillonella 0.002 0.001 0.002 \n",
"Actinomyces -0.000 0.000 -0.002 \n",
"Flavobacterium 0.002 -0.001 0.001 \n",
"Prevotella -0.002 0.002 0.000 \n",
"Porphyromonas -0.002 -0.001 -0.002 \n",
"Parvimonas -0.001 0.002 -0.001 \n",
"Fusobacterium 0.002 0.001 -0.001 \n",
"Propionibacterium -0.000 -0.000 -0.002 \n",
"Gemella 0.000 0.001 0.000 \n",
"Rothia -0.002 0.001 -0.001 \n",
"Granulicatella -0.002 0.001 -0.001 \n",
"Neisseria 0.001 0.002 -0.000 \n",
"Lactobacillus -0.001 0.002 0.000 \n",
"Megasphaera 0.000 -0.001 0.001 \n",
"Catonella 0.001 -0.002 -0.001 \n",
"Atopobium -0.003 -0.001 -0.002 \n",
"Campylobacter 0.000 0.003 -0.002 \n",
"Capnocytophaga 0.003 0.001 0.002 \n",
"Solobacterium -0.001 -0.002 0.002 \n",
"Moryella -0.001 0.001 0.002 \n",
"TM7_genera_incertae_sedis 0.001 -0.002 -0.002 \n",
"Staphylococcus -0.001 0.002 0.000 \n",
"Filifactor -0.001 0.000 -0.001 \n",
"Oribacterium 0.003 -0.000 -0.000 \n",
"Burkholderia -0.002 -0.002 0.002 \n",
"Sneathia 0.002 -0.002 0.001 \n",
"Treponema -0.001 0.001 -0.001 \n",
"Moraxella -0.003 0.000 -0.000 \n",
"Haemophilus 0.002 0.002 -0.002 \n",
"Selenomonas -0.002 0.002 0.002 \n",
"Corynebacterium 0.000 -0.000 -0.002 \n",
"Rhizobium 0.001 0.002 -0.001 \n",
"Bradyrhizobium -0.002 -0.001 0.000 \n",
"Methylobacterium 0.002 -0.001 -0.001 \n",
"OD1_genera_incertae_sedis -0.000 0.001 0.002 \n",
"Finegoldia -0.002 -0.002 -0.002 \n",
"Microbacterium 0.001 0.002 -0.001 \n",
"Sphingomonas -0.003 0.001 0.000 \n",
"Chryseobacterium 0.000 0.001 0.001 \n",
"Bacteroides -0.003 -0.002 -0.001 \n",
"Bdellovibrio 0.003 -0.001 0.000 \n",
"Streptophyta -0.147 -0.002 -0.001 \n",
"Lachnospiracea_incertae_sedis 0.002 -0.002 -0.002 \n",
"Paracoccus -0.001 0.252 0.001 \n",
"Fastidiosipila -0.001 0.001 0.087 \n",
"Pseudonocardia 0.002 -0.000 0.002 \n",
"\n",
" Pseudonocardiaceae \n",
"Streptococcus 0.000 \n",
"Tropheryma -0.001 \n",
"Veillonella 0.000 \n",
"Actinomyces -0.002 \n",
"Flavobacterium 0.001 \n",
"Prevotella 0.001 \n",
"Porphyromonas 0.000 \n",
"Parvimonas 0.001 \n",
"Fusobacterium 0.002 \n",
"Propionibacterium 0.001 \n",
"Gemella 0.002 \n",
"Rothia 0.002 \n",
"Granulicatella -0.000 \n",
"Neisseria -0.001 \n",
"Lactobacillus -0.000 \n",
"Megasphaera -0.002 \n",
"Catonella -0.002 \n",
"Atopobium -0.002 \n",
"Campylobacter -0.001 \n",
"Capnocytophaga -0.002 \n",
"Solobacterium -0.002 \n",
"Moryella -0.001 \n",
"TM7_genera_incertae_sedis -0.002 \n",
"Staphylococcus -0.002 \n",
"Filifactor -0.001 \n",
"Oribacterium -0.000 \n",
"Burkholderia -0.000 \n",
"Sneathia 0.001 \n",
"Treponema 0.002 \n",
"Moraxella 0.002 \n",
"Haemophilus -0.002 \n",
"Selenomonas 0.002 \n",
"Corynebacterium 0.000 \n",
"Rhizobium 0.002 \n",
"Bradyrhizobium 0.001 \n",
"Methylobacterium -0.001 \n",
"OD1_genera_incertae_sedis 0.002 \n",
"Finegoldia -0.000 \n",
"Microbacterium -0.002 \n",
"Sphingomonas -0.000 \n",
"Chryseobacterium -0.000 \n",
"Bacteroides -0.001 \n",
"Bdellovibrio 0.000 \n",
"Streptophyta 0.002 \n",
"Lachnospiracea_incertae_sedis -0.000 \n",
"Paracoccus -0.001 \n",
"Fastidiosipila -0.002 \n",
"Pseudonocardia 0.071 \n",
"\n",
"[48 rows x 40 columns]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trained_weight_list[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 9. Taxa selection performance\n",
"\n",
"If we know the true disease path, we can calculate the taxa selection performance by `deepbiome_taxa_selection_performance` funciton. First, we prepared the true weight list based on the true disease path. For each fold, we prepared 4 weights from the 5 layers (`[genus to family, family to order, order to Class, class to phylum]`). An example of the list of the true weights from each fold is as follow:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:2] (5, 4)\n"
]
}
],
"source": [
"true_tree_weight_list = np.load(resource_filename('deepbiome', 'tests/data/true_weight_list.npy'), allow_pickle=True)\n",
"log.info(true_tree_weight_list.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The first weight between the genus and family layers for first epoch has the shape below:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:1] (48, 40)\n"
]
}
],
"source": [
"log.info(true_tree_weight_list[0][0].shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will calculate the taxa selection performance of the trained weight below:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['./example_result//weight_0.h5',\n",
" './example_result//weight_1.h5',\n",
" './example_result//weight_2.h5',\n",
" './example_result//weight_3.h5',\n",
" './example_result//weight_4.h5']"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trained_weight_path_list = ['%s/weight_%d.h5' % (path_info['model_info']['model_dir'], i) for i in range(5)]\n",
"trained_weight_path_list"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is the summary of the taxa selection accuracy of trained weights from each fold."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result//weight_0.h5 \n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result//weight_1.h5 \n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result//weight_2.h5 \n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result//weight_3.h5 \n",
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result//weight_4.h5 \n"
]
}
],
"source": [
"summary = deepbiome.deepbiome_taxa_selection_performance(log, network_info, path_info, num_classes=1, \n",
" true_tree_weight_list=true_tree_weight_list, \n",
" trained_weight_path_list = trained_weight_path_list)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Model | \n",
" PhyloTree | \n",
" No. true taxa | \n",
" No. total taxa | \n",
" Sensitivity_mean | \n",
" Sensitivity_std | \n",
" Specificity_mean | \n",
" Specificity_std | \n",
" Gmeasure_mean | \n",
" Gmeasure_std | \n",
" Accuracy_mean | \n",
" Accuracy_std | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" ./example_result/ | \n",
" Genus | \n",
" 31 | \n",
" 48 | \n",
" 0.948 | \n",
" 0.044 | \n",
" 0.983 | \n",
" 0.014 | \n",
" 0.965 | \n",
" 0.021 | \n",
" 0.982 | \n",
" 0.013 | \n",
"
\n",
" \n",
" 1 | \n",
" | \n",
" Family | \n",
" 23 | \n",
" 40 | \n",
" 0.991 | \n",
" 0.017 | \n",
" 0.973 | \n",
" 0.011 | \n",
" 0.982 | \n",
" 0.008 | \n",
" 0.973 | \n",
" 0.010 | \n",
"
\n",
" \n",
" 2 | \n",
" | \n",
" Order | \n",
" 9 | \n",
" 23 | \n",
" 0.978 | \n",
" 0.044 | \n",
" 0.953 | \n",
" 0.015 | \n",
" 0.965 | \n",
" 0.021 | \n",
" 0.954 | \n",
" 0.015 | \n",
"
\n",
" \n",
" 3 | \n",
" | \n",
" Class | \n",
" 7 | \n",
" 17 | \n",
" 0.971 | \n",
" 0.057 | \n",
" 0.925 | \n",
" 0.018 | \n",
" 0.948 | \n",
" 0.037 | \n",
" 0.927 | \n",
" 0.020 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Model PhyloTree No. true taxa No. total taxa Sensitivity_mean \\\n",
"0 ./example_result/ Genus 31 48 0.948 \n",
"1 Family 23 40 0.991 \n",
"2 Order 9 23 0.978 \n",
"3 Class 7 17 0.971 \n",
"\n",
" Sensitivity_std Specificity_mean Specificity_std Gmeasure_mean \\\n",
"0 0.044 0.983 0.014 0.965 \n",
"1 0.017 0.973 0.011 0.982 \n",
"2 0.044 0.953 0.015 0.965 \n",
"3 0.057 0.925 0.018 0.948 \n",
"\n",
" Gmeasure_std Accuracy_mean Accuracy_std \n",
"0 0.021 0.982 0.013 \n",
"1 0.008 0.973 0.010 \n",
"2 0.021 0.954 0.015 \n",
"3 0.037 0.927 0.020 "
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"summary"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 10. Draw phylogenetic tree\n",
"\n",
"The `deepbiome_get_trained_weight` function draw phylogenetic tree for the `DeepBiome` network. This function implemented `ete3` library (link TBD)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we turn on the `tree_weight_on` option, the function shows the amount and direction of the tree weights for each edge by circle size and color. For this option, we have to feed a list of pandas dataframe of the tree weights obtained from `deepbiome_get_trained_weight` function to `tree_weight` argument.\n",
"In this example, we used the 5 lists of weights from 5-fold cross validation obtained from `deepbiome_get_trained_weight` function.\n",
"For each layer, we first averaged 5 weights from 5 fold CV."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"tot_trained_weight_list = []\n",
"for fold in range(5):\n",
" weight_path = '%s/%s' % (path_info['model_info']['model_dir'], 'weight_%d.h5' % fold)\n",
" trained_weight_list = deepbiome.deepbiome_get_trained_weight(log, network_info, path_info, num_classes=1,\n",
" weight_path=weight_path, verbose=False)\n",
" tot_trained_weight_list.append(trained_weight_list)\n",
" \n",
"trained_weight_list = []\n",
"for i in range(len(tot_trained_weight_list[0])):\n",
" level_weights = tot_trained_weight_list[0][i]\n",
" for j in range(1,len(tot_trained_weight_list)):\n",
" level_weights +=tot_trained_weight_list[j][i]\n",
" level_weights /= len(tot_trained_weight_list)\n",
" trained_weight_list.append(level_weights)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we can draw the phylogenetic tree with trained weights. For using the trained weights, __`tree_level_list`, the list of names for each level, should be same as the name of each level in the trained weight list.__\n",
"We used `file_name='%%inline'` option to show the tree in the jupyter notebook. To specify the background color for each phylum, we turned on the `phylum_background_color_on` option and used `phylum_color` list."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nEEalUjUo2DJo0CBGjhzJFVdcQYcOHVi0aBH33HMPmzdvZseOHbz88sukpqby5ZdfsmbNmkZTyDb1\n+dR58sknG7zn4F+Pz8fUqVPp3r07+fn5XH311fz2t79l3bp1rF69moEDBzJ58mRiYmIa/YwyMjIY\nNWpUvc/oVI29h169ejF+/HhGjx5NTU0NU6dOJSIiol7hmttvvx0UIYQQ4cNSrSiFJ1v+p8YWbOK5\n555T7r///kabv++++5QNGzYoiqIoV155pXLy5ElFURTF4/Eohw4dUrZt26YMHz5cURRFmTNnjvLu\nu+8qiqIon376qXLvvfcqiqIoQ4cOVYqKihRFUZQ1a9YoS5cuVRRFUdLS0pTs7GxFURRl9erVyu9/\n//sm277//vuVN998s97YcnNzlcmTJwd/HjlypFJWVqYoiqLs2bNHmTdvnqIoitKlSxclPz9fURRF\nKSgoUCZMmBC8xmq1KpmZmcpzzz0XHNfpzvT5NPWeb7/9dmX79u3Khx9+qNx1112KoiiK3+9X+vXr\np1RXVyurV69WbrvttmA7LfmMzvYecnJylFGjRinV1dX1xtq/f/96P8stdyGECCfaVq5YP2Wle6dO\nnZq8Xbxw4UJee+019u/fT0JCAt26daOgoICxY8eybt06du/eXe/WeK9evYDatK5Wa21++erqajp3\n7gzUL7Ci1+uD56enp3Py5Mkm225OQZi6gi1z5sxh+fLl9OnTBwCj0RhMGXuqTz75hOuvv56PP/6Y\no0ePUl5e3mi7Z/p8mnrPdU6ePBksCqNWq+nZs2cwtW1dkZqWfkZnew89e/bklltuYfr06UyYMIED\nBxpPCywBXQghwolO3/K95RoNaHXBHydOnMi2bdvIyckJHqsLAv369cPtdvPYY49x1113AfDFF19w\n/fXX8+c//5nJkyefdTV3hw4dggEqMzMzWFDF4/Fw+PDhesebanvgwIHs2rWrXrunF4SpK9iybt06\n3nnnHR599FGABilr66xfv55ly5bx6KOPkp6eHqwFf7ozfT5n06dPH7777jug9vZ7dnZ28MvFqeNq\nyWfUnPewcOFCtm7dyt13383KlSuBHwrX1JFn6EIIEU50+to/7sYXTDVKbwDtD7/OExMTeeutt5g1\naxZdunTB4XAQERHBxo0bAfjFL37B/fffz5QpUwC4+uqrue666zh8+DAajQa9Xn/G7p588klmzpzJ\n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\ngTF+ajuMTYQjCehCCBHGvI6DWMu+wVVjw+8GTQRExMQR23EEuoi+7T08EUZkUZwQQoQph6WMkqwD\nuGwWAr4fZukaHVhKviXtkiQM0VJxTdSSGboQQoShGlMOhQc243XZmjxHHxlLt8unERmfGsKRiXAl\nxVmEECLMuKzlFB784ozBHMDjtJL/7Sd4nNYQjUyEMwnoQggRThSF4kP/xdvMIO1xWCg5+EWD40VF\nRcyZM4err76aiRMn8u9//zv42pw5cxg7dizjx4/ntttuY/v27cHXvvrqK+bMmcPIkSOxWBrWYRfh\nS56hCyFEGHFaTbisLSvO4rSU4bZXYYhKAGqzuE2aNIlnnnmGn/70p5SVlTFx4kQSEhIYMWIEmZmZ\nbN68maSkJL755htuu+02XnjhBcaNG0dSUhJLly7l5ptvxuv1nqVnEU5khi6EEGHEaTHh97padI3X\nbcdt/yGz3GeffUafPn346U9/CkDHjh159NFHeeGFF+pdp9PpGDFiBE899RTPPPMMUJuOdejQoU0m\ngRHhS/7GhBAijPjcNa267tRb9Dk5OfTtW39LW//+/cnJyWn02gEDBpCbm9uqfkX4kIAuhBBhRB8V\n36rrDFE/bF/r2LEjZWVl9V4vLS2lY8eOjV5bUlJCp06dWtWvCB8S0IUQIoxExnZEG9GycqC6yJjg\n83OAa665hm3btnHy5EmgtuzoypUrufHGGxtca7PZePzxx7npppvaNnDR7iSgCyFEGDFEJ2Js4b7y\n6OTu6CJjgj8nJiayZs0abrjhBm688UYyMjK44oor6gXtGTNmMHr0aCZOnMi4ceO44447ANiyZQuj\nR48mNzeXadOm8eyzz56bNybOO0ksI4QQYcbndpC94x08juqznquPTqTv6LmoNbpGXzeZTCQmJqLV\nyqamC50EdCGECEMeexW5ez7E42i6LrohOpGeI25E18Jb9OLCJAFdCCHClN/roiTrS6qriin1+rBo\n9CQEPHTUaEjo0IPUQWNRqWXmLWrJvwQhhAhTGl0En3ccwleGNGr8frwo6FARrdEyMTGJmyWYi1PI\nDF0IIcKQze9nafYRCl0u/I28rlWp6BkRydO9+6OXJDACWeUuhBBhxxUIcN+JI5xsIpgD+BSF404H\ni04cCunYziQQCGC320Per6Io7dJvuJGALoQQYealonyK3M1L/1rs9rC6pLDeMYvFwqhRoxg7dixT\n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\ngiCctP8HNOOqtaNa4PkAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"phylum_color = ['lightsteelblue', \n",
" 'moccasin',\n",
" 'darkseagreen',\n",
" 'khaki',\n",
" 'mediumturquoise',\n",
" 'lightblue',\n",
" 'thistle',\n",
" 'tan',\n",
" 'mistyrose',\n",
" ]\n",
"\n",
"img = deepbiome.deepbiome_draw_phylogenetic_tree(log, network_info, path_info, num_classes=1,\n",
" file_name='%%inline', img_w=500, branch_vertical_margin=20, \n",
" arc_start=0, arc_span=360, \n",
" node_name_on=False, name_fsize=10, \n",
" tree_weight_on=True, tree_weight=trained_weight_list, \n",
" tree_level_list = ['Genus', 'Family', 'Order', 'Class', 'Phylum', 'Disease'],\n",
" weight_opacity=0.8, weight_max_radios=10, \n",
" phylum_background_color_on=True, phylum_color=phylum_color, phylum_color_legend=True,\n",
" verbose=False)\n",
"img"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can show the name of each leaf node in the phylogenetic tree by turn on the `node_name_on` option."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nvUkByeNTVQAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"img = deepbiome.deepbiome_draw_phylogenetic_tree(log, network_info, path_info, num_classes=1,\n",
" file_name='%%inline', img_w=500,\n",
" branch_vertical_margin=20, arc_start=0, arc_span=360,\n",
" node_name_on=True, name_fsize=20, \n",
" tree_weight_on=True, tree_weight=trained_weight_list,\n",
" tree_level_list = ['Genus', 'Family', 'Order', 'Class', 'Phylum', 'Disease'],\n",
" weight_opacity=0.8, weight_max_radios=20, \n",
" phylum_background_color_on=True, phylum_color=phylum_color, phylum_color_legend=True, \n",
" verbose=False)\n",
"img"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we want to save the figure as `png` or `jpg`, we can change `file_name` option."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"img = deepbiome.deepbiome_draw_phylogenetic_tree(log, network_info, path_info, num_classes=1,\n",
" file_name='tree.png', img_w=500,\n",
" branch_vertical_margin=20, arc_start=0, arc_span=360,\n",
" node_name_on=True, name_fsize=20, \n",
" tree_weight_on=True, tree_weight=trained_weight_list,\n",
" tree_level_list = ['Genus', 'Family', 'Order', 'Class', 'Phylum', 'Disease'],\n",
" weight_opacity=0.8, weight_max_radios=20, \n",
" phylum_background_color_on=True, phylum_color=phylum_color, phylum_color_legend=True, \n",
" verbose=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can check that the tree image saved in `tree.png`."
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAvgXrYyaAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"img = plt.imread('tree.png')\n",
"plt.imshow(img)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 11. Using covariates\n",
"\n",
"We can use covariates for training the DeepBiome network."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below is an example of the input files for the continuous covariates."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ages | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 59.000 | \n",
"
\n",
" \n",
" 1 | \n",
" 45.000 | \n",
"
\n",
" \n",
" 2 | \n",
" 42.000 | \n",
"
\n",
" \n",
" 3 | \n",
" 50.000 | \n",
"
\n",
" \n",
" 4 | \n",
" 69.000 | \n",
"
\n",
" \n",
" 5 | \n",
" 37.000 | \n",
"
\n",
" \n",
" 6 | \n",
" 66.000 | \n",
"
\n",
" \n",
" 7 | \n",
" 75.000 | \n",
"
\n",
" \n",
" 8 | \n",
" 32.000 | \n",
"
\n",
" \n",
" 9 | \n",
" 72.000 | \n",
"
\n",
" \n",
" 10 | \n",
" 65.000 | \n",
"
\n",
" \n",
" 11 | \n",
" 58.000 | \n",
"
\n",
" \n",
" 12 | \n",
" 41.000 | \n",
"
\n",
" \n",
" 13 | \n",
" 49.000 | \n",
"
\n",
" \n",
" 14 | \n",
" 49.000 | \n",
"
\n",
" \n",
" 15 | \n",
" 70.000 | \n",
"
\n",
" \n",
" 16 | \n",
" 64.000 | \n",
"
\n",
" \n",
" 17 | \n",
" 33.000 | \n",
"
\n",
" \n",
" 18 | \n",
" 74.000 | \n",
"
\n",
" \n",
" 19 | \n",
" 56.000 | \n",
"
\n",
" \n",
" 20 | \n",
" 37.000 | \n",
"
\n",
" \n",
" 21 | \n",
" 38.000 | \n",
"
\n",
" \n",
" 22 | \n",
" 51.000 | \n",
"
\n",
" \n",
" 23 | \n",
" 34.000 | \n",
"
\n",
" \n",
" 24 | \n",
" 46.000 | \n",
"
\n",
" \n",
" 25 | \n",
" 44.000 | \n",
"
\n",
" \n",
" 26 | \n",
" 60.000 | \n",
"
\n",
" \n",
" 27 | \n",
" 46.000 | \n",
"
\n",
" \n",
" 28 | \n",
" 37.000 | \n",
"
\n",
" \n",
" 29 | \n",
" 58.000 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 970 | \n",
" 38.000 | \n",
"
\n",
" \n",
" 971 | \n",
" 78.000 | \n",
"
\n",
" \n",
" 972 | \n",
" 32.000 | \n",
"
\n",
" \n",
" 973 | \n",
" 62.000 | \n",
"
\n",
" \n",
" 974 | \n",
" 47.000 | \n",
"
\n",
" \n",
" 975 | \n",
" 47.000 | \n",
"
\n",
" \n",
" 976 | \n",
" 65.000 | \n",
"
\n",
" \n",
" 977 | \n",
" 68.000 | \n",
"
\n",
" \n",
" 978 | \n",
" 45.000 | \n",
"
\n",
" \n",
" 979 | \n",
" 43.000 | \n",
"
\n",
" \n",
" 980 | \n",
" 31.000 | \n",
"
\n",
" \n",
" 981 | \n",
" 45.000 | \n",
"
\n",
" \n",
" 982 | \n",
" 64.000 | \n",
"
\n",
" \n",
" 983 | \n",
" 36.000 | \n",
"
\n",
" \n",
" 984 | \n",
" 36.000 | \n",
"
\n",
" \n",
" 985 | \n",
" 59.000 | \n",
"
\n",
" \n",
" 986 | \n",
" 78.000 | \n",
"
\n",
" \n",
" 987 | \n",
" 49.000 | \n",
"
\n",
" \n",
" 988 | \n",
" 33.000 | \n",
"
\n",
" \n",
" 989 | \n",
" 60.000 | \n",
"
\n",
" \n",
" 990 | \n",
" 48.000 | \n",
"
\n",
" \n",
" 991 | \n",
" 75.000 | \n",
"
\n",
" \n",
" 992 | \n",
" 38.000 | \n",
"
\n",
" \n",
" 993 | \n",
" 39.000 | \n",
"
\n",
" \n",
" 994 | \n",
" 49.000 | \n",
"
\n",
" \n",
" 995 | \n",
" 71.000 | \n",
"
\n",
" \n",
" 996 | \n",
" 34.000 | \n",
"
\n",
" \n",
" 997 | \n",
" 48.000 | \n",
"
\n",
" \n",
" 998 | \n",
" 38.000 | \n",
"
\n",
" \n",
" 999 | \n",
" 52.000 | \n",
"
\n",
" \n",
"
\n",
"
1000 rows × 1 columns
\n",
"
"
],
"text/plain": [
" ages\n",
"0 59.000\n",
"1 45.000\n",
"2 42.000\n",
"3 50.000\n",
"4 69.000\n",
"5 37.000\n",
"6 66.000\n",
"7 75.000\n",
"8 32.000\n",
"9 72.000\n",
"10 65.000\n",
"11 58.000\n",
"12 41.000\n",
"13 49.000\n",
"14 49.000\n",
"15 70.000\n",
"16 64.000\n",
"17 33.000\n",
"18 74.000\n",
"19 56.000\n",
"20 37.000\n",
"21 38.000\n",
"22 51.000\n",
"23 34.000\n",
"24 46.000\n",
"25 44.000\n",
"26 60.000\n",
"27 46.000\n",
"28 37.000\n",
"29 58.000\n",
".. ...\n",
"970 38.000\n",
"971 78.000\n",
"972 32.000\n",
"973 62.000\n",
"974 47.000\n",
"975 47.000\n",
"976 65.000\n",
"977 68.000\n",
"978 45.000\n",
"979 43.000\n",
"980 31.000\n",
"981 45.000\n",
"982 64.000\n",
"983 36.000\n",
"984 36.000\n",
"985 59.000\n",
"986 78.000\n",
"987 49.000\n",
"988 33.000\n",
"989 60.000\n",
"990 48.000\n",
"991 75.000\n",
"992 38.000\n",
"993 39.000\n",
"994 49.000\n",
"995 71.000\n",
"996 34.000\n",
"997 48.000\n",
"998 38.000\n",
"999 52.000\n",
"\n",
"[1000 rows x 1 columns]"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv(resource_filename('deepbiome', 'tests/data/ages.csv'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below is an example of the input files for the categorical covariates. We assume that the file contains all of the catetogories for one-hot encoding."
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" 1 | \n",
"
\n",
" \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" 6 | \n",
" 1 | \n",
"
\n",
" \n",
" 7 | \n",
" 1 | \n",
"
\n",
" \n",
" 8 | \n",
" 0 | \n",
"
\n",
" \n",
" 9 | \n",
" 0 | \n",
"
\n",
" \n",
" 10 | \n",
" 0 | \n",
"
\n",
" \n",
" 11 | \n",
" 1 | \n",
"
\n",
" \n",
" 12 | \n",
" 0 | \n",
"
\n",
" \n",
" 13 | \n",
" 1 | \n",
"
\n",
" \n",
" 14 | \n",
" 1 | \n",
"
\n",
" \n",
" 15 | \n",
" 1 | \n",
"
\n",
" \n",
" 16 | \n",
" 0 | \n",
"
\n",
" \n",
" 17 | \n",
" 0 | \n",
"
\n",
" \n",
" 18 | \n",
" 1 | \n",
"
\n",
" \n",
" 19 | \n",
" 1 | \n",
"
\n",
" \n",
" 20 | \n",
" 0 | \n",
"
\n",
" \n",
" 21 | \n",
" 0 | \n",
"
\n",
" \n",
" 22 | \n",
" 1 | \n",
"
\n",
" \n",
" 23 | \n",
" 0 | \n",
"
\n",
" \n",
" 24 | \n",
" 1 | \n",
"
\n",
" \n",
" 25 | \n",
" 0 | \n",
"
\n",
" \n",
" 26 | \n",
" 0 | \n",
"
\n",
" \n",
" 27 | \n",
" 0 | \n",
"
\n",
" \n",
" 28 | \n",
" 1 | \n",
"
\n",
" \n",
" 29 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 970 | \n",
" 1 | \n",
"
\n",
" \n",
" 971 | \n",
" 1 | \n",
"
\n",
" \n",
" 972 | \n",
" 0 | \n",
"
\n",
" \n",
" 973 | \n",
" 1 | \n",
"
\n",
" \n",
" 974 | \n",
" 0 | \n",
"
\n",
" \n",
" 975 | \n",
" 1 | \n",
"
\n",
" \n",
" 976 | \n",
" 0 | \n",
"
\n",
" \n",
" 977 | \n",
" 1 | \n",
"
\n",
" \n",
" 978 | \n",
" 1 | \n",
"
\n",
" \n",
" 979 | \n",
" 1 | \n",
"
\n",
" \n",
" 980 | \n",
" 1 | \n",
"
\n",
" \n",
" 981 | \n",
" 1 | \n",
"
\n",
" \n",
" 982 | \n",
" 0 | \n",
"
\n",
" \n",
" 983 | \n",
" 0 | \n",
"
\n",
" \n",
" 984 | \n",
" 0 | \n",
"
\n",
" \n",
" 985 | \n",
" 1 | \n",
"
\n",
" \n",
" 986 | \n",
" 0 | \n",
"
\n",
" \n",
" 987 | \n",
" 0 | \n",
"
\n",
" \n",
" 988 | \n",
" 1 | \n",
"
\n",
" \n",
" 989 | \n",
" 0 | \n",
"
\n",
" \n",
" 990 | \n",
" 0 | \n",
"
\n",
" \n",
" 991 | \n",
" 1 | \n",
"
\n",
" \n",
" 992 | \n",
" 1 | \n",
"
\n",
" \n",
" 993 | \n",
" 1 | \n",
"
\n",
" \n",
" 994 | \n",
" 0 | \n",
"
\n",
" \n",
" 995 | \n",
" 0 | \n",
"
\n",
" \n",
" 996 | \n",
" 0 | \n",
"
\n",
" \n",
" 997 | \n",
" 1 | \n",
"
\n",
" \n",
" 998 | \n",
" 0 | \n",
"
\n",
" \n",
" 999 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
1000 rows × 1 columns
\n",
"
"
],
"text/plain": [
" gender\n",
"0 1\n",
"1 0\n",
"2 1\n",
"3 1\n",
"4 1\n",
"5 0\n",
"6 1\n",
"7 1\n",
"8 0\n",
"9 0\n",
"10 0\n",
"11 1\n",
"12 0\n",
"13 1\n",
"14 1\n",
"15 1\n",
"16 0\n",
"17 0\n",
"18 1\n",
"19 1\n",
"20 0\n",
"21 0\n",
"22 1\n",
"23 0\n",
"24 1\n",
"25 0\n",
"26 0\n",
"27 0\n",
"28 1\n",
"29 1\n",
".. ...\n",
"970 1\n",
"971 1\n",
"972 0\n",
"973 1\n",
"974 0\n",
"975 1\n",
"976 0\n",
"977 1\n",
"978 1\n",
"979 1\n",
"980 1\n",
"981 1\n",
"982 0\n",
"983 0\n",
"984 0\n",
"985 1\n",
"986 0\n",
"987 0\n",
"988 1\n",
"989 0\n",
"990 0\n",
"991 1\n",
"992 1\n",
"993 1\n",
"994 0\n",
"995 0\n",
"996 0\n",
"997 1\n",
"998 0\n",
"999 1\n",
"\n",
"[1000 rows x 1 columns]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv(resource_filename('deepbiome', 'tests/data/gender.csv'))"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ethnicity | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
"
\n",
" \n",
" 4 | \n",
" 4 | \n",
"
\n",
" \n",
" 5 | \n",
" 2 | \n",
"
\n",
" \n",
" 6 | \n",
" 3 | \n",
"
\n",
" \n",
" 7 | \n",
" 0 | \n",
"
\n",
" \n",
" 8 | \n",
" 2 | \n",
"
\n",
" \n",
" 9 | \n",
" 5 | \n",
"
\n",
" \n",
" 10 | \n",
" 2 | \n",
"
\n",
" \n",
" 11 | \n",
" 3 | \n",
"
\n",
" \n",
" 12 | \n",
" 5 | \n",
"
\n",
" \n",
" 13 | \n",
" 3 | \n",
"
\n",
" \n",
" 14 | \n",
" 0 | \n",
"
\n",
" \n",
" 15 | \n",
" 0 | \n",
"
\n",
" \n",
" 16 | \n",
" 4 | \n",
"
\n",
" \n",
" 17 | \n",
" 5 | \n",
"
\n",
" \n",
" 18 | \n",
" 1 | \n",
"
\n",
" \n",
" 19 | \n",
" 1 | \n",
"
\n",
" \n",
" 20 | \n",
" 4 | \n",
"
\n",
" \n",
" 21 | \n",
" 4 | \n",
"
\n",
" \n",
" 22 | \n",
" 1 | \n",
"
\n",
" \n",
" 23 | \n",
" 0 | \n",
"
\n",
" \n",
" 24 | \n",
" 1 | \n",
"
\n",
" \n",
" 25 | \n",
" 3 | \n",
"
\n",
" \n",
" 26 | \n",
" 1 | \n",
"
\n",
" \n",
" 27 | \n",
" 4 | \n",
"
\n",
" \n",
" 28 | \n",
" 4 | \n",
"
\n",
" \n",
" 29 | \n",
" 3 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 970 | \n",
" 1 | \n",
"
\n",
" \n",
" 971 | \n",
" 0 | \n",
"
\n",
" \n",
" 972 | \n",
" 0 | \n",
"
\n",
" \n",
" 973 | \n",
" 5 | \n",
"
\n",
" \n",
" 974 | \n",
" 3 | \n",
"
\n",
" \n",
" 975 | \n",
" 2 | \n",
"
\n",
" \n",
" 976 | \n",
" 1 | \n",
"
\n",
" \n",
" 977 | \n",
" 5 | \n",
"
\n",
" \n",
" 978 | \n",
" 4 | \n",
"
\n",
" \n",
" 979 | \n",
" 1 | \n",
"
\n",
" \n",
" 980 | \n",
" 0 | \n",
"
\n",
" \n",
" 981 | \n",
" 3 | \n",
"
\n",
" \n",
" 982 | \n",
" 3 | \n",
"
\n",
" \n",
" 983 | \n",
" 5 | \n",
"
\n",
" \n",
" 984 | \n",
" 5 | \n",
"
\n",
" \n",
" 985 | \n",
" 5 | \n",
"
\n",
" \n",
" 986 | \n",
" 3 | \n",
"
\n",
" \n",
" 987 | \n",
" 1 | \n",
"
\n",
" \n",
" 988 | \n",
" 2 | \n",
"
\n",
" \n",
" 989 | \n",
" 2 | \n",
"
\n",
" \n",
" 990 | \n",
" 0 | \n",
"
\n",
" \n",
" 991 | \n",
" 5 | \n",
"
\n",
" \n",
" 992 | \n",
" 3 | \n",
"
\n",
" \n",
" 993 | \n",
" 5 | \n",
"
\n",
" \n",
" 994 | \n",
" 5 | \n",
"
\n",
" \n",
" 995 | \n",
" 2 | \n",
"
\n",
" \n",
" 996 | \n",
" 2 | \n",
"
\n",
" \n",
" 997 | \n",
" 1 | \n",
"
\n",
" \n",
" 998 | \n",
" 0 | \n",
"
\n",
" \n",
" 999 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
1000 rows × 1 columns
\n",
"
"
],
"text/plain": [
" ethnicity\n",
"0 4\n",
"1 0\n",
"2 0\n",
"3 4\n",
"4 4\n",
"5 2\n",
"6 3\n",
"7 0\n",
"8 2\n",
"9 5\n",
"10 2\n",
"11 3\n",
"12 5\n",
"13 3\n",
"14 0\n",
"15 0\n",
"16 4\n",
"17 5\n",
"18 1\n",
"19 1\n",
"20 4\n",
"21 4\n",
"22 1\n",
"23 0\n",
"24 1\n",
"25 3\n",
"26 1\n",
"27 4\n",
"28 4\n",
"29 3\n",
".. ...\n",
"970 1\n",
"971 0\n",
"972 0\n",
"973 5\n",
"974 3\n",
"975 2\n",
"976 1\n",
"977 5\n",
"978 4\n",
"979 1\n",
"980 0\n",
"981 3\n",
"982 3\n",
"983 5\n",
"984 5\n",
"985 5\n",
"986 3\n",
"987 1\n",
"988 2\n",
"989 2\n",
"990 0\n",
"991 5\n",
"992 3\n",
"993 5\n",
"994 5\n",
"995 2\n",
"996 2\n",
"997 1\n",
"998 0\n",
"999 0\n",
"\n",
"[1000 rows x 1 columns]"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv(resource_filename('deepbiome', 'tests/data/ethnicity.csv'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For using the covariates, we have to set the `covariates_info` field in the configuration for the path informations. If we don't specify the `covariates_info`, than the DeepBiome will train the model without any covariates."
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"network_info_with_covariates = {\n",
" 'architecture_info': {\n",
" 'batch_normalization': 'False',\n",
" 'drop_out': '0',\n",
" 'weight_initial': 'glorot_uniform',\n",
" 'weight_l1_penalty':'0.',\n",
" 'weight_decay': 'phylogenetic_tree',\n",
" },\n",
" 'model_info': {\n",
" 'lr': '0.01',\n",
" 'decay': '0.001',\n",
" 'loss': 'binary_crossentropy',\n",
" 'metrics': 'binary_accuracy, sensitivity, specificity, gmeasure',\n",
" 'taxa_selection_metrics': 'sensitivity, specificity, gmeasure, accuracy',\n",
" 'network_class': 'DeepBiomeNetwork',\n",
" 'optimizer': 'adam',\n",
" 'reader_class': 'MicroBiomeClassificationReader',\n",
" 'normalizer': 'normalize_minmax',\n",
" },\n",
" 'training_info': {\n",
" 'epochs': '10',\n",
" 'batch_size': '50', \n",
" 'callbacks': 'ModelCheckpoint',\n",
" 'monitor': 'val_loss',\n",
" 'mode' : 'min',\n",
" 'min_delta': '1e-7',\n",
" },\n",
" 'validation_info': {\n",
" 'batch_size': 'None', \n",
" 'validation_size': '0.2'\n",
" },\n",
" 'test_info': {\n",
" 'batch_size': 'None'\n",
" }\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"path_info_with_covariates = {\n",
" 'data_info': {\n",
" 'data_path': resource_filename('deepbiome', 'tests/data'),\n",
" 'idx_path': resource_filename('deepbiome', 'tests/data/onefile_idx.csv'),\n",
" 'tree_info_path': resource_filename('deepbiome', 'tests/data/genus48_dic.csv'),\n",
" 'x_path': 'onefile_x.csv',\n",
" 'y_path': 'classification_y.csv'\n",
" },\n",
" 'model_info': {\n",
" 'evaluation': 'eval.npy',\n",
" 'history': 'hist.json',\n",
" 'model_dir': './example_result/',\n",
" 'weight': 'weight.h5'\n",
" },\n",
" 'covariates_info':{\n",
" 'continuous_variables':','.join([resource_filename('deepbiome', 'tests/data/ages.csv'),\n",
" resource_filename('deepbiome', 'tests/data/weights.csv')]),\n",
" 'categorical_variables':','.join([resource_filename('deepbiome', 'tests/data/gender.csv'),\n",
" resource_filename('deepbiome', 'tests/data/ethnicity.csv')]),\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the same `deepbiome_train` function when we train the network with covariates."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|deepbiome.py:115] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------1 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 1 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:543] Phylum_with_covariates: 17\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum_with_covariates', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_4\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"__________________________________________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 input[0][0] \n",
"__________________________________________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 l1_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 l1_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 l2_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 l2_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 l3_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 l3_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 l4_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"covariates_input (InputLayer) (None, 8) 0 \n",
"__________________________________________________________________________________________________\n",
"biome_covariates_concat (Concat (None, 17) 0 l4_activation[0][0] \n",
" covariates_input[0][0] \n",
"__________________________________________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 18 biome_covariates_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 last_dense_h[0][0] \n",
"==================================================================================================\n",
"Total params: 3,491\n",
"Trainable params: 3,491\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 1 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 1ms/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 101us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 101us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 105us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 130us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 123us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 120us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 120us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 114us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 103us/step - loss: 11.0308 - binary_accuracy: 0.3156 - sensitivity: 0.0000e+00 - specificity: 1.0000 - gmeasure: 0.0000e+00 - val_loss: 11.1819 - val_binary_accuracy: 0.3063 - val_sensitivity: 0.0000e+00 - val_specificity: 1.0000 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_0.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 3.0836904048919678!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_0.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_0.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_0.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.010069608688354492!\n",
"[root |INFO|build_network.py:179] Evaluation: [11.061043739318848, 0.3137499988079071, 0.0, 1.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 11us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008058786392211914!\n",
"[root |INFO|build_network.py:179] Evaluation: [11.121485710144043, 0.3100000023841858, 0.0, 1.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.6023569107055664\n",
"[root |INFO|deepbiome.py:200] 1 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------2 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 2 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:543] Phylum_with_covariates: 17\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum_with_covariates', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"__________________________________________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 input[0][0] \n",
"__________________________________________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 l1_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 l1_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 l2_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 l2_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 l3_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 l3_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 l4_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"covariates_input (InputLayer) (None, 8) 0 \n",
"__________________________________________________________________________________________________\n",
"biome_covariates_concat (Concat (None, 17) 0 l4_activation[0][0] \n",
" covariates_input[0][0] \n",
"__________________________________________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 18 biome_covariates_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 last_dense_h[0][0] \n",
"==================================================================================================\n",
"Total params: 3,491\n",
"Trainable params: 3,491\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 2 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 782us/step - loss: 2.5421 - binary_accuracy: 0.5859 - sensitivity: 0.7057 - specificity: 0.2490 - gmeasure: 0.3932 - val_loss: 1.6270 - val_binary_accuracy: 0.6250 - val_sensitivity: 0.7962 - val_specificity: 0.2233 - val_gmeasure: 0.4150\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 116us/step - loss: 1.9945 - binary_accuracy: 0.5688 - sensitivity: 0.6823 - specificity: 0.2938 - gmeasure: 0.4414 - val_loss: 1.2290 - val_binary_accuracy: 0.6062 - val_sensitivity: 0.7127 - val_specificity: 0.3178 - val_gmeasure: 0.4747\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 115us/step - loss: 1.4228 - binary_accuracy: 0.5906 - sensitivity: 0.7194 - specificity: 0.2600 - gmeasure: 0.4167 - val_loss: 0.8595 - val_binary_accuracy: 0.6438 - val_sensitivity: 0.8164 - val_specificity: 0.2233 - val_gmeasure: 0.4195\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 110us/step - loss: 0.9308 - binary_accuracy: 0.5922 - sensitivity: 0.7519 - specificity: 0.1935 - gmeasure: 0.3590 - val_loss: 0.6228 - val_binary_accuracy: 0.6938 - val_sensitivity: 0.8991 - val_specificity: 0.2233 - val_gmeasure: 0.4411\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 110us/step - loss: 0.6570 - binary_accuracy: 0.6703 - sensitivity: 0.9030 - specificity: 0.1052 - gmeasure: 0.1911 - val_loss: 0.6004 - val_binary_accuracy: 0.7188 - val_sensitivity: 0.9793 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 112us/step - loss: 0.6270 - binary_accuracy: 0.7031 - sensitivity: 0.9651 - specificity: 0.0457 - gmeasure: 0.1232 - val_loss: 0.6574 - val_binary_accuracy: 0.6000 - val_sensitivity: 0.7574 - val_specificity: 0.1707 - val_gmeasure: 0.3037\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 114us/step - loss: 0.6275 - binary_accuracy: 0.6844 - sensitivity: 0.9296 - specificity: 0.0619 - gmeasure: 0.1349 - val_loss: 0.6251 - val_binary_accuracy: 0.7188 - val_sensitivity: 0.9512 - val_specificity: 0.1480 - val_gmeasure: 0.3174\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 120us/step - loss: 0.6198 - binary_accuracy: 0.7078 - sensitivity: 0.9500 - specificity: 0.0928 - gmeasure: 0.1620 - val_loss: 0.5917 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 113us/step - loss: 0.6121 - binary_accuracy: 0.7094 - sensitivity: 0.9925 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5936 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 118us/step - loss: 0.6053 - binary_accuracy: 0.7156 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.5944 - val_binary_accuracy: 0.7375 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_1.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.6916720867156982!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_1.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_1.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_1.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.008504152297973633!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6034644246101379, 0.7200000286102295, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 9us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.007249355316162109!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6046146154403687, 0.7200000286102295, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.215890407562256\n",
"[root |INFO|deepbiome.py:200] 2 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------3 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 3 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:543] Phylum_with_covariates: 17\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum_with_covariates', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"__________________________________________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 input[0][0] \n",
"__________________________________________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 l1_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 l1_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 l2_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 l2_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 l3_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 l3_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 l4_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"covariates_input (InputLayer) (None, 8) 0 \n",
"__________________________________________________________________________________________________\n",
"biome_covariates_concat (Concat (None, 17) 0 l4_activation[0][0] \n",
" covariates_input[0][0] \n",
"__________________________________________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 18 biome_covariates_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 last_dense_h[0][0] \n",
"==================================================================================================\n",
"Total params: 3,491\n",
"Trainable params: 3,491\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 3 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 0s 698us/step - loss: 4.9752 - binary_accuracy: 0.3828 - sensitivity: 0.2109 - specificity: 0.8032 - gmeasure: 0.2862 - val_loss: 1.6229 - val_binary_accuracy: 0.5813 - val_sensitivity: 0.6279 - val_specificity: 0.3807 - val_gmeasure: 0.4665\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 105us/step - loss: 1.8461 - binary_accuracy: 0.6562 - sensitivity: 0.8684 - specificity: 0.1641 - gmeasure: 0.3599 - val_loss: 1.8489 - val_binary_accuracy: 0.6812 - val_sensitivity: 0.9384 - val_specificity: 0.1234 - val_gmeasure: 0.2155\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 96us/step - loss: 1.6691 - binary_accuracy: 0.6375 - sensitivity: 0.8160 - specificity: 0.2189 - gmeasure: 0.3934 - val_loss: 1.4692 - val_binary_accuracy: 0.5625 - val_sensitivity: 0.6009 - val_specificity: 0.4016 - val_gmeasure: 0.4711\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 116us/step - loss: 1.4963 - binary_accuracy: 0.5781 - sensitivity: 0.6485 - specificity: 0.4319 - gmeasure: 0.5228 - val_loss: 1.2639 - val_binary_accuracy: 0.6375 - val_sensitivity: 0.7273 - val_specificity: 0.2557 - val_gmeasure: 0.3777\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 104us/step - loss: 1.2753 - binary_accuracy: 0.6313 - sensitivity: 0.8003 - specificity: 0.2395 - gmeasure: 0.4309 - val_loss: 1.0925 - val_binary_accuracy: 0.6438 - val_sensitivity: 0.7585 - val_specificity: 0.2557 - val_gmeasure: 0.3777\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 88us/step - loss: 1.0665 - binary_accuracy: 0.6187 - sensitivity: 0.7677 - specificity: 0.2748 - gmeasure: 0.4283 - val_loss: 0.9395 - val_binary_accuracy: 0.6187 - val_sensitivity: 0.6985 - val_specificity: 0.3807 - val_gmeasure: 0.4942\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 94us/step - loss: 0.9074 - binary_accuracy: 0.6094 - sensitivity: 0.7371 - specificity: 0.3136 - gmeasure: 0.4668 - val_loss: 0.7888 - val_binary_accuracy: 0.6812 - val_sensitivity: 0.9099 - val_specificity: 0.1799 - val_gmeasure: 0.3147\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 113us/step - loss: 0.7632 - binary_accuracy: 0.6391 - sensitivity: 0.8310 - specificity: 0.1965 - gmeasure: 0.3900 - val_loss: 0.7070 - val_binary_accuracy: 0.6187 - val_sensitivity: 0.6813 - val_specificity: 0.4135 - val_gmeasure: 0.5097\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 112us/step - loss: 0.6805 - binary_accuracy: 0.6531 - sensitivity: 0.8495 - specificity: 0.2153 - gmeasure: 0.4098 - val_loss: 0.6269 - val_binary_accuracy: 0.6750 - val_sensitivity: 0.8896 - val_specificity: 0.2022 - val_gmeasure: 0.3508\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 121us/step - loss: 0.6260 - binary_accuracy: 0.6938 - sensitivity: 0.9586 - specificity: 0.0907 - gmeasure: 0.2173 - val_loss: 0.6025 - val_binary_accuracy: 0.7063 - val_sensitivity: 0.9782 - val_specificity: 0.0655 - val_gmeasure: 0.1751\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_2.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.9351305961608887!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_2.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_2.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_2.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 3us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.0087738037109375!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6114577054977417, 0.6949999928474426, 0.9731183052062988, 0.05371900647878647, 0.22863715887069702]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 41us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.014694690704345703!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6872313022613525, 0.6100000143051147, 0.9312977194786072, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.4203402996063232\n",
"[root |INFO|deepbiome.py:200] 3 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------4 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 4 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:543] Phylum_with_covariates: 17\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum_with_covariates', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"__________________________________________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 input[0][0] \n",
"__________________________________________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 l1_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 l1_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 l2_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 l2_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 l3_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 l3_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 l4_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"covariates_input (InputLayer) (None, 8) 0 \n",
"__________________________________________________________________________________________________\n",
"biome_covariates_concat (Concat (None, 17) 0 l4_activation[0][0] \n",
" covariates_input[0][0] \n",
"__________________________________________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 18 biome_covariates_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 last_dense_h[0][0] \n",
"==================================================================================================\n",
"Total params: 3,491\n",
"Trainable params: 3,491\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 4 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 1s 785us/step - loss: 0.8356 - binary_accuracy: 0.5906 - sensitivity: 0.7687 - specificity: 0.2441 - gmeasure: 0.3609 - val_loss: 0.6479 - val_binary_accuracy: 0.6875 - val_sensitivity: 0.9545 - val_specificity: 0.0882 - val_gmeasure: 0.2000\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 377us/step - loss: 0.6636 - binary_accuracy: 0.6625 - sensitivity: 0.9362 - specificity: 0.0742 - gmeasure: 0.1698 - val_loss: 0.6219 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 436us/step - loss: 0.6364 - binary_accuracy: 0.6875 - sensitivity: 1.0000 - specificity: 0.0059 - gmeasure: 0.0213 - val_loss: 0.6247 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 115us/step - loss: 0.6366 - binary_accuracy: 0.6891 - sensitivity: 1.0000 - specificity: 0.0081 - gmeasure: 0.0250 - val_loss: 0.6417 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 204us/step - loss: 0.6337 - binary_accuracy: 0.6875 - sensitivity: 1.0000 - specificity: 0.0070 - gmeasure: 0.0232 - val_loss: 0.6225 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 440us/step - loss: 0.6337 - binary_accuracy: 0.6797 - sensitivity: 0.9909 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6272 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 298us/step - loss: 0.6380 - binary_accuracy: 0.6859 - sensitivity: 1.0000 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6209 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 103us/step - loss: 0.6307 - binary_accuracy: 0.6844 - sensitivity: 0.9978 - specificity: 0.0000e+00 - gmeasure: 0.0000e+00 - val_loss: 0.6168 - val_binary_accuracy: 0.6875 - val_sensitivity: 1.0000 - val_specificity: 0.0000e+00 - val_gmeasure: 0.0000e+00\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 95us/step - loss: 0.6273 - binary_accuracy: 0.6875 - sensitivity: 1.0000 - specificity: 0.0059 - gmeasure: 0.0213 - val_loss: 0.6196 - val_binary_accuracy: 0.6938 - val_sensitivity: 1.0000 - val_specificity: 0.0147 - val_gmeasure: 0.0606\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 96us/step - loss: 0.6246 - binary_accuracy: 0.6875 - sensitivity: 1.0000 - specificity: 0.0051 - gmeasure: 0.0199 - val_loss: 0.6234 - val_binary_accuracy: 0.6875 - val_sensitivity: 0.9934 - val_specificity: 0.0147 - val_gmeasure: 0.0606\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_3.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 3.7450311183929443!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_3.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_3.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_3.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 4us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.011616230010986328!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6179130673408508, 0.6862499713897705, 1.0, 0.0, 0.0]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 11us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.0076541900634765625!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6171166300773621, 0.6899999976158142, 1.0, 0.0, 0.0]\n",
"[root |INFO|deepbiome.py:199] Compute time : 4.296782732009888\n",
"[root |INFO|deepbiome.py:200] 4 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:153] -------5 simulation start!----------------------------------\n",
"[root |INFO|readers.py:58] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:59] Construct Dataset\n",
"[root |INFO|readers.py:60] -----------------------------------------------------------------------\n",
"[root |INFO|readers.py:61] Load data\n",
"[root |INFO|deepbiome.py:164] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:165] Build network for 5 simulation\n",
"[root |INFO|build_network.py:521] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:522] Read phylogenetic tree information from /DATA/home/muha/github_repos/deepbiome/deepbiome/tests/data/genus48_dic.csv\n",
"[root |INFO|build_network.py:528] Phylogenetic tree level list: ['Genus', 'Family', 'Order', 'Class', 'Phylum']\n",
"[root |INFO|build_network.py:529] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:537] Genus: 48\n",
"[root |INFO|build_network.py:537] Family: 40\n",
"[root |INFO|build_network.py:537] Order: 23\n",
"[root |INFO|build_network.py:537] Class: 17\n",
"[root |INFO|build_network.py:537] Phylum: 9\n",
"[root |INFO|build_network.py:543] Phylum_with_covariates: 17\n",
"[root |INFO|build_network.py:546] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:547] Phylogenetic_tree_dict info: ['Genus', 'Order', 'Class', 'Family', 'Phylum_with_covariates', 'Phylum', 'Number']\n",
"[root |INFO|build_network.py:548] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Genus, Family]\n",
"[root |INFO|build_network.py:558] Build edge weights between [Family, Order]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Order, Class]\n",
"[root |INFO|build_network.py:558] Build edge weights between [ Class, Phylum]\n",
"[root |INFO|build_network.py:571] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:586] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:587] Build network based on phylogenetic tree information\n",
"[root |INFO|build_network.py:588] ------------------------------------------------------------------------------------------\n",
"[root |INFO|build_network.py:670] ------------------------------------------------------------------------------------------\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"__________________________________________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 input[0][0] \n",
"__________________________________________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 l1_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 l1_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 l2_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 l2_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 l3_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 l3_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 l4_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"covariates_input (InputLayer) (None, 8) 0 \n",
"__________________________________________________________________________________________________\n",
"biome_covariates_concat (Concat (None, 17) 0 l4_activation[0][0] \n",
" covariates_input[0][0] \n",
"__________________________________________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 18 biome_covariates_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 last_dense_h[0][0] \n",
"==================================================================================================\n",
"Total params: 3,491\n",
"Trainable params: 3,491\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:61] Build Network\n",
"[root |INFO|build_network.py:62] Optimizer = adam\n",
"[root |INFO|build_network.py:63] Loss = binary_crossentropy\n",
"[root |INFO|build_network.py:64] Metrics = binary_accuracy, sensitivity, specificity, gmeasure\n",
"[root |INFO|deepbiome.py:176] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:177] 5 fold computing start!----------------------------------\n",
"[root |INFO|build_network.py:137] Training start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 640 samples, validate on 160 samples\n",
"Epoch 1/10\n",
"640/640 [==============================] - 0s 712us/step - loss: 2.8599 - binary_accuracy: 0.6828 - sensitivity: 0.9640 - specificity: 0.0585 - gmeasure: 0.1176 - val_loss: 1.2346 - val_binary_accuracy: 0.5437 - val_sensitivity: 0.6156 - val_specificity: 0.3758 - val_gmeasure: 0.4799\n",
"Epoch 2/10\n",
"640/640 [==============================] - 0s 127us/step - loss: 1.5378 - binary_accuracy: 0.4844 - sensitivity: 0.4592 - specificity: 0.5396 - gmeasure: 0.4676 - val_loss: 1.1423 - val_binary_accuracy: 0.6187 - val_sensitivity: 0.8014 - val_specificity: 0.2035 - val_gmeasure: 0.4001\n",
"Epoch 3/10\n",
"640/640 [==============================] - 0s 152us/step - loss: 1.2258 - binary_accuracy: 0.6359 - sensitivity: 0.8343 - specificity: 0.2156 - gmeasure: 0.4089 - val_loss: 0.9623 - val_binary_accuracy: 0.5938 - val_sensitivity: 0.7371 - val_specificity: 0.3243 - val_gmeasure: 0.4863\n",
"Epoch 4/10\n",
"640/640 [==============================] - 0s 140us/step - loss: 0.9657 - binary_accuracy: 0.5641 - sensitivity: 0.6153 - specificity: 0.4465 - gmeasure: 0.5166 - val_loss: 0.8278 - val_binary_accuracy: 0.6313 - val_sensitivity: 0.8227 - val_specificity: 0.1879 - val_gmeasure: 0.3905\n",
"Epoch 5/10\n",
"640/640 [==============================] - 0s 129us/step - loss: 0.8022 - binary_accuracy: 0.6297 - sensitivity: 0.8065 - specificity: 0.2489 - gmeasure: 0.4133 - val_loss: 0.7336 - val_binary_accuracy: 0.5500 - val_sensitivity: 0.6303 - val_specificity: 0.3555 - val_gmeasure: 0.4700\n",
"Epoch 6/10\n",
"640/640 [==============================] - 0s 142us/step - loss: 0.6674 - binary_accuracy: 0.6375 - sensitivity: 0.7970 - specificity: 0.2447 - gmeasure: 0.3655 - val_loss: 0.6640 - val_binary_accuracy: 0.7063 - val_sensitivity: 1.0000 - val_specificity: 0.0312 - val_gmeasure: 0.0884\n",
"Epoch 7/10\n",
"640/640 [==============================] - 0s 148us/step - loss: 0.6512 - binary_accuracy: 0.6578 - sensitivity: 0.8994 - specificity: 0.1401 - gmeasure: 0.2796 - val_loss: 0.6310 - val_binary_accuracy: 0.6625 - val_sensitivity: 0.9004 - val_specificity: 0.0469 - val_gmeasure: 0.1050\n",
"Epoch 8/10\n",
"640/640 [==============================] - 0s 130us/step - loss: 0.6343 - binary_accuracy: 0.6797 - sensitivity: 0.9750 - specificity: 0.0571 - gmeasure: 0.1793 - val_loss: 0.6247 - val_binary_accuracy: 0.6812 - val_sensitivity: 0.9216 - val_specificity: 0.0469 - val_gmeasure: 0.1066\n",
"Epoch 9/10\n",
"640/640 [==============================] - 0s 130us/step - loss: 0.6340 - binary_accuracy: 0.6719 - sensitivity: 0.9664 - specificity: 0.0424 - gmeasure: 0.1189 - val_loss: 0.6255 - val_binary_accuracy: 0.7000 - val_sensitivity: 0.9929 - val_specificity: 0.0312 - val_gmeasure: 0.0884\n",
"Epoch 10/10\n",
"640/640 [==============================] - 0s 132us/step - loss: 0.6359 - binary_accuracy: 0.6703 - sensitivity: 0.9687 - specificity: 0.0390 - gmeasure: 0.1287 - val_loss: 0.6267 - val_binary_accuracy: 0.6687 - val_sensitivity: 0.9071 - val_specificity: 0.0469 - val_gmeasure: 0.1050\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:87] Load trained model weight at ./example_result/weight_4.h5 \n",
"[root |INFO|build_network.py:147] Training end with time 2.841571569442749!\n",
"[root |INFO|build_network.py:83] Saved trained model weight at ./example_result/weight_4.h5 \n",
"[root |DEBUG|deepbiome.py:185] Save weight at ./example_result/weight_4.h5\n",
"[root |DEBUG|deepbiome.py:188] Save history at ./example_result/hist_4.json\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"800/800 [==============================] - 0s 9us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.0183563232421875!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6290234327316284, 0.6800000071525574, 0.9798534512519836, 0.035433072596788406, 0.18633092939853668]\n",
"[root |INFO|build_network.py:173] Evaluation start!\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\r",
"200/200 [==============================] - 0s 37us/step\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|build_network.py:178] Evaluation end with time 0.016957521438598633!\n",
"[root |INFO|build_network.py:179] Evaluation: [0.6027040481567383, 0.6949999928474426, 0.9716312289237976, 0.033898305147886276, 0.18148458003997803]\n",
"[root |INFO|deepbiome.py:199] Compute time : 3.4107158184051514\n",
"[root |INFO|deepbiome.py:200] 5 fold computing end!---------------------------------------------\n",
"[root |INFO|deepbiome.py:211] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:212] Train Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure']\n",
"[root |INFO|deepbiome.py:213] mean : [2.705 0.619 0.791 0.218 0.083]\n",
"[root |INFO|deepbiome.py:214] std : [4.178 0.153 0.395 0.392 0.103]\n",
"[root |INFO|deepbiome.py:215] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:216] Test Evaluation : ['loss' 'binary_accuracy' 'sensitivity' 'specificity' 'gmeasure']\n",
"[root |INFO|deepbiome.py:217] mean : [2.727 0.605 0.781 0.207 0.036]\n",
"[root |INFO|deepbiome.py:218] std : [4.198 0.152 0.391 0.397 0.073]\n",
"[root |INFO|deepbiome.py:219] -----------------------------------------------------------------\n",
"[root |INFO|deepbiome.py:230] Total Computing Ended\n",
"[root |INFO|deepbiome.py:231] -----------------------------------------------------------------\n"
]
}
],
"source": [
"test_evaluation_with_cov, train_evaluation_with_cov, network_with_cov = deepbiome.deepbiome_train(log, network_info_with_covariates, \n",
" path_info_with_covariates,\n",
" number_of_fold=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The DeepBiome used the covariates at the latest hidden layer just before the last prediction layer (`biome_covariates_concat` layer in the above example)."
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_1\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input (InputLayer) (None, 48) 0 \n",
"__________________________________________________________________________________________________\n",
"l1_dense (Dense_with_tree) (None, 40) 1960 input[0][0] \n",
"__________________________________________________________________________________________________\n",
"l1_activation (Activation) (None, 40) 0 l1_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_dense (Dense_with_tree) (None, 23) 943 l1_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l2_activation (Activation) (None, 23) 0 l2_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_dense (Dense_with_tree) (None, 17) 408 l2_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l3_activation (Activation) (None, 17) 0 l3_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_dense (Dense_with_tree) (None, 9) 162 l3_activation[0][0] \n",
"__________________________________________________________________________________________________\n",
"l4_activation (Activation) (None, 9) 0 l4_dense[0][0] \n",
"__________________________________________________________________________________________________\n",
"covariates_input (InputLayer) (None, 8) 0 \n",
"__________________________________________________________________________________________________\n",
"biome_covariates_concat (Concat (None, 17) 0 l4_activation[0][0] \n",
" covariates_input[0][0] \n",
"__________________________________________________________________________________________________\n",
"last_dense_h (Dense) (None, 1) 18 biome_covariates_concat[0][0] \n",
"__________________________________________________________________________________________________\n",
"p_hat (Activation) (None, 1) 0 last_dense_h[0][0] \n",
"==================================================================================================\n",
"Total params: 3,491\n",
"Trainable params: 3,491\n",
"Non-trainable params: 0\n",
"__________________________________________________________________________________________________\n"
]
}
],
"source": [
"network_with_cov.model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can analysis the effects of covariates by checking the trained weights of the last hidden layer."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[root |INFO|:4] 5\n"
]
}
],
"source": [
"weight_path = '%s/%s' % (prediction_path_info['model_info']['model_dir'], 'weight_0.h5')\n",
"trained_weight_list = deepbiome.deepbiome_get_trained_weight(log, network_info_with_covariates, path_info_with_covariates,\n",
" num_classes=1, weight_path=weight_path, verbose=False)\n",
"log.info(len(trained_weight_list))"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 0 | \n",
"
\n",
" \n",
" \n",
" \n",
" Firmicutes | \n",
" 0.566 | \n",
"
\n",
" \n",
" Actinobacteria | \n",
" 0.330 | \n",
"
\n",
" \n",
" Bacteroidetes | \n",
" -0.026 | \n",
"
\n",
" \n",
" Fusobacteria | \n",
" 0.107 | \n",
"
\n",
" \n",
" Proteobacteria | \n",
" 0.309 | \n",
"
\n",
" \n",
" TM7 | \n",
" 0.340 | \n",
"
\n",
" \n",
" Spirochaetes | \n",
" -0.235 | \n",
"
\n",
" \n",
" OD1 | \n",
" 0.142 | \n",
"
\n",
" \n",
" Cyanobacteria_Chloroplast | \n",
" -0.331 | \n",
"
\n",
" \n",
" Ages | \n",
" -0.398 | \n",
"
\n",
" \n",
" Weights | \n",
" -0.140 | \n",
"
\n",
" \n",
" Gender_1 | \n",
" 0.019 | \n",
"
\n",
" \n",
" Ethnicity_1 | \n",
" -0.114 | \n",
"
\n",
" \n",
" Ethnicity_2 | \n",
" -0.202 | \n",
"
\n",
" \n",
" Ethnicity_3 | \n",
" 0.487 | \n",
"
\n",
" \n",
" Ethnicity_4 | \n",
" 0.411 | \n",
"
\n",
" \n",
" Ethnicity_5 | \n",
" 0.691 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"Firmicutes 0.566\n",
"Actinobacteria 0.330\n",
"Bacteroidetes -0.026\n",
"Fusobacteria 0.107\n",
"Proteobacteria 0.309\n",
"TM7 0.340\n",
"Spirochaetes -0.235\n",
"OD1 0.142\n",
"Cyanobacteria_Chloroplast -0.331\n",
"Ages -0.398\n",
"Weights -0.140\n",
"Gender_1 0.019\n",
"Ethnicity_1 -0.114\n",
"Ethnicity_2 -0.202\n",
"Ethnicity_3 0.487\n",
"Ethnicity_4 0.411\n",
"Ethnicity_5 0.691"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trained_weight_list[4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below is the phylogenetic tree plot for the network using covariates."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAJ7CAYAAAAV2GMaAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAg\nAElEQVR4nOzdeXxU1fn48c/sM9l3EkDCHhYNi18QqVVbFK2oFaoiCP7UohYrS11YKiJbERVcCgUp\n1mqlRVyoIlVkqYJSISKyJaxhSyDbZJLJ7Pvvj0gkEMhkkkwWnvfrxUvu3HPvPXcQnpzlOUcRCAQC\nCCGEEE3I6/ViNBpJTU2ttWxeXh5XXHFFg9ehse4bLsqmroAQQogWzmMG23Fwl15waseOHXTv3h2f\nz1fjpfPmzQPAbreTlZUV1ONmz55dp+q98MILF33+ubZs2VKn+zY36qaugBBCiBbMUQCm3cCPnb2x\nPSCqc9XplStXMnHiRNavX8+wYcPYt28fy5cvx2AwMHbsWNauXYtarWbcuHGYTCY2b97Mtm3bKCsr\nY8iQIdx+++2888477Nu3j5iYGGbOnElpaSmzZ8+mrKyMBQsWcPz4cd59911KSkp49tlniYuLY86c\nOWg0Gu6++24++eQTAoEAo0aN4ocffuDbb79Fo9Ewd+5cXn/9dQA6duxIcXExAEuWLCE3N5f09HQm\nT54c7m80ZNJCF0IIETrrMaqCOYAlt+q3drsdm83Gb3/7W9asWQPA/PnzWbRoES+//DKZmZlkZmYy\nbdo0vF4vR48epaCggIyMDF599VU++ugjXC4XGzZsYOHCheh0OrKysrDZbMycOZNbb72V1atXk5GR\nwZAhQ+jTpw8rVqxg8eLFjB07lhdffJEBAwbQt29fpkyZQrt27fj73//OyJEjMRgMbNq0iZycHO69\n915GjBhBTk4OAHfeeSfXXnst69atw+l0hvPbrBcJ6EIIIepBcdHjDz/8kLKyMqZPn87+/fspLS3F\n7/ej0+l+Kq04/3po06YNACqVCpfLRWRkJABJSUmYzWbi4uJQKBQkJCRgNptZtGgRZrOZQYMGYTab\nMZvNJCcnX/AMl8uFx+PBaDQyYMAAMjMzAWjfvn1VWY/Hw1NPPUVmZiZpaWlYrdb6fT1hJAFdCCFE\n6KI7Uy2oR3ep+u3HH3/M6tWree2111i4cCErV65kxIgRTJo0iXnz5mGxWIiJiWHGjBl4vd4abx8T\nE0NERATz5s1j48aNXH/99ZSUlDBv3jxeeeUVRowYQWpqKps2beKjjz4C4Le//S3Tp0/npZdeYvfu\n3QwYMIApU6ZQWFjIgAEDyMrKYvv27TU+U6VSYbfbWbNmDUeOHGnQr6qxKWSWuxBCiHrxWsBtAnUs\naONqLe52u/F6vURERAT9CKvVSlRUVLV7KJVK1Gp1jef9fj8Wi4XY2NgL7mW321Eqlej1+hqf5fP5\ncLvdGAyGoOvXHEhAF0IIIVoB6XIXQgghWgEJ6EIIIerFhw8XLrxcOCZdWx66aDjS5S6EECJkHjzY\nsVcd69Gj46dZ7BMmTCAjI4NOnToxbNgwtm3bxvvvv0+bNm1IT0/njjvuYN68eXg8HkaMGEFGRgaz\nZs0iLi6OMWPG0KtXr6Z4rRZJWuhCCCFC5sJ10eOa8tCXLl3Ka6+9xqBBgzh+/DiLFy+mf//+3H//\n/SxevLhqAZknn3xSgnkdSUAXQgjRKGrKQ4fKvPDo6GgATCZTVW74hAkTGDJkCMOGDWP69Ol8+umn\nTVn9FkeWfhVCCBEyPXps2Kodn3U2D12r1fL111+zcuVKbr/9diZOnEggEKBdu3aMGzeOl156id69\ne5OQkIBWq2XLli0oFIqLppWJmskYuhBCiHrx48eHDyVKVKguWfbUqVP4fD7++c9/MnDgQIYOHUog\nEKhaAQ7AYrGg0WgkoNeRBHQhhBBhk5+fz/r16+natSs33nhjU1enVZGALoQQosU7fy9zk8mETqer\nWgf+ciCT4oQQQtTLKdMpvj36LUeKq699vnbtWm677TYmTpzI448/HtS9gt27/Hzn72W+Zs0afvjh\nhwvKbdiwIeh911samRQnhBAiZPvP7GfTgU1VxwM6DuBnXX4GVK6nPnr0aO6//36GDx8OwH/+8x+2\nbt2K0+lk4cKF2Gy2oPcuf/7551GpVAwfPpw9e/ZU2yP97F7mb775JidOnODYsWP06NGD7OxsVqxY\nAcCUKVNYv349FRUVOBwOkpKSqp07fvw47733HhEREcydOxetVhvOr7LeJKALIYQI2Z78PRccD+48\nuGrL0lWrVrFt2zbS09MBuP766/F4PGzcuJGvvvqK7du3M3bsWPr16wdQtXe53+9n4sSJPP/883z+\n+eds2rSJ77//ns8++wy3283LL7/MP//5T1588UWysrLIycnB6XTyv//9j7feeosZM2YAMHfuXCZP\nnozJZGLx4sUMHDiQpKQkbrjhBu67775q59RqNTfeeCO33XZbiwvmIF3uQggh6kGj0lxwfO4e56NG\njWLZsmVotVqys7OZNGkSHTp0oFevXnXeu7xdu3YoFIoa90g/e83ZHdISEhKAyl3YysvLUSqVjBkz\nplrdzj/33HPPoVAoGDlyJKdPn26Eb6txSUAXQggRskGdBqFWVXb2KhQKBnceXO38qlWrePrpp8nP\nz6dLly5ERERUdbtDaHuX17RHOkBsbCxKpZL58+ezYcMGAMaOHcsXX3zB7t27KS4upnfv3rzzzjts\n2LDhgnMffvghubm56HQ6NJrqP6i0BDLLXQghRL1YnBYKzYUkRScRHxFfa/mG2rv8/Puce825e617\nPB6cTmfV6nTnOv+cyWQiNjYWlerS+fTNkQR0IYQQohWQLnchhBCNyuPx0JBtx7y8vAa7V6j3Pfed\nzr/O6/VSWFgY1vqABHQhhBD15XSAuRzstmofu91uHnnkEWbMmMHkyZPZuHFjgzxu9uzZdSofbG77\n+bnsNanpnc6vj9FoZMmSJXWqY02Cec/S0lKWLVsGSNqaEEKI+rBZodz007HHDbGV4+hvv/02t956\nK7/5zW+AyrHy+fPn88c//pGjR4+ya9currrqKt59911KSkp49tlnyc3NZdu2bZSVlTFkyBBuv/12\n3nnnnWo556WlpcyePZuysjIWLFjA8ePHq90jLi4u6Nz2119/HYCOHTtW5bIvWbKE3Nxc0tPTmTx5\ncrXXremdVq9ezZ///Gf279/PtGnTqsbvjUYjc+bMwefz8bvf/Y60tDTmzZuHwWBg/PjxLFy4sNq5\nOXPmEB8fT2RkJFOmTKl65vn1WbFiBUeOHKF9+/Z07NiRDz74gKioKGmhCyGEqAeb9aLHBw8epE+f\nPlXHSqUSh8PBqVOnePPNN7nmmmvIyMhgyJAh9OnThxUrVlBQUEBGRgavvvoqH330ES6Xiw0bNrBw\n4UJ0Oh1ZWVnYbDZmzpzJrbfeyurVqy+4x+LFixk7diwvvvgiAwYMqMptb9euHX//+98ZOXIkBoOB\nTZs2kZOTw7333suIESPIyckB4M477+Taa69l3bp1OJ3Oaq9X0zsBjBw5kmeeeYZVq1ZVnVuyZAmP\nPPIIixYtYsGCBTidTqxWKy+88AJvvfXWBecqKiqqflA5ceJE1X3Or8/mzZu55557eOKJJxg4cCCD\nBw9m7NixEtCFEELUg+K8Y+VPYaVbt25kZ2dXHQcCAcaNG8fy5cspLCwkPT2dRYsWYTabGTRoUFU+\neZs2bQBQqVQ15pzHxcWhUChISEjAbDZfcI+65LYDtG/fvqqsx+PhqaeeIjMzk7S0NKzW6j+w1PRO\nZ+scHR2Nw+GoOldRUUFiYiJ6vb4q7e7ss2o6dzZ3Pj4+noqKiovW5y9/+Qt79uzh7rvvrpZXL13u\nQgghQhcbD8YSCPhBoajqbgd46KGHePzxx/nuu++w2Wz86le/YujQoeTk5PDQQw8BkJqayqZNm2pM\nWYPqOef79+/nnXfeYf78+VXHCxcu5Msvv6x2j7O57VdddRVDhw6tym0fP358VW673++nd+/eFzxP\npVJht9tZs2YNR44cueB8Te90MQ888ADTp08nLi6Ou+66q9ZzO3bsYMGCBWRnZ/P0009ftD7Lly9H\nrVYTHR1NYmIihw8fZvny5ZK2JoQQop78/sqxc7UGasjfttvtaDQaNBoNRqORSZMm8Y9//KMq1/ti\n+eTnOr+M2+1GqVSiVqtrPB9qbjuAz+fD7XZXrTpXk3Pf6VK8Xi9er7fGZ517Lj8/nzfffJOpU6de\n8Nzz6+Pz+aioqCA+vnrOvwR0IYQQYbN+/Xo6d+5M9+7dm7oqQcnNzeWDDz6oOh49ejQdOnRo8OfY\nbDays7MZOHBgyPeQgC6EECLsysrK0Gg0l2yZ5+fnVxvfPuv8vc9FJZkUJ4QQInSBAIe2/JvNS55h\nz7q3Cfh/yvdeu3Ytt9xyC0888QTz588HYN68eUDlNqo7d+685K23bt2K3++/4PMtW7ZUy7+uzaJF\ni+jbty8nT54M9q1aJJkUJ4QQImTfr3mDL5c/V3VcciyHmya+BFSOY48dO5YxY8YAld3Xa9euRa1W\n07ZtWz755BM++eSTqnzzGTNmoNVqKSws5PXXX6ekpASAffv2sXz5cgwGQ9Xe59u2bavKvzYajYwf\nPx6tVstLL73EtGnTqtXxqaeeoqSkpEFXq2uOpIUuhBAiNIEA+zeuqvZR9ubV1VrpK1euZPLkySxb\ntowuXbqQmZnJtGnTUCqVDBo0qCrfHGDv3r3MnDmTfv36kZWVxYEDB6oWo1m0aBEvv/wy0dHR5OTk\nVMu/7t27Nx9++CGff/55jV30lwtpoQshhAiNQoEhuvpMa0N0HArFT23FMWPGVLXQKy/5KW/63Hxz\ngJSUFIAL8rn9fj86ne68R/90n5tvvplx48bh9/uD7oZvjaSFLoQQImTXPTwD/Y9BXa3VceNj8yrz\n0X90toU+a9YsoDKvfMaMGUGtrX7WiBEjmDRpEvPmzcNisQBUz79WKOjduzdJSUk1poetXLmSzZs3\nM2fOHI4fP16Pt23eZJa7EEKIenFayyk5nk1C+25Exqc0yjPcbjder7faPudn2e12Zs6cyaOPPtpi\n0uEagwR0IYQQLdqePXsoLy/nhhtuwOPxsGjRoqpz1113Hdddd10T1i58JKALIYQIu3DnobtcrgvG\n4VsbGUMXQggRugCYs8opWnWGsi2lBHw/tRGbSx767373O5577jlGjRpVp7H7lkZmuQshhAiZabOR\n0v+UVB27z7hoM6ot0Hzy0N944w2gMrAXFxeTlpYWjq8m7KSFLoQQIjQBsHxfUe0jy24LnNOobi55\n6Pv27UOpVLbaYA7SQhdCCBEqBaij1bgLXVUfqaJV1fZIbw556IcOHeLVV1+taqm3VtJCF0IIEbKk\nO1JQRVW2DZVaJSl3pVYL6M0hD/2WW25Bq9UyZcoUCgsLQ3/ZZk5muQshhKgXv8uPp9CNJkmDMvLC\n/dAbguSh104CuhBCiBZN8tArSUAXQggRduHOQ3c4HBgMhjrXsyWRMXQhhBAhCwQClJaWkpeXR3Fx\ncbUtSptLHvoLL7zAnDlzGD58ODabLdhXa3FklrsQQoiQlZSUUFxcXHXsdrurWtXNJQ99+vTpBAIB\nJk6ciNFoJDIyMkzfTnhJQBdCCBGy8vLyascVFdXz0leuXMnOnTvJyMhg/PjxVXnoK1euZNCgQYwc\nOZKHHnqI22+/nb1797J27VpWrFhxQR7622+/XZW6lpOTw+jRo6vy0Dds2MCHH35IfHx8jV30ZrOZ\n6dOnY7fbJQ9dCCGEqIlWq8Xtdlcdq9XVw0pzyEOPjY1l6dKlLF26lK+//pohQ4bU+T1bAhlDF0II\nEbLU1FQ0Gg1QGZjbtm1b7XxzyEN/6qmnmDVrFps2beLqq68O8U2bP5nlLoQQol4CgQButxuNRoNS\n2TjtxPrkoft8PiwWC3FxcY1St+ZCAroQQogWTfLQK0lAF0IIEXbhzkO/HMgYuhBCiJD5/X6+/fZb\nVq1axZdffonH46k611zy0AHefvttbrnllqDLt0Qyy10IIUTItmzZwtatWwE4fPgwZWVljBgxAmg+\neej5+fkUFxcTHR0dxm8m/KSFLoQQImQHDhy44PjckdzmsB/6woULmTRpUuN+Ec2AtNCFEEKELC4u\nrqolffb43Bzxps5DP3XqFCdOnGDq1Kns2bOHjRs3cvPNN4f8vs2ZBHQhhBAhGzp0KEajkbKyMiIi\nIhg2bFi182dXiouLi2PWrFlVeejdunUL+hln89CTk5OrWtrn5qE/9thj9O7dm4KCggvy0Dt06MDH\nH38MVHa9t9ZgDjLLXQghRD0FAgHMZjMxMTHNMg/9ciEBXQghRIsmeeiVJKALIYQIO8lDb3gyy10I\nIUS9uAAb4ATObSE2lzz0u+66iyeeeILnnnsuqPItlUyKE0IIETInlQEdwAv4gbOj3M0lDz0iIoIR\nI0bQr1+/cHwlTUZa6EIIIULmqeW4OeShjxo1ivLyckaPHn3B/u2tibTQhRBChExFZav83ONzNXUe\nOsAdd9wBVPYQHDx4kEGDBgX9fi2JtNCFEEKETM9PgUQJGM473xz2Q588eTIzZ85kx44d9O3bt87v\n2FLILHchhBD1FgAUtZYKXX3y0D0eD3a7ndjY2EasYdOTgC6EEKJFkzz0ShLQhRBChEV5eTlqtfqS\nuedneb1ejEYjqampYahZ6yBj6EIIIULm9wfIOWli674C9hwz4vH+NEXu3Dz0jz/+mKNHj5Kfnx/U\nfe12O1lZWbWWq+u+6K2ZzHIXQggRspxTJnJPVwBQVuHE6fZyTY/KVvX5eehfffUVKpWKzZs3s3Xr\nVuLi4ggEAqjVag4dOsTQoUPZsWMHvXr1YtiwYZhMJoCqyXADBgxAr9fTvXt3unfvziuvvELXrl2r\n8tF//etfM2/ePDweDyNGjCAjI4NZs2YRFxfHmDFj6NWrV9N8SWEiLXQhhBAhKzY5zjt2Vlst7uws\n9z179lBYWEhpaSkFBQV069aNP/zhD+Tk5DBy5Ejuvfdevv/+e+bPn8+GDRtwuVwcPXqUr7/+msjI\nSF588UXuvvtu8vPzqaio/AHi/Hz0xYsX079/f+6//34WL17Mvn37iImJ4cknn2z1wRwkoAshhKiH\nqAjNBcfnznYfM2YMr732Gn369KlW7twFYNq0aUNkZGRVHvq5O7aZzWaSk5OrjtVqdVXKm8vlqpaP\nbjKZ8Hg8GI1GJkyYwJAhQxg2bBjTp0/n008/rfe7NnfS5S6EECJkV3ZKxO7yYba6iNSr6dc1qUHv\nf9NNN/HII49UteoHDRrE3LlzufLKK3G73dXy0ceNG8dLL71E7969SUhIQKvVsmXLFhQKRY356a2N\nzHIXQghRb16fH7Wq8Tp9y8vLiY2NRaFQ4HQ60Wg0VSvMnevs3uxxcXEAWCwWNBqNBHQhhBBCtAwy\nhi6EEKJZKisrw2q1Nvh9y8vLG+W+TU0CuhBCiJAFAh6cFV9iNb6Lw7yegN9ede78PPS6CmbP9HMF\nm5Nel3z4lkQ16+yK+UIIIUQdOS1bcNt+IOC34fOU4POWojX0BODAgQP07NmTadOm0aNHD9atWwdU\nbqzyyiuv0KVLF5555hm2bdtGWloaCoWCadOmsW7dOjp06EBRUREbN27kyy+/xO120717d5YsWcKq\nVauqdk374IMP+Nvf/sbu3btxOBy89dZbKJVKOnXqxHPPPcdnn31GZGQkkZGR/PGPf2TLli2kpKSg\n0+koLy/n1Vdf5b333iMzM7Nq3L2lkha6EEKIkHldJ6sfu0/BOZno5+ahn59Dfn6e+JIlS3jkkUdY\ntGgRCxYsAODqq6/m5ZdfZuXKlQDceeedXHvttaxbt46KigrWrFnDK6+8wtSpUy+Zk+50OrFarbzw\nwguUl5dTWlpKRkYGQ4YMoU+fPqxYsSI8X1gjkoAuhBAiZCp1Ug3HP+WGn5uHfn4O+fl54hUVFSQm\nJqLX6/F6vQAkJCQAlfnnHo+Hp556iszMTNLS0jCZTNXWhb9UTjpUz30HWLRoEWazmUGDBmE2mxvu\nS2kikocuhBAiZPqYGwn47Xjd+ag0yRhib7lo2fNzyHfs2FEtT/yBBx5g+vTpxMXFcdddd+Hz+Vi9\nejXff/89GRkZqFQq7HY7a9as4ciRI0RFRZGSksLs2bOJj4/n8ccfv2hOeqdOnS6oT2pqKps2bWo1\n26pK2poQQogG4CeYTt/zc8jPzxP3er14vd5qeeN2u71qH3Sfz4fb7cZgMFSdt1qt6HQ6NJrqq9ad\nn5NeE6vVGtTuby2BBHQhhBCiFZAxdCGEEA3Af9EzXq8Xv//i5y/l1KlToVbosiMtdCGEECHzue2c\n3rQUa95uDCldaH/zBDRRlRPlPB4PEydOJDo6GpfLRa9evXjsscfqdP8HH3yQt99+O+jy69atY/Hi\nxdx///088MADdXpWSyeT4oQQQoTszOZlGHdX5pc7S/PxOW10HbUQgLfffpuhQ4cyfPhwgKoZ7gsW\nLKC8vJzOnTvz6KOPMmPGDLRaLYWFhbz++uuUlZUxe/Zs2rdvj9vtvug1KpWK4cOH07dv36r63H77\n7ajVagoLC8P5NTQL0uUuhBAiRH4sp3ZX+8Ryag8EKlPODhw4QGZmJn6/n6effpo///nPbNu2jdLS\nUu6++242bNiA3W5n7969zJw5k379+pGVlcVf/vIXJk2axIQJE7BYLDVe8/333zNr1qxqwfxyJwFd\nCCFEiJREpHWv9klEmy6gqOz87datG/v370epVLJw4UK2bduGyWQCwGg0Mm7cOFQqVdU+6NHR0Tgc\nDiwWC/Hx8URGRqLT6Wq8pl27dtXyzoV0uQshhKiHdkMex2s3Yz21F0NKZ9LvmFZ17uGHH2b8+PFk\nZWWhUCjo2bMnN910Ex999BH79u3DarVy6623XnDP+++/n2eeeYb09HQCgUBQ15y1fft2li9fjs1m\no127dtx8882N8t7NkUyKE0II0QB8wIX7kwM4HA7UanW1PHGz2UxUVFSNe5oDuN1uVCpVtfO1XXO5\nk4AuhBCixXrnnXcoKCgAoEOHDowePbqJa9R0JKALIYRoVB6P54JV3ETDkzF0IYQQIfN5nJzJ/i+2\n0nwMsSm07f1LNIYYoHIDlieeeILExETy8/N54oknGDRoUNUOZ3a7nd69ezNhwoTLOn+8oUhAF0II\nEbLCA1soP30AAI/Tgs/rpvOge4HK7vDbbruN4cOH43a7GTFiBOvWrSM+Pp5XXnkFgCeeeIK9e/de\n1vnjDUXS1oQQQoTMVnam2rHddBp+HMk9ePAgmZmZAGi12hrTzK6++moOHjzY+BW9DEhAF0IIEbKI\nuDbVjg1xafBj4O7WrRvZ2dlA5XruNU3Z2r17NxkZGY1f0cuAdLkLIYQIWWrPX+DzeLCZ8tDHJNP+\nqp/2Q3/wwQd57LHH2LlzJ8eOHWPq1KkAlJaWMmXKFOx2O506daJPnz6Xdf54Q5FZ7kIIIRqVzWYj\nIiJCVnZrZBLQhRBCiFZAxtCFEELUW2i7nYfG4/E0ymx4r9fbomfZS0AXQggRsgqfl7knjzEqew9T\njx3mjNtVdW7t2rXcdtttPProo7z88suXvE9paSnLli0L6plFRUW88cYbdarnvHnzai1jt9vJysqq\n032bE5kUJ4QQImR/PZPP/8xlAOy1Wngl7wQLu1TOWvf7/YwePZoxY8Zwyy238NBDDzFv3jwMBgPj\nx49n4cKF+Hw+fve733H8+HE++OADoqKi6N+/PytWrABgypQpaLVa5syZU1U2Pj6enTt38vzzzxMZ\nGcmUKVNYsmQJubm5pKenM3nyZPbt28fy5csxGAyMHTuWtWvXolareeaZZ3j55Zdr3Ft9yJAhmEwm\nDhw4wLvvvktJSQnPPvssHTt2bKqvt06khS6EECIkfuCw3Vbts0N2G75zjletWsX48eO54YYbcDqd\nWK1WXnjhBd566y0eeeQRFi1axIIFCxg4cCCDBw9m7NixzJ07l/vuu4+hQ4eyePFilixZUq0sQFJS\nErNnz6asrIwTJ05w5513cu2117Ju3TqcTifz589n0aJFvPzyy2RmZpKZmcm0adPYvn37RfdW7969\nO0ePHiUjI6NqNbuzP1i0BBLQhRBChEQJ9IyMqvZZz8ioanuujRo1imXLlvHHP/4RgPbt2wNQUVFB\nYmIier0er9dbbQa81WqlvLwcpVLJmDFjLigLkJCQAEB8fDwmk4mnnnqKzMxM0tLSsFqt+P1+dDpd\n1T3P3j+YvdUXLVqE2Wxm0KBBmM3mhvmywkC63IUQQoTskbT2uPx+sm1WOhkM/L5dh6Cue+CBB5g+\nfTpxcXHcddddJCYmcvjwYZYvX87YsWP54osvaNOmDTqd7oKyADt27GDBggVkZ2fz5JNPYrfbWbNm\nDUeOHAFgxIgRTJo0ieTkZCZNmkRMTAwzZsxg6tSpte6tnpqayqZNm4iNjW24LyoMJG1NCCFEvfmp\ne5ev1+vF6/Wi1+svOOfxeHA6nURHR1+0rMPhwGAwAODz+XC73VXHULmnutfrJSIi4oL717a3utVq\nJSoqqsZzzZUEdCGEEKIVkDF0IYQQjSYQCOB0Oi96Pj8/v873zMvLq0+VWi0J6EIIIULmc/vI35fP\n4a2HOfXDKdx2d9W5HTt2MHr0aObMmcPSpUtrvH7r1q34/XVblmb27Nl1Kr9hw4YWnV8eLJkUJ4QQ\nImRFuUXYSitT1xxmB4UHC+nQv3Ji3KZNm/h//+//VZt49uyzz6LVaikrK2PBggWUlJQAVO2P3rFj\nRywWC/v27SMmJoaZM2dWyymfOXMmZWVlzJkzh8LCQl5//XU2bNjA1q1bcTqdLFy4EIfDwbx58/B4\nPIwYMYL169dTUVGBw+EgKSmpWo778ePHee+994iIiGDu3Llotdpwfn0NSgK6EEKIkLkqXNWOnVYn\nBAAFPProozz//PMsXbqUe+65h7Fjx/Ldd9/xxRdf8MUXX7B69WoOHDiA3+8nJyeHWbNmkZyczMMP\nP8w///lPXnzxRbKysnj11Vd5++23q9LQPB4PM2fOZMWKFWRlZXH99dfj8XjYuHjtP5MAACAASURB\nVHEjX331FVlZWfTv35+uXbvy0ksvMWLECJKSkrjhhhu47777mDx5MiaTicWLF6NWq7nxxhu57bbb\nWnQwB+lyF0IIUQ+GeEP141gD/JjSnZyczNKlS/nkk0/461//CkBcXBwKhYKEhIQLcrzbt2+Py+Ui\nMjISqFw8xmw2X5BTnpKSAkB0dDQOh4NJkybRoUMHevXqhdlsxmQy4fF4MBqNTJgw4ZI57s899xwK\nhYKRI0dy+vTpBv9+wkla6EIIIUKW0jmlcuJbmRNdtI6UrilV595//3127dqFQqFgwIABAJSUlDBv\n3jz279/PwoULycnJqXa/mJgYIiIiqsq88847mEymajnl54uIiOA///kP+/fv55577mHcuHG89NJL\n9O7dm4SEBAYOHMiLL76I3++/IMd9z549nD59Gp1Oh0ajadwvq5FJ2poQQohG43A48Pv9Va3ucePG\nsXTpUpRKJWr1xduU5+eBXyqnvKbygUAAs9lMXFzcBWXPz3E3mUzExsZeNCe9pZCALoQQImy+/PJL\nfvGLXzR1NVolCehCCCHq7cd5cKIJyRi6EEKIkDm8PrIKyjHZ3UTrNAxMiyNGVxlannjiCQoLCykp\nKeGqq65i/PjxXHPNNWRnZ5Oens69995L3759eeihh/jTn/4EwBdffMGhQ4dQKmXOdl1JQBdCCBGy\nvcUWSn9cTKbC5WFnYTm/TE8CYMmSJXzzzTfs3LmTyZMnU15ezk033cS//vUvHnroIVQqFX6/n7S0\ntKr9zNVqtQTzEMm3JoQQImQVLs95x14uNY6bmppKYWEhK1euZPTo0dXOvfXWWzz88MONUMvLgwR0\nIYQQIUsyVF+MJSlCW+tY+nXXXcc333xDp06dqj7z+XxkZ2eTmZnZCLW8PEhAF0IIEbKrUmLoHBdJ\njE7NFdEGBqRemCZ2vrvvvpv333+/2mfr16/nlltuaaxqXhZklrsQQgjRCkgLXQghhGgFJKALIYSo\nv0DdtkA9X3l5OVar9YLPPR4PhYWF9br35UICuhBCiNB5nZC3A45ughPfgMtSdeqRRx7BYrFw+vRp\nevToAcB///vfGvdGP3r0KPn5+Rd8XlRUxBtvvFHts3nz5jXwS7QOqlmzZs1q6koIIYRooQqzwVFa\n+Xu/B5xmiL0CAKPRiMlk4uDBgyiVSnr16sW///1vhg0bRklJCfPnz2f9+vVkZmZSUFCASqVCqVQy\ndepU9u3bx5YtW+jbty9vvfUW2dnZfPfdd6SlpTF//nxKS0vp0qULU6dOZdu2baSlpZGcnNyEX0TT\nkxa6EEKI0Hks1Y/dNvgxE/2GG25gy5Yt7NmzhwkTJrBlyxZycnLo3bs3c+fO5b777mPo0KEsXryY\nwsJCSktL+ctf/sIf/vAHJkyYwI4dOwBIS0tj7ty5HDx4kM6dO5OZmcm0adPIyckhJiaGJ598kl69\neoX5xZsfCehCCCFCF3FeqzgikbOrunfp0oXc3Fy8Xi+9e/dm165dGAwGFArFBfuSn2W324mKikKv\n11dtZ9qmTRsAdDodPp+van/zIUOGMGzYMKZPn86nn37a+O/azMnSr0IIIUKX1A1QgrMUtDE/Hv8k\nKiqK1NRUoHIv9Ouuuw7ggn3Jz3r44YeZMmUKnTt3vuj2qjExMcyYMYPbbruNLVu2oFAo0Ov1jfN+\nLYjkoQshhGgS5+9LDmCxWMjPzycvL4+tW7fWOgHOYrGg0WgkoCMBXYhm59y/kJ5AAIfPi93nx+H3\nYff7qn7v8Pmw+/04/X58gQC+AHgDAfwE8BLAFwhUHv/4V1ytVKJGgVpx7i/O+b0SjUKBQakiSqUi\n8sdfZ3+vU6qq1VO2yhSNweFw8MEHH2AwGBg+fPhFW+niQhLQhQiTwDn/NXk8FLqdmDwezF4v5V4v\nZT4vZq8Xs9dDuddLudeDzedryipXo1EoiFKqiVSpiFCriFWqiNdqSVRrSNRoSNJoSNRUHsdqNFUB\nXwK/EOEhAV2IBhT48ZfR7eK0y0Wh20Wxx0OJx02Jx02R202px423lf+1UysUJKo1JGi1JKrVtNXq\naavT0V6np51OR6y6crKTBHshGo4EdCFCEKCyO/y000Gey0m+y8kpl4vTLienXU4c/vqtmtXaRavU\ntNXpaKvT006rpZ1WzxU6PekGAyqFQgK9ECGQgC5ELQJAucdDrsNOrtNOrtPJMYedMy7nJfd9FnXT\n1xDNwEA0MVoN8ToNsXoNcToNsQa1BHkhgiCzDYQ4R+X4tpuDDjtH7XaOOe3k2u2Uej1NXbVWr4Pa\nQMANZpcHs8sDFZWfK4BonboyyOs0xOkrf6mUEuSFOJcEdHFZ8wUCHHc6yLFZOeCwccBmo8jtaupq\nXZaSlTX/cxQAKlxeKlxewAH8FOTjtJXBPTFCS6xeIytlicuaBHRxWXEHAhy0WdhttXLQbuOg3YbD\n33xmkl/ODAElLoKbe3BukD9lqQzyWpWSJIOWJIOW5CgdMVq1tODFZUUCumjV/MAxu40frBZ22yxk\n26y4ZMJasxTw1u96t8/PGauTM1YnlIBOrSTZoCM5QktypI5IjUoCvGjVZFKcaFUCQLHbxU5LBbtt\nFvZaLFT46hkpRKOLUWkYqW7cnbIiNKrK1nuEjuRILRFqVe0XCdGCSEAXLZ4fOGSzsqOigixLOced\njqaukqijAYYY+vqjwvrMfi4PUdEGohOj0cfIsqGi5ZMud9Ei2f1+dlWY2WExs7PCTLm0wlu0KzR6\nCONcxFgFuE0OTCYHphMmNAYNkUmRxCTFYIg1yIo3okWSgC5aDJvPx7fmcr6uKGOXpaLVr7Z2OUlU\naCCMWf1tzp0HqQCP00N5fjnleeWodCoiEyuDe0R8BAqlRHfRMkhAF82aw+9nu7mMrRXlfF9hxiNB\nvFXSB5Q4CV+2gcHpocY+HQX43D4qCiqoOFOBUqMkMjGS6MRoIhMiUaolMU40XxLQRbPjCvjZYS5n\nq7mc7yxm3DIrvdXze8P3Z6wGfBZn7QUVlfWyFFmwFFpQqBREJEQQ2yaWqIQoFCppuYvmRQK6aBbO\nTmzbWG5ia7mpWe0yJhpXokqD2xe+npc0IOCv4/MUldfYjDZsRhsqjYro1Ghi28Sij5IJdaJ5kIAu\nmpTR42GTycjmchP5riBaTaLV6a6PoOb+78YR6/HXe7Te5/FRnlc55q6L0RGbGktscixKjXTJi6Yj\nAV2EnTsQYFu5iU3lJn6wVMgGJ5e59ip9WAO60uJq0NF6V4WL4opiSo6UEJUSRWybWCLjIpF1aEW4\nSUAXYVPodvFZqZENZUbMXkkzE5XiFWoCdfix7quPP+DaW2/n1OGDAHTL7Bf0tQkKBT5X42y0EwgE\nKsfbiyxo9BpiUmOIbROLRq8GhYy3i8YnAV00Kj/wfYWZdSYj31WUS2tcXEDnr9sM97yjh8g0/5wN\nq9/F7XQw6aUlKFXBrfqWHKbJdx6nh9ITpZQeLyUmyUNkioHo5E4olNJsF41HArpoFBU+HxtKS/i8\n1MgZj+xeJmqmAHx1nBDndjpZPmsq4+ct5JM3lwUdzAH0F0tXaywKsJbvxXiqAF1kAomd+xPXticq\ntTactRCXCVn6VTSoMy4n/y4tYaPJKJugiFqlqrTcoU4KquzBXd+R0e//UCgUBAIB/D4vWZu/4Npb\nbg/qeq0CuhdYCOc/eWqdE7tpU/XPtAbi0/uQmN4HjS68y92K1k1a6KLeAsBBm5WPjMX8z1wm3eoi\naF3rMMPd7/ORnfU/vvz3B2h1Ojr3voprb70j6GelBRRhDeYASmX+BZ953Q5KjmzHmPsdce16ktTp\navRRiTLOLupNAroImR/Ybi5jjbGYbJu1qasjWqB2Qc5wP3noAN/852O6XNmHEY8+QXK7Kziesw/q\nEKBjXN4gd1tvGEqlH3t57kXPB/w+yvL2U5a3n6iUTiR1upqoxA4oJLCLEEmXu6gzTyDAf8tK+aCk\niNOSOy7q4bGY9vhdwYVZu6WCFXP+SFJaO47s+4Hufa5m9OSpQT8r02TH5wrfCLo2sghr8Xd1ukYf\nnUJSl/7EpWagUEl7S9SN/B8jguYJBNhoMvJ+SRFFbpnoJupPi4JgfyQ8vGcXNw6/lz6Dr8fjdrNh\n9btBPycRRViDOQHw2C7eOr8Yp6WY/N3rKdJvI7nbNSS0vxKFUvZtF8GRgC5q5Q4E+KK0hA+NRRS7\n3U1dHdFKKACPJ/hO8K6Z/Vg242kKThzDbCqlQ7eMoK9NDuPSsgCaCCs2oynk6z1OC2f2baIk9zva\ndL+WuLSekvImaiVd7uKiXAE/60uNfFhchNErgVw0rA4aPbcoE4Iub60wk3fkEADRcfG079It6Gv7\nWN14g9mQpYGodTnYTcca7H7aqATadBtMXFp3mTwnLkpa6OIC3h+71v9VXIjRI4FcNI4u2uBnuNsq\nKvj7/Jl43C4em/USWZs/Dzqg61DgtYYvmCvVHhxlJxr0nm6ribwf1mHMTSal+8+IadOlQe8vWgcJ\n6KKKH/jWXMY7RWfIc8pkN9G40lS6oAP6iUPZXHvr7RzP2U9kTAynjx0N/jkKCGcupVpXhDPQOPPp\nHRUlnNz5MRHxaaR0H0x0UsdGeY5omaTLXQCw32rhrcIzHLBL+pkIj/Gx7fE6gwt8LqeDJdP/gNfj\nJi29M31/dgOZg38e1LWZLh8+k60+VQ1eIIDftwWvKzx/j6ISryCl+2AiE9qH5XmieZOAfpk77rDz\ndlEBWRXlTV0VcZmZGH0FDnfwa7j7fT5y9+8hJiGRNlekB3WNIgBXmez43OGZ4a6NKMNasi0szzpX\nQoeraNfjRtDIkrKXM5k2eZky+7wsPn2K3x85IMFcNAl3HTZK+WLVOyhVKspLjajUwY8UJqEIWzAH\n8LlPhu1Z50qM6wjFhWAuA1ly+bIlAf0y4w0E+NhYxLiD+/mstESWaRVNorMmAp8/uP/7rBVm7BYL\n2zd+Rt7RQ3y47PWgn5MUxuCm1rpwmC9c6rWxRcW3Q6/UVx5YLVBUALJy42VJAvpl5HuLmd8fOcDy\nM/lYfcF3dQrR0Dpr9UGX1en0HN7zPVmb1jN83O+JiIoO/lp74+x9XhOl+kydynu9PkpMFfV+bvv0\nQdU/8Pug3AQlRSALQF1WZAz9MnDG7WLF6Xy2W6RrXTQPY2LSMLjqnk9dlHeSClMpHTJ6otMbLllW\nr1DQ5Yw51CrWiULhx+vcjM8bfAD9+0df8otrrqSsword4eJnV/eo83MT03rRtk3vSxeKjIKYOJCF\naVo9+RNuxdyBAO8WnuGxQ9kSzEWzEqMIbTnTNlek061Pfz55c2mtZVPD2FTRRpTWKZgDnC40kVdo\n5Msd2Xz65fe46jrWr1CQ2vbK2svZrFB0RrrhLwMS0Fup3ZYKfn8oh38VF+CVThjRzKh8oa925vN5\nUWk0tZaLCePa7e46rNt+9GQhAEN/3ocT+SVMeuA2Ig16dNq6LQvSttM1KINd0tbvr+yGLy4E2VCp\n1ZKFZVoZs9fLioJ8NpeVNnVVhKiRCkWdZrgfP5BNRFRUVaraiQPZdOpx6W5mRQACYVrqVW2wYTca\ngyrr8/kpMpazc18u3TqmMfau6zlyooCRwwbX6ZlKlZaEuPS6z2j3uMFYDBGREBsHsvFLqyJj6K1E\nANhoMvK3gtNU+MK4q5QQddRdG8kNitigyn769l9RKpWYigvpe92NpKV3wu/zER2fgCEy6qLXtUFB\nUkF4xs81+oPYSoNbuW7DN3vo06MjcTERfLh+O3sPneI3t1zDwMyudXpmes9fEqNLDKW6P1EqITa+\nMriLVkFa6K1AgdvFa/kn2Wu1NHVVhKhVJ40+6CVfTUWFDPnNfeQfO0Jxfh5Jae1IS+9U63UJvvCk\nqynVPuxlx4Muf2X3DryxagMB4Ld3/5J7bxvMkRMFdXqmRh9DjCEJgkz7uyi/H8pKwemAuHhprbcC\nMobeggWAT4zFjD+cI8FctBht1Lqgy6Zn9GT57GkUnDzBkb27ggrmAFpbeDYVUmuLCPiDTwGNiTIQ\nadAz4uaB/O3D//L86+/TvWNanZ6Z3v3n9Q/m53LYK3PXHfaGu6doEtJCb6EKXC5eOy2tctHyRAWU\neAiuBX3jXfeQOfh6ivJOcseDjwZ1TQTgtTV+/nUgEMBlDX6TGIDiUjNxsZFk9kgns0c6y9/biFod\nfMs4IjYNgyoSGnqk1O8HkxH0BohPlBS3FkoCegvjBz4rLeGtgnwcssSjaIFUfghmuZcTB3NY+/c3\nKDhxnISUNgwd9QB9Bl9f63VpgfDsF66NqMBmrNvCMJ2vaMN/v93PzNdWo9GoGTL4qjpd36HTtQ0f\nzM/ldFSmuMUlgCGi8Z4jGoUE9BakyOPm9byT/GCt/+pSQjQFnUKBK8gZ7t9+sY4Hpz7Pts/XEpeU\nTEJKm6Cui3R5CMc6iH5v3dZt33foFFu+y2HItVcx5tcp+Px+Ig3BDz8ktOmGhjCMc0trvcWSP6kW\n4qsyE78/nCPBXLRoXXWRQTcwu/Xph0KpJO/IIY7s3Y0yiElbCgJgafzudpXGjaP8VNDlnS4PX3y9\nhyu7XYGp3MKu7GN1CuYAqe361rWa9eN0yNh6CyMBvZmz+/0syjvBi3nHscn666KFS9cEt4a71+Oh\ne2Z/ouPi+eVv7qP/9b+gXefaU7tSUeLzNv7fE5WmbjPTLTYHUZF69hw8yeD+GWzbdahO16d2/D9U\nTTHC5veByYjXaSEgWzk1exLQm7FDdhsTD+ewSRaJEa1EG0XtK7yVlRSx86uN5B2tDHpdruxDsMtl\nxNdhwZpQKRR+nOXBT4bz/vgDhl6rYe/Bk8z68wfcVIexc6VSTVJC5zrXs6H4tRrs+gBWrPjCMpgh\nQiVj6M1QAPiwuJB/FJ2RZVtFqxKJGlctQaHCZGL9P98mMTWNr9d9jD4igisH/Syo+2tsrmBT3EOm\niSjDZXUEXf7dT7byi2uupE/PdDq2T+a6q3vUaWZ7+27XoWjINLU6ciRGEcBPgMqgbsCAFm2T1Udc\nnAT0Zsbk9bDw1AkZK2/GAl4vliNH0SYmoE9JaerqtCiKIBrQ6Rk9+dWYh7jmpl/h9XgoNxaTlNau\n1uuiFOC1N37+udcR/EIy8NMmLN/ty6W41My1/TKC/odXo40kNiKlcWe2X4IrMQavsvofmgMHXrwY\nMKAgPBkFIjgS0JuRvdYKFpw8QZkvfHs4i+CU795LwRcbcJWUoFCpMOccoPuE35M69KamrlqLoVcq\ncXqC67I9c/wYgUAAtUYTVDAHaONv/OCi0ttxlBbW6ZqhP+/DoWNnmPTAbcx/49912oSlQ/cbmiyY\n+yL0OPU1f6cePPjwEUEEqnDMvBdBkbXcm4EA8H5xAf8oKsAvfxzNkuPMGZRaHZ6KCk78YyVtbx9G\nwv/1b+pqtSiZ+miuCUQHVXbpjKcwlxrp0juTPj+7gYx+/1frNX0cXrzljTsjW6M/jK30cEjXHjlR\nQACCXhnOEJNM1y6/aJKAHlAqsKbG4ldc+tkKFOjRSxd8MyEt9CZm9flYmHeCHRWyX3lzZmjbFtvJ\nU/ww+Sky/jAJQ9vUyn9oFdLlGKx0rR6CzCj71f0PExEVhUKhoMxYUmt5JQH8jby7mkLlw1F+LOTr\nu3VMo9xiZ+/Bk2T2SK+1fIfO1zVZ69yZVHswBwgQwIEDHz706KULvonJLPcmdNRuY+LhAxLMW4jI\n9A4M+OsyFColR5Ys47833ozbZGrqarUYydQ+wx0qd1jL+e5bNqx+l6L8UyS2Sa31mlSFEn8jb8ii\n0Zfgr+dOhmu+2EGHdsm1lotL7oy2idpbntgo3Jq6/SDhxo0VK/4gl/QVjUNa6E1kvcnIstN5uAPy\nF6ClOP7Ou5j37Uep1RGd0Z32vxmOOjq4LmQBEShxBfEPfk07rNUm3t3I6VQBcFuCT1UrLjXz4frt\n9OjSjl8OuhIAq92Jz+cjLrr2JVXbXnE1TREb/Vo1jig1hJBz7sdfNQteE+QPb6JhSUAPM28gwPKC\nfNYZi5u6KqKO0keNRPn/xhL4cQ19hSyJWTdBxtyzO6z1v34IRXknGHL3qFqvUdvdjZqupomwYDMG\n35P2j39vZdQdP2Pt5p2kJsXRNiWew8cLGD70mlqvTenQt2kWkQEcidEE6vGTRIAAduzo0KEnuEWE\nRMORf5HCyOLz8dzxoxLMWyilVsvRpcv538j7yZ7zJ0w7dzV1lVqMaKUqqDXcf/j6S2ITk/jDomV0\n6tGLux75fe33RtHo6Wp+X93WbXe63Pz32/2MvG0w/92+H51Ww8A+XUmKv3SPjkKpIiUpoz5VDZkr\nIfqCFLWQ74ULGzZZXS7MJKCHyUmng8mHD7Bb8stbLJexFIVGwxX3/IbukydQ8vU3DXbvkq1f4zFX\n4Pd4+OEPT/PDU1NwGY0Ndv+m1k0fFVS53P176JbZj4SUNqSmdyIna3ut17Rp5IljKo0HZ3ndAvov\nB1/F51t+YPl7G0lJjMWgD24WePsug1E0wS6KPoMOp6Fhw4EXLzZsMq4eRtLlHgbfVZSzIO8EdlmL\nvUVTGQwEfF5ie/fi6Bt/RZ9c++SmYBn/t53k63+O6ftdxPfvT+rNQziz7jM6PfhAgz2jKXVQaYPq\nch94060sm/E0fa67gYO7vmPMU8/Wek2k09uo3e0qTWHQS8/6AwG+2XmQ9qkJrHxlIi6XJ+hgrtYa\niItqC2GeVxNQKrDHGwhl3Lw2PnxYsRJJpOSrh4EE9EYUAD4qLuStwtPS8dQKqCMjiO7enZiM7vgc\nNxHw+yjb9QMxvXqi0tdvvFAVGYnbZKIiO4fo7t1R6fX43Y2/6lm4JAaxhjtAh249mPDi6xw/kM3g\nW+8gKjbukuVV0MjpagGc5uAnw/3j31tomxLP7MUfkBgfw/hRN9MtyLzzDt1uCHswB3AmxQSVohaq\ns0vGRhAhk+UamQT0RuILBFhyJo/1pbXn0IqWI75vJgdfeR2v1Yq7rJzYnj2I6dmj3ve94u7hZM+d\njzo6mvQxo/E5nFxx94gGqHHzEIEKZxBN9DPHc9Hq9fS8emBQ902jcdPVdBFmLCW2oMs7XR4CAXj2\n8d+w9bsDxETVPqMdQBeZSKQ2Jux5596YSNxhirF27OjRo6Nu28aK4MlKcY3A4fez4NQxsirMTV0V\n0cBOf/ofojp3IrZ3L9ylJoq/2YZKoyH11qEhz3ov270HR/5pXEYjLqMRt6mcjmNHN8gPCs3F7yPa\n464l8P7w9Zfs/uYromLjKM4/Rf8bhnDtLbdf8preHj8YrQ1Z1WqU6l04zWcuWcYfCOByefj0vzu5\n+1fX8vmWHygoKSfvjJHZk+4N6jnd+/wanSK8q60F1GosbaLCPnFNg4YIgvtBR9SNtNAbmMnr4fnj\nRznqaNwlKEXTiO+Tycn33ufUqtW4jKWooyJpd9ev63VPn8NBwO/H73bT+aEHsRw+grOwqNUE9HiV\nutZgDuCwWrjjwUeDXrsdQN2Iu6uptS7sZZcO5gAVFjuz/vwBWo2a227sz7Ab+/Pxxu+459ZBQT0n\nNjE97MEcwJ4c/mAOlevAnx1Xl5XlGpYE9AZ0yung+eO5FHqCXN9ShEXFwUMUbtiE7fhx+r26sF73\niuhwBZ0eGIM+tQ0Ah179M0mDB9UrJz3p2kEYt/0PTWwM2sQEdMlJFG/ZSsovbqhXXZuL7rrIS06I\nO3noAMnt2mM2lfLGzClc0TWDjP7/xzU3/QrFJZbWjVMo8DoabyMjhSovqHJxMZE8fv8tOF1uXvrr\nJ+h0Grp2SCU2iAVkANqmDwj7IjLu+Gi8yqbrnD07WS4iYEClkDDUUOSbbCD7bRbmnDiGpZ5LQ4qG\nc3jxUiwHD+IxV5Dx9B8wpKViPZpLVNcu9bqvLiUZ67HjmPfuw3aybulMF5M46BqOLF1O0eYv0SUm\n0uXR3zbIfZuDK1T6Swb0QCBAWXERR/ftIT45BUNUFPaKiksGc4DkRhw7Vyr9dVq3/bMtu5j84DAy\ne6TjcLqDntme3P4q1GHYJe5cfr0OR0QzyFj2eVCdyYGk7mCIb+ratAoS0BvA/8xlvHjqhCzj2sy4\njUau/sufKdu9B+vRXHTJyVhy6x/QizZ/iT0vn7jMq+i38MUGWTFOoVLRfcLj9b5Pc5SgVF+ya7dj\nj14ATFjwGoFAgLyjh1Brag+IEa7GS1fT6I04LcFlGXy98wCmcis+nx+VShl0MFcoFKSk9AR/GFvK\nSiX2hAiaZF3ZcygCfqLOHAGnGc7sgtS+EJnYpHVqDWRSXD1tMpXy6umTsu1pM3T647Woo6PwWm2U\n7foBhVpNxpOTUEdGNtgzfA4HliNHicu8qt73Ov3xWuynz+AuLcXv8aBQKun4wBiiunRugJo2nYkx\n7XG46h5AXE4HOr2hxnNqFPQoqiDQSMFQwbe4bKW1lisuNfPB59/idHspKC7j+gE9uXNI7Vu9ArTv\nOpj4qODnCzQEZ3Isrqbe6TQQILogF+W5369CCamZEJXSdPVqBZpBv0vL9YmxmEX5JySYN1Nt77wd\n2/ETuE1ldHvicaIzutc7LchZWFR1D9P3u9g/509oYmIaorrEXnUlHe6tXIUu4or2XDl7ZosP5gCh\njkJ98ubSi55Lg0YL5mqDNahgDpVrtt9180Ai9Foe+s0vgtp4BUCl1hEXc0V9qlln3qiIpg/mQHRJ\nfvVgDpX59wV7oKKAxljg5nIhXe4hWlVUwD+Kap8BK5qOQqkkrl9f8j/6N7l/ewu1wYDlaC7xffuE\nfE/LkaOcWv0+XocDpVpN5p/mNNgmLVFdOhPw+3GXlmI5kovf40GpCT1J2F1eTvkPe1CoVSjUapRq\nNZq4OKK7da1XPY/97e9Yjubid7tpf9evSf75zy5aNkWtDWqG+/l8Pi+qS7x7nNvXaJ3GCn9wk+Gg\n+prt/1r3Db+9+5dBXdeh+/VhXeI1oFbhiNXR1F3tkaYilBdNAwxA0T4IcJU4kwAAIABJREFUeCG2\nPcgM+DqTgF5HAeBvZ07zkbGwqasighDbqycJ/fvBjxOsCjdsqtf9kn/+MyI7dcS8Pxvr0aNkz52P\nQqGg24TH0cbXb2JP3odrMO/PRpuYSMf7R9UrmAPg9+O127EezcXncBDZuRPmffu5au6skG8Z8Pnw\nORz0eWEeAAcWvHzJgN5NF0koA90nDmTTqUfvi55X2BpndTilyou97HjQ5X85+CqW/ONz8gtL6ZKe\nGtT4uS4ijihdfFgXkXEkxTT5muqGChPq0hO1Fyw+AH4fxKcjQb1uJKDXQQBYfPoUn8vqby2GylB9\nDFabmFDve0a0b0dE+3bAUAACfj/Wo7lUHDhI0uBrQ75vwv9djc/hwFViJP/jT1Bo1JRu30Hn3z4U\n0v20CQm0HfYrynbvwVlUROpNQ7AcPBRy/aBy8p79VD4lX39DwO9HUcsPHe1U2loD+pf/Xs3ub77C\nXFpKbGIS9/9hGtFx8bTtVPPkxTiFAp+zcabDqXVFOCtqD3x2p4s9B04yuF93BvXtVqc12zt0/XlY\ng7k7LgpPU+3H+iOdrQJtUfBL6GI8XNlST+iCBPXgSUAPUgB4Je8Em8qCG1sTzcfpteswfrud+P/P\n3lkGWFWubfhau3s6mWQYBoZupERBBLGPxzwe41ifhd0HFQsLuwWxQQVFRBERCemuYYLp7twd6/sx\nwlHZMbP3FDrXL2Wv9b7v1HrWU/czdCgSlRJFSDC6voHlpk0lpRQt+QJbfT0IAvrUfoSMHBHQmnKD\nnvAJp6AMD0ce1JqXDxqUHtCa0BqlyHt/EcVffEXyNVcHvN6gRx+mav3G1sjErf/n9dpgwXuFO0Bp\n3lEmnnU+UfEJ7Fq3hrDoGKQyzy8KUc7OMYaiKGJpzmnTtUtXbWH21JEAmC02JD5a7I6hC+mDStJ1\nc8JdSgUWrYzuzEsrLGZU5VntP0NtHrgcEJ5Gr1FvG70GvQ30GvOTG1NREYMf+y+Fn3yGNjIcU2Fx\nwAZdERJMxJRJFC35EkVwEC15+ST/+18BrWlraKR646+t8q/1gcu/ig4H+Ys/QpucxLBnn8FltaAI\n9T9CkbdoMbp+KdRs2Yo6KhpVdBT2xkakkZ4rk5UuiU8N9wGjxoIIGTu3UZJ31KsxB1Cb7XSGnIxS\n20hLddtkZKvrmlAqWs+5fX8OIQYdI9KTfN4XlzS+62yrIGAK0yJ2Y6hdZrOhLjvi/9CZ+qLW8Hvk\nQHpruH0jfeyxxx7r7kP0ZHqN+cmPPiWFffc+gKWsHNHpJOHiiwIuZJMoFBR9tpTBcx8i8rSpOFpa\nEAQBZVhgvbTqmBgiT52MMiICe1MT2sQEv9eq3vQrUo2GhgMHCRk5nOIvlhE6aqTf64WMGE7ZylWk\n3vJ/KCMiEB1O5AY9cr3e7fUCMFJq8NoF0lRXi8NmY8j4STTW1TD29DMxhHr+HsoFCK0zdZJRzMJh\naWrTlUlxkTzz9tfsOZxPaUUdF80c71MIJywmnWBtVEcctE1Ywg3Yu9Flkzjt6EozwRGgcqa1GexG\n0EYdr4XpxT29HroXRGBBSWGvMT/JUYSF0u+G6wgalE7d7j3U79lL6Ji29Qp7Qx0bQ9mqH5DpdVSt\n+4Xo6W2rcPZ4zpAQFCEhOC0WRKeDxowMrwVnvtD17Uv1r5tRx0TTeDgDiSLwsVotuflkPvciQYMH\noYmPQx3jeTRojEyJw0clt91mo7wwn9RhIxk99Qyf+8eIQqe0q0kVVsz1batu//y7zZgtNh65+R8o\nFDJ0mjaE0AWB6NjB0Enpgj/j0KqwKrvP+ElcLnSlOWA3d8yCzZXAYYgeRG/43TO9HroHjhvzupru\nPkovHYDcEMTB/z6GKjoaS1U1LUdzMQxIC2jN4CGDsVZX47I7SL7q39hqaqjZvBVdSl+f3po7rDW1\nZD77AnW7d4MoknjJPwOqdLfW1lCzZSv2+gacJhOJl10ScOV89PTT0aelIpHJcJpMXiMII1UGwkTv\n++UdPsAPn37Akd07aKqrJTIuAYXS83jNBJsL0dzxc+LlymJsJt/FrjkF5dQ1tjBmSAofLFtPYVkN\nIwcl+7wvNnkcWkVQRxzVJ6JUiim8ewavtB7Ahb48F8HSwdMmbc2togba8I5d9y9Er0F3gwi8XFzA\nT72e+V+GhgMH0SYlET1jOtqkRCp/+pmmI5nIDQYUof61m7nsdsq//4H6Pfso/nLZ8dC2Ji6u3QZd\ndLkQpFJ0KcnU7dqDtaoa0ekKrGfcJeKy21D36YMiJASpUokiONj/9Wjt7XcaTahjY9H7kNA9RROM\n0uH9+6AxBJGQOoDJ51yA027HEBrqUR0OIKbR0gnzz53YjHsQXZ4r548WVhAarOOr1duQy2RMGZvO\nqWPTGZQah0wq9bq6RKogIekUhC6qbDdHBuHsxsEr+soiJMZO6gSyNrZ2CGgC71b5K9Ibcv8TIvBW\nWTFreo35X4qQEcM48vyL1G7fgbGwCMPAAYRPOCUgJTaJQoHTYmXok48jUSrIfuU1wk8Z71eerzkr\nG1NJKXW7dzPo4QeQKBQcefYFYmad6f/5lApUUVGIDic127YhUcjRJiX6vR5AxtPPItNqsdbVETRw\nAAmXep73HYIMh5eCLGNTEx88PRe7zcqNjz1HZUkh6WM8jxwNFQQcVt/lcHlFeURHRKNRt021Tamp\np9lLX7vT6aKypoFdB3MZ0j+B7IJyHnrxc/45azwj0n175/H9J3WZiIw9SItd1n3GXFdTjqS5kzU6\n6vNAIoPQpM7d5ySk16D/iU8qylhZU9Xdx+ilgxGkUiImTkAVFYW+fyp1O3fRnHM04LC76HRiqarC\n3tiIqbjE76IdeXAQxk2/ok1MxFhYhCCV4DSZWj13Pwv4ZDodoaNHAa0FbcVfLfNrnd+jDA8j5Ybr\ngNbRsV73d3lvQS/IOswpM88mP+MQWoOB0jzvfcptma62+MvFGM1G1m9dT2xULLddcxv9Er1HOWzm\nXK+fS6USJo4agNVm56vV2ziSW8q500Yjl3n3zAHkKgMGdXiXDGBxKeSYdXK6q0VN01CDtL6oazar\nzW416sFxXbPfSUKvQf8dy6sr+ayqvLuP0Usn4LRYCD9lPIJMRum332HMLyC1A6abJV91JSVfr0Cm\n0zHokYf8XkcdE4MqMpKGg4d+mwwXTtCQweBygZ8G/fdta2Hjxwfk7Zf/uIbqDb/Sktsq+SpIZcj1\nOq/32B3eDUu/IcN5/cE7cdhtfPT8kwyf6H3+u8pk9yk619jcSHpqOtMmTmPjto3ERsZ6vV6uMmFs\no1CUUiHninMnc7HDSU5BOen9fBuTxP6Tu2yamjlM120taqqWRuTV3l+MOpzqjNa/DYP3n/Hfid5p\na7/xU10NC0o6ZrZ1Lz2P5qxsir74ColcjqWyksQrLkem16GNj0OqaVtoti0E4lF3NFUbNuI0W2g8\ndJiUG/5D0ZIv/Z6znrdoMWFjx1DyzQpkag2CXE7w8KFETpns9vokuZozJN5rE+qrK2luaMDc0kxw\neARR8Z7TAQqgf0Uzvh5XhSWFZBzNoKS8hNzCXOY/MN/r9XJVFsbatonJ/JkNOzI4daxn4R9tUAx9\n+3aNKpw1zIBF1T3V30qzCVXpYf97zQNCgJihoOu6dsCeTG9RHLC5sZ7nSwp7Z/z8hVGGhxE0aCCq\nqCh0fftib2jAVFSMVKlEGRFY1WzmCy9RsWYtht8U2cLHj/N7LdHlIved9yhZ/g01W7YROnqU3+1m\nglRKc3Y2cp0Wl8OBvaHB78E0ISOGo4qMJGzcWDQJCSiCgtD1TfbYgz5KHUSIy3MAsLmhnvfmPYTD\nZmP/lo3UVpSTPtpz/jxOBEWL737mYEMwqUmpAJx56pnoNJ6jCFKJE3PTbr8MUVOLmU27Mr1WuKcM\nnIG0C1qsnBoVJn33BFtlNgua0gwQvYsHdSrGalAaQNFxL+YnK3/7kPu+5ibmF+X3jkD9G6AMD0cZ\n/j/j3ZKXR/2efQGpsQEgiqTdfQel36xEDLACu2bzFnQpKfS76QbMpWWULFtOkp8KdC67DWNhIThd\nOM1mEq+4LKCzOYxGZFot2sQEn4I3MT403O1WK+POmMXksy9o094Gu+/pal99/xVHC44yZdwUxo0Y\nh1TiPcctVVciNnsP4rtEkV93ZRIXHUrf+P95gcvXbOfCM8Z6vC80KhU5vnPsgSJKBEzBKrojby51\n2NGWZrbKs3Ynx0av9hkJ6sAGJJ3s9IzYYDeRbzHzRFEejl5j/rei+Kvl7L//IcpWfk9LXn6rHnsA\nKCMjKF76JRVr1yILMHwvVaux1dTiNJmo37cPeQBtZtqkJPSpqUhUKoKHDz9hUE17qd22nYNzH6cp\n44jPaw2Cd2NWVpDL+m++5J1H72fdsiUYm7wrtAk+vHO7w05xWTE3/esmyirLeOrVp7wfUBSxNvse\nFvLR1xuwWG08/tqX3PXMR+QUtNbYRIQaCA327P3H9AlM17+tWMKDcAld//ySuJxoS7MCV4HrKEQn\nYukenMa/t27I3zaHXmO3c2dOJjWOjhep6KVn4zSZjufNbbV1GAsLAxqsUrd7Dy6rFcOgdOR6fcA5\n9NIVK2k8dJigIYPpc85svyvni5Z+iTIiguAhg8h9dyHJ1/wbdWxgBUROs5nCz5fSkpvH0Ccf93i2\n23XxmO2ew7AOu528jAOERsVSVVxIfGoa+mD33lU4EqLKG7yeq66hjtcXv85t19xGSJBvL02uacJY\nvdHndW9//hPJcZEkx0eycecRzjltFFHh3gViopNGExHsu50tUOwGbfeE2kUXhtIcBLP3n0lXU12S\nS8Whnxlw9dvI9X9P8Zm/pYdudDr5b35OrzH/m3LMmIsuFy35BVSsXcfBR+ch+tkrHDpqJHW795L5\n7IsceOi/1O3e4/fZHC0t2Jubkem01O3YSfkPP/q9lrW6mqjTp6KMiCDytFMxlZT6vRZA5dp1ZL38\nGsaCQjTxcR6NuUQQsDm8fy8XPT2XXet+Ij/jIJUlhR6NOUC403d+9s2P32T8yPG8vvh1Hpj/AI3N\n3lXKRIfvAliL1c4Nl07H4XSycecRistqfBpziURGeKh3wZ2OwKWQYdYHLuXbfkT0FQU9y5iLIqU5\n+yjeuhR7cw25XzyAy+5ZV+CvzN8uh24XRZ4qzKPA0kEaw72clGS+sABbXT3a5GTkOh0D773Lb0/Y\nUlmFTKNm6NPzAMha8IrfQ1AkCgVh48aijAjHaTZTtW69X+sAxJ49G5fNhkShQBUZibpPYN65IjyM\ntDtvR6ryrl2eIlPh9BL4E0URlUZLWHQMaSNG8+2it7yupzR7b1drbG5EIkg4Y/IZzJgyA4fDgdSL\neptUYcdU79ugv7t0Lbf+60xmTx3Joewi/jnTc9HeMeJSu0ZExhym75YWNV11KZKWTlKB8wNRdFF4\n8Ffqsn49/m+myqMUfPMEfS96AoS/l8/6tzLoIvBqSSF7W9o2UamXnonoclG7bTvhE07xe43Um286\n7qkXf7Wc5pyj6Pun+rWWXK/DafmfRyDT6ajfsxdD+kCfxu/PSBQKdMlJWGvrMJeWYyzwv5VSE9eH\n4q+WYyopJXziKeh8SLV6w2W3U/r1Cortdlx2O/1vv7XVS3dDskLjtSBOEARcLiebf1iJw2736p0r\nAUezd29LQCA8JJw5j81hQMoALj77YsJDPYdcpTLfWhOllXVk5BTTbLQQpNcwuL/vqXdyhZYgbWSn\n951bQ/U4JF1vzLX1VUgbAovydCROl4P8nT/SVLT/hM8acjZTsv494k67sRtO1n38rQz6pxVlvZPT\nTmJcVhulK7+jct16lBHhCDIZYWPH+LWWRKWidvsOqn7ZgCiKxJ1/rt/nkmo0RE2fxpHnXsTR0oKt\nvgHR4fC7ej7rldeRqlRIVUoMgzz3OfuicMkX6FL6EjX9dPI/+Oi3lj3/crsN+w8QPWM64RMn4DCa\nyFu0mP4ehHmipEqvBv3Iru1MnHkOp53/T5xOJ33Th3i8NqYNbV+ZuZlER0Zz9cVXU1RahN3hWR5W\nQMTS4LvvvE9UKLf8aybPvfctCbFhXHn+FDQqz0NjABL6n9rpxtypVmJRd73XqW6uR1aT3+X7esJu\nt5K75RtMVZ7FbKq2fo46NJ6wYWd14cm6l7+NQV9fX8envSpwJy3l36+m7PsfkAcFkTbnVnSp/Tjy\n7At+G3R7QwOW8gr63XwjuERKv/0OXb8UbLV1RJ7mXbHMHc3ZOcTOnkXQoHRstXU0ZWf7XVU+4O47\njv935gsvtQqT+JEOcDS3YOjfH0VYKPoBadh9VJJ7QxMXR9YrryFRKmnJy0frwTsH0CPFjue8977N\nG3A5nZTk5eCw2znt/H8yYZb7FyqD1ellJdi5fyfZedlk52dz9rSzyc7P5qzTPD/A5do6rEbv6Tab\n3cGSVZuRSqTMm3MxR4sqcPkYe6o2RKCR6zpVREaUCJhC1HR1i5rS1IKi0j/xnc7AajGRs3EJtkbf\nmvFFP7yIIjgGfWLXdB10N38Lg55lMvJSaa8KXFfistsp+PhTpCoViZdfGvB64ZMnEnPWTIwFhRx6\n7Ak08XHo0/r7vZ4iNBRtUhKZz72IzGAg6vSpBA0e5HeFetjoUQi/jSaVBxlah7T4SdEXX9F4OANE\nEU2c5+IzXyRcchFZr7yOy2pFEx/XWjHvJ6roKPrffgu1W7ejjonxOqdd6hLx5CPbLBYEiYQr5twH\nwDfvv0nWvt0MGjuBoLA/hskFEcQW78Y3Oy+byWMn02xspqa+hsqaSq/XO8wFXj+H1nnnU8YMZOmq\nLZgtNqxWOzqt99RJQt9JbTLmK39aS2VNDVdccD7qdqZjLOGGLm9Rk1vNqMozu0Ttri0YW5rI3fAR\nDlPbXk5Fl5P85XNJu+otlKF/fd33v7xSXJ3DzkO5OTQ7u1n84G9E7fYd7J1zN5FTTyXuwvM7ZE3p\nbzOyc157k9Rb/4/wU8YRNnYMZStXoYqOaneuGkCm1xM9YzoRkyaijo2lbMVKv4e1yPQ6LBWVHHrs\nidacfFY2ERNP8csY69P605KTg72+AZfV6rdanESpxFZfj8tuJ2LiRNSxMe1eQ3Q6OfT4k1Sv30BL\nTi5SpRKpWoW6TywS2Yn+gEyQMEyi9ehDSmUyfl31DcU5WeQdPgCIyOUK0kaOQa74Y0g7QiKgafBu\n0ONj43nkhUew2W1s3rmZGy6/AZXS/e+CTGnG3HjA59f8y7bDGHRq+kSFUlHTgIhIXHSYx+uDI1II\nNfTxue66zVsoKC5m3+EM3vn4UyLDwkhp4/Q7h0GDRd35QjW/R2a3oy3J6H7hmN9orKsm95fFOK3G\ndt3ncthoyttB6KDpSOTe0yYnO39pD90mijxRkNvbntaFZL38KoIgYdDch6nfsxcAa00tcoMeiUIR\n0Nr1e/ehT+2HKjqK4i+XUbN5K4n/ugxFkPdWIk9IZDJ233w7EVMmEXvObIzFJQGdr/Sbbxn23DOt\nA1ESE2nKyvbrBaF267YOUYsr/nJZa8valEnkvrsQdWx0u/vQjfkFrVlsiQREF7aGBhwmM+ETJ7i9\nvp9C7TONfNO85yg+moXNaiVl0FD2bV6PRneihGy43Xvhl9liZv3W9dzy71uIDI8kMjwSuczzi48g\n+P75fv7dZgRB4NWPVjMiPQlBELjveu/1FbHxI2lLwXlFdTVnnX46TqeL88+cQW5h26KGokyGSa+g\nK0PtEqejVQXO2TOenbXlhRRt/hzRT714a10J+cvn0u+yFxAkf12z95f9yo5VtGea2vc210tgpN58\n03HDXbVhI7nvvk/joQwG/fdBlBERAa0dPGwopsIijsx/nj7nnYMupS/2pma/Q9ISpQLDoHRCx4wm\n992FNBw40GqE/QzlSzVqcDpxms1Ub/qVsHH+5felajXmkrKA1eKs1dUkXPJPgON96O016Lp+KQx+\nfG6rslptLZaKShzNLR4jIslyNR7j7b8jvt//XnSy9+5m+MSpJ1yjMNu8tqt9vPxj0lLSyMjJ4JNv\nPuHi2RczboR7HX1B6sTckOf1TDkF5aiUcmZPHUGz0YxBr+Hmy2d4vScyYQTSNtgYl8vFZeedy9GC\nAvYcOsjugwdZ8Oh/fd8ImCJ0iF1pzF0iurIcsJu6bE/PiJTnZ1C+a0XAKzUX7qPohwUkzr4XukBj\nvzv4yxr0r6sr+bm3or3LOWbMG/YfoDn7KLFnzSTh4n8i8zFqsy0IEgmxZ59Fn98q0hsPHT4eBfAX\ndUw0coOBlOuupWbbNqRy/8U64s47F2NhEbGzZqKMCPc7IhE6ehTm0jKyXnr1f2pxftChfeiCgCIk\n5A9a+O6IkrTv++d0Otx+z9WCgMOH3GtldSWXnXcZp447lSsuuMLrtQpVDdYm728a67YdIlivJTUp\nhv/e8g+sNu/XCxIpkeH9W0fceuHjZcupa2jgvBkzSE1O5sFbb0GpUBBsMHi9D8AWosch6cL8tSii\nq8hFsHR/a68oihQf2UbN4V86bM3a/d+jikgkauwlHbZmT+Iv2XW/r7mJ98sDC5/24j+2ujoq1qxl\nwN1zkCgU2BobyX71jQ5ZW5DJaDycwcFHHqVqwyZSbrwegNJvv/Nrvbjzz8Xe2Mihx59EIpVR9MVX\nGAuL/FpLERZK5c/rKPj4U/bd+yD5iz/yax2APuedQ/rDD9Dn3LP9jkBoEuIpXbmKzBdfxtbQ6HfV\nvdNi4dBjT7DzhpsRnU6v32utDw33P1Nw5DDJAwad8O/RPrxeURQZmDqQuS/M5anXnuLIUS/68iJY\nW3zrtl95/hTMVhsPvfg5ezPyUfqoW4hLmdgmERmNWsW7n35GVl7u8bPHRvke9+lSKTFruvYRra8q\nRjB2vyPkcjrJ2/1ThxrzY5Ste5eW4oMdvm5P4C/nodfY7TxblN87CrUbUYSGMuDeu9hzx90kXHwR\nlT//giCT4TCakGkDH3EoValIf+h+7I1NHH3zHXR9kwnzc2SpIJNRvelXBj3yAIrQUBRhoTRnZfmc\nJuYOiUJB/EX/QBXd+rDOfOElRKcTwYtqmTscLS2UfPMtttparNU1hE84hZizZrb7PB2RQwdoPJRB\nzMwzaThwAEEqxZhf4PFaidP9y8cPn35AUlo6A0f/8eekDw4hNvlEwRu9zeG1Xa2iuoIgfRAP3/Yw\nANV1ntXLFJoWWmq8D+BZvXEfRWU1XDBjLJedrSGnoMzr9TKFmmBdTJtGr363dh2/fLmUD7/4is++\nXkF4aCgvzn3E+00SCaZQDW1KzncQutoKJE3d39rrcDjI3bYCY3lWp6wvupwUrHiCAde+i0zj//Cj\nnshfyqDbRZFnivJo6K1o7xHoUlKQBwVhLCxEqlR2iDFvXbcvWQtewWW3k3j5pSgjI5C002j+nsjT\nTiXrpVdRhIViKa9g8KM+HrZeOGbMAVJuvA57QyOWykoM6QPbvMYJ8q/rfQ8RcUdH5NABdH2TyHr5\nNRAECj7+zKNgjlKQYPUwkKUg8zCVxYXs+PlHLptzH4rfcvCRcSe+OAki4EUdrqmlidcXv87UU6by\n3NvPcd6M85g42nMbncvlvfhsb0YBNrsDp8uFXC5j96FcJoz0XsyYkHpqm+eoPzLnNv773Au88+wz\nmC0WlG1IxVjC9DiFrjPmmsY6pHXd39prs1o4+utSLHWdq0hna6qicOUzpFz8NLQzqtST+Uu1rS0q\nL2VjY2CjMHvpOELHjCLj6flETp5E3/9c07Frjx5F5JTJyIMMmEvLqNq4ye+WM0VICGHjxmJI60/k\n5EmU/7iGws+WIEilaNvYVnSMul27yVv0IRU//kT9rj0EDx2MRKFE3oZ86TEEqRRlWCgSmQxbfQMV\nP60l6rSp7fyqWlv9arfvoDkzC1NxCdHTTkfSzhqBxsMZyLQaQkePQnQ40SYnEjllsttr01Va4jix\nLchqMZO9bw9X3f8oCqWShU89QnRCImHR7l8uogRQN3o26Fl5WWhUGmafPpvpk6bz6TefMnms+zNJ\nZQ4sjbu9fo37jxSg16mpb2xhUGo8v2w7zKjBfT1er9SGERPp+wVt+969PP/WOzQbjdQ3NlJeWcXY\n4cMQfKRQHDoNZm3XGRlVSxOKyuwu288TZlMLOb98iK2pqkv2s9aXIsiV6OKHdsl+XcFfxkPf3FjP\nch+iEr10LYJEwshXFiC6XGS+sABrVQ3ykGDS7ppzvK/cX0xFxRyZ/zz6tP6EjR1Nc3YOosvltzBM\nU2Ym+YsWo46NRapWE3fh+X4NWNEmJTHgnjuRqlSITif2piYUIb7Hef6ZzBcW4DRbUEVH0++m69t9\nP0DJ1yuInT0LQS5HkxDf7hy66HLRlHGEgk8+w1xWhioyCofRiD4lBUVY6AnXJ8nV4KbLqaGmminn\nXABA+pjxpAweyqqPF9J/2Ci3+4Y6vCfMBqUO4svvvuTI0SM4HA5Om3Cax2ulynJ8TYieNmEIDy/4\nHFEUef69Fdx7nfc2tcR+bRORGTdiBMPS08nIzkGtUvHtmp84bcIpJCfEe7xHlEkxBynpqlC7wmxC\nWZFFV6vP/ZnmhlryNnyM09a1lfXl6xeijR2MPnFYl+7bWfwlDHqZ1cJLJd0fLurFPZVr16Hv1w+p\nWk3UaVOp/OlnYs8OTF9Zl9KXoMGDSLnxOup27EQQBGx19SjDPQuAeEObEE/UtNOPC+FkPr/AL4Ou\nDA+jYs1aqjZsRCKTEXn6VCJPndLudWJmnknRF18RPmE8TUcyUUVGIrgRcvGGJq4PwcOHtdsrP4Yg\nkRD/z39grall2DNPApC38APkwe77/iME9/v88OkHZOzcRkRsHDGJSQwYOZaZl1/tcV+FyXO7msVq\nYdkPyxicNpjRw0YTbAgmLNjTz1zE2uhZ6xtg064j/LzlILddOYvwED1KpRyJFw86KCwRpeA7ZL56\n/XqWrFjJ5eefx4xTpzByyGBSEhPZtGOHV4NuDjfg6iJjLrNZUZdpVTkHAAAgAElEQVRltjl10FnU\nV5VSsOlTxG4QsBFFFwXfPsHAa99Fpj3xJfVk46SvcreKLp4uzMPYhpnJvXQPErkcdVwchoEDyF34\nAZq4OExFxQGvGzQoHWt1DYrQUFx2OyXLv/Z7prk8KIi6XXso/3ENB+c+TujY0X6fq3rzFoY+NY/B\nj8/1y5gDlH2/mkGPPEjluvUIUhmNGV6quD3gstk58NBcDj3+JBnzn/PrHK3rWClb9QMN+w7QnO1Z\n01uD+zDxFXc8wKip00kfPY7TL7yUlsZ6qsvcd6FoAIfRc7vaJ19/wqDUQfRN6MuCdxegUnhWCFRo\nG7FbWzx+3mKysPNgLhfNOoV3lvzEk28up77R8/UAsQnetQVe/+BDdh04wI69+3nv+Wc5nJ3N9ffe\nT1NzCwNT+3HpeZ69f1uwDntbmto7AInD3ioc42qDaEAnUlmUTf6GD7vFmB/D3lxDwbdPg3jy25CT\nPof+XnkJ25oau/sYvXhBk5hAwYcfE3feuThajBQt+QJLVSVhY8f4HSIH0PVNxlpTQ9HnS0m7+07k\nBj01W7f5lUsXpFJCRgzD3thE9IwzsNXU4jSZKP/hR4KHtS/HZikvx1pdTf3uvZR+vYLgoUPaLU3r\nslhoPHQYY0EhxsJCIqdMbncvf+iY0UTPmE7k1ClETPJcNOZznbFjsFZWYiouIeGyi5HrT1R1Axgn\nM+BwIxMnlckYNOYU6qur+Oqtl/n3PY8QHB7pdo0EEWRe+s9XrFnBzKkzSUlMwWQ2odPpCA324Fm5\njuCwNntcq7i8huq6JmZMGsak0QM4WljOuq2HOG38iW10ABFxQzBovIsjDU0fyPufL2Hrnj1cMHMm\nU08Zz8ghgwkJCkKr0Xic0+5SKjAFd40sqcTlQleahdCdwjGiSEn2Hir2rOy+M/wOa0MZSOXoE07u\n0PtJbdB3NDXyTlngnl4vnYsgCERMmsjRt99FERLCwPvvQa7XU7t1u98jRo/RsP8AhoED0fVNounI\nEexNTQT5OXLUYTRS/OUy6nbuQh0bS/DwYX6F3W01tVgrqzCkD2gVhRFot8iMo7kZY34h+tQUYmfP\n8kuHvey779H3T6V05SqM+QXo/ZiHXr1pM6LTiTI8HIlM6nFmvEYiJV3QnvDvWft289r9cyjIPIwg\nkTDm9BlEJ3oe4RpvcSBa3HuNoihS21DLx8s/5vtfvqfF2MIFZ17gtshMprRibtjn9WsLDdKxfX8O\n367dxbpth7lgxlgKS6vdVrgLgkBSv1PxNRvlrY8/IfNoLpPGjOHNDz9CIZczdvhwJN5eXAUBY2QX\nDV4RXejLjnarcIwouijYv4HaI+u77QzuaCnajy5+KMrg9v+t9RROWoNe57Dz37wcLN2c/+mljQgC\n4ePGEjQoHXNxMdmvvI5UrcIwcEBABXKa+DjyP/qE8u9+wGk2k3zVlTiamin77nuC2tEqBiBVKAib\nMJ7o6acjUSopW/Ed+tSUdhtjdZ9Yqn/9lbrtOyhZ/g3m8vJ2j3mVqlQ4rVZ0/VLIfvl1BEFAl+K5\n8tod5T+sRp+aSsWatVgqKgkbN6ZdPfG1O3ZSt3MXtdu205xzFHN5BabiErff1yEqPbGim++TKOJ0\n2KkoLKC6tJiWpgYMwaGERJzooQuIRDaYET2IwTe1NFFQXMCs02Yxa+osauprWP7DcrdFcVJFIXZT\njc+vcfTgFCaOGsDUcYOorG4gOT6S6IgTe5Pj+k1EI3cfmThGZXUN2Xl5PH73XfyyZQuTxowhKiKC\nhD7eB7dYwg3Yu6SaSURfWYikG4VjnE4nudtX0Viwp9vO4BmR5vxdhA2ajkTRMS22Xc1JWRQnAi8V\nF/b2m59sCALl36+mfu8+hjz5OFKViqwFr5D+8AP+LymTMeiRBwEwl5aR+fwCLFXVflWGCzIZotXG\n/sceQR0TQ/QZ05Dp2i9Z+2eBmayXXm33Gta6WhwtLVRv+pUBd99BydffED1jervWsDe3kLngZRIv\nv/S3XHz7WqEaDx0m8fJLqFq/kZBRI9HE9eHoW++4vTZepnJb4a5Qqjj3mpuO/39FUYHH/aKR4nJ4\nfkF/48M3GDdiHHsO7SEyLJLLzrvM7TAWiSBibvBeDPeHM8pbH4P1TUZOHXtidEcqUxJsiPMp8bpw\nyRLyioq48V9XcOs1V/Pcm29zybnneL3HoVVhVXaNrriupgxJc9e0hLnDbrNydMsyzNUF3XYGX9hb\nasle+TwDL30aQTj5SsxOSoO+orqSXc29efOTkegzzyDmrJm4bDZy31sU0Ezz35Px1HzsjU0kXfUv\nardu81tHvfHwYSKnTiHmzNahHLbaOrctWr6Q6XXU7thJ44GDmEraL0OsTUgg9+33cfwWddAktF+5\nbsDdd2CpqMRSWUnIkPbPehekUjLmP4+psIjm3FyUoaEowtxXlId7mGC15NXnueGx+cf/PzohyeN+\nIQ7vL+hSqZSKqgrOOv0s3l/yPqdPON3tdTJNNZaW9k0Ja2oxk1NY4dagJ/Sf0iaJ14duu5UVP65h\n+qWXk5aSwpP33eP1elEqxRyspita1LT1NUjru08O22I2cnTD59i68YWiLbQoYtm8dClWTQojzvOv\nXbQ7OekMep7ZxKKKzlUR6qXzOCYdmv3qGyT9+wpCRgzvkHX1/VOJnjkDuV6PsaAAU3FJu0VhoFWw\nJmvByzRnZmGprEbXL4W+117V7nXq9+zDVl9P5NRTUcfFUbdzF6Fj2l45L8hkDHnyMRChbOUqlKHt\n72WXqtVok5Oo3b7DL28j+aorAajeuAlTYTGGwekeleY0ogTLnwyTqaWZuqoKasrLCI/xrVAn99Ku\ntmjpIpLikvhy1ZdUVFcQGxXrMS9tN7mfqnYop5gQg5Y+USe+oC1fs50Lzxh7wr8rNcHolCFe+84d\nDgfPv/0OTqeL//v3v5g2aSKPv/QyCz9fyr3/d6PH+8zh+i5pUVM1NyCraXvEoqMxNjVwdMPHOC2e\nCxS7G1Eip6hRQ+7uNQBsfH8eyaOnE9zHc71HT+SkMug2UeS54gLsbRB16KXnou4Ty/AX5tN0JJO9\nd92HXK8jfOKEdoeUf0/o2DFkPDUfiVyOIiyUtDm34TCaqN22jahp7j05dwgSCWHjx6OOjUEdG0P1\nps00ZWa1u3I+YnJrVbnocGAsLKQpM7tdBh3+V0jnaGnB6WPylzestbUkHs2HSy7y635LVTWCXO71\n5ctd11HO/j1EJybzzftvUFNeilqrY9TU6Uyaff4J1+oEAYfRvVfd2NxIUVkRc+fM5expZ2Mym4gI\nc19tLlcZMda6z50v+W3WuQBc/Y+p9IkKY9+RfMYNSyUi1EBo8InplYR+k32KyLyy8APOPPVUBEHg\nmrvuYelbb/D8Iw/T3OJ5dLM9SItd1vnPMaXJiLIbVeAaaioo2PQJLkfPmKvuDpsiggP7smmq+p+j\naLeaWf3ibVzy4rcnVej9pDLoH1eUUWgxd/cxegmQY4aq4KNPGTb/SSQKBRlPPxuQQdcmJjD06SfA\n5aIpM4uDjz1B/EUXEjRkcLvX0vfvx9E33gaJBHVMDE6jsd0G3WWzkfHUfAS5nOBhQ0m84tJ2n+MY\nUq0W6bJv4B8nGsK2UjwwjfbXuLdSv2cv45VqPDU5GaRybM4TPc2jh/ZzwXW3EBTWOnLVYjJSW+F+\n+Ien6Wrrt65n5OCRxEbGMuexOQzoN4CLZ1/s+bCi566Xc6eNZuzQfpRU1LJ42XqO5JVy//XnATB7\n6ondDLqQeFQS7+2GTqeTmro69DotqcnJnHPGdHILCxmcloZed2LVP4BLIcesk9PZ6mxyqwVVeWab\nVO06g5rSfIq2Lu124RpPiAhUO6M5/NPPiG7OWHJoG3u/eZeRF9zk5u6eyUlj0I8YW1hWXdHdx+h5\niCJN2TnINBo08XFdsqWlqgqn2eLXRLLfIw8OQpBIqFz3C0gELOUVSLWadume/x6nycThJ55Gn9af\nAffc6bFf2hfK0FDSH37g+IvH4XlPHZ/B3lYkCgWDH58LQMmybzjyzHN+F/+poqPIU8iJ9uvuwLFU\nVFJyy014qiRIU6jdpoH/cePtALz7+IP0TR/C9H9eTp++/dyuobHYTpiu5nA42LRzE1NPmcoNV9wA\nwNGCozg8FMNKZA5MDfkev46xQ1v3josO48GbLmDe618xdIDntExc0liPNvdgZibllVXsPniQe//v\nRm59ZC7BBgMyqZTrLvP+8mYO0yF2cqhdZrejKct0HzrpdETKcg9Ssce/kcZdgUMeTGZuHVV5P3m9\nbuOiJ0kecwYhcf6+DnctJ4VBt4ouFpQU9o5E/RNOk4n9Dz6CIX3gb/Kegl/53vZQu30H2a++Qeio\nkaTdNSegtRIuvoiMZ55D1zcZVUQEe+++j7gLzyf+ogv9Wk+m0zHkyceRyOXU7thJ2bffkXTlFe0u\nvBNkMmzV1ZT/8CMNBw8jSCXY6upQhPonDRk0OB1x2dd+3Qugjo7CXNF9cwrMFRWooz2/TiTIVeBZ\nC4bGmmqEcvd5bWiVqxSbT1xg8+7NZB7NZNW6VUybOA2VUkW/JPcvBAAyZSWWxhPVvhwOJ28v+Yns\n/HJGpCfxr/OmIJdJufs/nivQw2MGIhc9h1pTk5O5/6ln6BMdjVQq5dPXXmF/RgbDB7kXpTmGNcyA\nQ9K5xlzidKItywKHlx9KJyGKLooOb+txPebHEaFJHsv+X3/FbvYtrOOwWlj9wm1cumAlgqTnT2U7\nKZIDH5eXU2L1PH3p70r262+RfPW/6Xfj9fS99mpkOi2NhzM6ZzNRJPfdhVRt2ETQ4EH0vS7w6Wm6\nfilEz5hO6cpVaBMTOeWzj3BZrbTkefayfCGRy8l8YQGmomIGzX3Y7yp6W0MjoWPHMPz5Zxj61Dzy\nF3/s95n0af05kpODy+ZfHlEVFY2lsvuiU5aKyj+Mhf0zoR403AGsZhN7f13PtNs9j6SNQcDlJmS/\naccm3nzqTVwuFw/Of5AH5j9ARo77329RFLE0HXX72aKvfuHUMem8/PBVxEWHcf9znwBg0HkYViMI\nRMUM8XheAJVSycrFi7jj+v9ww30PcM1d9+DwIT/t1KiwqDq3RU0QRXRlOWDznL/vLFwuJ3m71vRY\nY+6SKslv1LFr7Zo2GfNjlGbsYM/Xb3fiyTqOHu+hHzG2sLymN9TuDntD4x8KlWJmnIEg75wfac6b\n76Dr15fgYUOw1tRgb2ikdMV3yIODWtXQ/MCYX0BTZhaxZ80kfMJ4nCYT9fsOEDN7FtCah/an/cxp\nsRJ/0YU4LRaKPv8Cw6CBBA/1/oD+M/rUfiCKNOw7QNkPqz0qpLWVkOHDqN+3v90CMwASpQKpWo29\nodHjYJTOwlZb15oa8dLDrhYlmE8ImLeSuWcnA0Z6/5qD7e491qnjpxKkD+Kc6edwzvRzaGxuxOTh\nQazUNtFSfWIVdXVdEyaLlSFpremhMyYOZefBXEwWKxqVe0Gj2KSxSDyI2xzjtQ8Ws/vAQc45YzpL\n33oDo8mEVuNZjESUCJiCVXRq3lwU0ZXnIVi6vqXX4bBxdMsKTJWetf67E4siiv27DmKs869tbtMH\nT5M8dgah8YE9BzqbHu2hW0UXLxX3hto9oeuXQuOhw8f/X2bQk7dwMS1HO75FJfWWm4g5cwbFX31N\nw/6DVPy0luqNm3BZ/I+caJOTSL7qSmJnn0Xmiy9z5NkXSLn+WqQqFdmvvUnBJ5/5tW7c+eey4z83\ncnjeU60vIe005scoWvIlTVlZ9LvhuuOjUP0lePhQGvYd8Pt+dVQU5squD7v7CrcDOLyIwWTu3cWA\nEd6r+2Um979Dk8ZMoqm5ic++bf09CNIHERPpXpbTZStw++82u4OKmgaefXcFlTWthk4qETwac4lU\nQWhIktfzVlbXIJfJWPjCc2QePcoXK7/zaswBLOFBnS7tqq8uQWL0rY7X0VitZrJ++bRHGnNREKi0\nR7Llp3V+G3MAh83K6hduQ3T17AEuPdqgf1pRRrGtN9TuieSrr6Rm63bKV68h9933yXzuReLOP4fC\nz5d22p7Dn3+GxMsuoX7vPvrPuZX4f/4j4DUVYaEM+u9DDH58LqaSEnbfMgeXxXK8D7q9GNIHkv7Q\n/Qx58nGstXXsuO4mnOb2d0ckXHYxCZf8E0VYKA1792Eu9l+YI3jYMBr27/f7flV0NJaKro9UWSor\nUUV5DreHSxXYnZ4NVdaenaR58dANgoDD5Lklr6C0gL0H93o9o0xhw9Tovrq9T1Qo8++5gotmjueN\nT1Yz9+WlhIV4LrqM7z/Jp4jMwiVL2HXgABKJhFuvuZr9Pibh2Q1abPLONebaukokjWWduoc7TMYm\nsn7+AGuD++6F7sQhD+VQnpXDm9d1SKV/2ZFd7PrqzQ44WefRYw16vtnE8pqerSrU3QgSCSnXX0v0\nGdMwFhYx4N67KPh0id/zr9tCU2YWOW++w9CnnkAeFNQ6vMOHwldbyXr5VWx19Yx57y1iZ8+i6Iuv\n/FpHkEhwms3sv/8hEEUG3n8Pue9/ENDZIk+bSuNTz/p9f8iIYdTvDcSgR2HphsI4X/nz/krvnqmv\nkHuUj9D2e5+9hybM+x6CzL3Q1OGcYu579hNufux9fty0j0du+Qc3XDqdS8+a4PZ6ucqAQR3ucR+b\n3c4TL79Kc4uRKePGMf3Sy3nwmWe5+0bPimIuhQyzvvP+HgHUTXXIags6dQ93NNXXkP3T+ziMDV2+\nt1dEaJT0YcvGHVQXdmwP/q8fPkNtYVaHrtmR9EiD7gLeKCvG2Ssg0yYEqZSoaaeT/eobmEvLSL3t\nZgDETpgRr++fyvDnnqZmy1byFi3GabGQ80bHFIykzbmN+IsuxNHSQtGXy45PYvPnhcEwII3hz88n\nZtaZCFIp1prAQpHRM6aTceSI3/PWZVotqugoWnI9V3t7o6ca9D4yz4N1CjIziElKRqnyUHwGaMye\nf7Y2u40N2zbw+E2PezmhC4sb3XZRFPly9Tbm33cFbz52HQNT4pj3+lfERYeh07rvLU/sPxm8vGC8\n9dHHXHreOYiiyAUzZ/LoXXei1ahZ6CUiZg7TI3Zi0lBpbEJR6b4YsDOpqygmd91CXPaeFUF1ydQc\nrVWze92PODqhkNppt7F6we09NvTeIw36mroaDhtbuvsYJxVRp08lYvJEhj/3NDKtluzX3iTr5df8\nrqz2hCCRgCBQs2Urgx99hOgzpmGtq+ugxQVqt27nyLMv0PfaqwkZPoyW3DwKP1/abkMqyGSYioo4\n+Og8ylZ+R8TEUyj+cllAx4s5aybl36/2+/5jhXH+oIqKwtINOXRfBj1E8FyEmbV3J2kjPHvnMgSc\nzZ5TId+t/Y6zp5/t9XwKbR1ON0alqcVMRIgByW+jVU8bPwiZVILowUnQBsWglniPBLQYjfyyZSsT\nRo8iIyebiqoqnn/kYW668l9ur7eG6ju1RU1hMaMqz6azBWr+iEhFYSYFmz7ucUbNLI9m+648ig7t\n7NR9yo/s5tCPn3fqHv7S4wx6o8PBB+W9Wu3+EDp6FFKNhqyXX0WbmEDipReT9fJrnbKXMjyc6k2/\nkvnCAoIHD6L8xzU0HDgY8LrBw4cy9Kl5uGw29t37AM3ZOSRdeYXPSVfukBkMDLzvHvrPuY2IyZOo\n2+M9F+uL2LNmUhaAQQ8ePowGfw16N3no5soK1FGei+JULs+PEJ/hdvA4KhXgu5+/4+xp3g26w+w+\n4hGk15BXXMnejAKgtThOEAS3s9MB4pNP8brP4exsbrn6Kr5f9wvfrf2Zr1Z9zz/Oau3GcKcI51Qr\nsag77/Eqs9lQlx0BseuMqiiKFGfupGzH8i7bsy2ISCmzRrD1p7WYG7pmNOymD57E0tLDUg30wLa1\n9ytKaeodi+o3NVu2EjJ8OJFTp9B4OIOWo7kUf7Wc2HNmBzR3/M/0u/lGqn7ZQOzssyj7fjUuuw1j\nbj5Stbq15ctPpGo15d+vpvFwBoPmPoxEoSDnjbeRyOWk3PCfdq2lCA7G3tRE7nuLaMnLI3LyxIAE\nYsInTmD//Q9jb272S4UuZPhQct9b5Nfe6uhozN1SFFeFKurE2eUAAuDwUhCXuXcXl825z+PnIXan\nR9+yvrGeI0ePMGGU+3w3gFxlxljruc7mzmtm89pHq1n01Tq0GiU3XTrD7XWhUf2R4100ZNmqH5h7\n5xy+WfgeDocDmczzo1OUCJhC1HSW5yxxOtCWZYLTf33/9uJyuSjY/wsNR7d32Z5twS4P43BGMXWl\n/ten+IOpoYYtHz3P6Tc/1aX7+qJHGfSDLc2srev6tou/EuETWj2Nhv0HKF72NaNef5mmjExKV6wk\n/h8XtHsmtickcjnRM6aT88bbRE6dQuiokYgOBzWbtyDTajxO5WoLMbPOJOasmVRt2Ejpiu+Iv/gf\nqGPctyv5wlZXT8SkCaRcfy2HHp2HIJMHpBl/LOyecMk/232vJiEBR1MTtoYGFMHB7bpXFRWJpbLr\ni0S9hdyjpSrsbgRhABpqqrBZLETGeZYHlrZYPU5Xa4t3Dp512wEOHS1BpZTz7H1XeL0ups9wj7lz\nl8vF6vUb2LBtG03N/8Gg13k15gCWMEOntahJXC50pdlg77qZFk6Hndydq2gp6STRKj8QgQYhlgO/\nrMfZTYNf9n77PkNmXU5Esnd1wK6kx4TcHaLIG2Xe/0B7aTuWykoGP9qqzlW4ZCmhI4az65bbKV+9\npkP3Sb3lJkJHjaTxcAbZr7+Jrn8q+R98FFjluyCQ9fKrmMvKiTp9KmXfrvIYKvWFNinxeHFd2p1z\nyH50nv/novVlo/yHH/2+P3jEMBr8qHYXpDISx9yArbDrRlBaqqpQRUSAh+99P5XnwSW+wu1BAjgs\nnj1MXwZdkDow1XsvMJz32pekjfI+aS86aYxHEZmPly3ntQ8Wk56ayivzHuP6++7n2zXetb8dBg22\n9mshtQ3Rha48F8Hadb8DNpuZrE1Le5Qxd0l1ZFfK2fvLmm4z5gCiy8m6Nx/2Kx3YWfQYg76qtrp3\nkloHEj3jDESHk4OPPEb8RReS89a7pFx3LXKDPuDiMHfkLVxMynXXkv/BRyAIOLyMjmwLaXNuQ6bR\n4LRYGPr0PDQJ8dgCLL6TBwcRNntWQF9/yIjhmMvL/c5nhwwbRr0//egOgbD407CVtP9hflVuPldm\ntr/VxlpegcZbhbvUi0H3ISgT5SX1W1JeQm19LcPSh3m8Rq6qRvQyeOTz7zZzzmmjuHyS5zY0iURG\neGhfj58HGwy8++lnZOXlMjgtjSfuvZtgL4ODRJkUk76zrDnoK4sRTB1UgNoGzCYjWes+wlJT1GV7\n+sIoj2X7jixKjwRWD9NRFO//laxNK7r7GMfpEQa9yeng08qeJ0xwsiPIZfS97hqKln5JyIjhhI4e\nhTIsDFtDI6aijo2GRE07jdIVK7E3N2MYkBa4RKkgIMikaBMTsNbUkvHUfMp/9O4dtYWU6/9D7nsL\nA1ojkOI4vxXj5CIV5g8xmTPbdZsgigytqWVizlGEdrSBTly7jlfnPc035eWMX7/B7TXB3irc9+wi\nbaRng64OwDtHFLE2e2/Vem/pWq6/xHtqJS7VvYiMyWxm0ZIvOOeM6exZ/T0HMjK56o67eOeTz5gy\nfpzH9UwRndeipqspR9LcdTUULY11ZP+8EHtz1xSZ+UIUZJSYQtn+0xrMzfXdfZw/sP7dR7GZe0ZX\nVo8w6J9UltPcWwjX4QgSCbXbd5B25+2YS0sp/PRzjr77PomXX0rOW+906F6xs2chDwoi8dKLibuw\ndW53/of+DzRpXfMsqjb+SsYzz9L32quJnT0r4DyyKiqSsLFjKF25yu81YmaeSflq/8LuIcOHYS1s\n8ateSt0nhpRt7WvJEQWB+8eO4tazz0JsY9oitKaWixctRmMxE2mxcsnCxQTVnfgQ9SR+Jrpc5Bzc\nS/9ho9x+LhPB2ey5R9iXQVdomrGbPeuVf/3TDiaPHkh4iOfCRblCS5DWfbHfvJde4bQJpyCKIjv2\n7uPqiy/i7flP8/wjD3lczxaixyHpHGOuaahBWt91XnJDTTk5Py/EaekZRsqmiGBvZh3ZOzZ291Hc\n0lxdxvbPX+7uYwA9wKAXmM2sqq3u7mP8ZUm68grUsbGk3TmH0NGjGP78fBoPHSL8N0/DWNj6oOgI\ntbfYs88ieNhQAJxmM9aqwH+u/W+9mREvPIsqJppDj84j/8OPac4KTP0p5Yb/kPuu/166Pq0/ot1B\nS54fIjGCQOzsmdTt2tXuWyVKFbv13nul3eEQBBztqEEIqqtDAJxmC3aNBqnTiaHpjwZUAOx29wbs\n4I4tnP3v6zyuHysIHtvVsvKykEqkXsekuhzejdu7S9Zyw6XevfOE/qd6LISrrKkhPjaGq++8m583\nb+bim25GEAQkEvePS5dKiVnTOY9SVUsj8uqOn83gieqSXPJ+WYzYhRX0HhGhVoxhy8+baCjvOWF/\nd+xa9ib1JV33c/JEtxp0F/BeRQmuXkW4TkeiVKBP648gkRwPje9/8BFqt2zDXF7B/gf/67cK2u9p\n2HeAjKefZe/d92MsKibjqfn+Gb7fnfvo2+/hsttRhIYy4K45VG/eEtAZNQkJGAb0p2LNWr/XCKg4\nTmPB5sbj9UVXVboXpfSlNCEel92ORC6jMKUvJQl/rFaPk6lwejCITbU1qLU6j+sb7J4T6Kt+XsXs\naZ6n90nlNkyNhR4//2HDXoYOSKRPlOfWRLUhCo3c8/n6903mrH9fzb8uvIDH7rqTkUOG4PD0wiuR\nYApt/0tWW1CaTSgrOla61DMipTn7Kd66lK4VqnGPU2bgSJnA/g0/4ToJordOu41f3vlvh2jGB0K3\nGvQdjQ3safZ/glUv7SNv0WIynpqPIJMRPHgww555kohTJ5H14ksMeviBVhW4AAkePpT0h+5H1zeJ\n4c89Tf85t2KtrsFhbPv84T8TfcY08t5b1GrMJBKkCkVAg6Y3LXkAACAASURBVFIg8Fx6IKpx+gED\nsCz6sN33dZW4jFMq5dW5D/NiWCgfX3gBrz/8AOKffjdSvWi4b1r5NbJ6z/leSbPV42cr167knOnn\nePxcKi/3+tB8d+labvCRO0/oO8HrGheffTazTjuNM6ZMZv3WbYQGB6HTnigeA2AJ0+MUOr7KWWaz\noCo7AmLnV1CLoouCA79Suc//NFRHYpT3YduWg5TnBC5U1ZXkbV9D3o6O7SJqL93Why7iIq+5AIkg\n9HroXUTfa69GdDqP96KbiorJfu0NBj36iF9CKd5QRUVjqaxiz+13knLjdWS99AoD770bibL9VcC6\nfilEOhxETJmEIJFgqa6hfu9e1PFxfp9P3z8VVXQ01Rs3ETFlcrvv18T1QRESQsPBQwQPGdyue0OG\nD+VwVRVJ7dyzK8VlzBoNP5jNjJ89C5Wb9rRoqRJPTeSZe3dy27PuoyihgoDT6j6cu+fQHmIiYzyO\nSBUQ3eq2H2PdtkMkxkaQkuC5Mj84IgWFj8feph07qKpt1cNoMRp56LZb3V7n0GmwdkJRu9RhR1ua\nCV6q+DsKp8tB/s4faSrqWmEWd4gSBUWNanJ3+98W2p3I5BqatpsQR4kIMv/abAOl2zx0u+kws6U/\nsyD8COO0PUrf5i/N74Vlir5cxuDH5gKQ+eLLZL38Ko6WjimESbryckqWf8Pot1+nOecowUOH0JLb\n+jAuXbGy3Tl7w4A0gga3Cjik3Xk7VW+8Q1M359LPO3MGV85/nrTfzaRvC4rQUGRaDaZ2Rhm6Wv7V\nm6hMkOBeoKgsPxdDaBi6IPfCOREOzy/vO9es4JZLrvX4uVxTj8PuOdLTltx5bPwIr5/vOnCANxZ/\nhCq8tWDu7OnT3GogiDIp5qCOU148hsTlRFuaBQ7PUYyOwm63kbNpWY8w5lZ5JLsPVpC7e3N3H8UP\nBEaPvYdzx/yINn8ATTu6TxK2ewy66MDasg2AaCq4U7OWeRHFpKo7d8zgyUpLXn6nTE4bcPcdyLQa\nDs97mrgLziP5qivJW7gY6JgiOX1af0wlpcScOYPqTZtRx8dz6NF5SNVqBB9qW75Iee0lDj7yaEBr\nBA8ZjFSjoXb7jnbfK7hc3LB+AxOLS7jsnffb1RIG/g1qEaRSFCHBWGs6v5XIm+QrgMzl3gPxJSij\nsngWAskxGYmOT/b4udNa4PGzLXuyCDZoSe/nOWoTmTACqYdzH+OqO+7iw5cX8Oh113i9zhxuwEUH\nh8NFF7qyowi2wDQc2oLVYibrl08wVXVzIZcoUOWMZsva9TRVd/0890BJTb+YC6auo4/xPJy/1Y3W\nra1FtHVP1LlbDLrNdACX84+58/7kMk+3ljvD6olS9HrsxzCVlHLk2ec59Oi8DvOef4/TbEYVHYWu\nbzKO5mZcdhsuq42Dc+dhLgvsDyx29iyajmSijIig343XcejReSRfcxXRM6b75aX/Hn3/VMLGjaXg\n408DOuNxL72df3+iREL5oHQkFgs5alWbW8KO4e+glq6aumapqEAV7Xkoi93u3phl7t3JAA8T1hQC\nOD3kzzfv2kx9Yz07C9y35cmUFsxNnn8f31mylhu9eOeCREpkeH+PnwM89+bbnD19Gun9U71eZwvW\nYZd2dG5bRF9RgGDufO/O2NxI1s8LsTV2/WyA3+OUB3Oo2MGhTWsRu6BWoCOJjRvHuWd8T7pwG67q\nP9orR72dhm313VJb2OWWUxRtWFrce0QCIuMk+xkZJONnx2i+bNJg9KAV/XfAYTSx9467GfbcM8h0\nWrJfeZ30hx/o0D2kajVyvY7MF17CXFrGwAfuY/ftdxB56pSA9NiPkXzVlZjLyyn8fClDn56H6HRx\n6NF5hE+cELCXPuCeO/l5yun/z955h0dRrn34nu2b3fReCIGQ0HsR6SAoYEFRUazHXo69d7F3sR4V\n7GDBo6jYOPTea2gJJCEkIb1vbzPfH9Rkd5PsZjeAn/d15QKmvDNZknnmfd7n+f1IvuhClOHeFbya\nI3LgAOLiL8Y834F2ggYhrPWZkC/vvhNneDg5hYV09fW6/fpyqBkfbW9oEhKwlpUR3rOHz+f6grW8\nHE2853R7uioEl5eMRPa2zUy58Q6P+xIlwat96bFiuItHX+xxv0zmfXli6+58ZDKB/j28z+5T0od7\nFJE5RkVVNW/NmkX5jm1ejwEQ1SqsOgWBflrrKw8jMwa/fbe+ppKDq+acWh9zCQyKJHasXo3jDFMH\nDY3oyIjBr6EuS0Eq8f4zULukmvAh4cg0gfHOaC3tPkO3m3Ygic2nlJQ4majYwHvRG7koHBR+6nif\nyUiiyO4Zz5Nx953kf/YFh7793u+g1RLpt95MlztupfeLz7HvtTdIv+UmdGkdAyYRq01MpOfTT2Ap\nPsyup2fQ6YbrUYaFtTkDANDnxefIakvq3SojruuF2AutiId8q3ByKpW4rr6SQj/08fVd0rGWlvpc\n/d9e6+jNrZ93UnqWfDU21FNfVUlyZ8895GF2/9rVZDIRczPFcC2pwilUWiL0zZv7HEu1N4sgYI7W\nBVwNTldbgbwu+JbR1aWHyF/22SkN5qJcTX6dns1LF51RwVylCmXs2A8Y3/kbVCXJzdr+ArgMTurW\ntv8svV0DuiRZsZlar3Slk0xcpVrBzJg9jAht3zedU039nr0IMhlxo0cdEYdJTCTjrjupbaOntzcU\nOh3F839xk4gNFMdm6WnXTKf4l18J6dih7SYuQOyokcjVKsoWL/XrfEEjoeqlwuEsw2je4fP5co2G\n6KFDqFjhu4pVRN++1Pmo695evejNraEnyD0Xg+Vs20zXZtbPBS/qcItXL2bM2WNQKjzX0Ci0lYhO\nz5XxW3fnE6YPYVh/7+n01IzRzbZ/ff/rAiLCw5g4ZozXYyA4LWpaQy2KqoMBHdMdidKDezm05ptT\nmtq2qRLYvL2Igp0bTtk9+IqAjCFDn+T8AX8RVtEX0db6CF23rAaXpf386qGdA7rdtA1J9P3tMJYK\n7tIs5eWYArqH/P8onIvo3YsOl1/GrqdnkP3mTCL69SVv9ucBDbJNSbv2KjeJ2NodO8n/7Is2j31s\nll4w97uAmrgA9H5hBruenuHfyQIoBpqxdt5D0Z8/+DWEvz3pkf37Uuuj81p7zdAtZWVovayhh3mp\ncG+uIC5aEHDZPb+8tdR7bjd6n50vWLqFIX29q8qpddHoVM1ntv51/4N8OfOtZo9x6jTY1IHNFKrN\nRlTlBwI6ZlMkSaJw70ZKt/wS1Os0ew/IKHPEsXbxUkw17W8B7C/de1/LxaOXk2iYiGjwfartMruo\nW1XTrrP0dgvokmjGZtzapjE6CwU8o1vMI9FVJP8/KJyLGjSAXs89w8AP38XZ0ACSRPy4MVgOl/i1\n/toajknEZtx5O9lvvEXD3n3oO3emcvWagIzf1MTFVFTU5gp+uVZL1/vvYe/Lr/k9RodLL8a6Zi2m\nAu8qZN5IPO9cShct9lklKqJvH+p2+mbUoo1PwFIe/GKm5lLuCpfnwJazfQtdvTiseWtXczqdLFu3\njHNHnetxv1JrxO7FYSyvsIysnEJkMd51ADp2GdHs/8ttjz7Oey88h1rlfblFksuxRGi97vcHpc2C\npjQ7qMpiostF/rbFVO1ZFrRrtIRDFcmufDN71y475SpqrSWl4yimTPgfmeKtiFVtC5F1K2pwGttP\n6a7dArrNtBlJart3rQAMkO3mtbBl3BxlJkz+907FCzIZcrWams1bSZx4Lg6Dgey33yHpgsmYDhXi\nODpjr960GUdD21X3jknEli1ZSqfrryW8Rw8Ofj3Xa4GUrzQycblkCtmvvoExz39p2GOkXnE59Xv2\nUu9jT3ije7v/Hr/V4/xxYIvs14/aHb6l+TUJ8ThqrEF/6/cW0OUI2JxeKtybmaFrLJ5T5i0ZsUgu\n7xres+Yt5dYrzmHqIM8yruHRHVEL3gP1ui1b2Z2Tw61XX+X1GABLTGhAW9QUDgchh7NBDF461ul0\ncmD9L9Tn++4ZEBAkqJMlsX7FJqoKm3fGO12IjO7C+RN+ZGDoS1ASGDlf0SZSu6K63Wbp7RLQJdGI\n3eT7+mRzKASR8fJNvBu5jksjRJR/88K5tOuupmLFSjbfdBuZ99wFLpGsJ57m0LwfKF24iJI//gqo\n2lvHq66kfOkyDnz8CalXXI5MpWLvq69T9OP8Nr9pHzdxEQSGzv2SHf+6GXtt2y0Rez//HJWzs3Cu\n0iMe9n1pJumCydRs2epXStsfbXeZWoW+UycafPAqV5NC9yFv+VTAJxz9ai2SKGKvqUEd4+4l3kUV\n4qbs6HLBuqUH6THiOmQy98yZGnAYPRdANRfQ5UonlroCj/sOl9eQlX2ISaO9C8UkpXpfz4fWpdod\n4TocisA9jWUu5xEVOFfbJzfesNts7F/5LabS1v9cBRJRoeVAtZptyxbhtAdfIKetqLURnDPuE8ak\nfomiJD7gwbd+dS3OhvYxu2mXgG41bkSSgpN20AoWLleu4t3YLMaG/X1n6wq9nrTrrqH/zDcJSUlm\n7yuv0e+NV+h4xTRKfv+THo8/AgF8qVGGhpJ27TV0/tf1xAw9i/3vfUjGHbejT+9M4Q8/Buw6CAKD\n5//AuiuvafNQWiGT+G6XYs2ux7lRh2jx/fPwV+M9duQIardt87lq3dd+dCHMhY1DOMTWtThl7tnL\nuytXM3PJUjL37G3VOfqc/QweOMCjWE4nlXvqOWuHiz3ZWuK63UJ+nvs5CYLg8SHZYGggKzuLEYNH\neLwPubLMaxFXS5Xtscl9UEje//9feu99pl14ARmdvLe6iSolFn3ganZkooS+5AA0o3bXViwWIznL\nvsBa0zavA7+vr0xg4+Y8ina3bXm1PRAEBWcPf47z+/6OvrwHYpDEYCSHRM2S9pmlBz2gi6567Cbf\n1gn9IUqq5jb1Ul6LzaPP37hwTpucRF3WLjpOvxJNfDx7X3kN0W4nb9Zn5H4yG6fJhKWkhIa9+9p8\nLZlaRfTQITTs30/S+RNRhocR2b8fsaNGUjz/F8qXrWj7N8SRNHL3Rx9i+/0Pt20gpwxNfDy26hok\npwvBj4xmh8umUrZk6fGlDF9InDSR0r98Tbv7qBindXG48EusxpbtJAVJ4uqPZpFa30BGWTlXfzy7\nRUW7cxb8xgtPPM0ne/dy/fv/cTs+Tu6eGTCZBKxmE5oQHUaT+4ceZm38Mi9KsKtExqdLspl0rpcX\nOUnC1uA5VVtdZ2Dlpn1MPXeIx/2CIBAX383zuMCCTVV8u7qGFx95yOsxAJZofeBa1CQJfVkegjV4\nZlSGumr2L/4Mh9FzzUEwkZBz2BrD+sVLsNS3//V9pXe/W7hk5DLi6sbh8qPgzVca1tfhqAleVuYY\nQQ/odtM2CLREYjN0pIjHdYt5PLqcVPXfM7BH9u9HRL8+xwN7aGYXMu/5N11uuwVBEMh+8x20KcmB\nu17fvlSt24Dl8JG+8YZ92RTM+YbQFhS1fCF+3Fh0nTuR/+nnfo8h72RDiHMQ0jmZiryfEZX+9dv6\nO0v3NaBbSkqwlJRCrWcnL48IAqqISFIW/NnyoZKE2mZDcjmxqVWordZmA7rc5WLiL78h2e0oRYkB\nGzaS2ERvPlRyf2T07C3DZsgnpaOajIzGKXdBAsF4Iu0qSfDzLhV/7FWSXZuMLO1OSurdZ9IqXR0O\nm2dlxJY025PTz0bmpU/YbLHw1Y+/cdcNN3k9H8AWHYZTFrjnVmhFEYIpeJK9tRUl5C79DJct+LKx\nTXGoYthxoIGcDSva/dq+0rHzBC4+ZzGdHdfhqm6/ZVrJJVG7KvgvOkEN6JJoxW5ufws8Aegr28cr\noUu5I9pIZBsVyU5XjgX24yukksTu514kJCU5YFXpcGSm3u3hB5BrNJQvW0HN5i0Mm/cNhfN+IPut\ndzAXFgXkOpl330nNlm1UrfezT1UpoRhhRHu5jfKiX2nY41+BXNo1V1H043xcVt9eCKIGDcB0qAhb\npfd0ePXGTWS/OZM1l1zOpptux1peTtfnmg8uTdEkxLMrteUXNlEm47crp+GUyXAc/bvYjEWuKJNh\nU6sRHQ5E3ZGiIJu2sYiMzIMWutNczP5VjzHhPD0hTWqJYgRZo3a1WivsrwCHw4HD4UCt0bHDQ72D\ny+6528BotvLbsq1Mv2C4x/0KpYaIsA5ev8fNO7MwlSznjsneNd9dIRqsmsA97PXVZcgaSgM2XlMq\nCvdzcOWXSO3gznYyElArJLFu2TpqDwe7l75tRMd254IJP9Mv5BmkMs/CSMHGsLEe0RLcyW1QA7rd\nkoUktU8xgCfkgsho2RbeiVzDtEgn6gD4fZ+OdJx+BZIokvvRLJIuOJ+uD9xLzaYtiI7AffZyjQZV\ndBSlfy2k+6MPkf/FV1iKD5N+y40c/GpOwK4z6OMP2PnYk36lvI8jExj4wbtsvul2v4dIv+VG8mb7\nni1oWhxnLa+g6Mf5bLvvQRYNOpv8z75EEx9Hv7deZ/RfC+jxxKNe28O8oU2Ix9LKwr2154zluvMn\n8a8pF7H2nLHNHisJAt/dehPVMhlOjZYF06dRHRt7fL9aELA53FPqOTu20iEh3qMrWXSTlkT50WPq\nDHVEhB1xZFM0EWtRqGxY6j2vAc+et5RbrjjH6/fQIWNksxKvYy6bxtljvH8OkkzAHBG4B35IfQ3y\nGt9bIVuFJFG8fxvFGwNY09JKRLme/eUKti9fhMsZ/FSyv2hDYphwzueMTJ6NvCTmlOirH0O0idSt\nC+4sPYhTV1fAK9v9RY2VqYo1jI2KZL69P0saxFP5/xpwtMlJOAwG1HGxxI4cfnzGLFMGfskh+aIL\nMB0qxF5TS6/nniH3o1k4zWaQJCRRbGTP6i/DvpvDuunXMvqvBX6PIchk9Hj2KXY/+zy9nnvG5/M7\n33wjC/sOIvPuO306L2nSeex8/CnsNTVUrlmHo6GB2JEjSJlyEf3eeDUg/yeahHhqtrZeMdCiUCBr\nZZZqT/9+fJuZSfLFFxEzbkyjfRlqnccGh31bNzL4omkex1NbHI1s08M1Ev2SJX4qqCclMYUQlcSA\njg5OrsOXKTzLoLpcIl//spLtv77u+VohEejVkV67MI7Ju1532aUe9wNYY8IRhcA8HTSmBpQVwWnZ\nkiSRgqxV1O737DsfTEzKJHau34TVeOpsQltCJlMybPjzxFpHIZaJAZfr9Zf61bVEjo4Oml960AK6\nw5KD6DIEa3i/iBRquUm9jImxyXxr7s5WU/umqIKJMjSUDpdNxWk0kvPO+/R67mn2vvQqot2OOi6W\njH8fMcwoX7aC+HFj/L5O7MgjFclRAwdQsWIV6bfdjOlgAfs/+AjRbifznn+3OWhpk5Lo+sC97Hjo\nUfq96b9YTMrFF1Gy4Hdqtm4jauAAn88/NktPv8W7R/cxJFGkaN6PmL6bx4y6WjKWrWDnJVNYf8P1\n/tx6sxwzaAkWpvJyVEnu2uepCg14SPpkb9vEhGnuxW0aQcDpQe411rGBSOMGpg28m7QoOyGqEw83\nQRCx1HpWhps1bwm3NlPZntplpNdgvmztOopLS5sN5o4wHXZlYB78KqsZdWkOwZgSulwu8jf/iaGo\nfZczJZmSYmMoBzb57l3Qfgj0G3AnnUOuwFUjBN7ito04650YdjQQNig8KOMHLQdtM50iQYNWkMxh\nHg5ZwtOxJXT6mxXOCQoF3R95kPKly4k8qjQn12gwFxZRunARlsOBMYFIOHc8moR4JKeTihWr0CYl\n0uGyqZQvCYwqVcKEcwjpkEL+51+1aZzeL85g11Mz/Dq308030rC0GNc2PWK158yDYf8B9rzwMosG\nDsV4qICX+/dlolpNrwYD0xcvpeuu3f7fvBeCbaHqTVQmXu7+u2KzWigtOEhaN3f3twQvsayk4jAm\nwx56JIiENCmaV4ZU43J67l2e/cNSbpnmOd2uj+yARuY9Vd6S+YqoUmAJDcyzQGG3oS3JblY/3l8c\ndhv7V89r92BuV8awbU8VBzb57lnQXnTKuICLxy2ho+1KXLWnry5J7cqaoNWJByWgO+2HcDmCbwXY\nVnqyn5dCF3N3dAPRyr9H4Zxco0GTEI+topLw7t1xWSzUZe3CXltLzZatpF17dcCuFT1kMIac/UT2\n60uHSy9B1zEVS0lpQERiADLvvZvqDRup3ujZbrc1aJOSSJ5yAbkfzfL5XKEsjC6jHsOytQHXmlCw\nn/h1Kf1zIRuvv4msJ58hrHs3ztu+iZ6PPkwHswVFWBj15iPVxnElgS+GUsdEY6+ta7NkridEmx2n\nxYwqIsJtX4jk/juSs20LXQd4lnsNs3nOgH3wxQc8dpNnG2C7yfPs/IuflnPtlFEoFJ5frFLSPLew\nATz1+pvcfu3VpCR6d1yzRIcGJC0rczqOCscEvnbIajWRs3wOlsqCgI/tFQmqxUTWLVtDfXlgil8D\nTVxiPy4cv4A+qkeRyn1zTDwV2IutmPOD040QlCjWVs329kQmwHBhG4MjVPzPOZj59WoszRTVnCmk\nXTOd3I9nY6uupuM1V1Ew91v6vPQ8cCQ9LASoQDBm+LBG/7ZVVqJ5fSbiK88HZPzBs/7D0hFjGfXX\nAr+V8LrcfisrJ19E8kUXoE32weO9QYE6NgbDgVxU0VFYi2sp/OMbiub9l5iRw8m8/x4i+/U9frgk\nCGwcNZwphw8jCDIMwB4/Uv2t4dgsPRCe9SfTnA+6py6u7G2b6DbAPZgKEkge0u1Z2VlEhEWQmpTq\ntk+hNWGuqvJ47dnzlrLoy6c87otJ7I7SQzsdwIGDB/nht9/Zv3qFx/0AtqjQgLSoyUQRfcl+cAbe\nntTUUEfeqrk4LcHrY2+KSxHG/oIGSnMXt9s1fUGnT2DE0NfRVnZGKj091shbS+2KakLSdb5JOLaC\ngAd00VmN03Z6tzB4QoWdCxVrGR0dxi/2gSxswE3i8kxCHhJC1wfuBaD4lwX0eOwRnAYje199HWV4\nODFnn4XpYAGxo0YGtJ+8+2MPc3jhIioefYK+r70ckDGHzfuGrGtv4I7bbqEmrSO53b2LhnjjmG/6\nWV/MbvU5sk5WxKJQlOFhVGT9j9yPnyd12qXNvlwsu+B8ylJSEH74kTU6HREx0T7fa2s45rrWXgE9\nRJBj9VDhnr19C1NudO8miBMERA/HN+d7LoieK9u/+20dU8YPRh/iIaUuCMQn9j6iVuOBllLtLq0a\nqzYAL7eSiL40F8FL73xbqK8q5+DqOYjtWE1uUiazY+06bObTqw4KQKHQMGz4S0SbhiKWnj4Fb75g\n3mPCXmFHFR/YjELAU+4205kzO/dEGA1cp1rOWzH7OCuAso+nkpSLL0IVHUXux7Po9tAD9Hzq8SMq\nbzJZQIP5MRInnkvc2DHsfPSJgIynTU7izbg4pr7yGve88DI9fFFWO0rkgP7oOqZS/POvrT5HCBVR\nTmgg9PoQtOfCmEV/0PnmG5vNFEiCwJ7+/dj6wL1s98MjvbUEy0bVUlaO1sP6eYbas1mFN4e1KJfn\nGe/vS37ngvHu2u0yhQtznbtJjyRJfPrfJdx4medWs6S0IV5FZD6Z+w19unfnbC9ZEkkmYI4MhIua\nRGj5IQRzYJaaTqaq5CB5K75ot2AuyVQUNISxcfH/TsNgLjBw8P1cdNYSIquGBL2nO9jUrgy80FBA\nA7okmrBbWqcXfbqTSBn3axfzQmwxGdq/R2CXXC7UsTHU79mLIJNhr65h3+tvceDDjwNubZg48Vzi\nxoxm52NPtnksQZLoqlYjUyqRiopJKvJvLa/XjKfZ88LLSLUgVsuRWvM9qyQEvUj0sLN8upY6NhZd\nagdqtm7z615bwpdedF/wVhDXUeU+Oz6Us4/4DqloQtyV7lQm9wC0YfsGMjplEB3hnrVQqMqRPLiP\n/W/1TtLSuxIb5e5pLpOriIpM8/x92Gzc9+xzfPyq9yyRNTosIC1q+qoSZIZA+3xLlObvonDtd0Ep\nrvOETRnHll1l5G9r/1a4lsjodimXjF1Ginkqrrozb0buCcPmelyGwNbBBDSg20w7QAqeJeCpIINc\nntcv4b6YWuLOcA/2tGuv5sCHH7PvtTeJHNAPl81GWLeu6Dqm0rD/QMCvlzjpPOJGj2pzUJcEgYWX\nXYKUlkaWSslCnQ9SqU0Y8uh/aZhjwrUyDNfaMGjGwKOtJE6eSKmPlqqtJViV7tayMjQJCW7bYwX3\nl9rs7Zvp1t/d0SwEAafJvVLd2+xckiRsRs/92u99/RfP3ea5Va1DpncRmZZS7c6wEOwByHbqaquQ\n1wbWCEWSJA7tXk/p1t8COq73CwqUOxNYt2QFhsqS9rlmK0lIGcxFE/6kh/w+xIoz+/nbFMkpUbc2\nsEIzgQvokgu72fdU6JmAgMRQYSdvRqzkX5E2dPIzU3FO1ymN9FtuZMDMN3FZrHScfgXapEQO//4H\nISkp1GXtQgpwQWCggvqG0aN4fPZHfL5kISuemoHT5EeVqEmGXtkXyeXCaTQiVSgQy4KXffHHrKW1\nBKsX3dsautZD0Zm3dLu3djVvVqmqkAYcHoq9/lq5nd5dU0lJcJ/RKzVhhGk91yf8uWw5RpOJaRd6\ntmWVFHLMoW2P5hpDHYoqz1X5/iKKLvK3/I/qfSsCOq43XMoIdhc62bNmiVdnu1NBaFgHJo7/lqFR\nMxFKAmcLfbphqDYieVky8oeARSaHLRdJ9Ox5/HdBJTmYqFjPu9GbuDBcQhFkD/YDH/wHS2lg256O\nSbimXHoJhf/9EZfFwqD/vI8xP5/sN2dy8PMvsVfXULttO476wFTUJk46j7hRI9n5uOcq5dYiymRI\ngsCw7+ew7sprfT//aPGMNjkZ81GjGYngZZQUuhAiBwwIqK7+MXxZQ9fJehBC6woJvaXcPX1M2ds2\n022A+wxdb3Nv2Vq6dinDBw1Ho3ZP3YvOAo/3MmveUm71IvPaMXOU34Vw5ti2t6ipzSbU5fvbNEZT\nnE47B9b+TH1BcJZpGiFBgyKJdau3UnGw7c6MgUKlwNqh2wAAIABJREFU0jNmzHuc0+U71KUdkFx/\nj/T6yQgqAeUEDcKtSox9TTQYAte5ELAcht0ceAGN0xW9ZORq1UrOjYnje0sf1hoDrzhXsXwl5UtX\nEDN8GNrExIC2mgHI1Wp6PPYI9ro6bJVVHJrzLUM+/RjR4cBaXoEgl6MI1QfseomTJwKw8/Gn6PvK\ni20aKyQ1lYw7b2PnY0/S99WXWn2eTCchptmRFahQR0fRULaL6HjvJh2BIGnyREr+XHhcYS9QHAvo\nDoMBS0kpjppanBYLruNf1uN/V5Wloc9Mb9W4ngJ6mEyBzdl49lZXXYnNbCa+Q8dG2wUkMLQ+3a5Q\nOjDXuddELN+wh9SkaNJT3dP/uvAktLKTitmcTti0CQxGnlu5iqfuvZuYqCiP3589MhSnrG1BQmmz\noinNDmjdic1mIXf1PGy1wU95u2RqDlUrKdh5+ii+CcgYNPQRUoQLECulM7JyvSVkSQrkIxVYwqxY\nRdPxl+S6ujrCwwOjHCdIraoMah7RZcBQMZtTqnx/CsmTOjHX1IV9lsCISTgMBrIef4qIvn1JPG8C\n1opK6rJ20fnGwMuIwpG2trgxo1BFROAwGNj97Av0evYpnEajb33braD0z4VUrF7T5qAOkP3WO2hi\nY0i7zountickcNXIkIky1t46lf5vvYauc6c234v360ks7D+EiTs2+z2EtbQMQ14e5qJiLIcPYzlc\niqu4mDEHC9iiVlOX3hl5iBaFVov8+Jfm+N8VISGkXulZa/0YKpuNfstWUDvnG+rfep2KxBOBdJA2\nnP5i47qFxb9sYteGdTzw6n2NticgEF3a2FhHFEV6je/F3mXuBbOqkAKMle6Tgen3v8tTd06lZ4a7\nc1q3/lNRSkcFZmw2ePxJyM7BYrOy71Ah/X/6AaFvX7fzRI0aQ3TbjFcUDge64j3gRc3OH8ymBvJW\nzsVhCr42uk2ZwI6tWZhqAl3E5z/del1N95hbESvPzKXM5pBkEqqhGsTuEma8Z7C7deuGIgCuoAGZ\noTsse/j/GswB0oWDPKM/yLaQ3nzTEE+Jo20z9v3vvE/GXXdS8vsfKEL1HHztDfq//WaA7tadlIsv\nAo4Izux9+TW6PXgfMqWC8qXLUEVHkXT+5IBdK3HyRCRJIuuJp+nz8gttGqvbg/ex6aZbCevRg6hB\nrRRwEUAeLQIiPR5/mML7HqL7gp/adB/NX08g8bwJlC5cROLEc1s83GWxULdrN/W7dh//U5DLQZAR\nN2YUISkpRA7oz+jqGu74cT5bR43k63/77yoHR4L5fTNeJOnAASxl5Sgff4oPn3yMgxldAOigVMNJ\n8UuSIDdfS0TqJEQRTk4cRTnd12F/X+p5di4IIpZ69zXoddv3E67XegzmUfGZJ4I5wNJlkJ0DwKHi\nYqL0eoTPvoB3Z8LJS2IyGeaoENqiuSlzudCV5AQ0mDfUVZG/cg6iPbjLlRIyyuzR7FuxJKjX8YWU\n1BEMzHwKSnWIp7+wqE/II+XIx6iwxtowuswtHl9TU0NcXFybrxsIRQXsFv98p/9OCMBA2S5ej1jB\nzVEWwvx0HRNtdsJ79SSsW1dcZgv5n39Fpxv/hctuo3rDJp89un2hPms3HS69hNyPPiH349mooqOp\n3R74Qsek8ycRM3wYWU88jdLhID07h+RDhX6NNeSzWWy9615cFt8fiFFDBiMOHkjRj/P9unZrabba\nXZKoWL6S/e//hzWXXsGyseeSP/tznCYzKVMuYti8bxn912+Edc3kui6ZpF17FfHjxlI4eSIrz5/M\nqvO8m5W0lp7bd5By6BCi3Y7cbkdltzP29z+P749u8t4vCGAu/pKRo+U0XQVSeqpu91IMpwypweUh\nkM36fjG3XjnB470mJvdrvKHiyEyzorqaEI2WtKSk49tOxhodikvwP5gLkoS+5ADYAyfZWVNeRN7S\nz4IezB3KKLLyzexbtzyo12ktkZHpTJ7wXwaGvwKl/nesnHYIoOijRHG9GsulDgxRRhytlACuqwtM\ndqbNAd1pL0J0nr42eu2NAifj5Rt5N2o9U8NFlD4WzsnUKlIumQKAtaICyeFA17Ej2+6+H0kS2ffa\nm4i2Iz2++Z/67tfdHBH9+hA1aCBOk5nMe+/CkLMffac0ypcspWr9hoBeK+n8SfSedhk3TryQe559\nnkcff4prPvoEwY8VoGN2q/7Q8+knjnym9uAJd8SNHkX1ps3HXzrs1TUU/fQzW+++n4X9h1D86wJC\nu6TT77WXmbBhNYNnf0TmPf8mbuxo1DHRCHI59vo6lmR0Pj6mWadj/nVXU9ClS5vvT+k48tARHQ6k\nkCNr00rniQeRFveXU4elioatjV9S9AI4zY0/R4PJwPbd2xl11ii3MZwWd0XJbXuObBvQ030ZJDFt\nsLuITL++iKJIcWkpqcnJR7f1azQ7d+pDsLWlqF2S0JfmI1jrWz62dQNSfiibglVzPPbeBwwJ6mXJ\nrF+5kerC4Ni4+oJaHca4cR8xJu0rlCUJQTMoaW8ErYBykgbpZjmmwVZMCnPrNC5Owm63Y/Knc6cJ\nbU65O8z/zM49ocXMNNUqxsdE84OtLysafP/p7f7Ig6iiYyj64UcSzzuX6g2bUEWEYykro2rdejrd\n+K/A3ziQed/d7H3ldZwmE10fuJfKFSuxfvAx1YKM6KHeTTB85YL9B0iXJCgphQ4pDFm9lvVjx5DX\nratP4xxrx9v/7KekX3Mnso4OBFXrf6GOObL1fT0wUrWeSJo8kd3PPo/5cAmW0lLix4wm9fKpDHx/\nZqvOD01Px5CXR0S/PgG/t90D+mMIC0NZUYmgONLGt2HM6OP7xSZp9JwdW2morWHgdXc12h4vur+8\nfrNoIxMm3+22Xa42Yalxr9L3NjuXyRRER3WGpm2V/frxgULO9KPLAwwcAHfecXy3pJBjCVfTlugR\nWlmMzORZY95XJEmiOGcLlbuCq48uykPIK3dRtPt/Qb1OaxAEBWed/SRJ4gRc5dLxbpMzHXmaAtnZ\nCiz6o0VubXxBqaurQ9cGjQ1oY0CXJBsOa+AFSf5ORFHN7eplTIxN5RtTV3aZW184F5J6xMAipGMH\nRIeD5KlTODz/V2xVVTgNRuqzdlOXlUXK1ItR6ANXka7rmEq3hx9AOOocEDtmNIwZzebb7qR+7146\nB+hFIrShAU1CPI76ehzFxYSkpBDup1NbwjmTMR4yYVlhRds/FPmg1r/tJp53LiULfqdyzTpiRwxr\n+QQ/6PbIg+R98hlp111DeK+ePp+vT++MMc9dGjUQmHU63n7hWbrf+yAxMTHsv/F69h41nYmUK7A3\naR3K2b6Zrh4EZfRWBydXj0iSxIa183jkjkfdjpUL7tXcu/cXU2+0MKx/ptu+lAzPIjK/LV7CkthY\n7vnkI3C5QNtYytUSE9YmT2xdTTmy+sBUnouiSMHO5dTlbgzIeN4wKxPZuWkrlvrAipb4Q88+N9A1\n4gZc1QKuv0Mgl4FyhBpXpoRZsgC2gGUa6uvrSUxMRNaGbqY2pdwdlhwkKfA2gX9H0ijkCd1iHouu\noIPKNzGT+HFjkZwuDs39luSpUzj07fd0vvF6Ds6ZS/z4cez/4D8Bv1+5Wo1M3ThPOfiT/+A0GNn+\n4CMBuca2oUfkVJXh4ShDQyktKyfHj2AHIMhBnZyIo8GAucz3B3DvF59j11PP+nXt1iDXaMi8999+\nBXMAfZd0jLmBFTE5merYWGaGhfLZ9CuOB3OATLX7jMFT/7kMCdHYuL6j3lBPrbGCzI5pjbYLchfm\nuhPfi0OU89PuAczeOoaLL3Ev8FOqdITrYj3e9/Gec5XKLZjbI/Q45P4/bbUNNSiqC/w+/2RcTie5\nGxcENZhLyCmxxrBh8eJTHsxTO53DxeMX0cV1I67q09ebvLXI4hQoL9Ug3ixgzDBjkQJf9yCKYpvX\n0tsU0P8phvMNAegn28urYUu5PcpIpA9tCknnT6LzTTdgLjhE+s03Yq2oIHXaZRz+7Q+6P/IQdTuy\nKPh6Lk5j4N2eTibz3rtImjSRlRMvxFHXtjXF/b168snDD7Bz8EC2XTCZV2+6gXUvverXWIISVOeY\niJgWS9YXd2Ip8k2OUxUZSacbriPn7Xf9un6w0aenY8wLXkAHsJVXoI5vXGnbQeHe5uUpoMcjc0vN\n//jnj4zsP9KtHUepqUR0nZjL51XHklMZil3SYNSNcWvvTs0c7VFE5v4Zz/PM/fcS6aGHV1SrsOr8\nT0CqTQ2oygOz7uxwWMlZ/T3G4uD5XNhVsezc30D2hhVBu0ZriIrpxvkT5tNfNwOpNBDGN6cQARQD\nVMhvUGO9yI4xwoTDFXjNkZM5ZQFddFbjsp9eur9nCnJBZIx8C+9EruGKSBcqH1IsoV0zCe2aScGc\nb3GazNRu34EgkwV1tt6U+PHjGPLFLFZNmUrVuvVtGmtP/358dv+9fHPHbUhXX9kmmVhB70LoYKfb\nw/dQePf9Pp/f6fprqVy7LqgzYX9Rx0QjOp1tfolqDk9Oa5FNCuLKCgvQ6vSER8c02h7lbKVVqgR2\nQ+NAGaM3UFFVTWxUGEmhDY26zbRh8YQo3ZeTduzZy4r167nv5pvcvxFBwByt81ucRGW1oCndTyBa\nca1mE9lLv8Za5V8XR0tIQC1JrF+2lpqSU2dbrQ2JYfy4TxnV4VMUJbFndBezTC9Ddf7RIrf+Fswy\n34vc/MVsNmOz+d8W6XdA/2d23nbUWLlEsZp3o7YzPkzWaq97QSaj+yMPotDr6P7Ig1hKShrN1h0G\nQ9Bb3LSJiZyzcikFc74lb3bgqu0Dof0ePfQs9Ddcx65nnvP53GO+6acjxwrjgoHDYEAmlyMPaWyT\nqm3yiPAm96po4q6WdygPu8NO9y7dG21X6hqwWxrPQg4X7MVx4AVuOiuHiRmNZ7GpnYd5VGRrTt61\nLS1qCocdbcm+gJhMGRtqyVn6GQ5DYArqmiIq9OSUKdi+YhGudvRKPxmZTMmwkS8xsdev6Mq7ItnP\n3Eguz1CiuEaDbboLQ4IJu3hqPtNaP+uIwO+ALmE3/z1sUk8HIoVablYv443YXAboWrm+LghEDxmM\nLi2t0WzdXlPrscUtWAz66H1Em5Xt9z8UsDEDof2ePOVC5Fothd//4NN5Yd27Edm/H4e+/d7vaweL\nYBbGedNwdzbJMHoK6KGC4Nau5q33XHK6y7xu3ZOHPjyMjpHVCCfZmUbEpqPyULf79qzZjB85gj7d\nu7vtc+o02NT+rdnKXE50h7Ohlb3DzVFXWcaBJZ/isgZnCcykSGLDhmxKsncEZfyWEegz4A4uHr6M\n2JpRiKYzswdNUAioxmmQ3aLEPMqKSW1CDLBBla/U1tb6nRHwK6A77UVIYuAEFv7hCCkU80jIYp6O\nKSVN3brA3nS2XvLbH24tbgVzv/XPnayVZNx1J0kXXsCK887HXhOYYpzEyROJGzmiTUG9x+OPUPL7\nn9Tt8s1noPujD3Hgw4+DXo/gK8EsjPMU0OMUKhyuJi1rHhzW4jwYaHhKt8uVDsx1BY22VdUamPvr\nal77t7sJS1KH/m7bqmtrefn9D3nrGfefC0kuxxLh37qtTBTRH94PjrYXO1UW55G/4gukALwYNEWS\nKSkyRrJxySKsxlOj/9GpyyQuHreYTrarcJ36Qnq/kCfKUV6uwXkjGDqZsIjBy2b6isvl8rsn3b+A\nbj391hj/TvQUcng5dDF3RTcQrWxFYc/R2bq+c2dCOnZAGRVBlztvQxMXj7WsjPrdeyie/yv1e/ZS\nsWIVhgOBF5mIHzeGoV99zppLr6Ry9dqAjBmIoD507pdsvO5Gn21h+7z4HPtmvAP206dCN5iFcZ5s\nU5tWuJuNBipLD5Oa0di5TW9rPI3Pys4iIiyC1KTURtvlylK39PnseUu45Qp3tbu41P7IPfS1N5dq\nt8SE+teiJonoS/MQbAbfz208ECUHdlC0fh7BWES2qWPZtqeKA1tWB3zs1hAb35sLJiygj/oJpHL1\nKbmHNiGAcogK+U1qzJPtGMNMOINc5OYvDQ3+ObD5EdAlHNZTrzr0d0cmwAjZNmZGrOLqSDvaVhbO\nNWpxu/hCCn/4kT4vPU/atVehiowASSI0o+3qYp7QJMQzbvkiCuf9QMXyNQFZw0+cPJHYEcPJeuJp\nv8c4+/u5rL/SBwMXIG70aBITbqD2h+CkuP1Bl9iVUPkQXLka8BDs2oK1rAxNQmNns2R547bFnO1b\n6NZkdi4HREPj/2dPs3MBCWsT3Xaj2cpvy7Yy/YLhjbbLBBlxMe696P/9/Q9CtFrOP2ec2z5HuA6H\nwr8gGlpehGBu21RTkkQKstZQtuPPlg/2eXCoFhNZt3gV9eXuSxbBJkQXz7njv2R4wkfISyLb/fpt\nRQiToZqiRbxFhrG3BTMta6ufatotoLscZYiuwPm3/kPzqLBzoWId70RvYVK4gKwVUrLHWtxMhwrp\ncvutR8w9gP3v/4eI/n0pX7acmi3B81we+MG7VK1bx/b7Hw7IeCdrv/tDWNdMUqdfwe4ZrTeDkUQn\nJYVfYI/xrf0tWEhmAdmWZOI6TcG5TYlza0jLJ/mAp5R7hNA4O+Rp/TwRGWKTtLwnq1RVSB3OJjro\ns+ct5RYPfufJGSPcRGQKDx9m5qxP+e7D992OF1UKLHrftB2Ooa8qRWYo8+vcY7hEJ3mb/qImJ/Az\nZ5cyjL2HYeeqxcGVifWAQqFh5KjXOa/HT2hL05GcZ1bBm7y7EsV1auxXuDDEtF5X/XTA6XRiNvv+\n4uFzQP9ndn5qCKeB61XLeStmH0Na+fAK69b1+Gy8eP4vxI8djctkJqJ3L4z5+VSsWBW0++3xxMP0\neOxh1gwfg9WDWYavJJ0/iW5XXcngyVOQmlZqtYKUS6YgKBQU/bdlZ7WK5StZdNYIkq8+l/iJI/25\n3YAjVajAJSBXqxFtNsQSRUCzutbyCjRNetDVYssV7uFNnAXXb1tPZudMoiOiG2132BtnOlwuka9/\nWckNl45ttF2h1hKhS3S7vx//+JOQyEjkHkyPLNGhfrWohdRVIa9tWzuZw2HnwOqfaCgMvImRUZnE\n+rVZlOX6VgPSdgQGDLqPC89aQlT12YjmMyeQCyoB5QQt3KLAPMyKSWk+5UVu/uLPLN1H5QUJxz/r\n5wFh5gfLKCquZWD/VK6+wr0NyBuJlPGAtoz92i58behErrV1b52CTEZ4714ceP8/hPfsgaWsHMnp\npHj+LyScOwGFPsCuR4JASMdUBv/6E+unX0uPJx8jboy7QYcvqLp3Y+n4cagefAzNu77byfZ86nHW\nX3UdYT26E96zh8dj9jz/EraaGs7bGlgzmrYihLmQkJCp1bisNpSJRwRfTHkHsTfU4zQacTQYcBqN\nOA0GHEYjTsPRL5MJSRRR6HUodLqjf+pR6HXIQ0JQ6HWYi4ob9aALgKOphrsHyVeFydZI7tVTul2h\nsmGuLW20bda8JdzqYe08tctokBpfd92Wrfz051+s/cXdFc8WHYZT5vsDW2OsR1nZtmeZzWohd9X3\n2OpLWz7YBySZikN1GvK3LQrouK2hS7dL6J14N2KFEtFy5gRyeYoC2QgFllArVtH4tzB+MRgMJDRZ\nBmsJQfKhPl50VmOo/NLX+/qHJphMNm69+zu++fxfLFy8l7BQDcOGdm75xCZICGyU+vJtQwwV9pZn\nrdaKCg588BEdpl5C3uxP6fvay+T+5xPE1WtJfO5pIge4VxUHim33PkBoZiYZbfTuBihduIiK5Svo\n+5p/ZioL+w5i4s4tjbYZc/PYdOsdqCMiGP7TvMZe2qcBTpMZy6YabDtdWKqKKCuaT03WGhLOHY+1\nvAKFXo8yLBSFXo8iNBSlXo8i9MiXKiwcSRJxGk04TaajfxpxGk24zGZcRhOPVpSz8PPZSEdrNVKU\naibJTsyy8/Zk8ckzj/D6Tycc1sIFgZSSxkI3/Sb2Y8OvG9CoTyjMKbW5mKqyGx3Xf8ojbJn/KnL5\niSyARh9DRsY4t8K5jBGj+WvuV3RJS2u03RWiwRjpe3GW2mJGc3iP24uDL5gM9eStmoPTHNjlR5sq\nnqzt+zBUtq9oV3zSIIb0fA5ZSVi7XrctSDIJ1VANYo9juup/P7p06YJG467W6A2fArrNuBGrYY1f\nN/YPjXlixgI6pkZx240j2jyWXVCy1DGIHxu0mFzNP6QcdfUU//Ir+s6diB11JJ1sLa9g52NPouuY\nSq8Z/heftUTerE+py9rFwA/aLq/alqDesDeb6q9ySZ02DfkAMwe//JrDv//BwPfe5uAXX3MWMgxP\nuRuKtCcNe/dRs207tdt2YMjJwV5bS2jXroR17Upot0zCjioGCm0wcjiZhMOHKTtmPwqM1kWS6TzR\nArbl8/9gsDsZe/s9x7dliqAsPxHQlqxdys9/zefDFz88vk0miNitSxBPEj754qfl1DWYuf+GxjP5\nzL5TUAuNC/Feeu99LFYbLz7SWOdAkgkYE8IRBd9mkQq7FV3RHhD9r26ur6nk4Ko5iI4AtjpJAuVi\nPHvXLENqw4uGr+jDUhgx5DU0FR2RPLQfno7IomTIR6mwxdnPqHVxf4iLiyMuLq7lA4/iU0A3Vs3F\n5XC3PPyH1pOdU0Z8fBiRESHc98iPXDt9yJHAfvd3XDi5N9OmDiAkxD/zZqOg51fbQP5skOHyQ5ig\n+Odf2fPCy/R58TkSJ0/06x5aonL1WnY98xzDvp/rtmbrK6V//Y+Klavo++pLPp0nmQXM30q4rBZy\ndz+NrlsqXe87EaiWj5/EsO++Rh3r2RAkWNRs2Ur50uWUL1uOKiqKpEkT0SYnEtq1KyEpyS0PEECm\nhyWit53IUmy6/3b0XXvQ46SA3tfiwFl3ZGZU0gAvzi+kX6KRW887sZyh0lVgrNjUaOxh055i0ZdP\noQ85MfMIj+5IaofG1rzFpaWcfdElFG12X/6wxEVgV/r2My53OtAX7QVn40C8e38BBw4d5pIJw72c\neYLqskIK13wb0KDrVEaQnVtFxcHslg8OEAplCMOHv0qkYSCS9QzITwug6K2EATLMCku7SbGearRa\nLenp6a0+vtWv96Kr4Z9gHgDCwrQ8+tQv/DB/G2XlDYSHa3n/o5U8cPc4hp+dzstv+u9frJeMXK1a\nycyYPQzT+25MkXLJFM7dvI6K1WvYcvtd2Kqq/b4Xb8SOHM6In75nw7X/onzZijaN5a9MrBAiEXKe\nGlvsHpKmTmwUzAEGffguW/59b5vurbVUrFjFrmefZ+mIseR+NIuQDikM/epzhn03h7Trrib+nHHt\nHswBwoXGxWef79xGNScCoQIBV8OJf7tcEvUGE93SG/u1O0yN16m/+30tF44b2CiYAySluteReOs5\nd4Tp3IL5T9//hKHBex+5THShO5zjFswbjGY+/e9CLhh7Fis3ZWG2eNPRligr2Muh1XMDF8wlaFAk\ns3711nYM5gKDz3qUiwYvIqKy/2kfzAWtgGrSUV31wVZM8vbTVT8dsFgs2O2tV/uUz5gxY0ZrDnRY\n9uC0Ffh5W/9wjNBQDedP7EV9vYVzz+lOdJSevxbt5fabR5KzvxyrzYlMEPhw1ipqas306OZe8dsS\nOkycpcynn06gRIqlytn6X1pBJiNh/DhU0VFsvfNuJJdIZP9+Pt9Dc8i1WtKuvZoD732AMS+P6CGt\nLwpsSmhGFySHk/zPviBhvHsLlDeEcBe6Xkno091rF9Qx0Tjr66lcu57os/y/N2/U795DwdffsPXf\n9+KymIk9eyg9nn6C1MsvJaJ3r4B62/vL2apwnEdTsDUV5Sz6/mvu+nDO8f3JCKhP6j9fuOQHpLp1\nXDdx+PHyA4XWgLV+X6Nx733hC159+GpCtCfWvmNT+hAW0tjsZc5P86msruGBW29ptF1UKjBHNVaD\nW7VsFfW19aSmpbJ80XIyumUgnFwDIYmEluQ2Eo6pqq1HEARy8ov4efFa/lixCaVSwZ8rN3POsMa1\nJJIkUbRvI+U7/mrpY2s1LpmaghoNe9evRPSja8MfuvaczqieH6Cv64rkv/9HuyBPU6CYrMI2yIlV\nb8MVAG39MxWlUklISOvaVFudcjdVz8NpPz16cv9O5OZXIggC6Z1iuOXf3/DC0xdy8ZWf8N+5N7Nk\neTY9eyQhlwks+GMXU6f0o29v32ZrErBV6s039QmUOnxfb9r/7vtUrFhF7xef81oZ3hbyZn1G7Y4s\nBs74EHQuBJ1/b9+lfy6kYvUa+r7yYsDubeP1N5F5/z1EnuQP3hYqVq6i4Ku5uGw2utx2MzEjhgds\nDTzQ3KFNxnnUsnTdwt9Yv/B3Hnznk+P7e9tFxOoT0rgzZs5AppfxzC3PHN+mVO/DVHNkhm5xKvlo\nSSg1RWt48ZYTP0eCINCj/+XImtijyjqk4So82DgwA6bESLeq9q8//Zq8A3nUVNeQnJLMwLMGMmHS\nhKN7JUJLDyIzVjY655HXP+VgcRkfPnsXoTotGrWKT77/k9SkWCaPPpH6F0UXBduXUZe/ubUfXYtY\nlQns3JqFqabt7ZytIanDMAZ3ewZKAtzJEmhkoByhwdVVxCL+PYvc/EGn09GpU6dWHduqGbokmrE0\nLG/rff2DB6IidURFhmA221Eo5DQYrPTsnsjufaWsXptHeqcYDuRVcuH5ffjwk5WcP7EX8xfsIDev\nkq4Z7mYaTRGAJKGC8ZpCIjWx5No12H1IWUUPPYuoIYPZ89yLGPYfIHb4cHAK4N4O7BdRAwegVXbC\n/LsTmSEaeYYDQeZ7hXloRhcku538z78kYby7kpg/JJw7nvVXXkPnm25o0zjF839h2z33YziQS8bd\n/ybzrjvRdezoFqxOF9KUWjpxIiW+5L/fkprZjcx+A49vS2iwIB3N/DQYG3j6zaeZ++bc4/tlCgfW\n+q0ca5YvqotiQVYC/Xp2p09S1fFZfErGcEKUoY2uf8MDD3HvTTfQv1fPRtttUaHYTyov2bxhM++/\n+T4hISFMuWwK06+fzh+//MHF0y5GfzTLoa+J1EOeAAAgAElEQVQ8jLzBXTgmNiqcnIPFKBVyenft\nxLa9uagUCiaNPpGRcToc5G5cgKEwy4dPzzsSMsocsWxfsRSHJfheGOERnThn5Cd0cE6FBv/qctoD\nWZwCxUQVzhEurJE2nNLpKcd6qnA4HER60WBoSqumB7mVBeyqj8copYDsNH/LO0MJCVEx5YI+DOqf\nypoN+YwdlcEHb03j5wU7GTe6K0uXZ2M02XC5RN5+bxl7s8uwWh0cKqzB7mg5HaXAyQT5Rt6LWs/U\ncAmlD8FE37kTZ3/7NfpOaeTeMx/zNwJSuX/KXJ4IP7s7od07Ubt7Ffmffub3OIHQfj8ZhU5Hz6ef\n8MvKVbTbyZv9OUuGj6Fu1246XH4ZsSNGEDVwQEDuLZh0UTVO7zUVlIkQBFzWEw9dj73n6opGa81r\n1/xCD90ypvQ+eCIlr9QQEZrS6LyVGzZwsLCIf027vNF2l1aNVdv4cfXjtz9y3yP3UV1VTXhkOJvW\nb+KaG68h/mg/va62AnndYQByDhaTX1TKvrxCrnnoNf5atZkPn72L9dv38cArn7BpZw4TR52QtbXb\nbOxf9R2mkhNr26IosSXfP0MUuyqKrHwz+9Yu8+t8X1CpQhk79j+M6zQHZUnS6dmTLYBioArFjWqs\nF9kxRphwnKa66qcKq9VKUVERGzZsIDu7dTUWrUq5L9yzkOyyEwOmRYbTLVpHnMaKXKzijHazPw0x\nGm0s+COLEcPSWbwsm9KyBvbllHHHzSOx2Z0cLKjmyssGEhKi4rpbvuLzj69FpfRtylxDNPOs/Vhp\n8GFtSgLHSg3mnVUYtRvQnx1PeO/ePn53nhFFEXtJOUW//kri3mz0H77j91glf/xF1dp19Hm59VKv\nzZH1xDPEDB9K0vmTW3X8wa/mULFsBVGDB9LpX9cdXxPfOGYCfb75Cm1yUkDuK1hcHZZIyNEKd5fL\nyfQ+nflhzwlFtabtalffczUP3PIAA3sfncFLEqK4EudJ1qEvfPATmtguPHzFieWLTj0moFdFNLp2\n2tBhrPzxv3Q8qRCwaYuaxWxBpVZx27W3ERMXw/OvP8+Mx2bwzMvPHO/Z1RpqUZXtPz5GXYORm554\nm/TUJF57+CZ+XryOtVv38Nbjt1JeVUt8zAmNcovFSO6KuTiMjfXdP1x8kNwyE1eencxZXVqpaS5B\nnSyJrLUrcdqDu3AtIGPI2U+SJJ2HaDg9n8kyvQzFGBW2JAd216nxGz9dcblcNDQ0UF5ezqFDhzCe\n5PbYr18/pkyZ0uIYLabcJUlixf4Vjfr96qw2cmsM7KywkFuvRlDGEqIORyW4gDO3L3DvvlJsdhdh\nYa1v5A8GKpWC3r2SCQ/XMqBfB0YOT0ejUTJ+bDfeeGcJjz14LlqtkkVLs9m+sxiVUk73rkcUhfIL\nqoiMaLmAQouFwYqDDNJJlBFHhaMVr/ECyFJcqHtpqM5di/Orb6ixmIno0/agLggCirBQoocMori8\njNyPZ5F84fktn+iB0MwMXGYbdfNLCB+W5qen4AnizxnLpptuo8NllyBXexcyqdmylc233YU2Pp6+\nr79M9JDByFQnUp2iWkPFqlXEjmi5PepUMlITgXhUtzt76yZKCw8ybuoVx/enWByIRx3WyirL+OKH\nL3jirieO71fp67HWn5CIXrJuF7tyDvH8Hecd36bWRpKY0Dil/uxbbzOwd2+mnDeh0XZrTDjOo00b\nkiTx9qtv88aLb3DVv65izYo1rFu1jokXTCSz2xFDF7XZiLosp9EYZquNi8cP492vfmHkoF4MG9AD\ns9WKyyXSucOJwlNDXTW5y7/CaXEXjMlM1HNB/wRm/pVHn9QwQrXNd5KIch25FTJyNq1BdAW3qKtH\n7+sZ0f09dLVdkE7DOCnPUCKfrMLa345NZ/9/XeR2MhaLhYqKCnJycti8eTP5+flUVla6VbZbrVbO\nOuusFpfpWpyhVxmqmLtpbnOHnBhMgM6REXSNDiFGbUEuVnMmzd6vuuEL+vVJobSsgYfuPYfkpIiW\nT2pnPpq9mvj4UKZe1I+rbviCma9dxp//201iQjgTJ/Tgl992cvGFvhVxScBOsSffGJIosvv2Qpb9\nxtvUbN5C7xefIzQzw6dzm6N6wyZ2PPQoZ383h5AOKS2f4AHjmhJ2f/wkQ+d83mblt7qsXWS/8TZD\n53zhts9lsbD7+ZewVVTS69knCUlN9TDCERYNOpvx61chUwZuySLQ3K3vgPXoMs78We9jMRq5+oHH\ngSNa0d3KDUhHi9g+/f5T6urreOi2E8IvcuVOLHUnXMGm3TuT5++ZRrf0E7PujD4XoZGdeDk6WFjE\nOVdOJ39dY+EqZ1gIptATn9VH73zEmPFjUKlVPHjng8x4dQZ9B/Q9/qBT2iyEFO+Bk4xM8gpLeeCV\nT+jTtRMP3ngpNz3xNm88ekujQA5QW1FCweq5SC2IzlQZ7Dw/P4cLBiSQHhdCerz7MqRFmcTOjZsx\nN9Q2O1ZbSU0by4AujyOV+ucDH0wEhYBylBpHuhOreJqX1bcToigen4UXFhb6pNd+9913ExUV1ewx\nLc5dDtUeavUFJQnyaur480AJX++u5cdcDTmGJMwkg3BqZ70tcbikDqvVwf13jWPma5cSFqqhtu70\ns9m745aRXDipNwsX72X82G7Ex4VSUWmkQ0okr89czKABHfl5wU6ef+VPqk6qQm4OAegn28OrYUu5\nLcpEhKL16ftuDz9ArxdmkPXkM2S/OdPP78qd6KFDGPXXArbccRdlixb7NYZuaByJEydQd/vdbb6f\niD69iR46hLxZnzd6Ry2Y+y3Lxp5L3MgRDPnsk2aDOUDatVdTMOebNt9PsJAJAvaT2hxztm2h64AT\na8tJcDyYg7uzmlxlaxTM12zJJiYytFEw10d1OBHMD+TiePJpNtx4EyvnnmiLA5AUcsyhjYu5HA4H\nRqOR9Ix0Jl00iY/f/Zjy0iP6GAqHg5DD2SC6WL5hJybLkba6lz76lvkfPEN8TCRvff4Tn738ACUV\njTUWKooOcHDll42CuSTBjxvdJVij9Cpiw1TUmx1uwVySyTlsiWb94kVBDeYRMZlcMOEn+uufP+2C\nuTxRjnKaBueNYOhk+n8fzG02GyUlJWzZsoUFCxawdOlSdu/e7bP5SkFBQYvHtBjQi2r899812O2s\nKypn3t4yvtzrYG1FDBWOFFyy5t8yTgXzftrG8LPTeWLGAvbuK+WbeZvJy68CYNuO9vcgbg6lUo5a\nreCa6UMwGKwcLKgiJTmCouJaKioNmC12rpk+hLff960ARy6IjJVv5t3ItUyLcKFqZUtVWNdMhv/3\nOzTxcSwdfQ6VqwMjD6wMDWXU779QtngZOTPf8/l8QaGg4zVXYbnkInY++kTLJ7RAxr/vQFXQCfPP\nLup37WXNJZdjLS1jwobVrVbWS7v+Ggq+al3G61SQrtAinpS0y962iW4DTrRxhf8fe+cdHkW5xeF3\naza76b2TSkISOlJC7xC4KipFQUFAxQoC9oYIFsRruYINFEQEpKn0Ip3QQ09CCem9J5vtu3P/CCSE\nBAghocn7PD4+mdmZ+XaZ3TPf+c75/QxVwT4xJRGjyUhYUFjlNom0egD86Y+tPDOsugmLb5OL5xME\n+OprDHtj6JCdg+/h6vr6GtcKF7WsjCrzk+deeY7Fvyxm0nOTyMvJo9+gfiQlJiE2m1BlJMDFdVlf\nT1f2H4unXKujqESN2WLhpVEPcvDEGVZs2k2XtpGVY8g4e5T0/curXVsQ4Iv15wnxqDn7NlsEHmvv\nxdAO1WshDHJXjieUcubAzhrHNBQKhRO9e/1ID9+fkWS63TkJUBHIOlohHitHE21AbVuO6V9a5Gax\nWCgpKeHcuXNs27aNtWvXsm/fPlJSUjDfxNJLUlLSdV9zzUUgk9lEenHD9J4LApzNL+JsRYzEUaEi\n0t0BbxsBa1EB3OanuL37ElmxeHxl6u6rOduZML4rqWmFrN1wkjatfCkr02Fre2dkGnp2q1gvPHsu\nhxef6853P+1mwriuzJi1kZnT/sPcH3fh6+PI3n0X8PS0J9Df+TpnrMIKHY/IdtPTyZGV+tb8U2ap\n0++G/5Mj8f7PYE68+wEZf6+l+YwPr7nmXFdaff4JSQt+5eD4CbSf9/0NH+85oB8Ax994u96GLgAI\n4Nq7D0U7j5N/9E9afTELm8C69YdeQu7ggEuXKDLXrsdrcN2K7G4lAXJrLtmnZVw4j72LKzZ29pX7\nxWp9ZdH02n/WMrj35b7nZrTFVWvnh08lIhFLaB3uX7nNxasZUqHqQVGQSEhITMTT0xMue4A0ONpi\nEgvotDr+0+s/tG3fFm9fbwY9PIgvv/8SQRBISkxi/nfz+XT2TGwyEsBYlVELbuKFwWhi7Ftf8Mro\nhxk2cQbuzo7MeHUMPy5dz/ihAxEEC8kndlF0NqbG5yASgbejNRdyNbRsYl9tn0wiwtOx6ndAAIrw\n5sS2bVhMjVNDJBbL6NjpA9yNPbDkCPWyi20MRPYSpN1l6D0MqM13XkbzVqHX6ykuLiYzM5PU1FRM\njSAWlJycjCAI11xHv2ZRXEZxBqczTzf4wAB0JhOpJWpO5ZVzMl9AKzijsHJCIZUgEhrQ9KAOmEwW\n/P2c8fWpqFzV6YzEHEiiX+9mzPlxF8Mebcs3c3dwKDaVtRtO0qNb02ouUQBbtyfg5KRCobi1a6Nu\nrra4u9mi0Rro1CGAQ4dTyMkpZffe83z84YP8veEUM2btJyk5gzatfLG+gfFZi3S0kSbRQWUmX+RO\ndh0K5yQKBV4XZ6sHnnwamb19gwjSOLZqibWnB3uHjsCjb29k9vbXP+gybIODEEw3rihXDRHEff8O\nJsdsIt59HbljHSudr0Dp482Zr77Bb+ij9RtHI9LZ2hHpxUnE4W2bERBo37uimM0JEarLlqHen/0+\nU5+bir1txb+FlbIQXVnVEt2H/1vBuKG98PW8+DApEhEQ0pNKPxWRiCkrVtI+MIigIQ/D8KEgkWBR\nWFFuX3GfSmVSysrKeGTEIwQEBfDROx+xad0m2ndqj5+/H7369sQuJwmRtiq9vWrzXr5fsg6JWMyI\nQT354ucV/PLpVPp3acfC1Vt4uE8UPh7OJB5cT0nSkWrvP7tYz7wdqRxPKWFUF1/+OpKFh4MCZ5uK\n1L9FgF93pyEIAr7O1piltpzNMHPuyF6EK3y3Y7P0uCglSOqhq1CFiOZtniMqaDbKIn+EO6TmWBIu\nRzJQhq6FHoPSgOUWGsrcCQiCgFqtJj09nRMnTnD8+HFSU1MpKipqNP91g8FAeHg4KtXVW8evOUNP\nLU691u4Gw2wRiM8rJP6imJOztQ0RbvZ4qyxYiwoQGrlsUyoV06lD1UxLoZDh5Khkzg872Xcwibdf\n64+LswpbWwWPv9qHco2BqW+twsVZRbu2TXjs4dYsXX6E3j1CG3Wc16Jf72YAfDbjYUwmCyHBbtjb\nWTPl5V5MeRnm/LCTNlGf8shDrZg6sTeeHnUPiL6k8YYyjVPWYSwq8yVFf/1fFY9+ffDo14e4mZ+y\nf9QYms/4EJV/k3q/PwCnB9rRY8tGYkaMIuSF5/Ac2P/6B13Gpdcff/OdGzZ00ecXsH/UGJq++jKe\n/fvd0LFXYhvaFLm9PQUHD92U7G1jYIMEI2YEC8SdSKFZm46V+1wv+6E6kXACBzsH/LyqagYM2ird\n9lPn0ihTa+nUumnlNi//DtUU4bbs2s0prZaI3y9bghCL0Tgpubx5+sXJL/LsqGdR2ahY+vdSVDZV\nP2i2OamIyvMxmy1IJGLyi0o4Fp/I+GEDWLJmB8MHdeeDl56kuESNn5cbzw6PxtVBxdndf6DNSwYg\ntUCLn3PFOvTC3am81C+QrzcmklaoZUp0MIcuFBHioUKtM/HT9hQebe+Fn7M15VIvju87gK68uoUs\nwJEsPemlJrLVZqJD6ibbeSVNgvrT2v81hGyr253ArMAK5N2tMTQxormk5HZnJApuCQaDoXIWnpaW\ndkMa6w1FcnLyNd3XrlnlviJ2BelFt1fuVSIWEebqRLCjHEepGpGlfsIO9UEQBLKyS0nPLKZ5uBdL\nlh9GpZKTklrIwH4RNI/wYvwLi3ljSj9emfoHnTsG0SUqiB5dG67au6GZvzCG2V//Q49uIUyd2Ieg\nAJfrH3QZFgH2WtqwtMyJAmPd0krFJ09x8t0PcO/di6avvFifYdfg+JvvYOXiQtjUVwEQXbyNhTpU\ns9+oS1vOth3EzfyEjr8twNrzxrX1ayNv915Sl/1x01ayhoJC1MnJlCclY8jOwZydg0irxazRYiov\nx6DRYNbrMJvNyJVKpNZKpEprJEolCh9vDHIZ1r6+KH19UPn5MjWgNTqjhYR4C+tWxNG6gxu9+lX8\ngLRUGzBd1G//+NuP8fH04alHnwJAqtCgKaiq2Xjlo194pF97enSoaE0TS+SEtxyC6LKHAq82D3Bk\n4zo8L/uB0rnao7+sDi4/L585/53DAx0fICEugclvTa7cZ1OQjaSwIiPw9cLVtI0MISzQlwnvf0PL\nsEDeef4JXp/1E7PffLbq/Lpyzu9cgqG0SnZ19aEsJGIRD7b1YPqqM9gqpIzq4sup9FIifGxxs6tY\nNtIYzCCAtbWC9DIbzh3afdV/F0GoSNsvj1PTxc8aT5u6F5q6uEfQqcVMxFnOd0TAlPhKEXeWorXV\nYbb8e9rNBEGgvLycvLw80tLSyMvLu/5BjUxYWBjDhw+/6v6rztDNFjPZJTUlE281ZovA6ZwCTl80\nenNV2RLpZo+X0owV+QiNmIMSiUR4edpjNluY9eUW8gvUTBjflX0HkggJdkOt1iORiFm6/DBffvYY\nYU3dee7lJfToGkJZmQ6lUl4jNX+7GTc6inGjo1jyx2GGjZpH80hvpk7sTWR43cROxCLoKomlg4MV\nG4zt+LPUCu11UkwOzSPp+tdKLsz/Bc2rU3nELLDly1mY6yBleDVafjqT5EWLOfLSJF56bAi9/l6L\nqlzD8fYPsPKpkZiu0RbmObA/CALH33q3QvtdoOK/Wv6pzn79P8qTU+j5T/1d8GrDtWtnEmb/l/Lk\nlDpnLozFJRQcOozm2HHUJ09RdCEJhUJBUGhT2oU1o23LVjh0c8DW1hYbG5vK/9vZ2lamCNXl5RX/\nV6sxmUzEx8dz+txZzm7+hxOJiTxSXEL77r1QuHfCZGiFnV3FzFUOmNVV08R1/6zj71/+rvxbRFXh\n6PmUbNKzCyqDOYBf067Vgvlbn3zGK+OerhbMTTbKasEcYMv6LcRsj+GDTz7g6OGjlduVJYVIClPQ\nG4zIpFLGDR3AsFdmsuaH6Qzo1o6dB0/y0vRvmfB41Rp/eVkxiTt/q9FjbmstZd72FILcVQzv5M28\n7SksP5CBnbWMnuFVD7xKuQSD3JXY4+coyTnKtbj0XBkdomLZKTVDwlSIxWBvdfXfA2uVK107zUKZ\nF4KQeXsjuSAWkEdV6Kpr0AH6O1NxroExmUwUFRWRnZ1NamoqOt2tXf69HikpKVgsFsRXKVi+6gw9\nqySLZYeXNergbhaZWEwzV0eCHOXYS8sQWWqmvhqDM+dy+GXRfgoK1Lz6Ui/GvrCYfdumUFyi5cOP\n1/PVrMdYt/EUu/eep2vnYAYNiLwl46oPf645zuyv/8HH24Epr/TmgbY3lhYvwY4/DW3ZVEq16uir\nEbBkGQOXr2SGUoXjr/Nv2pxEP/A/fKdSVRNw2dOnF3+MHXPdY7PWb0RzqBi/ds+CRYwkSI+4mbai\njw84NW0GSj9fAseOvqkxXo20laspPR1HxPtXl5bN27MX9f6DlBw+QnlODl279+A//fvTunVrwkJD\nsb/BWoLrodVqOXP2LJs3b+afnTEc2r8be0dn+vUbRMeA5kS1i2Jf7D5+XPwjv3xR0ZMvEZvRlW9G\nuDh7e33Wb/TqGMmAbhUufTKFHWHNBsLFddaE84kMGf8M8TuqZvSCVILa3Q7LZVHj9wW/s2fnHub+\nMrfaGBXlpVhlJgACXy1YzfYDx3l7wghSMnLJzC1g0pghmMxmpJc9MJYU5JC0axEWU/U06e6EAtR6\nM52bOjFtZQLvDgnFTiHFYLaglFcdLyCiwOLByT3bKt/nlZgsAtIr1sstAiw9pcZaJmJAsBJrac0M\nklhiRVTn6bhqO2PR3N5ALnYSI+kuR+eix3Sdfvx7BY1GQ15eHunp6WRn3/5J7PV45pln8PKqfQJ2\n1YB+JPUIu89dPaV0J+Jpa0OEqx3u1gasKEC4BSL/eoOJ7TvPsmvveTIyi/ng7WgyM0vYuj0BXx9H\nTp7OZOxTnfhm7g5cXGzo0zOUXt1Dyc0rw8PdrtHHV1c2bonji2/+wdpaxtRX+tCtS/ANHZ+FF79r\nwzmkvv5nLrZYSN+wiZPvfkDEB+/i8/CD9Rpz/KefMzkjg4EF1SU6y+xseW/u/7Bc52HBohajW27B\nWKZB6eONgICsUzkiTyMHRo8j9NVXcGggp7Wrsb37f+iycjkyl6qq6aKjxyhat5ELf/3NQ48/TudW\nrejdqxctWrS4xpkaj/j4eGJjY/l53s8ciT2Cr7MbnaN68er4iuUOK1UWZbkVxWXp2QU8++6PrJ/3\nVuXxwS0GYy2u6pXuMPgh/jfjQ9q3qrLl1Xg4YpRUBfP4U/GMfXws+07uqzYWuU6DdfppDAYDMqkE\ntUbH21/8TGRTfxJTszh44gxLv3wbD9eqgsX8zCRSY5ZVPlBczoHzRSTnaxje0ZtNJ3I5mFjMe0Oa\nVnuNWWbHmaRSss+fuupnlKU2k1xspJNP9S6YMoOFAo0Ff4fakqEiWrV7mUCroZhv3UpibcNA2kIO\nrUVopNp73m/cZDJRXFxcOQvXau8uZ7e+ffsSFRVV676rBvQ1J9eQmJtY2667ArlEQoS7EwH2Uuwl\nJWApu/5BDcS4539j/nej2PxPPMdOpHPufC7/+2IYCoWMgsJy/lgZi1IpZ/TIDrdsTHVl157zzP5m\nK1qtke/fiiZ03QlkJgH9892x1KH17YwQzCJ1AOd1dVsKOfXBdDRp6TSfMQ3rqzx11kb+3hiSFy9l\nZlRHeq7fWG1fgZsr07+cfd31dHOWFMs+WwzFJZjUapQ+3ojCNBz++HFCp77aYLapV8UCRT/mIBU5\nIotWk71uJblr1+Pv48NzTz/N6KeewqoB2v4aktLt29GNG8ckZxfOm6Fn+x48PSwE48U09gdf/0Gr\ncH+G9K3oNVfZexEYUCV1O3fhr5w+e445M6t09g0ONmhV1Zdf3BXupJakVnv/UoMeVfppMBvZefAE\nX/y8kg9feZKEC2k4O9jRqlkQr8+ax/hhAy72mQtkXThN1pG/q51bECp02fPLDEwaGMj3W5NxsZWT\nV2bgjcHBiC+bZatl3hzbuxeDpkKkSQB0RoGEAgMOCgllegu+dlJsrUSsPavh4bC6mVcFhT5IC+9J\nWBrQ5OhGESnFSLvLMPqa0N/DuuqCIKDVasnPzycjI4OsrKy7+qElJCSEJ554otZ9tQZ0QRD4ac9P\naAz3Tl+hj50tYa42eFgbkQn50Ihawlu2JXDoSAo7d5/jh/89zqyvtjL3y6pChmdf+p3Qpu4MGhBJ\nWNPrW6DeDg4dSUE9dTkRWSU4OSmx7R6K9pNH6nSsgIgDQit+L3Emtw6Fc4VHYjn57jS8HxpM8IRn\nr/t6gI2tHmDA0YO4Zecw+b1pKDVV9+qysWPYWwcLVUEjwrTJHgTRxaBeRvKp/9Lk5SE4NL81yyTa\nrWXkbTqElXErA7t2ZNyYMQTW0fv4tlBSAitWwMiRFGm1fPzxx8yZ8y0vPjmI7h3a8fzMVaz/pupe\nD2v9CDKhIliXazS4t2qL+mx85X6LlRy1i7JaX/WALgOY9tk0OnauqrAXm4zYpsWBqWpNs6ikjA+/\nXVxRvJpXyKLPX8dKXhEgBUEg9fQ+CuJ3VBu+IMCXGxLp29wVNzsr/rs+kZnDmpFTqsfVVo5cWpHV\nEcRykousSDpalSEwmAUOZeqJ8lUwO6aYrn4KWnpYsf6chmBHGecKDTwWblP5+mKdhYMZOvoGKS+t\n4uDm2YaOkdMRZTbsUsmNIAmUIe4kQWOtvWfbzUwmEyUlJZUSq+XljW9Xe6tQqVRMmTKl1n70WgN6\nkaaIhfsW3pLB3Q4UUikRbo7420uwk5SApW4SqTdKfoEaF2cbtm5PYNvOs/Tr3Yx2rf1458O/+frz\noZyKy+SH+XtQKeU8NqQN7dr4kZ5RjI93hYb8qr+P8ciDra5zlcZD/vlGRJvjOJ9YyDGFGM1HDzH8\n0bbXP/AiBpGMrcZ2rChVoqmDQtL5734kY81aWsz4EMc2ra/6ugOjx2EoLqbLymWIpFJcs3PotmkL\n1ppyjnbsyOnWdZ9Zm3MlCHEqMMLZlZ/gOrIVrl0b3zyl7MxZcn5eiO7cOT585z3GPj2m0a/ZWGg0\nGqZ98AHfzVvGwP6DeO/JiuUaJ49QvD2qlgkee3YCjz/8EI9GD6zYIBKh9rTHLKr6CXpz0pv4B/gz\nYeKEym1iiwWb9HhE+qrvqSAI9Bv7NtNfeRKltYIpn/zI7DefoVWzICwWM0lHtlCSHFv5+iNJxWw7\nnU+Ylw1qnRmFTMyQBzw5llJCfIaax6OqpGn1cndOxMZRll+lUHeJzDITpXoLbiopWy5oGB5REcAP\nZer554KWN7o4IAhwIEOHwSzQ2VeBVCzCxtaLLh0+Q5EbgGC+DbNDKcg6KzCFmNHdYp2PW4VOp6uc\nhWdkZNzVs/DrMWnSpFrrZ2oN6KczT7Mlvn762XcjTRzsCHOxwc1Kh1QooLHKOQVBYNPWePR6Ew8N\nbsGocQuIDPfisSGt+WH+Hp4b14WJr62gfdsmPDu2M7l5alo2977+iRsJUbEG+U+7EJkF4nuE8uni\nA8QcuMDUiX1uaLlAjQ1/GtqxoVSE+TpfMm1GJife/QBVEz8ip71XY3/q0j9QJ17Ad+gj7Bs+ilZf\nzsatR7cbfm9XsmfIcFp+NqNBDWZqw5XQ4t8AACAASURBVFBQSM78BeiPn2Dm++8zbOjQ6x90l6DR\naJg27QPmzJnDS6Mf5JP3Pq/sO1+zZSs//b6Ev3+p8rvXudiht6qaZSxdtJQdW3bw/a+XqQEKFuwy\nzyPSVNdFf+r1WRSblaya9Xy14jeTyUDivr8ozTzL9rh82gY4oLKS8NWGCzzd3Y+vNiTy/iOhzF53\nnsc6eBHqaXPZtUTkmN05vfcfECpyBpdGF59vILfcTDc/a347WcbwCBsOZ+rRmwWsJCKifBVsuaCl\no48VSqmYIp0ZF6UEqUxJ584zcVS3R9De+tmw2E2KpJsUnaMO0z3WcnbJbjQ7O5u0tDTKym7dsurt\nZvjw4YSFhdXYXmtA33ZmGyfST9ySgd1pKOUyIt0caWIrxlZSjGBp2FRNcYmWr+dsZ/yYKGZ+vonP\nZzzMmvUnATh/IZ/HhrQmrKk7S5cfxs3NjvAwD5ydVMhu0O+8sUhLL2L211tZt/E0Uyf2ZsL4rnU+\nNkdwZ5muOTF1KJxLX/0Xpz/6mBYzPqzUSddmZHLwmQl0X1+1Jho7cTJWLi5EvFd/rfaD4ycQ/vbr\n2AQG1vscdSFj/gLSlizj90WLGNj/xkRx7ibKy8uZNm0a3303l2mTJzP1uWdwimhBYsxuHC/OKkwq\nBeUOVevjZ+LP8NSjT3Eg7sBlZxKwzU5GXJZb7fxDX5nB8OjuPDag+r1n0Ok4t2cpBVmpfLE+kX7N\nXWnpZ49UImLq4tOE+9gytrsfqw5lMaSdJ4cuFNEltKIuxCRzIOFcHrnJVbar25O19PS3pkBr5lCG\nngHBFQIxmWUmjmYbGBSiJLnYhI+dBKlYxLpzGgYGK6lYghfRrv0U/KQPYb41zTdViEDaVo7QHLQS\n3T01U9XpdBQUFJCZmUl6enqjqbLd6XTt2pVevWouK9Ya0JceXnpH9KDfCQQ42hPmrMRVoUdiyach\nlR627TzLPzvOEBLkylNPdOC5l3/npzkjAZjwyhLmfjWCl6f8wX8/exSzyUJaRhGODkocHJTIb3OA\nzy9QM/vrf/j19wNMndiHyS9ff836EucJYJE6mDPaaxfOCWYzJ979AGNRMS0++YgDTz9Dmy9nowrw\nr/a6tBWrSPxpPm2//RrbkBurzj847jn8Hh9WfznYOlBw4CDnp3/M+KeeYtbMG1Oou5spLy/nm0mT\nOL15M23GPMXkZ58BKvTb1e62WC5LtXuqPLmQdwFrZVU1vE1+JpKi6sZIVwvmmvJSEnf+hrG8mO+2\nJvNgGw+8nRTsiMtny8k8OgQ7cjy1BJWVlPZBDpWBHAFKpd4c37MLo756tbPJIhCTpifEWcbpXAN9\nAivGpjZYOFdopJWHFbWVXYaEDyPS7XksebXLfGw4t4n9afsZFjmUCLebl0W+hMhGhLSHFQYvI4Z7\npMjtkt1obm4uqamplJTc6qejO5Pg4GBGjhxZY3uNO85isZBfln9LBnU3kFRUQlJRxU1kK1cQ6e6I\nn40IpbgQhJtrd+jVvSk9u4VQVKzFaDIz6aWKoJieUYyXpz0lpVpsbaywkktZ8udh3Nxsmf3VViIj\nvCgp0fL+W7fP3MPF2YZPpz/E+28OZPbXW3HyeY2pE/swZWJvrOTXVBQmmCSm2SRxRNWc30o8yDbW\nHthFEgktP5lB/r797B/1NOHvvFEjmAP4PvYIrl06c+SliXhGD6xz33j8rC9w79WjUYN50lf/w+ZC\nMrG7d+Pv799o17kTUVlb81ZWFmZnZ4YtWYpMbsXLY55C61I9mEd3j2blhpXVgrmqOL9GMB82cSbD\nBnarEcxLi/O5sHMRFkPF97FUa6wUdhGLRfQIdyGrWMfUQcFIJWJkkoqdZrEVKflSkk/ULhokFYtQ\nGyxYBIFinYWdKVqKdRbaeFrR2qNm94Gnb0fah34AWTZYriIqtu7MesyChSmdJ/Pm5reY+59vr/0h\n1gFpqAxRewkahRadpRzu8sy6Xq+nsLCwchbeGEYndzuXKvWvLIyr0ahbqCn81wgK3ChlBgP70nJY\nFp/NgjgDu3OcyTX5YhbV3cnsSkQiEU6OSqzkUiKaVciKSqVixo/pzOHYVDq2r6h43ro9gbatfVEo\nZEx8oSdms8A3c3cw8bXlJJzNaZD3Vx+USjnvvxVNfuospFIxfk3f5d3pa9BqjYjy1Yi0tc8UREA7\n0UlmO2xnrJMO22uoxrl06ki3dX/iEtXpqq9ReLjTecVSTGWlHBz7LObr9JZmrl2PsaSEJiMfr9P7\nvFE0qans7RfNO9GDOLxjx78umAMV7mm9eyNp04aV+/ZzLieHR196BaO0Kpi/PfltBj88mKhuVX21\nirJipHnVW2aHTZzJ0AFdGTqwer1EYU46if/MrwzmAEPaeTJ73XmMZoFuYc7klupp5m2LtVxSGcx1\ncg8OHU0l+cQBrmR/uo7lcWpK9Rb6BlqzLUnLo81UNHOREx2sxNeu+gOrvUMAA/supYPDbMiyqXG+\nyxnYdAAPhg3GzsoWO6v6V7qL5CJkvRSInpFS3kWHWl5+16afBUGgtLSU8+fPs337dtauXUtMTAzJ\nycn3g/lVKC8vr7VmoEbKPS4rjs1xm2/ZwO4V7BVWNHdzxMeGCjvYBqgkLSnV8snnm7C2lmOxCAQF\nuuDv50y3LsGMe/435s0dyZZtCZSp9eTkltEi0psunRp3HbgufPv9Ts7+cYif5FJEAa5o5jxezRqz\nNjSo+NvYlrUlEkw3ueZXeCSWIy9OpPn0D/Do16fGfvWFCxyb8iZdVv9xU9e5Gtmr/iR30e8c2L0b\nnxvorb9nsVgq//1XrlzJc889x9odazl14hSb123mp8U/Vb7USlOOIvN0RX/ZRWoP5gI5qWfJOLCy\n2qXKdCYW7Umnpa8dqw5nYWctpUczF7o3q3joFkQSsnTOJOzbRm1sTtTgrpIS7CTlrzManmhuw4Ui\nI85KSQ3ZVrncli6dP8G+pBUW/Y3ds/F5CcRmxvJEy8cRBAGxqG6KiRIvKeKuUnT2+rvab9xgMFBU\nVERGRgbp6ekYr5Klu8/Vqa0wrkZA33F2B8fSjt3Sgd1riEQQ6uJEiKMCJ3k5Ykvh9Q+6BhqNAb3B\nREpqIS2be3MqLout2xN49aVeTHlrFW9N7ceS5YdZvTaTgvxkHnu4NUOHtCYs1KOB3tGNsX7TaY5/\nt4OZehMWVzs0C8dUiVtfhwJcWaZrwa6ym88bHnvtTSQKBc0/msblJcub20fRZ/cOxFbyax1eLxLf\neZ/27p78Nm9eg5/7XqFk/XqWPfUUB0OD+WJvVbpbptehTD8Nl2UIh0+ayaP9ujIsuiqYC4JAxtkj\n5J6oPvEQBHhu/nEcg9rxaQ9jjVvOIHciPiGTgtQKz3a9SWD9eQ09/Stm4Z62EmzkYkp0Frr4KTia\nrcdsgXZe1dPrIsS07/gWXgzEUnbtQP7HqeV09ovC2656t8oXe7/CWelEfF4Cr0a9gofNNb6rIpB1\nsMIcLqAV3V2qZpdTVlZGbm4uaWlpFBQU3O7h3PV069aNnj17VttWI6AvP7KcjOKMWzqwex1npTXh\nbvb4KIWLdrA354VYXq7HYhGwUsh4Zepyvv96ROW+lNRCVvx5lOWrjyIWixg6pDVDh7Sp7G2/FQwZ\n8SOvvNCD3u72CC42CM51U8+6nCTBj8WaUE5pbu7JPePvteQs2U+zR2eg6CDnwLujCHt1Eg6tGl5G\nNXbEKD57913GPFGzWOU+FxEEeOghyMpit07Hf8OCWbB8AVKTEVXaaTBVfTdqC+YWi4Xk49spPl89\nVX46vYzR38ey5KV2hHhccb8JUCT24uTenZgMerSXKb2lFBvJVpsZFmHDtiQtgY5SDmXqiQ5RYisX\nU6yz4KComj03a/4kYU7jseRXbSvTl2FrZcuCo7/SL7gv+eX57E2N4dl24/nj1Aqae0QS6RZRbUg/\nHp5HmEso3fyv3iUispcg7SFD727AaL77ZrCX7EazsrJITU29LXaj9zK1KcZVC+iCIDB359y78ua5\nW5CIRYS6OBLsaIWTrByRpej6B10Dk8mCVFp7ui4uPovlq4+yfHUs3p4OPDakNY8NaY2jQ/38mevC\nheR8HntiHrExb970uQTgmBDO4lJv0g31vyd1u0F7oBiN4QymgGSaPH51+8H6IFgs7OkzgD07dtIq\n8s414rlj+PLLCrW5l15ihUzG5CmvkrJzCSJjldrfiEkfM6RfZ4ZHd6/cZjaZSDy0FnV6XLXTrTiQ\nyd+x2fz6fJsalzJLVCRmmUiPq9Ca1xoFFDJRpdJbe28FC46V8WRLG8QiEb+fLCM6WEmxzkKQU5Us\nq49fN9o2fQeyan531p1ZTxf/LqxJWMM/idv5Mno26SXpLD6xhHZe7fCwdaezX1WNQF55HpllWbT0\nqP2hUhIpR9RWjEamuatazgRBQKPRkJubS3p6Orm5udc/6D71xsbGhsmTJ1crjKsW0O91hbgbZdeq\nXVgprQjvEI6to22jXMNFZU2Eqz3eKguKRrSDPXA4mRWrj7Ji9VHatPJl6JDWPPpw6wbvb3972t/4\neDnwwrM3L/ZyCZMgZrelLUtL7Sgx1SMVXy7GkianJO8Ajl0bVp9dn5/Pjr7RZGVl4X6ZFeh9roPR\nCBctbvPycvHw8MScsAGoPZgbjXrO71mBNj+l2mk+Wn0GqUTMWw/WFATSyLw4ceAQmtIi9GaBbUla\nbORiuvopKNRaKpXe0ktNnMo1MCBYSYnegp1cXJmud3QOJqr1J0izPUComo1fyX9jvmJy1CRe3/Qm\n03tPQyFVkFKcytSNrzOm9VMMCo0mozSTVXGrsZHbMDTyUWzklxXQWYGsuwJjExN6y81l8G4lRqOR\nkpKSyln4nWY3eq8zefJkbG2r7sdqAT0xL5E1J9bcloHdaQiCwM8f/MzA0QP5Z9k/9H+yP26+jfuD\nLROLCXNzIshehoNMjcjSOBZM/+w4w/LVR1n551Gi+0cwYGAPRjzsW6s28I3i5v8GKQkzsFY0vOmE\nTlCwztSev0qlGO6Ail5TuYbDQx6jMDun1n7k+9Sd/Pw8WoSF0r19Cx7uXz2Y6zTlnNu1GONl7bRm\ni8CoubEM7+jNw+2qrz8LYgmZGgfO7N9Z8Tcw91AJw8JtcFFJSC0x0cReSkyarlLpzUoqoo1nVV+5\nlbUDXTp+hl1xBBZD1Sz50mzc3sqOEl0Jvx3/nb7BfdiWuJ2u/l3Qm3RsT9pFkFMgDzd7kKNZxzib\nf5bhzYexP+0ALT1bYi2tcmST+kkRdZaitdFhvguU3C7NwvPz8+8au9F7mREjRhAaGlr5t2TatGnT\nLv2RmJ9IWmFabcf968hOzub4ruN4+HuQm5pLUIsgykvLSTubhp2LHRJpwwu7WASBXLWGhAI1x3IN\nZGltkctdUVopkaKnoSRpA/1dGDwwktdf7YtYJGLFdls+fP8b0tKLkUhEBDSpXxver78f4MChZE6e\nykKrNdA8omErvKUiE+GSFHooi9FJvEg23L50pC4rm/PPv0x2cvL9YN4AKJUqHpJI2PPnGt6bOaly\nu7q0iHPbF2DSVD3cnkwr5cEvDvK/0c3pHOpU7TwGmQsn43NIjz9euU1EhWHQ+UIjsVl63FQSnJUS\nfO2liBDRzFWGj50UESASSekU9QFt3N5FVuRaw8OpqUsIcw9+Ryffjny042Oeb/8c3nZehLo0Ze7B\n7xnVaiRmwUSwUxBO1o78Gf8XnZt0xlnphI+9DzKxFEEsIO+igH5iNIF6DDLjHZ1aN5lMFBUVkZSU\nxJEjR4iPjyczMxO1unE8MO5zdUQiEX7+/jRv3ZoOXbrg4uqKSlH1gFhthr4pbhPxWfG1nujfxu4/\nd+PoVuGpHH8onqETh1KUU0RhTiExa2MY9dYoRCIR2cnZKFQKHFwdSDyRSJNmTZDKri2sUh/kEjHh\nrk4EOsiwk5YispQ26Pmzc0qZ9tlZcjJjOXEqozIl/0DbJnU+R/f+X/L150NZsdZEQe5+/lp7gvFj\nohg/Ogo/X6frn+AGScOHxeXNOHaThXM3ilmjYXefgWjv/6A1OPv37+PVl19k3++fUpyfRdKu3xAu\nq+lZtj+DDcdyWTChunmPABThxYk927GYqt8PBRozBzP0pJSaGBZug5O1mKQiI66qiqr2SzRv9Qwh\ndk9iLqj5iLb81ApSS9J5ueML/HxkAV39u/BL7AJmD5h18foCf8b9xeDQQcgktWenxC5ipN3kaF3u\n/JazS3aj6enpd73d6N2Kp7c3/oGBePr44OTigrWNDVK5vJpWqRywvuzvagF9yaEl5JTePpGSO4mF\nHy3koQkPYe9izw9v/sDjrz/OxoUbcXJ3Iv5gPC9+8SKbf9uMQqlAJBLhGejJuvnrePy1x/EM8Gz0\n8Xnb2tLM1QZ3awNyChrUDragsLwyJZ+bV1anNrjDsam8+f6fbF37SuU2jcbAvAUxzFsYQ2iIG+NG\nRzGgb02pS0Goc1dbzWOBU0IzfivzIUV/awL7to5dKczPR6VsvOLCfzPr163jm9kz+bivFZdLLU9b\neQalXMLr/6ku72uW2nIuTUPmmeNcyd40HbFZelp0HUCzwj1sStTgoBDjqJAQ5atALIImgX1pHfA6\nQrYCk8WERbAgl1S1NL66YSojmg9DKpZyOOMIT7QYwSe7PiPQKRCJSIyL0oVyo4YRzYfVfDMikLaU\nQysRGqm21sAoCAJbt27l2LFjDB48mGbNmtX/w6snZrO50m40JSXlnrIbvdNxdXPDPygIL19fnF1d\nUdraIrOyqpPIuAS4XMqoMqALgsB3u77DYLrfWgCQmpBKwpEESgtKCWsXhiAIqIvVNO/SnCWzlvDM\nzGdY+NFCRr9XITNqMVtY9PEi2vRsQ0SnCEoKSjDqjY2+7g5gJZUQ6eaEv50UO2lxg9rBXt4GJxGL\neOwqbXATJi6lR5dgRgxtV+t5tmxLYP7CGE7FZTJ+TGfGj45CIrNhw5FAsgpVNPUupmeLJKSS+s0E\nLALsEdqytNSRwjp4sNeXfYMf5tCOnYQ0spHLv53fflvEip8+5/3+ThhMFkbNjeXJLj78p031h0q1\nzIsTMQfQlVfX+M5Rm1l6Wk0TeykPh1W1sR3L1hPgIMNeIcbZtRmdWn2MJMul8rnhZM4pDqQfpLl7\nJJvPb2Fc27GsOLWSXkE9iXSL4I3NbzOt53tsPLeJwaGDOJV7GrFIXKNiXaQUI+0uw+hrQn8dXfXY\n2FjKyspo3bo1M2bMYNasWTfxydUdrVZLQUEBGRkZZGZm3rVKc3cLDo6OBIaE4OXjg4u7OzZ2dkit\nrOo/m6FiOcnu8r8vBXS1Ts28vffFMK6GxWJh//r9CBYBnUZH7xG9+XXGr4x6axRiiZjUhFRSElLo\n+nBXEg4lkHA4AY8mHmjUGro/0p2U+BQcXB1wdHdskOKza+Fnb0eYqw3uCj1SSz4NtfZ+Oj6LFVe0\nwQ19pA0yqZimraaTce76xiPpGcXMW7CXeQtj6P7YV9h7tkGlrBDu6N0ymQHtzt/UGA1YscHYjtWl\nVuga+Acq8f3pfDf1NXp36dKg571P7Xz939ns/esn/oo5z28vtCHIvSowW8RS0kttOH94T43j1p7V\nkFBgYESEDT52NZe/rJUudOk0C1VBUwSjgNFsZPGJJfQL7kuRtogFsQtp7tGcB8MG8/HOz3in+5t8\nvue/zOjzIXG58Shl1vg7+tc6ZkmQDHFHCRql9oYCpF6v55dffiEuLo6PP/4YG5trS8jWh0t2ozk5\nOaSmpv6r7EZvJTa2tgQGB+PTpAkubm7YOjggUyhuKnBfCzuqbH4rA3pKYQqrj65ulAveq+Sk5nB4\ny2GaNGuCTqNDrpDToksLFn28CBdPFyRyCbmpuXR+sDPb/9hO2ANhPND3AbJTsrFztsPe2R5BENj+\nx3Z6Da9yKyvKKcLe1R7xdeRS64K1TEqEmyMBdlJsJEXQQHawl9rglq+KJcjfhc/trYlq64fu1X5w\nlb74y9EbRbz4TQfy8sqxCODqoqJ5sIVJDx9skPu+BHtWG9qyqcTSIP54aT/Mo5+TM//9aEYDnO0+\ndeWV58cjSd/Lk53cK7cZ5a4cP36W0pzqAlgJ+UaWnlbT019B9ybWV54KsVhGVOfpuOq6YdFY2JOy\nl7Vn1vNoxBDO5J+p7CE/k3+W0zmnGdv2aeYf+YV23m05V3Ceh5s9iFRcS32MFGSdFZiamtFZ6te2\nZbFYSEtLw2w2s2zZMt566616nedK9Hp95Sw8IyMDs/nOr6S/W5BbWREUEoKvvz+u7u7YOTpiZW19\nXZnrhsaGitQ7XBbQj6UfY8eZHbd0IPcSJqOJgxsP0rRtU3at2kWfJ/pgY29DSUEJR/45QmSnSDz8\nPVg3fx2Obo5kJmXSYUAHbOxtEAQBR3dHkk4n4e7rzt8//s2IqSMaZSbv72hPmLMKN4WuwexgD2yN\np/d/K2Q4yxeNQ3C+/uxCEODTFR0pLLVBqzWQl69GX3wQP9lqJr7Qk6AAl5seF0Cm4MVSXTgH6+DB\nfjVKYo9imLeAw3tqzgbv09gItGsZycTOCsJ97CiwuHNyz3aEy1q8TBaBpafU6M0CIyJsUMmv/EEV\n0arNCwQqh2MuqvhObTi3iYPph3i3x1sYTAbEIjHv/fNBZQ/55A2vMav/JxjMBg6mH6JHQHeuROwu\nQdJVhs5RX83QymKxkJmZiY+PT63vaNmyZQwfXru40Z49ezh+/DgvvvjiDX5OFQiCQElJCXl5eaSm\nplJc3Ditr/8mZDIZ/kFB+Pn74+bpib2jI1ZKJaJrGErdSpTApTLMysfNEu19n9mbQSqTEvWfCjWo\n6LHR7F69G4PeQNSgKHJTc/F4vGLtLz8zn0HjBpGZmMmZI2cQEAhvH866+etw83Xj7JGzWCyWygp6\na1tr7J3r78p0JclFJSRftIO1kSuIcHegia0YlagIBM11jq6dDn2aoXW0BotQp2AOFdmnEV3jWLK9\nBQgKOrWSMKiNwLEjwfR78CeahzsxfkxnBg+8OeU1L1Emk60zSVA05Vd1Ey7obrxwbv+45zDdN4+4\nTYhYsnwV/Xt358PBNuQkbq22d3+6jr/OaBgRaUNL95ra/AEhg2np+ypCjhzzZXotfQJ78Vf838w7\nPJ8cdR4vdJjAiObDmHPge4KcAhnRfBhpJWkEOAZUD+YikLWTY4kErUSHIBhqrGiJxWLi4+NRqVSs\nWLGCzp07IwgCSUlJDB48mISEhBrjLCgo4IcffiAiIoLnn3/+hj4hvV5PUVERmZmZpKWl3XcoqycS\niYQmAQH4+vvj4eWFvZMTCpUKsbThu5Yakstvv8qRlmobtg3q34xCqaDvyL6Vf/d7sl+1/YIgcDLm\nJE1bN2X/hv30HNqTotwiBo8fTNKpJJLiktj460ZsHWwpzi8mtE0ogc0DiT8Yj5OHU4NV0asNBg6k\n5XKAigAb6OhMqLMSFystEksBNzJ7N7f1v+HrB3iU8sawPeiMUpRWJkQiGSF+FRX1O3afY96CvUx5\nayXjRkcxfkxnnBzrX1UeJjrLTNtz7Fe14vdSZ/LqWDgXN3EKm7ZubZDlj/vUj5CmoTz59DP8uWkx\nnS4+2+ZpzCw7pcbTVsonvWu2RLp5tqJD5HTEmY4ItTTuZKtz6eTbEaXMmuceeBYBAZVMSblRg5et\nF0FO1YseRbYipD2sMHgaUZsvGqQIoFarMRgMODk5YTKZ2LBhA66uruTn55OamsqqVato2rQp3bp1\nY8uWLRw8eLDWzJuTkxNvv/12nT4PQRCqGZ0UFt6c+dO/DZFIhLevL00CA/H09sbB2RmljQ1iWcOL\nYd0Kag/ouvsBvbFw8apKH/d5og/rf16Pq7cr/hH+7N+4H5FIhGAREASBE3tO0LpHa1bNWUVYuzAk\nUgnnj58nLyMPi8VCWXEZYokYOyc7rG1qrhPWF0GAxMJiEgsrUnS2cgXN3R3xtRWhbCA72NqQSEAl\nqRlce3QNoUfXEHJyy5i/MIZ2XT6le9cQxo+OonOnoHpdS4RAJ/FR2jnI2GJux4oSJZprrCmmr1hF\nh6Ag+l7haHSfW8+H0z8iYOECQq3gYLqGEzkGhkfa0MS++uxJZeNBl06fY50TgJBZ84E0Pi+BBUcX\ncjD9EGue/JPXN76Jtcya3Sl7ebLVSLo2qV7wKA2TIXpAgkahRWcphytuF7VaTW5uLk5OTnz++ec8\n+OCDNG3aFBcXF3bs2MHjjz+Oo2NFIezEiROZOXMmJSVV2dDjx49XBvmxY8de9cHRaDRSWFhYOQu/\nbzdaNzy8vKr1cittbWv0ct/tXB7QRUIF/LD7B3TG+zq8txKL2UJxXjFOHk4VbXKHE8jPyGfE1BH8\n9slvjHprFEaDEaPeiLZcy6ZfN9F+QHvEIjF//fAXVtZW+If7ExARQEBkAErbxumLFokgxNmREEcF\nzlYaJDdpB1tfVv99nHkLYygoUDNudBTjRkchFte/zqAMO/40tGFjqQjzFf3BgsXClnadMN9PX94x\n7I/Zy1eDBlLiYqZ3QPWHWalUQVTnmTiXd8SirVldfjTrGN8d/IEcdQ6ToyaR3iqLkSXDWXtmHXZW\n9nTzrwrkIrkIaVcrTIF1K3KbPXs2U6dO5Y033uCzzz6r3P7GG28wZcoUfvzxR0aMGEFgYCBms5kP\nP/yQGTNmkJiYSF5eHu3bt681kF96WEhLSyM/P7/G/vtU4eziQkBwMN6+vji5uqKys0MqlzdaZfmd\nhBi4pOYuEgRB0Bv1fLfru9s5pvtcQV56Hoe2HEIkEtF3ZF9O7D5By24t+endn5jw6QTMJjOnl50m\nT5JH0ukkkk4lYeNgQ0BEAP4RFUHe3c/9+heqB44KBZHuDnjbVNjBcovNJBLO5jB/YQzzF8YwemRH\nxo+JIqJZ/ZchcgR3luoi2aeumn6d++AjXn/wQZ59emxDDPk+DcQL48dRdGITbR0uBVoR7dq/ip/s\nEczFNedd+9MOMPfg9+hNep5vgeHGyAAAIABJREFU/1ytxW2XEHtJK4rc7HWVSm4ZGRl4enrWCLgn\nTpzg5MmTDBs2jBUrVhAeHs7u3bsJDw/Hy8uL7OxsSkpK6NWrF/v27UOr1TJo0CBiYmJIS0tj5Mia\nFrtGo7Ga3ahef/eYtNwq7OztCQwJwdvXt7KXuzFbwu4WLlVZiQRBEPLK8lh8cPFtHdB9rs25o+c4\nG3uWoBZBhD0QVutrctNySTqdRPLpZJJOJ1FWVFZtBu8f7t/gGvQSsYimzhftYOXliG/SDvZG+WXR\nPuYtiMHWRsm7bw6gZaQntraK6x9YC+eFQH4tD+LAvsNov/uR4/v2N/Bo79MQONjZMqWtnBbNhxLp\n+SKW3JpFSzuSdjL34PcopApeaD+Bjr4daj+ZCKQdrLBECGjR1ti9dOlSgoKCKCoqQhAE+vfvz8yZ\nMwkODsbb25szZ84wZMgQ5s2bx9SpU1mzZg1isZh+/fphZWVV43xarRZr66rsQnl5Obm5uWRkZJCT\nc1+l8xJKlaqyl9vV3R1bBwfkCsUtbwm7W7ClYqYuEgRBuJB3gb9P/H27x3SfBkZTpiE5LrlyBp8c\nl4xXoBcBkQE8Y4YgnZ5jzz+EvgHX4p2trYlwq7CDtRYVVFQB3wL2H0rmx5/3UFqqp0WkJ+PHdMbL\n88a7AwSg96O/s3ThUkJCalpy3uf2s2H9ema9/TE/9vypxr6N5zYz9+B3eNh48EL7CbTyrN0uV+wo\nQdpNhs7dgNFsJDc3l40bN5KUlMRrr73GnDlzGDlyJCaTialTp/Lmm28SExNDt27dOHz4MK1bt6Z1\n69a8+eabfPrppyxatIgnn3zyumO/3G40LS0NrbbmQ8S/CbmVFYHBwfj5++Pq4YGtgwMKpfJ+4L5B\nLrWuiQRBEI6lHWPH2R23eUj3uRWknU0j+eQFJv+xDftyAy9ZyyhpEURAZAABEQH4NvVtsGtJxCLC\nXJ0IdpTjKG08O9jLmT23GLE5lnkL9tIi0pvxY6Lo07P2jEZtLPnjMPuOWFj467JGHOV9bpZXnnmF\n4MwABjYdAMCf8X8z9+D3hLk05YX2zxPmGlrzIBFII+UIrUVo5dV11UeMGMEnn3xCQEAAAE8//TRR\nUVGMGjWKd955h1mzZqHRaJgzZw5PP/00ixcvZsqUKSxZsoQuXbrg61v790YQBLRaLXl5eWRkZJCV\nlVWn93epDS0iIuIGP5k7E4lEgn9QEE0CAnDz9MTByemO6uW+27GmwqhFJAiCsOvcLmJTY2/3mO5z\nC3FOzcEmu4gT/h4kxSdXtMudTiLzQiYBkQEERgRWrMVHBqBQ1i+FfSWuKiWRbvZ4Kc1YkY8gNG6l\n7sYtccxbEMP5C3mMHx3F+DFRKK7j096y4yxWrFxHu3a1a9Lf587gwoUL9O7Yk3EtxjL34Pd08GnP\nC+0n1C7JaiVC1sMKYxMTenPt69Jz5szBzs6OtLQ0QkNDCQ8PZ9++fYwdO5Y1a9Zga2tLjx49+Pzz\nz3nttdf4+eefGTu29vqKS0Yn2dnZpKam1svoZMeOHWRnZzNixIgbPvZ2IhKJKnu5L7WEWatUiO7w\nXu67HStAwcWAvuH0Bs5kn7ndY7rPHYDZZCbpVBIXTl+oWIs/lYSDm0PlOnxAeAAu3hVteCKLBaGe\nqTGZWEwzV0eCHOXYS8sQWRpP2Cg5pYB5C2OYtyCGRx5qxfjRUbRpVXNG9eea43w8ey/NwpsTHR3N\ns88+22hjus9NsmMHO4Y/zruKQD7uOwNP25pOgNImMkRRUrQ2WsyWq7cnxsbGolKp+Pbbb5k9e3bl\n2veUKVOYMmUKIpGIXbt2XVXdDUCn01XOwjMzM2/KbtRsNrN7926Ki4sZOHBgrWvxdwLevr74Bwbi\ncTFwq2xt79pe7rudSzaqIkEQhFVHV5FamHq7x9Sg7F+/n/Rz6ajsVfQc2hOFqmFmmf9GspOzK9fh\nk+KS0JXreL5LCyYlZXHska6c7d76+ie5Dp62NkS42uFubcCKAgShcdrFfl92iHkLYwAYPzqKJ4Y/\nULmvS9//sfj3v1myZAmFhYX8+eefvP/++/WW4bxPI1JSwumVK3niw69Z8cjSqu1ikHa2whIqoBWu\nvj6dmZnJunXrWL9+PRKJhI8++ohvv/2Wd955h40bN+Lp6Ymvry/Hjh0jOjoaJ6fq4jUmk6ma0Yla\nfXWHw9zcXNzc3Ni+fTsdO3YEqCyMy87Oxt7evlqhXFxcHDY2Npw5cwa9Xs/AgQOR3MbUtJuHB/6B\ngXj5+uLk4lLZEnYv9XLf7cioWEcXCYIgLDqwiAJ1we0eU4Pyx5d/MGjcIHJScjgbe5YBowfU+dhL\nT9eN7Yp2t3Lh5AWyZ/7K/5zsODWoIycHRTXo+eUSCRHuTgTYS7GXlICl4V2hYo+lMW9hDKv+Osb4\nMVGEh3qzbksOa9dVSYvm5uYyffp0lixZwnvvvcekSZMafBz3uTl6durBWO8xRLXuhLSbFToXHUZz\n7Q+DxcXFrF+/nvXr15OXl8egQYOIjo4mOLjCX33NmjVkZ2cTHR2Nt7d3jeMv2Y1mZmaSkZFRw01N\nr9ej1+uxs7Ortv3MmTOEhoaydu1azGYzrVq1Iisri44dO7Ju3Tr69++P9LKU9PHjx8nJyUGlUqFW\nq+nfv//Nfkx1wtHJqdLe09nNrUHsPe9za5ACKi4G9B93/4jGUD8d7zuVn975iS4PdeHcsXO4+boR\nGBlI7PZYglsGE9wymHNHz6Ep0yAIAq26t6p2bMLhBLRqLa173PzM817k2M5jHN91nAmvPIrOToXQ\nyF94Hztbwlxt8LA2IhPyQWg4xyidzsi8BTHMX61h/tfv0LMWVbjCwkI++ugj5s+fz3vvvcdrr73W\nYNe/z82xc8dOfvj2B9758J1a09xGo7EyiMfFxREdHU10dDQtW9Ze/X45Foul2iy8tPTaaprl5eUU\nFRVVmrLk5eVhNBpRq9UoFApUKhVxcXF07dqV7du3ExoayqFDh3jooYdqPZ8gCKSlpeHn51eHT6Lu\n2NjaEty0Kd5+fji7uWFrb3+/l/su55K4jNRisaA13nutEyKRCIlUQkTHCAKbB/LLtF8Y+ebISrez\nhEMJNAlvQkjLEA5vOYxEKkEkFtGqeysKsgowG83s+WsP7Qe0R25V0/Th30x2cjYe/h5o7Rves7k2\n0kvLSC+tmKUrpFIi3Fzxt5dgJykBy9VTnXVBoZAx9JE2/O+Hb2sN5lChs/3ll18yffp0PvroI6yt\nrXnvvffqrL19n8aje4/uDB8xnKezniUh1wONVkLnCAOH9m1mw4YN7Nixg+joaEaPHk1U1PUzSZfs\nRjMzM0lPT69mN1pYWIidnV212TRUpO+tra1xdHRk3759+Pj4EBMTg1QqxcvLC2dn58pAfknxrVu3\nbvz111/X9AgQiUQ3FcwV1tYEhYRU9nLbOTre7+W+R7n0KCvVGXU3VcBxJyIIAnKFnKZtmgJQnFeM\nm68bVtZWeAZ6UpxXTHlpOS26tADg0JZDDP0/e+cdHkWdPvDP9s22ZNN7BZKQBiH03puAoCD2s915\nZz31Tu+nYjtPz1M8y53lsCsKoggCShGU3nsKBEhI732T7fP7Y8lC6EmWFNjP88wDmZ35zjv7JPPO\n2x+dTcb2DLJ2Z1FVXEWPlB4oVAo2Ld1EcFQwIT1D0HnrKM4txkPt4bTwR8wacc255otziuk3rl+n\nXNtotbKnqJw9RY6fI7z0xPlq8FcYkQqVnDP66jJYtGQPd1xGDbFWq+W1115zKnapVMq8efN49tln\nr7nfga7Erbfeylcrc2mQ+FBbW8EnX2wgXL6JyZMnM3/+/Iuee+a40fz8fKqrL9wYKS8vD09PTxQK\nBR4eHshkMpYvX05ycjIZGRlcf/31NDY2YrfbKSkpYdasWc5zKysdIc2YmBjWrVvHkCFDGDRoEOnp\n6c5jamtryc/Pp6amhmHDhp1z/Qshk8mIOlXLfeZ4T7fivnZwKvSrzdXezKyHTv8xafVaygrKyD+a\nz5FdR0gdncrONTudn2u8NPgG+xIRH0HhsUIa6xuJHxhPZXElVosVhUrBkd1HiOsfx8bvNpI8LJmi\nE0WMnTsWo8HItpXb0HhpGDBxADXlNWTvy6bJ0ETq6FSHp0AmcVnpV1eg5GQJgRHnZhV3Bidr6jhZ\n43CFquRyEv31RGjFaCU1CPbLKxda9P1Bvv7mH5d9TaVSycsvv8yLL77Iiy++iEQi4emnn2bevHnI\n3Fm+Hc7tt9/OTff/l+D4SDw9Pblx9hzmjpx5weMvNm7UarU6m77I5XISEhLYtWsXqamphIWF8eOP\nP5KWluZU4DKZjMTEREQiESdPniQwMJCSkhLkcjlVVVV4enpSX1+PXq8HIDk52Xmt3bt3O+veT548\nSVVVFeHh4SQmnn9kcPN4z/CoKAKCg/E6Nd7TXcvtBhxKXWowt75GsqsjEonQnOEOlkglzPnzHI7t\nP8b1f7oehYeCGX9wxK2MjUaKjhdRdLyIXWt3MWLmCE4eOQlAZUklPoE+RMRHsO/XfRQcK2D8rePJ\n2JFBv7H90HhpWDx/MWNvHkvekTx2rdmFxlNDWX4Zw2YM45MXPiFtXBqHthzinhfvobK48rxx/Prq\n+m7j2rfb7FQUVeAf5t/ZopxDo9nCzoIyml/VHONgPfBTmpDYKzjfONjDGUVIJB4kJSW1+noSiYQX\nXnjBOWwjLi6O2bNnM2/ePFSqKzMox8259OnTB1HdDoYm/w4PjYbhiS27EwqC0GLQSbO1fD6ys7M5\nduwYQ4YMwcfHh/Lycg4fPoxOp6NPnz6o1eoWClwmkyEIAmFhYezevZuEhASqqqoYO3Ys27ZtQywW\nk5KSwsiR5/aQT05OxsvLC4CIiAgiIiIAx/MrLCKC8KioFuM93bXcbi6GnavYQj8bjaemRfJb82Sy\nquIqBk4aSHlROQMmDsA/zN+p7PV+enyDfJFIJRgNRrwDvPEO9KayuJLUMakAmE1mfIJ8sNvt7P1l\nL6YmE31G9kHno8M32JfBUwdTmleKqcnEigUrzonj90jpQXB0MJuWbmLotKH8+t2vKFVKhk4bikzR\n9ay95vh5d+BEdQ0nqk+Pg00M0BOuEaESV8Gpkqa164/ywIOPtPtazzzzDM888wz//Oc/8fPz4/77\n72fevHl4era+/ayb1vOn++/hxInFzL33XsBhhdfW1jqtcLP50i2IrVYrAQEBZGRkUFxczJ49exgz\nZgyhoaFOy/psBR4eHk5DQwM6nY6UlBR8fHwICHAMRRozZsxFr+fl5UVQSEiL8Z4eGo27JMxNmxAA\nqcV+bc/VlSvl9OrXi+DoYOe+ZmXvF+oHOKxSu93OmJscf6Djbx3vPEbhoeDY/mMc3naYvqP6sv+3\n/aSOSaWusg4vX8fbd2N9I2aj+Zw4/tmufblSzvAZw6kqreKXRb8w4bYJ/Prtr5hNZtLGptHU0IRX\ngBdaLy2dRVdyt7eGerOZbfmlbMORzBvj7UOsj4rvlmXw5Vd/d9l1nnzySZ588knmz59PREQEd9xx\nB/PmzcPX19dl13BzLiNGjOC9995j7Nix5OfnU15efslz7HY7+fn55OXlkZ+fj1QqRaPRUF1djU6n\nIy4uDqlUSmBgIMXFxQQHB59XgTdz5v/Pxs/fn8iYGILDwvDx80Ol1SJTKM6ruN3K3E1bEACp2dYx\nwzO6Ks1dzy7G5mWbGTlrJAqVo2PTmXPHZz4wk6xdWaSNSyO0Zyh+oX6otCoMdgPJIxxv9YERgReN\n4ze79n/97lcEu4CpyYTFbKHoeBGmRhNjbxlLfXU93771LWKTmLy8PLz8vdD76fHy98LL18vxr59j\n0/vr0XhdmQz04pxigqLaPqq0KyAIcKyyhoO5ReQXVl5WCVNreeyxx3jsscd45513iI+P58Ybb2Te\nvHkEBXXv766r0qdPH4qKitiyZUuLJi1nUldXR35+vnMrLi4mLCyM8PBw0tLSiI6ORiKRsGzZMvz9\n/amrq6O+vp7ExERn57bU1FTneudT4J5eXsT06uWs5dZ6el6wlvtSittms1FUUEBhfr6jI1tw8CXO\ncHMtIwCiLce3CDtzdl7yYDftp6G2gWP7jxHZOxIvPy8a6xtRaVWUF5QjkUpYv3g9SUOSyN6fjaev\nJ8NmDGPzss3kZeUx7ffT0Oq1iEQiBEGgpqyG6vJqaspqqKmocfxb7tiqy6ppamhC7693KPlTyj48\nLhyxSIw+wLH/zBeTy+WjeR8xcNJAEoecP3GnO3Fg4wGqDlWx7PtlV/xa77//Pi+++CJTp07l2Wef\ndXltsRu47rrrUGmD0IRdh0Zai7lqawsFbrfbCQsLc27nax4DcOjQIXJzc/Hz8yMqKsrpQj8TjVbr\nHO/p6++PxtMTuYeHS2u5N23YwOcLFjD1+usZMmIE/ueRw42bZhSA1Gy9ti30juRCcfxm1/6MP8zg\nxKETpIxIwUPtwaEthwgID6C2opaiE0XEpTmmholEIvQBevQB+gtey2a1UV1W7VDyp5R90bEiKksq\nyTuQR31jPVaz9bRl32zxn/ECoPfTO70SzRTnFBMafnU8WHIP5XLj2Bs75Fr3338/999/PwsWLGD4\n8OGMHj2aZ599lpiYmA65/rXApEmT+HhZKSqJCrNZSsnurQT5edCrVy/Gjh3rTEC7FElJSc4kSblC\nQUzPnoRFRjpruRUeHhctCTM2NVFeVkbYqSS3ZkqKilBrNGjP6iQHjgY4FrMZlVrt3BcSFobRaCQv\nN5fU/v3POcfN1Y0IhzcRBBDAbhcQ7AJ2ux2rTcBus2Oz2bFY7FitdhRSMaLVGauFjKKMThbdzfmw\nWqycOHwCiURCTLLrH/xmk/m0Zd9s8Z/xAlBdXo1IJHK68j19PPHeepj5Xmp2DU4ka8og9H56pPLu\nmX07/775rFm1hri4yx+v6io+++wzXnrpJQYOHMg777xzTq9wN60nIyODyTf+hbgRT+PlYSbOcyNi\n0eVFpGUyGZExMefUcp+vJOxIZiax8fEXXKu2pob0gwcZMmIEAGazGalUSvrBg3j7+PDRe+/x5HPP\nYbfZeHf+fP7yzDN89r//EZeQwMAzmt+YzWZ2b9+Of2Agf3v0URavXOnud9CNEAkCggCCXUAQBGw2\nAZvd7lDEVjsWqx2rzY7ZYsditWGy2DCbbZjMVkxmGzbb6d/dy/ktDvVXuy30roxUJqVX315XbH25\nQo5/mP9FS9CMBqPTlV9wrIBAixWJwUT16r38b/MhqsurUSgVLS37Zlf/GZtEetaDURA6tdWkoc5A\nYHBgpyhzgDvvvJM777yThQsX8v3333PvqexsN22nd+/eYDhMitdPeCjl51XmEomE8MhI53hPz1O1\n3OKzSsKaGhs5duwYRQUF+Pr5kXBG/fg7r7/Ovz/4AKvVilJ5ur+EyWRCoVDg6eXFb7/8wpARI3jt\npZcwm0z0jIsjKSWF3Tt2cPjAAZ7761+57e67sZjNHM3KYu+uXdx21jhWuVzufClQazRYLBbk8q5f\n2tqdEYFDewoCdkHAbj+1NSvjU0rYYrVjttiwWG2YLTbMZjsmiw2j2YrVcrq5VUcmONpsAlLrBQYZ\nuHEDoFQrCVQHEhgZiM5bx9e/7mPsEzcjDvfn/07VzRvqDC0t+7JqinOKnS8CNeU1qLQqp9J/1Ggh\n3Gzhi6mD0Z3h7hdLOq6zVVleGYK18/OJb7nlls4W4arC29ub6soSNGFhhISFO2u59b6+qDSayx7v\n+cLf/oZfQAC9ExPx7NmTn3/8EY1Wy7BRowgKDublZ5+lqbGRXvHx9E1L49MPPyQoOJjSkhLefP99\nCgsKMDY1kZeby7sffQRAQV4emenpTL/hBiKjo0lMSSEiKor/e+wxJBLJORPV7HY7T5ya9Ddq3Di3\nMr8IzYpYEBzWsGB3fH92u4DN5rCKLTY7VouAxdqsiO2YzVaMFhsms8M6bqbznwytx2a3IzVZTZ0t\nh5tugrHRiFylpLRnaIv9ap0atU5NSMz5k4wA6qvrnUpfvm43lvImsnZkUllx2t2v9lS3jOP7nmv1\nNyM1W7CLRNhlbXP3lxWU0Tu+d5vOddN1SU5Ops/Agdx+770YzQJSKUjErfcEhYSF0TM2Fl9/fyor\nKjialcW2zZupr6sjJCyM4NBQJkyZwp/uuovho0fj6eXFU88/z8P33YfNZkMQBGRyOYZTY1UFQSAw\nOJiSoiIGDR1KQX4+AFqdjviEBNSac6tSxGIx8997r31fSBfn7Dix0GwRXyBObD6ljI0mO2aLFaPZ\nhtlspbl7eXdUxK7CZhOQWmzXdh26m8vH2GhscwtbrV6LVq8lrFcYFcOSqBAEbj7L5V5fVd8yjl9R\nQ/7RfKfVX1Neg5efFxHhAXxvtdEQ6s/6R29sk+u+uqia0cnnH8bipvuSkJDAsexjfLemjl0HmhCL\nYcpIDUPT1Oc9vqS4mML8fGd5WHV1NVnp6UyZMYPvFy1i/JQpJCYnM/2GG2g0GJg8fTprf/qJutpa\nwJGgGhoWRv2pSWxBwcGUFhej9/ZGIpEwc84cnn78cUQiEc+/+ioarZa0gQN5+vHHsVosTL/hBo5k\nZvK35593ymQ0GikqKAAg+tRo167KRePENocStlgdCtl8yj1tcsaJHcc0cy0rY1dgswtIbS4cRenm\n6sZoMKJUu6gn/XmUsNZbi9ZbS3jshUu6aspr+Pb1b8iVSZEFebc5Dl9ZWEncnM6Jn7u5csTHx7Ph\n880Y9I1YbVbMZjOfflfFns3bqSo5QmF+PgX5+RSe2vz8/Z0Wd0hYGLHx8Rw9eJDIqCj6pqUx+1RI\nxGQyUVzkmAgUFhHBtk2bABgyfDgeKpXTHT505Ejsdjt/f/11AKbfcAPTb7jBKV/z/rc+/BBwZL4/\n8NhjzhrzD999F6vFQnBoaIu4vStpU5zYasdssnV6nNjNhbHa7Ig+2fqJUNNY09myuOkGbF2xlcJj\nhcx+dHanyvH+U+8z5obR9Oof2+Y13rjvDdauWttpSXFurgylpaXccO9/MHsMRCKRIJfLkcnlBMm3\n0iNcICQsjNCwMEJObWfHrZspLizk/jvvJK63Iyzz7MsvM/+VVxyDeF56qSNvyck5cWKhuYulI05s\nswlYbbYz4sT2UwlbVkxWm8M9berecWI3F8ZDIXHMQ3fj5nJoj8vdpXIYjCg07ZNDpVIRHR3tIonc\ndBUCAgL45z8e4JNVNsQ4kixlMnjqD4PRqS9/KllQSAjL1q1rsW/ePy5/It85nDdOLGC12VvGiW12\nLBaHRWyynC5hMpmtCPYzlnLj5iwEQUBqF9wK3c3lYTKYUKgVlz7wSsvRaDqn4U1rsNvsHD9y3J01\nfJXSLykAq9TIlr0G5FIR44dpWqXMz8RhFV8sTiycESe2nY4TW2yYTVaM7jixmw5CQORW6G4uH2Oj\nER+vCw+g6CiaDE14qM/fr/tyMDYaUavPnyTlpvsjEqBvvJK+cUpnnNhmsV0wTtxcwmSxNidsuePE\nbrofgoBboV+K9YvWU5JbgtloZsCkAfQeeGVKncxGM3abHavFikqr6tCa7Muly7jc2ymHqcmEWuNW\n6FcrFZUG9hwpA9yK2JXYbDYQBCTuuexdEkEQkAqC+1f+YlhMFkbfNBpvf28WvraQ2opaTI0mdD46\n50z0yyUvKw9jk/G83d9yM3Mx1BgoyS1h2IxhaL1dPyJV1mTCL6eY8shALG1QiC7Ncm8jgiBgbjK3\ny+VuajShOU/dr5urA4nYrchdzc9Lv+LkiSPIFUpSB40kumdvtqxfxaSZt7Zqnfra6jad5+bSCALu\nsrVLYbPZ2LR0ExaTheThyZzMPMnQ6UMJCA/gyO4jZO3JQq6QM/GOiWxYvIGxc8diqDWQuSuTkJgQ\ntq7YikQqYcJtE8jclUl5QTl2mx3fYF+2LN+CIAiMuWkMdqsdsVSMzWZDLBVzdN9Rju45isVsYfrv\np1NVXIVULsViblvfAAUibnj3O/RVddR4a1n0h+uxyloXVzRV13Pj5oNITBYyx/Zrkxztpb3xc3BY\n6BqtW6FfrYivon7n+XnlWCyNKGStf05LpVKs9XVItTqs1rZ1BJXLlZjNJvbu+I2H/+81NDpHc6ed\nm9exZcMqlCoVtdVVAPgHhRISHs3a5d8AMPPW37Np3QpEIhFFBTnMuOle8nOzneeFRvRg/aoliCUS\nbrnnzwgILPrkbSRSGcPHXofdbr/o5xKJlNXLFiJXKLnprodZs/wbZsy9h73bf8U/MJSMg7spLsjF\nxy+Q62b/rk33350QBAGp+1X24tisNkbdOAq/UD9EIhE5h3PwDfZFEAQ2Lt3ItN9P4+jeo2TuzMRo\nMFJdVs2BjQeITopm3dfrmPv4XMoLytn0wyZCe4QSEhNCXFocX736FSNmjcBus7Ph2w30SO6BRCLB\nZrUhkUiI7B2JzWLj+MHjZO3KYv3i9SisCiobKtt0H710amZk51OJGHthOT8+/zFFrXTrp3pr6Ztb\ngrG+kczRfS86cepKYTKZiEqIatcaNouNXrFXrke+m85F1Am/l1eCgpPH+fjTLZiNldScXNnq8719\n/Jh29DDromIprGtbaXJETCyFJzJ4+Ll3+GD+c5hNRmbf+SA9e6cQl5TKqIkzeffVp7j57kfx8Q/k\n9eceZtqcu2ioq2Xlks+oralizp0PotF58el/XuHmex91nvf6cw/z53lvcvzIIVYvW4jFYmbUxJlE\n90oAuOTnbzz/CA8//S9kMkdya35uNgCV5aWotZ4c3LOVGXPvpUds9x/1fDkIgFQsFoM7jH5BbFYb\nMoXMOeXIbrMjloixWWxYzBbKC8rReesIjAjEO9Cbvev3UnSiiFE3jnK0f1TIUHupaWpowm6zIz3V\nqrTJ0ERtRS02q40+I/pQV1mHVCZ1rC8Vs/TdpfSf0B9PX09MTSYeeOMBxO15UAkChi9WE737CLlp\nsdx5+8TWN2URBLbvPkIVLa+oAAAgAElEQVSDv1enKHMAD5UHxw8eb9caMqWMjHT3hMGrFav16vA6\nlhSeRGLYxN//+T9Eoj+3aQ273c6Adv6t2u12xGIxjz//FtWVZfzv3y/w+z+/0OIYH/9AAIxNBgwN\ndYjEIkZOnMnyRR+h0Xnh4aHCbDIiouUzRyKRoPP0xmCox2I243lW0u3FPrfb7U5lfiZms6Od+R8e\ne4HtG9fw3Rfv8dQ/ru4WuuDwTEkloraVc1wrzLh/RouRhbP/PBuRSIRULiWydyRl+Y7km4j4CIIi\ng/j+3e/pM8Ix8zy2XywrP15JbUUtI2aOQCKT8MvXvyBTyEgbl8bxQ8fxDvBGrVNjs9mQK+VOC12m\nkJGbkUv+0XxSRqS0T5kDiETsumMSu28dj3CBZhqXs8bJ/p3biEWulGMxWRAEoc2jJBUeChrqG1ws\nmZuugtV2dVgojYYGVGp1u4YStvu5cWqNbz/7DzablaqKUgYMG4fWU09RXg6rly1sceyoiTPZt2MT\nXt6+TmX7w8IPqa2pYsT4aS3O6zNgOJ/+5xWqKkqZc+eDAHz+wWtERsfSZ8DwS34+eOREFrz1Ijov\nb6bNvgu5XMHiz97laPp+esQlsXrZ10gkEjxU10YCrEQsQvThpg8Fg8nQ2bJ0Wwx1BsRiMR4aRxmV\nzWpDLBE7lY2x0YhUKnXODBcEx8ABiVSC2WjG2GhE563jzOREkUiEIAg01jc61hXoklnvncXTM5/m\n6c+fRqVVYbPaMDYaHZvhjO3sfY2n/22oaaC+uJqKKneHxKuRnOI6Dp5oW2iqK/HzD1+ReyyL+5/o\nnM50Z9NoaEAuVyC9xMQ6m9WK2WzCQ6Xm3Vef4oEnX8FiMSOXn5v7YjYZkcpkiMUOI0Ow22lqNKDS\naC/rc6vFgs1mRaF0PH+NxkaUShUAdruNRkMDGq2na76ALo5SLkEqEbst9Pag1rV8+zt77vfZ5VUi\nkch5jFwpR66UO/effdzZa7txIBKL+PSFT8nNzMVus6NUKR2b+oztrH2evp7O/RKphC9e/qKzb8PN\nFcJ6lXS/bDI04KHuOsmbqsuURSKV4nGqtG3kBIeH83zKHECuOOv5KBY7lfXlfC6VyVq8YDQrcwCx\nWHLNKHMAsdjtcnfTDdHqtYy7eRzedd74jvZt0xpNhiYXS+Wmq3DVuNwbG1Cpuo5CbwtJqYM7W4Rr\nBrFIhNhtobvpbnioPZApZG1W5gD9h/anocEdR78asViujtIdRwy9eyt0Nx2HWAxiVyRNuHHTkSg1\nSowGY7vWqK6uJisry0USuelKNJra1qvBJbjQ3d/VXO5uujZikQipWORW6G66F0qVEmNj+xS6X5gf\nWVlZpKWluUgqN10BAWhoalsTlfagKjxJry/fR1VcQHVCX47efj+2M+K5bcFtobtpDY6yNbfL3U03\nwzvAm9rK2natoQ/Wuy30qxC7TaDR2MEWut1O4n9ewaOsGAD/Hb9hUyg5esef2rVso6EOlVrnCgnd\nXAOIxbgVupvuh3+Yf7uby/iF+nH48GEXSeSmq2Awmju8+aW8odapzJsR79vOv3OzCQyNxNc/6PQW\nEIzS4/Isd7eF7qY1uBvLuOmWBEUFsXnZ5nat4R/mz47vdrhIIjddhYamjo+fW9Q6jHpflNUVzn0b\n8nPR93RMZsw6vJeKsmLHVlqERCLFNyAIH79mJd+s8IPxDQgiUOtJ8P6dSOvr2qbQBcGxufOjrinE\nYtGp1q9u3HQjAiMCKTlZ0r41IgNR6doX43TT9aht7Pj4uSCRkPnHJ+n1yduoSouo7p3Ca7/+zDOz\nf4ePX+A5xxsa6qgoLaayvFnJF3N473YqyoqoKC1mXEkhf/NQMdlq4f035hEUEnFexX++tqc++3YQ\nveRTxBYzBRNnUTh2akd8BW66AI4OppJzfyncuOnKyBQydHodlSWV+AT6XPqE8yAWi2k0NrJ582aG\nDRvmYgnddBZVdZ3TX6Auuhe7X3wHkd2O0WKmaMXi8ypzALVGh1qjIyIm9ryfKyrKyJz/V5Zt286t\nN93jUPRlxRzcvfWUpe9Q/B4qNb4BwU53fpjem6fWLHc0r5LJiVn4AbWxCTSERl7BO3fTVZBKREg9\nZB6dLYcbF1JTXnN6K6uhuryamrIajNYw1J7RzHkg+Jzudd2RwKhASnJK2qzQAaKSo1i3bp1boV8l\n2GwCVfWmzhNAJEKQSCg8foKQ8Og2L2Py9efEHY8jLnuGfoNHXfC4utpqKkqLnO58WXYmptpqDFYL\nFosFEQLfvfQ46wT7acvePwhf/0Dnz81DVS7F9o2rObxvBxKJlAHDxpHQZ0Cb78/NlUEmFSNVyrr/\nw707Ul5Qjk+wT4vhCTarzdkWtnn4SG1lLUaDkYDwAKrLqjE1migrKGuhrGsraqkuq6amvAYvP6/T\nm78XPoE+xCTH4Onrw7qFv3J0bxLJw5I76a5dR7PbPWFwQpvXiOkTw+rvVvP888+7TjA3nUZVvRG7\nvfObyhTl5xAc1r4Rv3k5RwmPuviIX52nHp2n3jlOVGS1oq2rRlVaBIDJQ8Xov71KdE3Nacu+rJij\nGfudP1eWlZzhzg8+I3kviOCwaDxUKirLSjm0dzv3PjIPQbCze+sGBEFg+aKPsNmsjJ58A3pvv1bd\nn81mQywSYbPZLtkb3s3lIZdJ3Aq9M7Db7FQWV+Ll58WuDbuI7ReLl58XS95awti5Y/nlm1/Q6DXU\nVtQSHhtOfnY+o2eP5oOnPiDINwiZjwwvfy/0fnoi4iLw9PVE76/Hy8/rotcNjvamJLek2yv0ujpP\n9KEjObFnWbvWiUmO4b9P/Nc5HtJN96aik9ztZ+MShX7iKOHRF1foZyNIpRz4y8uErl+B2GymcNRk\n5IEh9AyOoGfvlAue1xzHb1b4JUV5HN63A7FYRPq+bYyZehNjp9yISCQi99gReqf0p66min07NvLk\ny+9haKhj4YI3Uak1TJl1O+WlRWQc2EVNVQUjJkwnICjsnGtu37gaD5Wa8pJCRk2c6Ryu4qbtyCUS\npEqpW6FfjIbahssalNI8LS0nPQdDrYGkoUnUVtSyduFaZHIZAeEB9Ejpwdqv1+Lp40lwdDBVpVUI\ndoHailq8/LwQBAGFhwKpXMrUu6fy+cufM2zGMI4fPE7+kXye/erZdimewMhADm0+1ObzOxO73U5u\nei4n0nOoNd6D2RKAPiy33ev2TuvNhg0bGDt2bPuFdNOpVNS2vdmQ2GpFwKEU24uhoZ74pH7tWiMv\nJ5vkfq3vg2728ubErDtadU6zVQ6p53xmt9tZuGA+4Jh0dvLEEb75+C3m/O4h+g0ZjYdKjUKpZOoN\nd1CUn8OKJZ8SEBRGbXUlU264nU/eeZkH//ZPflm5hLFTb6SmqgKr1UJlWQl9+g+jprL8spT56mUL\nmTBtLqLzPP8sFjMymRyrxXJNW/tymRixQnb+KThuHBRkF5C9Lxv7GS0df/nmF1YsWMHS/y4F4Nj+\nY3z39nes+mQVpSdL2bZqGwc3H2Tn6p34h/njG+LL/t/2O5S1VMqUu6YgEomoLq1G76+nqrQKgPrq\netReamwWGwAaTw1moxmdj466qrp2W5FBkUEU5xZf+sAuQF1VHQc2HuCH937g3w/9m79M+gsrP16J\nsaGJoPAC4vuKmXBz33ZfJ25QHD/9/JMLJHbTmRjNNqrrzW06V1lZxqAn7iLtuYcQm9sfg9/+22qi\nevVu1xp5J44QHn3+pLmORCwWM2bKjSxd+CEnjmUQFBqJt28AFWVF+PoHA/D9Vx+yce0y9u/aTFOj\ngYqyYtKGjkGtOd0UJ+PgTgDSD+wkL+foqfODSD/g2F+Qe4yvP/o361ctAWDJF+/xzcdvUV5SSH1t\nNT99/yXffvFfGurOHXn8wevPUldTxcIFb17pr6NLI5dKum9SXHlBORVFFYTFOtw557Oim63m5tGk\nVosVqazlG3j2vmwObzuMucnMkGlDUOvUrP5iNVK5lPj+8XgHeLNx6UaKc4qpKa9h7hNzSRySyKEt\nh8jNyKWhpoHtP23n1qduRSQSUV9dT0VhBcnDktlYthGVVkXi4EQGT3W8bQunYnxaby0VBRX0Gd2H\nb9/8lqLjRYTFhiEWi5EpHW+ZUYlRmE1m9H56IntHtvs7C4wMpCS3feVeV4rC44UOC/zwCXIzcrGa\nrUQlRhGVEEXfUX2JiI8442gr4Joub31H9+Wfd/2T1//1ukvWc9M5FFY0OP/eW4u8tgZZQx222mqe\nuWMS6h7xJPcbQlLqYEIjYlq1Vk1VBSZT03ndzJdLU6MBQ0PdKau58wkOjeTeR+axd8dvAMy9+5EW\nPeYry4pJ6T+U0uICQsNjKMw7ga9fIGaTEdmpsamiUy3GK0qL6DtwJI0N9c4xqDarlS8/fIM/z5tP\nZbnj+TRx+lwaGxtY8sV7/PEvfyeyRzyz73gAwW5n7Y+LqK2pYsK0m9B5eTvWLSu+7AS/qxW5rJsq\n9HUL1yEIAuFx4WTtzEKj12A0GEkenuy0Yr/+19do9Vp0Pjpi+8USEB7AojcWMfGOiaz5Yg16fz2D\npg5i64qtJA9Pprqsmh0/70DnrWPs3LH4h/nz+cufM/NPM9HpdUz+3WQ2/bCJ/KP5bPx+Izf/5Waa\nGpqoLqtGLBZjNVuRKWRovDQ01DqmeA2cPJBVH6+iLL8MqUzKhNsmOJW1p68nhccKkSvk3PrUrS3u\nb+afZgLQd9RpCzQmuXUPlgvRrNQDIzvvl7+mWkL+kToKjmyk9GQpGTsy8A/1JzIhkoRBCUy9eyre\ngd4dIotKqyK6dzSrVq1iypQpHXJNN66noLztk/Pqontx4M8v8NUX/2XIoJF4evlwcM9WVi75DEND\nPcn9BpPUbwjJqYPxDwq96FpH0vcSm3Cu67o1XE5CXEfjqfdh9KRZ5/3s7oef4Wj6fibOuBm5Qsnw\n8dNQa3SYTUbGXTcHgPraGg7t3cbWDT8xftpcBATMZhNyuZLy0iIie8ShUHoQHBbFob3b2Ln5F0LC\no6gocyT4iUQiRCIRPy//Gh+/QIaMnszCBW9y632P46HWUlFWjK9/EDVVFaz6/gtnPP/seepXM3Jp\nN0yKs1qs5B3J4+4X7nbuKzpexNYVWyk+UUxNRQ03/+VmGusbufkvN2M0GFn+4XIm3DYB7wBv6irr\nkEglRCdHo/PWIRKLCI4OJnFwIhKZhE1LN2GoMwCOXyKNl4bG+kbnzwiOedyrPlmFyDF/ltFzRrP0\nv0vxUHvQf2J/tHotKz9eydS7pzLzgZkt5G9W1j6BPgy/fngHfWunac4O70iFXllSSW56LjnpOeSk\n5yDTjiU0YRwedjt9ovpw65O3IlN0XuwreXQyCz5Z4Fbo3ZQ6g4mahra525upSejD1wd38/7/vYZG\n58XgUZMAqK4s4+CebRzas5XFn74DQHLqKQXfbzB6H/8W6xw5vJ/YxD7tkqUtCXGdiUwmP28Zm1yh\nJCY2EYD7n3iRwrwT3PHHJ1GpNdz14NPIZHJu/8NfUHioyM/J5kj6PrQ6L2qqKtBodchkCjxOzYM3\nNNSReWgP2RkHMEYayD2WiVbn5VTkFWXFxCb2ReelbxHPn3Xr/R36XXQmcpkYqVQsRSqRYrV1fIel\ntmC1WJ2lXc1ovbXovHVMvmsyS95egtlkdrrflWolfiF+rPlyDQMnDSQiPgLvQG+OHzzOT5/+xITb\nJrBl+RYUHgoCIwMZMHEAP/7vR/b/tp+0sWmIRCLsdjurP1+NscnI0OlDCY8LP0euOX+e4/z/dfde\nd2W/hHYQFBVEcU4xfUa276EDEL7nCEEZuZTGhZPbP965/2TmSXIzcsk5fEqBy2VEJkQSlRDFkKlD\nCIoORhBqEIu7RhervqP78sSrT2C1WpG6ICnKTceSX9H+ufZZh/YSGhGNRteyUkTv48/ICTMYOWEG\nAGXFBRzcu42923/l0/+8glqjJSl1MMn9htBvyGiOHN7DLfc93i5Z8nKyCY/q2a41uhp6H/8WLz8a\nrSeA0+3+wJOvcHDvVhRKD4aPm0Z2xgE0Oi/ConoA8Ogzb1BWWkifAcOpLC9h0MhJyGRyigtz8fUP\n5PiRdIaOnsL3X32IQqGgob4Ou93W8TfaSUglYkfrVwAPmQf1tvrOlumyUKqUmJpMGOoMqHVqKooq\n8PT1xG5zJK15+XpRV1mHQnU62W/YjGHMf2A+sx+dTX11PRuXbsRmsdF7YG8CIwKZ9WBLV9KZyhng\n3pfuvfI31kEERgayZ92edq8TcvAEQz9aid1mJ2jdbrb2CuO7ilpyDucQHhdOZO9I+o7py6yHZqHz\nPndilEjkurnR7SVI58d9983huyVLuGnu3M4Wx00rsAsCBWWGdq+za8s6+g8dd8nj/INCGTd1NuOm\nzgag4ORxDu3dxsZ1y1nyyRtU1zYQm9C+ZM38nKNEJt/I1oNiAr0FokM7v7b+SqPSaBk0YqLz5+Yy\nuyAinJ9HauKIjIkjJzuD3GOZxCf1I7HvIBAE+gwYjlqjOyeef60glzpCzVKRSIRCpqDe2D0UOsCs\nB2ex6uNVyBQyFB4KJtw2AbnS0cI2LDYMhNOubYDi3GJi+8UiEonQ6rVM//30zhK902lvpntZfhk5\n6TkM/WUPVSVVNBmaUHgoiGs0MfXuqUQlRjmTELsyUrGUWJ9QUjxV+Eut9L1lNNPuftqt0LsZBWUN\nGM3tt8R2bV3PE8+/3erzQiNiCI2IYfLM29ixaS2rvv+i3aVTdUY92cUBqOpM5BUpkMsEQgPateRV\nRVTP3kT1bFlF0BwrPzuef60gl4kRgcNCV0m615AK32BfZj86u8W+6/94PQCx/c4t9TAajEy52x0f\nBcfY0MriSuw2O2LJxcvg7Da7M+7dHAPXeGmISogicWQf1NUNeGo8EeukeNwxiejYtmf2dhReHjpS\nfIPorRahwI4jYx56RYeQEh/Ot98uZvbsORdfxE2XwC5AdmFtu9cpLy0iKCSi3XHrXVt+YfjY9ofb\npt3+FIeONFFXXYnNZiXv4G5ighuIT+pHXFIqYvfI6wtyoXj+1Y7TQgfQqrRwbnnfVUOv1O6TYNIR\nNFvpITEhLfbXVtQ6lPep+HfBsQKiEhylY4OvG8wtT96CSnv65e+3pGgCM05SFhtGeXRwR9/GZSMS\niYjRh5DspSNMZkUkEuA8U7OffuhG7nz8BbdC7yYUVzS4ZFzqmuVf0yOu/d0Tt25Yxd0PPdPudfok\nBVHVKMFiFRAJVoJU1ZzM3MSXH75O1qG9xMQlOpR7okPBe/u6zfdrHaXCkfsjBdB5nBvjdHP1EhgZ\nSEF2AQqlgsxdmQ4Fnp6D3WYnKiGKyN6RpD6cSnjsucl/Z1IZEUhlRNet/VTJPUjyDSVRI0UrttFs\njV+IlN5RhAV6sWLFj1x33bSOEdJNm8kudI0Vsmb5N7z9+c/tWmPfjo3EJqa2bX75Wei1MGmYlbIq\nEX56MRqPwTDydNe47IwDZB7aw+b1K1jw1otIZTLiElOJS+rHgD4DCZBIsLWyft5N90bVQqEr3Ar9\nasdoMDrd55VVARxd8BPhIaF49/QmYVAC191zHfoAfWeL6RJCdP6kePsSo7AiEQFcfoz1mYdv5NUP\n/+tW6F2ckqpGag3tt853bFpLXGIqnvq2T+0D2LJhFUNHuy6sp1aKiLqA06tn7xR69k5h+k2O0t2y\n4gKyDu8l69AeIlb/QHR2Oo8mphKXlEZcssOSd8WLhpuuSwuFrlVqO1UYN66norDCqcBz0nOoKa9x\nus9Th2vY3eTJvW9dPdn7MomM3r5hJGuV+EitXMoavxAD+8ailKzkm6+/Zu7NN7tWSDcuwSYIZORW\nuWStNcu/Zkore5+fD1e529uCf1Ao/kGhjBg/HbHFQkNpAbPLSsg8tIcViz/l9XkP4RsQTFxiP+KT\n+xGflEZgyMW9b266Fy0UuqeHZ6cK46b9nJm4lnM4B6VG6VTgI2aOOKeRzM+frKCxvrFFTLw74qPS\nk+ITQJxKQC4SaKsiP5MFr/2JgD63uxV6F+V4YS31LoidV5aXkHss66Izxy8HV7rb24tdJoPQKJJC\no0hKPe2mzztxlKzDezi4eyuLPnmbpkYD8UlpxCWlEp/Uj9jEc7vb/bp6KWmDR59Tm++m66E6VeUl\nBVDL1UjEEmzXUCF+d8Nus1NWUIZfiB9Wi5X8I/lk7sx0WuBRCVFEJkTSf0J/5jw2B43nxR8ucf3j\nyNqVReqY9rWp7AzEIjE9fEJI8dQSIrMCrq1pV6uU/P2vt/PnRx/kzX+/69K13bQPg9HK0XzXxM63\nbljFzFv/0O51XO1uvxKER/ciPLoXE6Y7XlJrqyvJPLSbrEN7+fjdf3A0fZ8jDp+cRtrg0cTEJrL9\ntzWMnHB9J0vu5lKIxSIUCkflgxQcWcBapZaaxqs41b2bYTaasZgtlOWXEdk7kpUfr8Q/zJ/1i9Yz\nbPowtvy4BT+5H9N+P42ohNbPXu49sDcZOzK6lULXKNQk+4SQoBGhFrvGGr8Qj947ncRxD5Genk5C\nQsIVu46b1pGeW4HN7ppGKx+9/Xd+2Hyi3etsWb+Sex5+1gUSdRyeeh8GjZjobOYiCIIjDn9wNwvf\ne4nbH3oBsUTs7Clhs9nY/tvPBIVGEt3L8fdQcPI4TY0GesQl0dRo4OSJI+0eG+um9agUUpo7f7gV\neidwvuEopkYTdVV1+IX6Yag1sOTtJcT3j2fHzzt46N8PkTQ0iaxdWdRV1qHVa7nz2TvbJUP8gHi+\nf/f7dq3RUYR7BZKi9yZKbkUsgvOVnF0JPvrXA7z43N9YtGR5h1zPzcUprmykuLLJJWt98/FbzL37\nkXavs2/HRuKS+uGhUl/64C6MSCQiPqkf8Un9mHnrHzh+5DCRPU63cxbsdsIie7J/12ZKi/JBJCI7\n4wAxcYnUVJVzLOsQxiYDoeHRaD2vjuTa7oJKIXEqdGdnEXfpWsfxyze/YDFZOHHoBHabnYrCCjYs\n2UDW7izWfLWGguwCUkakMGDSAPzD/DE1mtj641Ym3TmJsNgwTmadbLcMKq0Kv1A/Tma2f60rgUKq\nIDUwhjt7xjMrUEeMolmZdxwD+8bRK0zH3196oWMv7OYcmkw2DhyvcNl6iz55m5vuerjd62xZv5LB\nY2ZQb6Cj3jM7hMyDu9F7+yHYHeGsH7/9hM2/rKCyvITiwly2b1zN7X94gqGjp9B/6FgEQaDvgBHU\nVFdQWpxP+v4dzl7qiz55G7PJ2Jm3c1XjoTw9f+K0Qle6FbqrEASB0rxSzKbTE6DqquqcLVc9NB6s\nW7iO0rxS1ny1Bt8QX3yDfWmsb+T4geMERgWSvT8bQRAwNhrJz86nR0oPlv5nKZHxkec0hGkr8QPi\nydyZ6ZK1XIW/xofx4fHcFxPJCC8Jeknn5nW89MQtrF71A5s3b+pUOa5lBAH2Zpdisrjmd2Hxp+8w\n+84HXdKieN+Bk9RIr2fFJhFrt4uwtTGdw2yG3enw214RJ4s7v3XygGHjsNttLHj7JfZu/5XjRw4z\n67b7kSsURPdMQKP1pLKi1Hl8RVkxfQYMRyZT8OUHr9NoaODD+c8DUFpcQGlxPmazqZPu5upGdcak\nSqdq91S6M93bw48f/sikOx0jF5f+ZykRvSNY+dFKbnnyFpZ/sBy9vx6b1UZBdgFhvcJQ6VQkDEpg\n4WsLMZvM5KTnMPuR2bz9yNtIJBLi+8ez6uNV9OjTg4aaBgZMcn07w/gB8Xz39ndOuTsLiVhCL59Q\nUrw0BEostKZuvCPY8M2LePQYTWNjE7J29ul203qy8quoqHWdMvjm47dZ8mtWu9cxm4wMnPIMx7OP\n4qn3wW7z4WSRuNXDVJoaDSz4IgOtfxJKDxXFZaCQCwS2rzS+XfgHhTJxxi3On/0CQ1j1/efYrDZ6\n9e5Dr4S+rFzyGQqlB9NvuhuL2YTZZGTHpjVcf8t9xPRKZPP6lZiMTZw8lkVRfi6LPnmHJ154m9zj\nWZQW5ZHcb2i3D1V0BZpL1sBtobcbU5OJwuOF5KTnsH7Regx1Bmx2GwMnDWTAxAFk7szEZrUx+LrB\nTLpzEkd2HyEsNoyS3BIA5Ao5CKD0ULJiwQom/24yEqmE4OhgZEoZBUcL6Nn3yoxSDI8Np7KkEkNt\n+6dVtQWdUsvwkFju7dmDiT6KU8q867E/T8stDy5k6MiuOxb3aqWsupGj+e3v197M1wve5I4//sUl\n/dDlCiWxCUmERfYEu8DJE0dY9tV/Sd+/s1XrvPWPJ0AZSkWZo4yusryEzKyydsvnSsIiezLr1vu5\n449/RaXRolJrmH3nA87mNrPveIAtG1ah1npSU1lBdWUZYpGY7MwDjJ92EwOHj8fHL4C62mq0Wi/0\nPv68/4YjkVAQBLIzDlCUnwPAim8/xWhsZPFn72I0NvL5e6912n13B1RnuNyd//NWe3eKMF0Zq8VK\neWE5gRGBiEQibFYb+Ufz8Q/zZ8PiDUy+azK5Gbk0NTQxZNoQPH088fLzwmQwYbPaMBvNyBQywuPC\nyd6XTdKQJCRSCQHhAez/dT8AI28cCSKY9vuWncmUaiWjbxyNTHFlLcJmt3va+LQrep0zifIOJsXL\niwhnX/WuiyDAO9+VU1Dny8hRU3jrzX/yyJ+f7GyxrgkaTVb2Zrsubl5anM+vq3/gg29/c9mayT2h\noV6GTBZAn2R/7BXHWbhgPvW11UyedTuTZ9520fOrq8o5cnAvt1wXRGWNGKvFQn1dDWuWvMZ37+1j\nxPjpjBg3vcs3gmkuixPsdn5etpCjGfv53QN/Y83yb1CqVFgtFkoK8zCbjHzz8Vv4B4ZQWpQHwOfv\nv0ZIeDRWsxm73U5oZA+UShUlBY78HmNT5xgc3QWN8rSOkDz//PPPg8PtmV6UjtlmvtB5Vz0Wk4WT\nmSfx9PWkydDE4jcXI5FI2LJ8Cz379mTR/EV4B3qj0qlQe6o5sPEAhloDUYlRePt7k7Uri5jkGPxC\n/djw7QYABkwagGtE/qIAACAASURBVEgkYsuPW6goqmD49cNRaVX06NMDALVOjUR6rrUgEonOu9/V\n2Cw20renkzIi5Ypex0OmpI9/JJOCAkjRyvCS2OkGU1aZdd/fCfM2cO8N/bhjgoaFi38gr6iC/v2v\nvYlOHYnRYmPr4RKaTK4rTfzXsw9yx5+eJDDYdcrRQwExYQK9owUighyKbeyUG0noO4g9Wzfw97/e\nQ011Bf6BoedtL7v0qw+JTejD2LEDMZoFZHIJfRM8mDNnPCn9BpOTncFn773Kb2uXYTI2ERgcjtKj\n6zaDEolE9IxPJil1EEoPFb4BQYgQ8fPSr5g25y4KTh5D56ln6JipHN63g+HjprF+1RJuve9xesQn\no1Sp+XHxJySnDeXgnq2o1Do81GoEux2RSNyl770zUMol9ArTO7PcnQpdJBJxsuoktU2uc291deqq\n6qgqrULrpWXdwnUc238Mm9VGxo4MJFIJWr2WgZMGcuzAMexWO56+nvQd3RcPtQfeAd4c3nqY4weP\nM3LWSNSearL3Z3Pi8An6jupLXP84ohIcs8E1nhqy92Zz/R+v73Kd2fT+epa8vYRxN4+7IusH6fwY\nFhjBOH8dkUoRCvGlLfJ3PvmRAX16depc9bKKGuJH3c/fHpjNw78bR6SfCakEpo7pxytv/g+5Ukt8\nfO9LL+Sm1Vhtdrall1LX6DrjYsv6lZQWFzDLBY1kzkYsdmxn4qn3IW3IaObe/QgVpcV89v4/2bTu\nR+QKJRHRp0c8v/bsgzz6zOtoNB6EBUJMKPh6gUgEOi9vkvoN5rrZvyMqJp6MA7t4/41n2bdjIzab\nldCIGCRSKV0ZjdaToNAIUgeNRO/jR0hYFDnHMinMO4GvfxC9EvqwZcMq+g8bi0Qi4cjhfcjkcqwW\nCzKZnPyTx0gbPJqfly0kJW0oYrGEhQvmE5fUj62//oTVYsHb17+zb7PT8NYqCPM/3brdqdABKhoq\nKK4t7gy5XM6JwyfYuHQjhccKiU6MBqCiyOG+kylkLH5zMZXFlRTnFFNdXo3CQ4FfqB+pY1LZuXon\nqWNS2bNuDwmDEji09RC9B/Rm/2/7SRySSFVJFR4aD6ISo9i3fh8DJjqstR4pPYhJPnfKkVgsJig6\nCJWmaylzAKlcSsb2TPzD/NH7u6Z+VCqR0tsvnHFBwQz0VOArE7j45HWwWm289O9vmHDzM+i0Hqz8\nZRfXTxx8ibOuDKvW72LirfPY8eN8BvaNPefzm6YN5d6H5tGjZxyRka1v6uPmwtgFgR2ZpVTVuTYj\n+qk/zubvb32FTK5w6bqXQ4/4ZCbPvI2g0Eh+W/MD//3n/6Hz8ubA7q3IFQpGT5p1yTV8/AJJHTSS\nmbf8Hh+/QPZs/5U3X3qM2uoKaqorCQjvDQJIuviodJFIRHSvBGJiE+mV0AeAyB5xrPj2U5oaG8jJ\nziAlbSgHdm8mJW0ou7auZ+zUG9m4djkjx88gO/MAFouZrEN78VCpqa+rQemhQqO9NpO6A31U+Hud\n1istXu981b4dLtCVIH1bOnlH8ph691QMdY74y6YfNiGVSTl24BgzH5jpTFTTeGr48pUvGXfLONK3\npZMwKAG5Qo5SpaRHnx788N4PxPWLIzAykITBCfzw3g/4BPkw/PrhnMw4SXj85bnvfDozZfUCZO7I\nZM/6vSj8fo9E2v4kHL2HJ8m+gfRWgeIy+6rXNzTx8tvf8MaHS3n64ZswHPsOmVRK8rgHOJSVS1Jc\nZLvlag0vvvk1O/YdoXT/Vxc9bsvSV7jjsX9hs9kYM/bKeDeuNQRBYO+RcsprXFuzvOTz//K7P/4N\nlaZzh1D1TulP75T+NNTXsmb5N3z76ds8/a+PW71OctoQktOG8OBTr7Jj42pWLfqQjQeD0GtMDO8n\nInXQKNcLfwUJDovitt8/ATgmx/kFhjBMocQvMISb7noIAFNTEzabjY3rfmTCtLnIFUoWf/oOI8ZP\nJyAorDPF71R0HvIWP7ew0O3YOVx4uKNlcjmrv1jNdfde51TMAF5+Xk6XutVsRaPXUF9Vj1+wH5m7\nMhk0eRBH9x6lR58e+IX5oVQrCe0RSlz/OALCAwDwD/Mnrn8cEXERgOMBlDI8pVNdw63lxKETrPtm\nHV/+40vqaupIHpbMlNtD0fu37Q1XJBLRwyeU0UGhjPBRESQH6WV8HaXlNfzfq59yx6NvMGFkP1Z/\n9RKjBicjOeW77BEZzHNvfMXtN4xpk1xtYfpdLxLg58X//nV5DUdmThzAjXc8QmhYBL16nWvJu7l8\nbHaBXUdKKa5qdOm6W9av5NDe7dzxx7+6dN32IFcoUWs9ObBrM3f+6al2rRUa0YPRU28iMjoYjLls\nWPUFH85/jvLSQtQaHX4BF5jB2kVRa3WIRCLnv82Wd2BIBBvX/oCxqZERY6exb+dGrr/5Pj559x+M\nnDCjk6XuPGLDvFDKT9vlIkEQnEFNq83Kf377D2fs6pYseXsJI28YiV+In3PfigUrGDFrBEXHi8jY\nkUH/Cf1Zu3AtITEhpI1Lwyeo61nQrqLwWCF71+9lz/o9+AT50G9MP1LHpjpfdtqCWq4i0TeEJK0U\njejy68Zz8kp5+Z1vWLFuJ08/PJeH7rrw3PHJt83jkXtnMGnUle0PXVxWRdrkR3j/1QeZNn5gq8+/\n7q5/MHPOndxz731XQLqrH7PVzo7MEpe72ctLi/i/P83hf99tdum6rcWjooTAzb8giEQUDx+PyduP\nD96YR3h0r0tmwbcFQ0Mdm9b+yG9rl1FeUsjw8dMZOX56i1au3Z3Mg7s5sHsLSamDSOjT+r/ZqwGR\nSMTUgRFIJKctqBYKXRAEvtjxBVUG18wa7izyj+azaekmbnjoBmora8ncmUl0UjRblm8hOimaoKgg\ngqOD+fbf3zL3ibmdLe4VoaKwgr0b9rLnlz3IFDJSx6TSb0w/PH3bF2sK9QwgxdvH0Yq1FedlHM3j\n5bcXsW1vJk8/NJd7bp5wWefMvv8V0te/13aBL8GPa3fwhyffZfdPbxEc0PbSzXv/+h5Rcf14+tnn\nXSfcNUCT2cb29BKXJsA1c9eMQcz/eDl6n85LmvIoKaTf3x9HYnT0oLeqNeyZN59JMwa7ZDDMpago\nK2bT2uX8tnY5VquFEaeUe4ALM/3ddA46lYzRfUNb7Guh0AFWHl5Jdml2hwp2JTiZeZJDWw7h6etJ\n/wn9z2uNVpZUdsnYdlsQBAGjwcjO1TvZu34vjQ2NpI5Opd/YfviHte+BJpfIifcNJVmnwKeVrVh3\nH8zm5bcXcfREIU8/fBO3XD+qVeff+5e3GJwaf1kvAK1BKKvmtcVr2bIni+WfzHPJms/N/5oj+Q18\ns3ipS9a72qlpMLErq4xGF5amNfPq//2RUZOud04T6yx6LvyQ4PUrW+z7OSSSz3Q67n/8pQ6VpSD3\nGBtPKXedl54R46czdvKNeKg1VFeW8fE7L+Op98FmtTJ26mx6xid3qHxuWkeIn5q0Xi2f7eco9B05\nO9h2YluHCuambVgtVmrKavAN8eV/z/wPS6WF4ORgUsekEh7b/jdwH7WeFJ8A4jwE5K1oACMI8P2a\nXezYdYgNWw/y9MM3cf2ktmWs19YbiBhwFzWZi9t0/vmwmy0cTL6Fn0PCeOqX+S5bF2DR8k088vwC\nftu4mdhYd1z9QuQU13E4twq7i0ahnsnXC96kUQijd//Z+HpDjzCh03oe9PzyPYJ//bnFvvmlhfi9\ntZDw6F6dIxSQnXGAjWuXU/T/7J11WJRpF4fvGbq7WxoBC8VuEbu7c61V1+52Xbt17e7u7gQFMVBE\nBARBQcSgc74/WP10RQXmHUDX+7q8hOF9n3OYYeY8cc7vRIWR+PoFxtbOtO02CDPLEmRnZ3H60E68\nW3QqMv9+8X2crbRxMP+8MumLgB4SG8LR+0cL1bFf5I/Hfo+RSCSE3Q8jPT0dKycrDM0NMbIyklqM\nRiwSY6+bo6tuqpD/ldOpS/7MWHUFG2cvatpHEpmow+Te5aXyafL8rciJ5Zj0RwepxgGIevkajwZD\nODqoLaWb1UBOyiOI3Ih59ZYabcbzx/BR/Navv+Dj/8hkZGVzN+QVUXHCJr99IDDAlz27TqBs1gFz\nazvk5eUpX1KCrUXR5AVphj2h9KzRiP7pPJYpJ89oc2t8YqJo020QpctXLRK/PpCZkUFkeAjb1sxn\nwpy1RIQGky3JxtrWqUj9+sX38XQ2xFj3cy38LwL62+S3bLyxsTD9+sW/yEjLICUpBU3d/+vr+57y\npVzdcqybuI6qzary+PZjnMo74VTeie2zt9NpjHSzaQ1lddz0TCmpJkItD+Iv/+bgyRvMWLITfR1N\nJgxpT9UKJaXy59+oO7QiJmAbalIk8h06dZOB41dw+8RijA1k37O537hVaOhZMP3PeSgrF9zvn4W3\niencfhxLUqpsNPszMzJo7+XKxL+fcP9JTqAyNDbHzVGDCm4FbIMmABqhwZhcPgUiMdG1G5JoYZMz\n8di0jKTE97TpNogKVYu29HHW2H6M+XMlSYnvWTxjBJ36DONx4B2iI8PIzMykXY/BiMVisrOz0fzV\n77xYUM/D4rPGLPCvsjXI6UN99/ldMrOFP9f6Rd5IS0njRdgLtA20ObHhBA5lHYgKiSItOY2YiBiq\ntaiGuZ05dy/fxbGcI2GBYZiVMENJJf+iGVbaJlQ3saSWnhrmSqCYz63JHQcv0X7AbJ6/iGPu+F6M\nGtAaSzPhk5AcbMxYvvEoTb0KltE6ad5WTl3yw/fYItTVVAT2Lnca1/Eg6X0cFao3RUtTHU/PioVi\nt7iRlJLK4+fvuPs0jvRM2QXWEX2aM372GvQNDXj2Uh4dXQNex0aT/PIcpcoUXYZ3uo4er0t78rp0\nBdL/CYaGxmbU9G6Bjb0LR/dsYM/m5ahraH2mIleYaOvqsXvTUiTZEsKCH1K/RUfWLpqKS6nylHAo\nydOg+wTd9+PW1bP437yInZMbYjk55OSKt1Ldz4qCvBgXqy+TeL9IVBaJRBhrGReKU7/4kqT3Sbx8\n9pLHfo8RiUW8ffWWrMwsXKu4cvfKXdyquhF0KwhtA+2Pojl12tdBWS3vK0AleSXKGtvS3d6ZFsYa\nORnr+Qzk63acpkTlnhw568Oev8dyYO0Eyrnb5W+QfNC6cVXSMzLZvPdcvu9t2GUyCvJyHFw3UQae\nfZsW3pVIebqfJ/cu4e7qjI+PT6H7UFScPHkSJ7fqdB1zjeW7E3ge8/17Csr8KUPwatKeEg4lMdCB\nup45+uodWlihKIlkxqjesjMuBfbO7oz7azUjpizB9+pZ+rWrybljewvdD7eyleg/YiZmViUYOHoW\n6amplCztSS3vlrx78xp7Z3eCH92l95BJuHtUZsf6Rezf+jcnD3xbgOkXskFHQzHXx79YoQO8T31P\n5JtIWfv0C+BN7BsCbwSipadFwMUA/M/741rZlZTEFNKS0tDU1ST6aXSOitZ5fxp0a0Do/VAsnSxx\nreQKgKKyYp7Ozg3V9ahsbI2XoRY2KiKUv7e1LpHA5TtwzjenC4WBDss2HKFZz+moqCiydu5Qeneo\nj4Fe4cgutvCuRL0OE+jetm6ett4jol5hX60Ps8Z2p1eHos12blCrHFXLOzLgj0k8C39GCVt7tLW1\ni9QnWXH16lU6dOzExSs3KdNoIc9fppElUSImXgl7y6zP6maFYPPKOXhUqkmN+s0/PqaqDEZ6oK4K\nrmUqoqqmzviB7alWtwmqauqC2hcCLR09KtdsgEfl2lw6fYBV8yehqKRcqJnmYjk5dPUMUVVTR0lZ\nhdgXkfheOYuJuTW6eoa8fxuPW9lKnDiwlfY9BuPsnqOnrqauwa4NSwgM8EFVVR19QxOuXTiOoYkZ\nl04dooTDr54HQmNhqI6+1pc7jbmWEhtr/lqhy4qIoAgCLgXwMvwlb1+95cLuC5jbmbNv6T6sXKxQ\nVFJES08Ltypu3L9+nzK1ypD4NpG46DgGLRiEgpICVZvlPZFGTiyHi4E17e2c6WiuR0nVLOTzmrF+\n4CLM3gz7LvCi21QqObbmcWgUd04vZe3cIdj8o6BXmBzfMpWGXSZ/97r9J65TreVIAs+vpEGtwmsN\n+y3cnKy5eWg2LmYSatWoQqcObXn48GFRuyUYAQEBeNVvwO9DR9Ck02BGz1qHipouhsbmxL58TrYE\nsrPyo17wfdYsnIKikhLlv3MG7VG5Ngs2HmVU35b4Xj0rqA9CYmxmye9j5zBv7UEiQoPp3KAMh3au\nLRJf6jfrSPeBY/GsVg9VdQ3qN+tAVlYWSQnv0dLRw+fyacpVrMneLSvRNzSher1mXDiVU7J589Ip\n0lJSCH8aVCS+/+zoauS+oMn13WWiafJDyZn+CEQEReBz0ofs7GzObDtDckIyL0JfkJKYwp2Ld3Cp\n6IKBuQFvXr0BQFVDFR0DHUQiEbXa1qJ8vfxlimspa1LN3JE+9vZ46SliLJ+/+nGA9+du8eZdIn73\nQ8jKyOT8yM4snd6vUBLKvoaHuz1N6nkyef7Wr14zfvZmtu2/wDOfjYW2e5AfOjSvSdj1NTSqak2b\nlk1o0awxAQEBRe1Wgblx4wYtWramXccuVPJqy5TFO3B290AkgpJ2WSirKqChrkVa3BWEzA2cP2UI\nppYlaN9zSJ6u19E1YN2B65w9upvtaxcK54gM0NU34rfh0/h790Xi42JpW9sZn8uneBkVydPnIq7c\nEfEoXAKFkLwvJy+Prr4ROnqGyMnJ0eePnAl16JOHlCpfBXUNLVp17k9c7AtKeVTl2dPHWNk6cfXc\nUarWbkhyUiKpKbKpavgvIhKBjnrub6Qvstw/sM13G68SXsnUsZ+ZV1GvePX8FU4eTgTeCCQ+Jp7y\nXuVR1VBlz6I9NOvXjMyMTHYv2E2LgS0ICwxDXUudV1GvKFOzTL7OxD+lhK4Z7tpaWClkFrj29kPD\nFMdL/tSNfYNYXhkzA3WY3Bs8XQs2qMBUajqchVP6ULHs5+U19TtNpEZFV8b93q6IPMs/B0/eYOuh\n6zx9FkvXbj3o2q0benrFW/DoyZMnbNm6lc2btqCpo4d3q+5UqdUw12vTM3KEj/q08GDZ9rOCZElP\nGdaNOg1bU63u16WDv8XujUsJenCHSfPy3xylKEhPT2Ph+J6IdCqjZtEGHT1DxGIxbvYSStoWrVT3\ngzs3uXn5NHoGxrTo2Jetq+dRr0k7tq2ez7DJi3jy6B4BvleQSLJp2/33IvX1Z0BbXZEapcxy/dlX\nA/qF4AvcjbwrU8d+BtLT0klLSkND9/+dnEIfhPIy/CXq2uqEPwwHoFbrWh+vCbwZSPL7ZOxK2ZGR\nnsFDn4dYOFjk2no1L6goKOOqb4Gbhjya4vyvxD8Q8+otM5fsZOOes4wf3J7RfZrD1pMQFgVVSoGX\nJ1IrdGRmwd4LkJ4GLWpBAfvDv3mXiG3lXsQH7gJyNOI9Gg5hx/JReNUoK52PRURAYCib911k895z\neFbwoGv3XrRrV3ykid++fcuWrVvZuHETca/jqV6vGdXqNcuzjKjPldOcP76fsbP+lsqP4b2a0uW3\nkZSuUE2qcfxvXmTRjBHMX3f4h2li4vNAhP/dON68jkVTSxdHe13qVVYoarcAyMrMRE5enoXT/qBT\nn+GcPrKTek3acXzfFjS0dHgadI/RM2Un4/xfwcZUA3eb3DujfjWgB70M4mTgydx+9ItPSHqXxOlt\np6nYoCLPgp5RpmYZlFSUuH70OonvEgm9H0qddnV47PeY6i2r8+TOE8rWLsulvZfQM9XDrYpbgW2b\naBpQSkcfe5UspJGTCY+MYcaSvDVMkZrtp2Hr8Zyva5WFkV0LPtTBixw940uH5jUYMnkVt48vRle7\naFtkCsXx87fYvO8iD59Eo6NvRO06dalTuzZVqxaeEMm7d+/w9fXlpo8PzyKi2L1rB3UatKBKnWbY\nu5Qq0JgzRvXCu3lnPCrXKtD9fdtUZ/SMFdg6CrNT9P5tPMN7NeW3YVMpW6kmYnHxbij+LFrEjXs5\nk+q3b+IIur4AB4ts2nQbVCwmJVmZmUSGP0FLR4/s7GxOHdxOrQatUFVTZ/WCyYycvqyoXfzhKedg\ngLlB7omdXw3o71Pes/76j7EdVRREBEWQnJCMU3kntvy5BdMSptiVsuPa4Wt0HN2RrbO20n5Ee9ZP\nXk/ttrXJzs4mKiQK9+ruUunHy8vJ46xngbumMgYFOBf/lA8NU677PWLC4Lw1TJGWp+NWYBsQnPNN\neWeY+ptU4w0Yu5yrtx/Ssm03pvSpIICHxQuJRML68284d/k2D+/c4ME9f+rWq0/pUu44OTni5OiI\no6MjOjrSbWNLJBJ8fHzw8fXF18cXH19fYmNicHItjY2jOy7u5aVeEQO8iX/FsO6N2XA4f+V7WVlZ\ndG5QmsWbTmBoYv79G/JBdlYWw3t441x9GH16NSgymdi8IJFA+EsJMXFy6GlKsLPM5syRXezZtAyX\n0hVo03Ug5lYF2+mTBTHREZw+vJO42BeUrVjzP93qVCi8PCxRUcp94vnVgC6RSFh3bR2JaYkyde5H\nIul9EmEPwkhNTiUtOQ0lFSXiY+JR11JHy0CLkhVLsnvhbpoPaE7AxQBePX9FtRbVPlN8Kyg6KlqU\n0jPBWU2CUj501XND2oYpBeHx0+d0HTKfEppqjJZIKG1jCr+1AivpKyoqNxvO/El9qFTuJ5SrFCtw\nJMyOD5LnWVlZ3Pe/ydOge8REhRMdGUpE+FMUFBTwKO+JspIi2lqaaGpqoqmpgbqGBpqammRmZhIf\nH0/863hev37N6/h44uNzvn4TH4+NnQPp6RnYO7tj4+COnbM7phY2MvmVdm9aRmZ6Oh37DMvT9Ynv\n39KtSXm2nghARVXt+zcUAIlEws5d5wm6uZGpi7bIxIasuXTqIHs2L8fC2o7W3QZi61A88l0gR8UP\nQF6heBwP/KioKslT18OCr805vxrQAY7eP0pIbIiMXCt+xEXHoW+aczbxaVLb6W2nqdm6Jm9fvSXY\nL5j4mHjqdqiLurY6W/7cQosBLdg2extt/2jL4VWH6TqhqyBVAiKRCFtdM0ppa2JRAF31f3PFJ5AZ\nS3YS/yZBqoYp+WXcX5vYf+I6mxcPp0JpB6w8u3Nl/1wsP+lXLy2yGLM4kCw24Exo7udln/LuzWui\nI8N48/oVKclJpCQnkpqSRGpKMmmpyYhEItQ0tFBT10JDUxt1TW3UNbXQ0NJBQyPn/8KkT6uq/Lli\n93e3ic+f2MeFE/uZvqRwBEzu3r7GnAkDmb/uMMZmP2aL0RuXTrF303K0dPRo030Qzm7litqlXwhE\nbh3WPuWbAd3vmR9XQq7IxLHigEQiIexBGA9uPMC1kiuBNwOp0aoGcdFxnyW1VW5UmVNbT1GteTWi\nnkZhYGpA8J1gqjWvxuHVh+k0uhOntpzCyNIIS0dLdI0L3lcbQE1JFTc9c1w1xKiLpJPKzMrKJigk\nkv7jlgMwYXD7QksaO3slgG5D5zOoRxPGDmr78fGAwFB6DFvInVNLBbUnb9WEtNBDyMkJW+tclISn\n23A3+ufTgQ+4dZWD21czZeHmXH+empLM3EmD0NLWY/D4uYXqW1Lie4b3akqnPsMLnEVfHPD3ucSe\njcsQy8nTf+QMTM2tCX3ykCO716OppUuj1t1+2EnLfxU3G11KmH69FPebAT02IZbtvttl4lhxICQg\nhJsnbtJ6SGuUVZV59ugZEY8jqNa82mdJbX1n9iXYP5iL+y5Svl55ytUpR+CNQF4+e4mntyfq2sIo\nT1loGeOuq4OtUlbuAgF5JDL6FQvXHKRHu3rMWrqbwLA3LJvcmWqewjZM+RrZ2RK6DZ3Py1dv2LRo\nOKZGX05wpizYhggRk4d1FMxubNxb3OoOJCbg55GjPPfSmcTUovZCNsyd9DuVa3pTpXajzx4/e2wP\naxdNZeS0ZZSrVLNonCOnzl1X34geg8YVmQ9CEBjgw9lje4h7/gQzW3cat+mOgZEppw7toGm7nkXt\n3i/yQY1SZmir5y77Ct8J6BKJhLXX1pKUliQT54qa7Oxs1oxbg0tFF5ITkvHq7MX2OdvpNLrTF0lt\ndqXtCLwZiKWD5WclatKiKKeIs54ZpbRU0JWTblv91t1gDpy4gbqaMgO7N6bX8MWsmTMYdXVlFOQL\np4nCxt1n6TViEZsWDadzy29nMpf2GsSmRcMp5SLcWe2dB0/pNWIx/ieXCDZmUZEpp8Gxp8ImgBUn\nUpKT6Nm8IjtO3wcgOTGBuZN/R0/fiEFjZxexdzkc2rkW36vnmLlsR1G7IhVZmZmkpaUSHxfD+iUz\n6D9yBgbGZjwNfsDta+dp12NwUbv4i++gpCCHVwXLby72ctVy/4BIJOJ14mteJf6cAjMikYjQe6HY\nutvi6e2JSCQi/GE4pjamSCQS7l25R6NejTCxMQHA0NywQB3NckNfTYdKJjbUN9LGVlWMili6rfXZ\nK/YSGf2KLq1qs/PQZTq2qEl2toSwyJe4O8smuelTIqJe0bzXdN4lJOF/cmmebHrXLEeDLpMY2lu4\nzFcTQ13MjPUYPm1toST7yZL4bCMi3319Nv6jo6CgiLmVLWeO7ObVi+dMG9WTnoPG06x98Wmk4uRa\nFmNTCwZ39qZijfpoakt3nFZUiMViHt33w97ZHdcyFVm9cArV6jZhzYLJyMvnvA5qGtIn7/5Cdpjo\nq2Km9+2k0G8GdIDMrExCXv28iXHyCvK8fPYSaxdrIEdy9X38e9yquOFQ1kGwAA4gFolx1LektokZ\nVXRUMFKQkN8+FXHx71H9xKfTl/wJjXiJi4Ml9x6F06JBZW7ffYK1hSFVyrvgeyeYsm6yLWOZvmgH\nv09cyaKpv+UrOGtrqSMSwc5Dl/GuJVzijkMJMxKTUlm55RhNvX7clqWP3xnxLvXnyQfIDTV1LRbP\nGIaKuiZzVu3HxNyqqF36AkNjcxq37c6kIZ1RU9fE2k421RQGt65idOsKKcbmZCkL3+L37u2rXDl7\nlDfxr0hPrT6PjgAAIABJREFUS8XBpRQhQffpPXQySYnvObh9Ne/exhdZC9dffBs7Uy201L4dj777\naWGpa/lT67rbl7EnIz3j4/fSKLZ9DQ1ldSqbOdDb3gFvfSVM85GxHv824ePXEomEfcevATkr8uSU\nNGpUcmPTnnN4uNsTEh5NWnoGv/dsSlDIc+TkxDKrLZdIJDx99gK7Kr3JyMzimc9GalbKv0jOkF7N\neJeQxLVbwjYp6dvJm66t6tBhYPHYus0vErEike+Kt8iJtJw8uI3fu9Rn7F9rGDxuTlG7802UlVVZ\ntu0M/r6XWbd4uuDjaz+8i8uquVge3Y3z37J5LryadqB1l/5Y2zrS948pnD22h0atupKelsrta+dx\nK1eZ8JBHJLx7g0Qi4Runsb8oAgx1vl+y+c0z9A/svL2Tl+9eCuLUfwkrHRNK6ehgI4Wu+oBxKxg/\nuB3b9l9AQUEeNydrsrKzUVNRIiAwlEE9mjBq5nraNalOUkoqejoalHSQ7SonWwIdB8wlMCyOg6uG\nYmtlIvWYmk6tibq9BQ11YVcmi9Ye4vrth+z+e6yg48qaJLEhZ0OLt557QfG5cprDu9ZjYW1PvxHC\nB0dZc2TPBq6fP86slXsEG9PA9wouq+cB8FJFjaDFWxGJZbs7c9//Bvf9bqCmoYmdkxvZ2dmsWzKD\nBesPc+PSKW5dPUeZCtWo7tUs5zgy5BHWds4y9ekXuaOjoUh199z12z8lT38xVnrFbxusuKIkr0Q5\nYzu6OzjTwkiDEooFD+YAA7s3okn3qXRqWYsSlsb4Bjxm4+4zVK1QEt+AYG74BaEgL0/48xiqe7rK\nPJhv3X8BZdu2dO/Uimt7JgsSzCUSOLZ7M671Rwvg4ecM7d2MNo2rUaX5CMHHliUxybIRUClKbl4+\nxdDujTh/fD99hk7+IYM5QJM2Peg6YAwH21Qh+OhuQcaMK1eZqNqNCDMyYVT8K1rXcuTymcOCjP01\n3MpWokOvobiUqsCVc0fxvXqOanWbIBbLcfn0IXoNnoBILOaOzyViXzznwskDMvXnF1/HUCdvPS/y\ntEKPehvFHj/hZqM/I0Ya+pTSNcBBJRt5KXsavktIYuPusziUMKNBLQ9a9/2TDQv+QENdhS6D5+Hi\nYEm96mWwMjPk8GkfWjWqgrambANAdEw83YbOx9hAh02LhiMWC3cMcz9ClWl71IiLfY5G7FwOb5gg\n2NgfuH77ER0HzSH85gbBx5YFZ6MdSUr/Oc7P/W9eZPPKORibWdG+5+CfZpUXfeMie47txr1qXWp5\ntxRkzE7epVm99zLKKmosnjGc9+/eMGTCPHR0ZS+Y9PiBPxY2Djy860twYAAd+wzjytkjqKiqcfv6\nBdQ1tShdviquZX7cvJQflWruJl/tgf4p302KA1BXVCfgeQBZ2dJph/9syIvlcdK3oK6pGRW1lTBQ\nkEhVP/6BgeNX8lvnBuw9dpWMzCyqeZZk8vytSCSQmJTCH31a4HsnGM8yjpR1s0VZSbaZ0LOW7abP\nyMXMm9ibEf1aCp5TMX7uLuKzHKhfyRQj5RBOXfSjTtWCNf/4GhamBrTwroy+W3t+69wQ9QK2py0M\nMuW0CIzLyTgWZWWhlPCWLCVl6TvdCcGH+f93fImPi+HQznXMnzIUkVhM599G0LhNd7QLITAVFhoW\n1lSs3YjDO9dx3/8G5SrWlGq8BVOH0rRdT+yd3RGLxVSq6Y22jj7ThnUnOzsLZ3cPYRz/CvqGJigo\nKrJ97ULUNbV4Gx+Hz+XT1PJuScCtK/QeMondm5biVrYSqSlJKH2SuPc2Po709LTPHvuFMCgqyOFa\nQu+rcq+fkqf4IxaLsdT7pSj0AS1lDaqZO9Db3g4vPSWM5KWXZd156DLjZ2/m9ZsE0tIysDI3ZPKw\nTuw9do3qnq5U9nDB1dGKWWO7o62pRvtm1QX4Tb6Nz53HONX4jYTEFKL8tlC3WmnBbXg2/oOy9krs\nHZPBsAbRTPi9DaERL9h56LLgtqzMDUkLPUQpr4H4338q+PhCEZ+RE8xV4l5SftIAKg7vQZlZo5FP\nSS5Sv2wObaPagDaU/msM8okJuV7je/UsM0b1YkTv5gAsWH+YfsOnYW37E+rs/8OQCfMwNbdmdL/W\nBR7j0ulDiEQiqtdr+tnjpStUY8NhHxLfv2dQZy+ePLonrbvf5M3rWMpXqUPb7r9jaGzOkInzObZv\nE+16/I5ILCY9LQ0VVTW2rVnw2X37tqwkIy1Npr79VzHQVs7zQjHPaiNWulY8iXlSQJd+fEQiETY6\nppTS1sLyY5KbdLXjH+g1YjGN6pSnd4f6DJm0Co9S9ixZfxgDXS3cnKwBZNvSNBcGjFuB//0QDq2f\niKOt8OImdx48xaPhEG4cXkCF0g58+lzuWD6akrX74+5sjYuDsBNJOTkxL+9so1yDoSyf2Y+KZYtf\noIl8l1OaYnbqECoxOcmomqGPMb56luf/+sAvLBSSErA8knNerPU0CKObF4n6Rxb19vUL+F49y5vX\nMYhEYqnao/6oNGrdDTsnN1rVdGDBuiNY2ea99Csp8T2rF0xm28mAr17Ttf8oajdoyeKZI7B3LkXf\nYVOFcPsLdPQMP3ZEc3LLkYguXaEaRqaWBAb44lCyNCKRCPE/CXs71y/G2taJ7Ows9Aylb7T0iy8x\n0s77rkeed4ht9GQvTlIcUVFUpryJHT3sHWlqqIaVlElukCONunX/BdZsP0lmZhbOdhaoqypjY2mE\nupoyfTt542hrjpGBtqCiK3lh77GrqNm3xM3JiptHFsgkmK/dcYpeIxaTEX7kn2D+JffOLKdd/78E\ntw1w5oEWdbscYswmeZ6/eCcTGwVFIlIi6l3OPFv0r/QWSRFuuWcpKpOulSOqkp2dzdWQx8wa248W\n1e04eXArdk6uDBozm3F/rf7PBfMPOLqWZffZhyyYNpRzx/bm+b5pI3oyad73W1WbW9sxd81BzK3t\naF/PlRuXTknjbp4p5VEFyFH2q9+0w8fH1y6eRgmHkjx+GECTtj3x97nE2sXTuHT6UKH49V/BQDtv\nCXGQjxW6mpIaJlomvHj3okBO/WiYahrirqOHvUoWOdXA0q3GV209Qe0qpXifkMzJi37UqOjK6zcJ\nTJy7hXG/t6NRt8mkZ2SSkJiCspIi9QupgcoH4t8m0G3oApSVFHl1b8dn4jVC0m/MMrKysr8rzSon\nJ+b87lkYlupI7F3h+gmkZYo4cEuP0IgYDK0q8zI1EXOKdiv7U5LQRvLPaVlEg1aoP36A6PF94h1c\niapUNIHyafADngTeZbeKKpZBd4lS1+L5m1hqN2zJmJkrZF5e9SMhJy/P4k0nWDprFCFB9/ht+LRv\nXr970zJKlauMo2ve3+8NW3ahdoNWLJ4xnAsn9jFkwjzU1P+v8paenoaiovDv3w8TtcyMDO7evsaA\nUX9iaWPP7esXUFZR5dLpQwydMJ89m5YRHRkms/a7/yW01ZVQVsy7HkW+BL7tjex/6oCuIKeAk545\n7lrKGMhlAdIlAa7dcYoqHi4421ugoqxI9z8WsGvlGKJjXuPmbI2Whhq7jlxGQ12FKh4uZGdLWDd/\niKAZ5N9DIpGwcfdZRkxfx6ZFw2hct4LMbHk0HEKfjt781rlBnq430NPC/+QSLMp3I/LWJkF8kBdL\neB//HHk5ZXR11DDSfC/IuELxablamp4B3RUUSdAz5HXUMyIalsHI1BKrEg5Y2Dh8/N/cqgRisXQi\nNAnv3hDz4jkxLyKJiY4gJvo5sS+juOd3DesSTtiXLIVDldqotOzM8T9HsWZs8RaCKWp+HzuHEwe2\nMrJvC+auzr3c62nwA3wunWb++vyXpymrqDJ65kp8r56lb+vq9PljMjW8miMSiVgxexxDJ86X9lfI\nFf+bF7l67hijpi/HytaRmOgIWnTsS9ADPypWr49IJCItNQWRSMzJA9t4ERVOuUq1cS9XOK2afzZM\n9fO+Oof8BnQDey4HC5+sVNToqmpTSs8YJ1UJSiIJ0gbyD1zxCeTSjfuMGdSGrq3rcOH6PbQ01Oje\nti7Dp62lS6vaaKrnvGCDezVlxaZjNPXyFMR2XpBIJJTy+h0NHRNeP9gpMzu37z2hfMOh3D6+mHLu\ndvm619xEn4t7/8KuSm9Czq+AxTtBTwd6FSyn4KbfQ575HGTixLnYGLzEQq84tTIT8TT+84qF+wE+\n/PX3XvQNc+r9oyPDeBYaTGRYMNcvniRywxJU1TQIDQ5EVV0DVVV1VNTUUVPXQEVVA1U1ddQ0tADJ\nP73RUz72SE9LTcXA2Az/mxeRk1fAyMQcIxMLjEwtKeHgQi3vFkyYvQa5fzX2EYvliImOwMj0V6Ls\nt2jQojN2jm60qG7H/LWHKOHwebfDGSN6sWDjUalsVKhal20nA1i/7E92rJ7D1CW70DMw+vjzjIx0\nFBSEq4IpW7EmZT/J5v/wN6CmrsHG5bN4GfWMtLRUoiPDSE1Npseg8Vw5ewRJdvavnZwCYKqXv06e\neapD/5SfRTVOJBJhp2uGu7YmFvmQYs0PvUYsZtmM/vQasYgxA9uQkprOwZM3KOtmh6OtGU/Comlc\ntwJKigoysf8p2dmSjyv/05f8uXjjPr/3bEJqagbWFoYyk/f9e8tx1u04za3ji6Qa52FwBFN6TGW3\n1j+d7nbMBK381d6npWeg5dSG1NCDUvkiKzLktDn+9P9CPa9jXzKqX0vW7b/+3XvT09NITkwgOTmR\nlKREkhITSElOIDkpkZTkRLKzslFWUUVJWeWf/1VRUlZGRVUNfUNTVNXy/sGxfPZYHFxKU69JuwL9\nnv81JNnZDO/dDO/mnfBq2h6AZbNG4+TuQd1GbYSxIZHw6uVzQoIeIBKJqFTTm1OHthMa/JD+I2cI\nYuN7ZGVmEhcbjZGpJZtW/EWz9r3R1tUH4MXzZxzdswE9Q2Oatu2FvILsP/N+dHTUFale6vvqcJ+S\n756a9ob2P3RAV1NSxU3PDDd1edTEWYBsgjmAvJyYhWsOoKOlzvRFOxk/uB2VPZwxN9HH3dmmULqg\nRcfEo6OlzpL1hxnVvxVnrwTwKv4dtauUos1vs7i8b45MgvnzF3GcvODH3YdhUgdzABcHS5KsTJgX\nEsmI8b3zHcwBynkPwe/kYql9kRXx6Z+35X10/zbObnmrPVZUVEJRV+njB6gscS9XGd+rZ38F9Dwi\nEotZsP4IK+aMQ05OnszMDJKSkgQL5pCzQDE0seDUoR3UqN+CZbNGY+fkTvteQ/C5chrXMhU/O2eX\nBXLy8h9X7JVrNWT/tr+p07ANVraObF75F7+PnUP40yDOn9iLsZk1PldOY2PnTJ1GbX7qfiEFxdQg\n/59x+d4DsTewz7eR4oCFljGNbVzoZWNORU3RP8FctmhrqVOzkjvLZw5g8+LhKCsp0qSeJ2VcZdv9\n7FNexr7hr+W7Gd63BTMW76RutdKoqigT/jyGVg2r8PeW44LblEgkjJ6+jnuPwjG2FeZMvsPA2XRp\n50WVlWOpvD7/K+zufyxgZP9WMpfGlYaId5+Xpzy674ezm3Bd6ITCrWwl7vvfKGo3fjgGjPoTn3N7\nOXrsKm5eK7gvgyaWz0Ifs3nlbBq26kq5yrWYPb4/Wtr6bFw+i/T0wqsTt3d2p3XXgUgk2SQmvEPX\nwBhVdY2PRz5nj+6i1+AJWJZw4EXUs0Lz60fCVDd/2+1QgBW6poomxlrGP8QqXVFeERc9c9w1ldCV\nk+1qPDcsTQ0wMcwp9VFRVsTJTvgSsG8hkUh4FBLBqYv+dGpRi+xsCddvP+KmfxA1K7lx/fYjGtUp\nL6jNW3eD8Ww8jPCbG7A0E0YVrMPA2TTzqvRRTGfv6vFUbT6Sqwfn5un+ZRuOoKGuSrc2dQTxRxZI\nxMpEv/88sS3ovh+1G7QqIo++jrauPhqaOkSGP8HC+sec4BcVwSFhNOz/N/7+94mLt8fRSgFFBeFW\np226DcLC2h5VNXX2bl5B3cbtuHHpJPLyCrx/G4+evhEHdqymZad+gtn8GppaOmhq6QCQlZXJsb2b\nuO9/k5r1m6Orb4RYLIeDS2liXkSydvE0tHUNaNSqKyqqP18fg/yiq6GEqnK+w3P+AzoU/213fTUd\nSukZ4aQiQUHAJLf8MrB74yKxm5mZxYrNx1BTUcbUWJeNC4cxZcE21s8fSseBc1i/4A/2HbvG7z2a\nYKivLZjdFZuOsXH3WbIjpUv0+ZR/B3MAUyNdVs0ZhIF7B8JurEdd7evCCzf9g9h24CI3Dssm61co\nEiVan32fkZFORGgwto6uReTRt3EvV4l7fjd+BfR8MLxnUybOW0eavA4SOR2CfXdzUZyJ1ye13dLi\nWLLMx6+t7ZxITHhH136juHr+GPqGJhzYtooWHX/j7u1rvHkdS836LQSz/S36DZ9OzItI6jfrSHp6\nGmsXT0NTWw+3shXZuOxPBo6eRWZmJo8D7+BerpLUVRs/Oqb6BZvUFCjtsDhuu8uJ5XDSt6SdXUk6\nWxjgppr9TzD/b5GRmUnLPjOpWcmNbEk2qipKONmZY2asx5Ezvgzu1Yz3Ccn06uAlaDDvOXwRgcHP\n8D22ULAxcwvmHyjpYMWji6swKduF+0Hhud6fkZlJ9Zaji30wB3iR/Pn22qN7fji7F7/t9g+4lavE\nfb9f2+55Zcao3nToPRRbB1dcSkhoWSubiRPaEBL0gBVzxsnEpkfl2iirqLJ/2ypqeDXjjs9l5OQV\nyEhP49Sh7VSt04Sls0YhyRZG8fJ7GJlYIK+ggKqaOv1HzkBBQYH0tFS0dPRR19RGW1ef0uWr8ve8\nSSR/RVr4v0J+s9s/UKCArqmiiZGm0fcvLAQ0lTWoYuZALzt7vPWVMZHPKGqXCp3sbAmrtp5gzooc\ndSp3Z2vevEukQ7MaLF57iF2HL6OtqY6roxU1K7kJthUOkJ6RiXvdgVSrUJLlMwcINu63gvkH9HU1\nSXi8l06D5nL4tM8XP/doMJTbJ6RPyJM5IhGh8Z9n/QY98MPJtfgGdPeylbnn//3s+1/AyrkTKF+l\nNh6Va398TOGfbfYBo2Zi5+TOHz0aky2D5lcVq9enTbeBpKWmcOboLhq36caezctp2akf54/vwaNS\n7SIpJ1NQUMTZ3QMlZRUUFJW4cfEkyUmJvIyKQFlFBVV1DW5cPIm/z6VC962o0dNUQkWpYDsUBX4l\n7Y2KdpVurWNK0xIu9LAyobwGqIoLZ5ZZHFm64TAe7vYkp6Yx7q9NjB/cnqXrj6CqoszWpSMxNdJj\nRL+WONtbCGr3+u1HaDi0YtuykfRoV0+wcfMSzD/l3tnlrNt5iiWfCHT0GrGYIb2aFkolgbSki7VI\ny/j8HDXonh9OxXiFrqqugYmpFU+DHxS1K8Wa3RuXoqWjR/1mHb96jVfT9gweN4fWNZ0Ifvh1PXdp\niImOpHWXAUSGhZCRno6+oQmP7vlRpmJ1rpw9wsuoCJnYzQu9Bk9A39AEsVjM5bOH8WraAYlEwuWz\nhyldviqrF0xm/dIZPH7gX2Q+FiamegXPIShwQHcydCr0UgNlBWXKGdvRw96F5kbqlBBAV/1HJTkl\njUnztuIbEMzgnk05dcmPetXKEPrsJU/CoujftSHRMa9RVVGimmdJwWvdl6w/zMgZ60gLO/SxgYwQ\n5DeYf+DQ+kk8DX/BH1NWM2L6OiqVc6Zney/B/JIlr9O1vngsPyVrRcWvbfdvc/bYHmJfPKdj7z++\ne62NvQv7Lz9h7aJpHN+/RXBfLEs4UMKhJC+iwmnfcwjb1synQ+8/WDh1GJrauhzbt5moiFDB7eYV\ne5dSKKuoYufkxunDO1i7eBplKlRHIoHXr2Lo2GcYWVk/f/tuEQXfbgcpArq6sjpWeoVTAmSsoY+X\nlTO9ba2opi1GS65ws9WLI1MXbqd3h/pUKO2ASCTiflA4GZlZlHWzQywWU6dqacxNZFOT3HXIfJ6G\nv+DawXmCjlvQYA7w4o0iNpWnEqfahd2nwwmOlW2PeCF59vZz3e2I0GAMjM2Kfbbvr/K1r3PH5zLX\nzh9j0NjZ+bpvzur9PA8PYcmfo2Ti1wd51rKeNYh9EUnZitUp5VEFe2d3oiJCCXvykEunD5GRkS4T\n+9+jrGcNug8cSymPKtTybsmzp0F0GziGv+dOxKWUsBU5xRF9bRWUC7jdDlIEdABXE9ll4MqL5Slp\nYE0HWxfam+niopKFPP+9JLdPOX/tLoMn/s2tu8G8fZeIpkaObGz82wSmj+xCRFQsowa0wtVRNhOt\n5JQ0XGr1o171Miye9pugY0sTzCUS2HzVkKBoFR6/UKJZ18XMmzefM5fvCOqjLMgWKxOT8PkbOPz2\nVUoW4/PzD/xaoefOs6eP2bhiFpPnbyzQ/X2HTcW1dAUGd/WWSWBVUlahUk1v9AxMePH8GeFPg7hy\n9gily1dl5/rFyMvLs2zWaBLevRHcdl4Qi+WoULUu8goK3PG9wskDW0lLLT4NlGSJpWHBV+dQwLK1\nD9jo26CqqEpyunBPtrayJu76JrioiVAWZVPYtePFlWfPYzlx4Tazxnan+x8LGdCtET2HLaR+zXI8\nfvqcBZP7YGdtKjP7T8KiKe01iNvHFwt+Fi9NMP9ASgY8ehKBs70l6hryZEUcoX6nCZy5coc543sK\n6K2wJGZ/UmkgkeC8ZgFOB7eTaGnDy+QkMovxKl1RUQl7exeC793Gwb14Hg+U2LUOtRdRPPxtOFkq\nsn8uE9+/ZfzvHdh6XLrz3toNW2Pn5E5HL3eWbTv9UYHt6eMHWNs6faGvXxBMzK2o3bA19/2uM3D0\nLE4d3oFX0w6Uq1STp48DSUlO4lnoYxSVlHFwKS21vfwiEolo1bkfWZmZH/uv/8woKshhIsX5OUi5\nQpcTy+Fk7CSVA5DzwtnqmdOihAvdrIwpqy75J5j/4gMZmZkoyMujpqpM/64NCY+MYc3cIVT3dGXB\n5D4ysRkdE090TDzTFu+kZf/FJD3ZL2gwz8zMwrvTJFLQkSqYi0Tw5NYazAxU0NOSp1WFWEQiOL19\nBga6WpT1Hkz82+JZBvPik+5qqjFRGPpeJjU1CcvkJPQDvszcL1ZIJCxT18Rr7nhEmcVv4i3OzMT0\nyhl0H/ih9jJa5vbev3tDz+aVWH9QmF0LyxIO7LkQxJa/57FkUm8iwp4wZ+IgQTO/LW3sadS6G9q6\n+mhq6VKuUk1iXkSSlPieEwe28uThXV5EhnP6cE7zph3rFhHzIlIw+3lBTl7+P9HYxcJQDTkpO21K\n/SyVNCn5/Yu+gqqiChVM7Olp70QTA1Ws/sNJbrnx6vU7+o9dzpL1h7GzNuXt+yRWbDrG/hPXqV7R\nFT0dDcFXyx+Ijoln/qr9jJqxHlcHS85sHiO4jZYTQmnbsjn7lvSWapy/txxHk1C2Dn3P3A7heJT4\n/47RyP6tWDdvCPZV+7D7yBVpXRYWkZjQ1/9PVkzT1iNBUQk5sRh5ZWWSzK2Lzre8IBKRYGaJX0oC\nEgFWjEKTLS/PVs8a9I+J5kT4E5nbi3r2FM8a9QXvRd5ryEQad/qDLX/PoXT5qpTyqAJAfFyMoHZq\neDUD4MzhnXTsM4zYF8/Jys4mLS2ViLBgIsKekJqShKGxeaHWr/9XsDKUXmtf6oCup66HsZZxvu4x\n1TKkgbULvUpYUFlLhEYh6Kr/aDwMjmDg+BUsnNKH9PRMzl4JYMWfA/As48j0kV2wtTL5/iAFZMbi\nnfQYlrOtv37BUHYcvISCgrAf2B0GzqZlhXh6tCyLnFzB/wxv33vCuh2nWTlrIGIx5DZUGVdbXj/Y\nyb7j15g4V/gM4oKSLtYmPev/M9gsZRWOd+7HSZcyBIz+iwTLEkXoXd7IHjaVXi+Ln2pkenoas8b2\nY2/II9ofucXujUt59vSxTG06u3vgUbEmC6cPE3RcbR09DuxYTbf+o1FSVibu1UtWzBnHyD4tSE0R\n/my5828j0dLWRVVdg4Ytu+BQsjQ1vVuwa8MS2vccypkjO4usfv1nRU9TCQ1V6SuRBHlFXE2/nxyn\nIKeAu2EJOtu70NZEG0flTP7b4n45pKal8/xF3MfvV287yaiZ69HWUiMtPYP09Ez+6NOc1dtOkJ6R\nSTl3O3S0pEuc+Bbj/tpEhdIOLJzch2kLd6CoIM/8Sb259yhMMBsfzsy7t/SUekemfMOhee7mtmvl\nGJxszVGwbsrmveekMywAcWkaXzx26u4tHnhW572tYxF4VDA+yMAWF84f30tn79LUbtiSEVOXADBx\n7nqmj5R9LkWN+s0pW6G6oEH9aXAgVes0JiU5iaePH3D9/HEUFBTpPXQyyiqqgtn5N136jeLQzrVk\npKUR8uge1es1IS01hUf3/KhU05sD21bxPFwGHWb+g1gafvlZUBAECegOhg4oyOU+u9BV1aaWhRN9\nbEtQW1ce/V8lZ5+RmZnFqJnrkUgkbN1/ASN9bQZ2a8yg8SuZPrIL0xfvQE5OLPPErqTkVCQSCTaW\nRgQGR+DiYEmjOuVZs/0klmYG1KrsLogdIRLgPuDRcAi3j+evHWqnlrV4++ggR31FlG44hZBw2Z+t\nfo3wN8pfPBZ07zZOxTTB7Gu4la3M/WKgGpeU+J6pw7vzIMCX3ecf4Vnt/zoE+oYmtOk2kJVzJ8jc\nD6GDup2TG57V6mHr5MqwSYswNrNETV2TSjXqCzL+19DU0qFDr6Efa8Q9q3mxbc18OvUdzpOHd6nZ\noCUnD20nLvaFTP342VGQF2NqIMwiTZCAriiv+JlynFgkxl7PnNa2LnS1NKSUWjaK4v92ydnXuH0v\nhPT0TDbvPU9qWjoqyopYmRvi6mSNhpoq7s42SCQSrC2MUBR42/tTrt56yOwVe+nT0Zvg0Cj87oXQ\ntkk1urWpK5gNIYN5vzHL6NPRm3Ludvm+9+AdI96pNsapxngadJ7KmD83fP+mmHgICoN0YaSFs+VU\neJX05dsv6IE/Tq5lBbFRWLh7VObe7aIN6Mf3b6Fv6+o0bduTwePm5HpN/WYdiY+L4dY12e/OyGKl\nLhbvt9saAAAgAElEQVTLkZqazI2LJ2nbbRAr5oxnw7KZbF01VyaysZ9Ss34L0lJTKOtZg8AAXx4E\n+HDu2F5ioiNJS02Rqe2fHTMDNeSlTIb7gGCHICVNSqKmpEolUwd62TvSyEAVc4Vfq/GvkZmZxZOw\naE5d9GPtvCEcOnWDBrU8WL7pKNsOXCA65jWWZgZ0aVVbJop881ftRyKRcPHGfULCo6lfoyxJyamc\nv3aXBZP7fDwGEGoSIWQwX7P9JNnZEn7r3KBA90c+CyErS0KtCuY8uboKHW0NDNw75KoHD8DOM9Br\nOgxbDH1nQbj0Z8YJ2TpfPPb4gT8OJcsUugKjtDiWLENYyCPS01IL3fbVc0fp2bwSb+Ji2XYygDKe\n3/77Gj97DbPG9pN5AATZBHVjU0sGjZ3NpTOHkZeXx8yyBGZWtoSHBJGakizT3+tD/bqGphapKckY\nGJqgqa2D2Q+Q61GcsRZoux1AbsqUKVOEGEhTWZPSSklYKKSj+B/scpYf4uLfM2rmBiqVc+LRk0i8\na5ZDTVWZjbvPsmbOYDIysujdoT4K8rLLMvAs48jqbSepW60MA8evpGk9T6p7utK0xzR+69ygWMi5\n5sadB0+ZOHcrRzdNKfAYLTr3ZN88b+q6pSEWQ9XyLvRs58WUBdu44ReEsYHOxz72PI+FGev5qGmU\nlALRsSBlH/mwRENeJ3/++l47fww1dU3KVKgm1dhFweNAfzS0dDG1KBzt/Ef3/ZgzcSBv4+MYPXMF\nntXy3kvAsWQZVi2YXCitQ63tnEhPTeHAjtWCbJGLxWIUFBQJDryDR9XaaOsYcGzfZtLTUvG5cgb/\nm5dw96iCnJzsPjtMzK0xtbDG3+cSrboMQKUQ6vt/VnTUFXG0/HJyX1AEC+gAYpE8pApbSvEzERAY\nyv2gcNycrLkfFI6etgY3/R/zIjYev/sh9GhbD3MTfcxN9KXK/P4eiUkp7D9xHSUlBXz8H9O9bV2G\nTV2D370QZo/rgamxnmC2hAzmAOYeXXl+a3OBV7Ejpq+jQc1yNKnjxqdJuqoqSnRoVgOxSMzgSas4\nfv4WznYWGL95Dxf9Ph9ELILGVSlwRp9IDt+XhmT/a957aMcaylWujYV1/o8Ripo3r+N49vQRZSoI\n8zp/jdgXz1k6azS+V07Te8gkmrTtgYpq/s4fjc2sCAm6T3RkGA4lvy6Yoh0YgOXxPaTpGZKuVfAP\nXaGDes6YzhzdsxEFBUW8mrYnKPAOvQZPQFlFla2r51O5VsF2r/KKqpo67uUq/wrmUuJooYO2unBl\njsJGDVVjkPsy0ecXObg5WbN2xynS0jMY2rsZQyavYsm033Cxt2TMwLaUcpH96iYu/j09hy+iQS0P\nOjavSVhkDCmp6SyfOYCR/Vvh4mApmC0hg3ls3Fva/DaLB+dWIi7gedP9oHBOX/Jn+G8tv3pN/Zpl\n8T+5hF7t69Nj2EI6L91F4r8vKusEUpTspIm0ycylhPfRfT+c3Yq/5GtuyDrTPfbFc3auX8yEwR2p\n6d2cWSv3YO9SqsDj9R4yiWP7NvHi+bPcL8jOxnHrSkyunsXq4PYC2/mA0Nvv8goKdB84lorVvUhP\nT0NdQ4vMjAxOHtxO2+6/k5qazPNnTwWx9QvZoKQgh7mUUq//RtiALpID1cJp2PIjsXrbSUZMX8ez\nqFhG9GvJ4Il/s3T9Ecb93o5siYTKHs7o6Qh3jpIbt+89YdjUNew6fBlFBQWePsvJTJ01tjuxcW8x\n0NPC2EC4rR8hg/mjaBXWHAjF2ECb3ZcKfn7dbegCNi3K2wdqUy9P7pxaSptODej5PpEz0a9IlBdD\nnQrQs2mBfQCIS//yTRwTHYGSsiraurJpqCNrbOxdePUyisSEd4KOG/wwgNkTBjBhcEcMjc1Zvecy\nFasLs8r9ZimbWMyr0hV4l5zMdYkwAiqyOFN/GR1JROhjrG2dGD+oPZVqeGNpY09WZiYP/G9y9uhu\nwWz9QlisTTQES4b7gKBb7gAoqEPSM/gPN1LJysrm7y3HkQC3AoJRV1OhfCkHFq09yICujbC3McPR\n1pzqnq4y3Vr/QHa2hJlLdjFleCf+3nKcOeN7MmbWRhrU9kBNRRlHW3PBbEkkEvqNWYZ3TQ9Bgnli\nqpihGzQJeW3CmvFlqVehYHr1i9cdQktDLd99253szFl58gYKTaox6mE4t9WU0dLVxNrcqEB+ANx7\nbUzKv/qf+12/QEZmusxLkWRJyOP7KCmpYGFj//2Lv4Pv1bMs+2sMftcv4N2sIwNGzcTG3kUAL/+P\nhpYO2dlZXD13jLK5JNMtvX6e5fFxPFJQJD01FWs76WWuP2y/nzmyk7IVa0idAKmlo0f40yDu3rpK\nxRpeVK/XlMUzRhAaHIiGljZPHz+gfJXaUvv9C2ERi0WUszdEXuDPf+GjiVgRVGUjR/qjMHXhdqqU\nd6FCaQfeJSRz7NwtgkIiWTV7EP73n+JkZ46TnXBBNDfSMzI5dzWAR08iefs+kWfPY5m7ch9r5gzm\n1EV//hrbg9Bnwip8SSQS6nUYz/M3YsHOzMPCw4h8cJSOtdVRUSzYSunt+ySmzN/Goql9833vDb8g\nUtPSmTi0A3fOLKOplyeT523DsXpf5q/az/uE/Cl1ZYvVeJ1LudqPvN3+AfeylbknZT366cM7GdC+\nNmeP7qZrv1HMWb2fSjW9BfLwS5q07UlE6GPu3r728bE3r2P5o0djlJVVmfr3Xv6YtJA9m5cLtoVd\no35zzCxLMKK7F8lJiaxbPJ1DO9cWOEO9er2m9BsxnVreOUdJaWkpdOoznJdREdi7lCItNYUnj+4J\n4vsvhMHCUA1lReETF0USiUT4pXRmEsQI10CguJOals7S9Ue49yiM8YPbc+qSHwGBoSgpKpCQmEJS\nSioNanlw71EYQ3s3x95Gdl3RPqVhl8mUdLRkzvie7D5yhVOX/NHT0aB8KQfaNhE2k/rAyRvo6Wig\noqRIadcSKAik7a1cojnvgvagpFhwWcRmPafRq319mnp55vvext2m0L9rIxr9K6s9ODSK1dtOsmb7\nSRrU8qBvJ29qV/n+me4bTLkcrvXxe+W4GIyunuPgxqXYjJqJduUfdzUVFRHKn2P6snz72XzdFxjg\ny4UT+7h6/hjV6zWlece+mBaijn1WZiZt67qw60wgF08dYNuaBUyat/6zHYHU1GS6N67AzrMPBLMZ\n+uQhwQ8D0NTSwdTChpuXT9Gpz3Cpx371MopDu9aRmpzEoLGz+Xv+RBxcShMe8ogeg8b/cGWRPyO1\ny5gLIvX6b2QT0AFe+0Nq8dN4lgX1Ooxn1tjuWJgYMGDccvatGQ9ASHg0yzYcZe7EngSHRuFka1Eo\nW+w+dx5z4sJturSqzeiZG1g/fyiaGqokJKYgLy+HirKioPZu33vCg6BnhEa8xNRIl35dGgoybtUW\nI5k9rgdVyhd8q3X/iets23/h42uSH+4+DKPb0PkEnF72zet2Hb7M6m0nefY8lr6dvBncqynKSrk/\nxw8S7Xgal/NGVo2JosyfoxAnvCc85BE2zqW4+8dk3jkJo8pXFPRsXol5aw+iq//tI4mY6AjOn9jP\nhZP7MTAypVaDVtRu0BKxuGgEoX0unWLprJFUrNmQQWP+yvWawAAftq9dxMxlO6S2l5KchJKyMs+f\nhXJ41zoGjfmLgFtXKV2+qtRjQ86EIVuSTWLCOx743wRytvs1NHWIj4uhhEPBm2r9QjqMdVXwdM5f\n/5O8IrvoomEts6GLGwO7Neb0JX9u33tCScecpMArPoGcuODH7PE9UJCXp6SDVaGdl6/ZfpIpwzph\na2XCrLHd6Td2GSOmryMjM1PwYL5i0zFGTl+HRyl7po3oTMyrt+w7fu37N36HIZNW0bZJNamCOeQv\nEe7fzFyyk/GD23/3unZNq3Nu15+c2j6d128TqNN+PBm5tRMVyfEs/v+zctNzx5BPSiQ1JRllFVVE\nWZlYntj/fcckkpx/xRC3cpW4/5Vs94R3bzh3bC9jB7Rl0tCuiMViZizZzsxlO6nbqE2RBfN7fjeY\nN2UIfYZP/2owByhZ2pMKVeuyYdlMqW0GBvhy9dwxLG3skUiyeR37UrBgDjktR+Xk5Ni6ai7O7h5c\nPXcMM8sSLJ89lhuXTnLmyK6P154/vlcwu7/4PramWt+/qIDITktUURcUtSH9rcxMFBeae1diw+4z\niMVipo3oDEA1z5JU8yz8WbBIBO/e//9c9/Wb98yf1BtlJUXBm7ocO3cLJUUF9qwaR/+xy1k6ox+T\nh3UkMUk6Kcgt+87z5l0ig6XMJh80YSV/je3+P/bOOjzKa4nD72rcXQkECBrc3SnuULS4S3GKt0Cx\nosGhuENxd3eHAAkBQtzdV+4fKVzaJpD9NiEB8j4Pz+0le+ZMSHbnO3NmfoOhgZ7Ga73fBPLw2Wv2\nrJ6U5TWuBeyoUbEEL175ZXjlkCwy+0e7mvTvSVnpAT29n1eamJAerDNJi9pdOonjmcOoZHLetu5K\nRNnKGnxXOU+FqnXxfHSHOk3aAOm1AQ9uXuL+rUuEBPlTq0ELeg4aT/E8ole/0WMOb7yfseP0Y2Sy\nzz/stu7Slz9mjOTK2SPUathS8L4Vq9dj159L2b9tNcEBfigUaWxeORepTEbrzn0xNDYVbPs9YrGE\nviOmcXTfJhq26MiWVfNp0vpHKlavz+o/plI3rS3H92/F0jpnTov5/BczQzmWJpp/HmWVnD0yGn4Z\n1ai8wKLp/bN1IpkmpKSmMX/lPuat3IdaDe2b1eCnnxcxbtYGgkOjsLM2z/ZgHhkdh1qt5taDl1ia\nG7NyzhDW7zgFICiAvue5tx+/e+xhy1Lt7hIv3njCc28/hv7UQtD6WUt3MWXk50/n/2bHwYt0bVM3\nw6+FJv/zZxBWoToACkUaBobps5DDK9XINJibvHxK0a2r0A8OwNDvDSVWz0c3Im8JOdk6OHHp1F/M\nnzKUbs1rsHnnXRLlNekzci5bj91jwOiZeSKYhwb5M6x7Y8wtrfl16fYsBfP3jJmxlJ3rFxPo/1Yr\nH7r0GUml6vWZMHslW1bNQ6VS0bpzX/ZtXfXhNcnJ2o1H1TcwpFOvYSQnJeL56A7uFaqTEB9LTGQ4\nzx/f49GdqwS8e01YcIBW++STNQrl4OkccvIOHQAVBF8GZfbP7M2L7Dx4ibY/VMv0/jSnmLZwGz07\n1Gfein0YG+nzx7R+xMYlIhaLtAqumaFUqug6bD4zRnfD0/sdD576MGt8z2yxbVCkHWGPd6KvJ1w9\nSaVSU77pz1SuUZe109tovN4/KJxqrcbgd2ezRuvUajUS55ao/I5m+PVLIW5EJ/3zGdr20imi503C\nwcaKtHZ98WveAXUmojUFju3G5cA/RU6eDZ5A+N8PBl+axIR4Xr14gs/LJ/i8fEpIkB+RYSGULl+V\nyjUbITJpxO2HIegbGlG6hBFVS+WNYiy/tz7MmjiEqXNX4ChQlS8xIZ5+7aqz45T21eNqlYoNy2fR\nrF0PTh/ehVKhoO/IqWz0mE25KnW0TsUrFQp2bVxKy4692bF+MSnJSTRq2ZmTB7czauofhAYFcPbY\nHroPGKv195JP5ujrSGlQwRFxDhYl5lzKHQAxGLhArGfObpNH+LFNnVzZd/KIzsxZvpuxg9oxc/EO\nDp26SesmVbPN/ruAMILDoqhctigXrj+mXnV3NiwcSY+Rf7BgSh+MDfVJTVNoPcilTvsJnNj2q1bB\nHGDaimtUqNWdtVOFnQRnL9vN5BGdNV6389Alfmyd8e+AUmL4n2AOcN3OkZU29izccPiz6nMxBf/Z\nB60WS0gokPODMVQqJWHBAUSEh+L17MGHIB4TFUHhYqVxdStN1dqNKexWGlvH/wtL3fYEfUMjEuPj\nEKtNyCvaFPuPvqVcq20YmFsJtqFvYMik39cwdUQ3flu2XSt/RGIxpuZWhIUE0rj1j+jrG7LRYzbF\n3Stmy726RCr9UD0/aOxvAJw7to8BP89ALJZwYMdamrfvSVhwADp6+hhrIXObT+YUsjPJ0WAOOX5C\nB9QKCL4EqpQc3eZ7ITVNwZzluxndvy3TFm4jTaFg5pjuTJizkca1yxEcFkX/rk21Doofk6ZQcPfR\nK3R1ZLz0CcDrdQDTfk6fTnbtrifzfumt9R6jZ67Dyd6Kn/trfqL+mJCwaMo0HkrwA2EfspHRcRSp\n2Z+Ip7s0XptZixtAJA5ceWv8n78//tdW/N++YsDomZ/fQK3G8ewRjA5sIyomisvuFXlTrDT6BkZ/\n/zFEz8AQAwMj9AwM0TcwzLDQTK1SkZKSTEpyUvqflCTS0tKIDAsmNDiAsJBAwj763+jIcKxsHShT\nsTr6BkYfgrid46dVIVNT4e6TVA7sWs2sOSPQyf4uHUHceiri3Lkn9OzghKODdinQAzvWEhsdSa8h\nE7X26+71C5SrXIstq+dR3L0iapWaZ49uU7JslRwTHDr+11Z09fSp07gNMVHhHNmzkRr1m1O4WOkc\n2e97RUcuoWEFp2xXhvs3OXxCB0RSMHT9bk7pOY1cJsXO2px2/WdzYP0UYuMTGTltDUt/Hci1O54M\n7dUCaTZPafMPjEjXe990lAlDO5CmUNB37FJkUgkrZg/R2v6OgxcJCYtm0fT+WtvqNeoPNi8Rfv8u\n9HQeF5/E5VtPM50CFxCb8dXH88d3qVwzizPnRSL8G7Wixx/TaNK2O0qlgkQvTxIT4v7+E09SQjwJ\nCXEkJcSTmBCPTC7HwMQatUpEalIkKSlJKJVKdHR00dHVS/+jo4eNvSMgwtrWASsbe1yLlsTKxh4r\nW4fPtqBlhlwO1SvIObTuMm9f1sQtj8x5r1xShSg2gk1LFzNl/gatbLXtOoAF04Zz7fwxatRvrpWt\nitXr8fDOVYq7V0RXz4A9m5bTb+Q0Ht25SqDfmxyZZFepRgN0dPVYMHUYVrYOlC5flStnj+QH9Gym\nqINJjgdz+BIBHcDQCRJeg/LLz0v+lthx8CLX7njSp3Njrt3x5JmXL1XLF8PQQBdzU6NsTbO/JyA4\ngvmr9rHst4FUq1CMPmMWM/3nbjRvUAlDAz2tW/Fu3H/B4rUHuXN8ida+7jx4CXMzI5rUERY4klNS\nWbn5GEk+BzTf+xPpdsRSfKMyPp6+eHqfnoPGZ3mf1JRkUtJS6T4wa/edKclJbN+4HtRiOvfsgY6O\nHlLZlz0qV6hWl3s3LuaZgC4SiahcvQ6XTuzl2oXj1KinnW7CuF+X83PvFtjYOVG4uDt+b71Rq9Q4\nFyqqsa33KfY9mz0Y/9sKzh7dg5/vK6rUaUJKchI6utlbE2NlY4//21fYObnQvf8YZo75iX6jpmfr\nHt87ejpSCtj+NzuXE+R8YzSkD20x1F7f+Xvm9kMvoqLjWTi1H7977GH66G5M+n0T81fuw83VUfAE\nss9hYWaEr38oL175o6crZ/2CkYRFxGBuaqT1nblarab3z4upXjd7Rj1q03MOwivbAXYcuEjXtnUz\n/FoSZigzuNiKDA9BqVBgZeuQ5X3CQ4OwtLbL8ut1dPXQ11Ghr6vAwND4iwdz+H9Az2uMnLKQpbOy\npxBswiwP5k7qx42LJ9mxfjGHdq8nKTFBsL16Tduxb+tKmrXrQdPWXXn59D5zJg4gNMg/W/z9GEeX\nwlSu2ZA5kwZQv1l7DAyMWDh9BBs95nD6sOZXT/n8kyIOJki+wOkcvlRABzBwAKn+F9vuW2L/8WvE\nxCYQHZuAnq6cAd2acuvBC9bMG06j2uUYPaBttu/56m0go6av5XePPWxbPpbfluzExzcIA31drfvr\n1Wo1y/48zOJ1B3lwahlLx2t/P9h/3DJW/j5EsORsdGw8py8/EJRuDwqNxOt1AHWqZpymDEnOeGa0\nEP328NDgr65v2LVoKcLDgoiJishtV/6BXEeXPsMns3rhVK1t2dg5U69ZZ/ZvW8W4X5fTqEUXzh3b\nK9ielY09bbsOIMDvDcGB7wjw9eGXuWvZuWEJqSnZn+ksXroC4371oG6TtuzdugIbO0cq12yA39tX\nqNVqHt/VTqP/e0VfV4qzbc5O0vyYLxfQRWIw1DwF9b2zdf953vqF0Kh2OSKiYpm6YCv7jl2jfo0y\nFC3kQLlSrjmy7/I/j/Dr2O4EhUSRmqZgw8JRBAQL/0BWKlUfBpl4bDpK1fLFePU2iB+Hzic4LEor\nX6/efsYLH3/6/Sj8weDQrnPIxcJ69XcevPTJDoc3EboZ/v2LJ/cpVlqzNHR4aCCW1l9mFkB2UqFa\nPe7duJDtdi+dPsSzZ68IiRChEDDbpGmbbrzx9uTlswda+bF703JcChejW/8xrF44jT2bPShSXDsJ\nXwsrW6xtHQgLCaT7wHGoUZOYEI9EmjNZFl299AOXRCyhc5+RhIcEkZyUwJ5Ny7l89jB7Ni0np2uo\nvzWKOpoi+YLa+Tlf5f4P1BB6FdLivtyWXylb959HIhFTyq0As5bu+qBY5hcYhrWlqVbDSjLjfcDW\n1ZEz9rf1mBgZMGVkF3YfvkyLhpUp4Ggt2HZwWBS3H3hRrlQhgsOieBcQho2lKbcfemFpbkzPDg0E\n23at3pczu2ZTyFn4yVWb/veKzUayZu5wKrj/t6dZKTbi6OuMJ+uNG9CWAaNmUKTE54e6vGfPZg8U\nqal07Z/1q4WdG5YgFovp3HtEltdkN9cuHOf6+eOM++3TuvhZQaVScmTPJo7u20SRKoNR6JSjYNES\nGOiIaFhNhX7Gz0+ZEuj3hlnj+7Fy5zmtfYP0qxSxWJKts+2TkxNZPmcCXfqMwNfnJQ/vXKVc5Vpa\nF+JlRHhoEPu2rKR+s/bERkfy6sUTuvQZSWJCPGHBATg4F8qVq5uvDUM9GfXKOeR4q9rHfLkTOgAi\nMBIm5PCto1AoWbzuIADPvHwJDY+ma5u6uBcvSPMGlVmxKV2sxMneKkeCuVKp4ucZa5m1dBfGRnqM\n6teGt/4h/O6xBwN9Xa2COYCtlRmNapdjyvytRMckEBefxKlL93nxyl+rYP7bkp10a1dPq2C+ZP0h\nBnQT1urn/SaQ2LjEDIM5QLQy47YopVLJ65dPNQrmAOEhQVjaZP0OPa+QHffogf5vWbtoOh3qFiMy\nPJipi3ZTwL07RiZmxEZFkpgCz19r/uFp71SQ6nWb/kOhTRvMLW0wNbfkzJHdWt2jf8y711506TOC\nsOAA3r32YtjEufj6vCQiNPsHYFla2zFo7G+4FC5OwLvXHx4E5fL098faxTOIj4vJ9n2/NYo65nzf\n+b/5MlXuH6NnB/LXkJr/C/GeNIUCmVRKzw4N2HXoMsWLOJGYlN63r1SqKOnmzKs3QTnqg0QiZmTf\n1izdcIiXPgGUKVGQvasngYhsG4Wqpytn46KfmbZwKzZWZrRoWJkSRZwF23sXEMb6nafwvbVJK79m\nLd3Jy8vrBK39XLrdLzazdPs9igmYfx4eGkTV2o00Xpfb6Orq41qsFM8e3qakhvrzD25d5sjeTQT7\nv6VFp978ddkbgPhEESq1GnMLa9699cbEzIJUhQghAjbdB46jT5tq1P+hneA2vfecP76P8NAgGjTr\nyK4/l9B7mOaT/v5N0RJl/7a9n04/DQfSfxekMlmOVL9DegBv3aUfAE8f3OTs0b0YGptQsEhxnj++\nS6Uawh/Ev3WM9GU4Wn+5u/P3fOET+t8Y5Ve8f0zLXjPZ9tcFLMyMuH7XE4VCSUxcIuNn/8nQySsx\nMTKgS+vaOerDorUH0NGRsXHRz/y6eAdjfl3PxRtPtA7m0bHpJ5RJv2+i/7hl+PqHMmt8T0oXc6FK\nOTeMDIV/EGnbcw6wZtsJOjSviYWZsDffzkMX+bF13Yy/KJbxLjrjf78XT+9TTEAb19d6hw6andJj\nY6K4cOIvhvzYgMN7/qRFh56s3HWeZu16fHiNgZ4aGwsREqkUAwNjYqIjcHVSfcLqp8mOqvekxASe\n3L9JwxadOLp/M4kJ8VrZ+zdNWndlo8cc/pgxknJVanP/1iVmT+hPSJBftu7zbwL93lCzQXPadx/E\n+eP7KFOxRo7u97Xj5mRKbggdf/kTOoCudfo0ttTIXNk+r1GiqDOHT9+kbMlCLJjal27DFrB2/nCU\nShWmJgbZdkLOjEs3n2BrbUZF9/QHrR0e44mMjsPaUruJTyqVmpHT1lCpTBGqVyxOzcolGTZ5FQO6\nN6VuNe2EKzbtOYuLk43WdmYv2821gwsErT137SFSXVOKFc74jjxRbYpanfHb+vnjuzRt01XjPTVt\nW4P0rgLRF079ZUSFqvVY9Osoeg7OuO8+LiaKa+ePc/X8Md69fknzDr2YMn99poIqIhHULq/Cxx9C\nLQzYu3oUA7v8Kdi/MhVrcP7Efi6dOvhhWpym6OkbYO9UkGsXjuP3xpseA8fh7fkIv7fe1G/WQbBv\n77F1cGbI+NkolUounzlEwLvXTFmwgeVzxjN6+pIc+zk3atmF6xdPMGtcP0ZN+wO5joaFCt8RxoZy\n7C2zdxhWVsmdEzqA8fd9Sl+x6ShdhszjXUAYdaqWplPLWoyf9SepqQoWTu3Lm3chWFmY5GgwX731\nONP/2EZ8QjJR0eknidi4RI6fv6t1MAcQi0XMmdgLv6Bwbtx7gZmJIVuWjvmwl1DUajV9xixh46Kf\ntbKzZd856lV3x8lec03vqy8N2ffAjVYtO2X6mpDkjN/UIqWC1wJO6EmJCahVKvQNv3wqLzso4OpG\nfGwMEWH/v/eNj43m5MHtTBvZjRF9u3H/aQJd+oxgy7F7dO494rPqaFIJuBWAWpWMcXE25vKZw1r5\nOGryQpbM/ucpXdO64Y69hqJWqRk+aR7ezx9x6vBOEhPi/zGDXFviY6PTq98HjP37vwM4dWgHvj4v\ns22PjxGJRNSo14zZK3bh5PJ9f3Z/jtIu5rlyOofcDOg6FqCbfVWgXxtN61UgMjqONdtO8MzLl5v3\nXzJ7Qk/G/rYeFyebTIussotVW45Ryq0AySlpbNh5ipc+/gybsooJczZSo1IJre2fufyAIb+s5GKq\nIpsAACAASURBVOSFe8z7pTclijozfOpqVGoVbZpW08p26z6/0b17d619FCrz6h8pZ/s1Gx77GhAm\nb0N8csZvo9eR/y2yM/L1odzwrhxPScbFWzM55K8l3S5NjEOSSa90q8592bVyOqcO7WDayO4M6lKf\nt69e0KHnMKbO30hUZAClyglTPOzYayh7N6/QxnVEYjHTF25kYr9mhAUHsGDqMA7v1vzU36pzH54/\nuQvAsIlzadHxJ954e2ZbMZmJmQWdeg0jMjyEtYtmMHH2apq0+pEDO9Zmi/3MeN/alk/G2Fvq5+i8\n88+ROyn395iUgJQr8B32NroWsGNIz+bcfexNs/qVeOT5hnKlXPljWr8vsn+bptW4cusZ9aq7Y2Np\nSlJyKmMHtcu2CvpGtctx/tojrt31pGvburRvVoNCzjYkJKZgaizs1+7m/Rds2HmaFg0r071dPa38\n23v0KmVKFKRooayrtH1MXEISOnIZujJZhjVYCokx8Sn/fU63vXIadVgwZrp66Jw9Qnj5apnOP/83\ngivc1eos76EtsvhYKk4bjlip4O6vy0kxMSc2OpKnD27x7NFt7t+8iJGxGWJ9Tzr0GIJ7xX+OfpUk\nPxPUnw/g5FIEB+dC3Lx8iqq1hWsSFC1ZjiLu1Zk6shszl2zl+P6thAUHaKToB/zDB5+XTzE0MsHQ\nKHvnYYcFBzB43CxMzCzYsW4R1eo2zVb7+WQdsVhEiQIWuetDru4uNQT97B848LXQpmk10hRKAkMi\n6NUxvWI0J+aXpykUHDlzi9Q0BaNnrqPPmCWER8YSERXLc28//ALDmDyic7YF80eebxgwfjnODlaM\n6NOKbsPmM3zqKgo622JqnLFqWla4cP0xHrMHEx0Tz/jZf34QqhHC7GW7mDxCmMyro3kqhOzFzTaW\nPvWDMdT7byFWlCJj7eYY12IkJyYiEUNs4eJZDrSSlGSKnDtK55RkREoBCipfCElqCsRGkxgSyNal\nsxjWrRHDujfm6vmj2Du6MGH2Kuav/YvB42b9J5gD1G7UmstnDgneX9tTulKpZNHMkRQtUYYf+4zC\n1+clnX8aTqD/W8E21Wo1f21fQ61GLTm0awMbPeagVqs5eXA7KpV2P0u3UuUxMbNgz2YP7JxcKO5e\nkXWLZ7DRYzZxMdoJNuWjGYUdjDHQzd0zcu7uDmDiCsmB3+3gltnje3L8/N0c3UMmlfLI8w17jlzh\nl+GdKeBoTa9Ri9i4aBR3HnlrpbCWER4bj7B67jB2H7nMkTO32LVqIgqFUquRrut3nuLc1Ud0a1uP\n8UM64P0mELXA+dpHz97Gyd6KMiWEP0we2b8Ev9ubMTbK+KHCLybj1GRotXqsdStFix/aIWvQIsv7\nFfxrG3q3rwAQc/oQ735op7nTOUBEWDABvq/xf+fDG69nPHlwE/vEePTkeriXqcjEXkNxLJB1NcPa\nDVsyqEv9rI2TzQBXt1KYmFpw/9YlylfJvJ0wMyQSCZPmrEHyd+3Ko7vX0Dc0okzFGiQnJQpKOcfH\nRpMQH8uVs0epXrcp5la27N64jFad+2Y43lYITVr9iImZBfOmDKH30F/QNzRi72aPbGmZy+fz6Mol\nFHHI/TnyuR/QRTIwKgbRD3Pbk1xBKpXQqnGVHN9nysguTPp9ExdvPGZwz+bUq+7Oq7dB1KuunTwl\nQFJyKr977MG1gB29OjYgNCIapUpF1zZ1GTTRA7lMqtUgl8SkFCKj4ti4aBST522hVpWS9O8qPLU4\ne9luFs8QPqr12Lk71KpcEmOjjD/c1WI5/tEZJ7/iYqLY//IJbRZt0uhxRJKcBKgRqZVIUoVnJoSg\nVCoJ8PXB39cH/3c+BPj6EPDuNf6+PhgYGuPgXAjHAq4Ud69E+x5DsHVwpmvTMgxt0FLjAj5DY1OK\nFHfnwa3LlKsirFWzY6+hbFk9X1BABz4Ec0ivfA/0f0t0RBgqlVLQ/b6RiRkzFm0GwMfrKasWTKbv\niKnoG2RfJbSJmQUpyUlY2zpgbeeI31tvQIRarSYtNSW/Kj2HKVHADKkk9ztJcj+gAxjYQ+K7/Da2\nHCAhMZk5y/cQF5/IhKEdWbT2AAMnLKdIQQetTqjvUSpVDJuyiuG9W7J663EquBdm/OAOdBgwBwdb\nC5rU1Vw85d+s33mKZ17vsLexYMvSMVy/+1ywrXNXH2Kgr0vV8sUE2/icmEwipqgzqXMV2n/+pl13\nom9ewLpAYZKaaHY6NzIxI8DrjsZ7BgeHsHHVBh5c3Y2tgx2OBVxxdHalfNW6tOzUB8cCrpmeWIuV\nqsCLp/coX7WuxvvWatiSK2ePCA7oxd0rIhZLePbwFiXLCn9YVqSlcWDHWqIjw6jbpC32ztq9XyJC\ngzlzZDc/T1uMRCxh25oFdOg1FF3d7Ck009HVw9TcinWLZxAbE8WgMb+xasFkZHIdegwcl1/QlkOY\nG8lxygURmYz4wlrunyAtBkKvI0TlKZ/Mmb1sN326NGL11uP8UK8ilcu6ceLCXZo3qJQt9l/6+DN0\n8iq2LhvDXI+9xCcmk5ScQuWybgzq8QO6OnKt7KemKZDLpJy5/IC1208yfXRXSrkVEGyvfqdJTB31\no1aZCbFTC5TvjmTa8+uTXIinwRlfL2xdPR99Q2Padx+k8b4jejRh7K8eOBfMettQmgIOH7qMWCSh\nRasaZDVREp+s5vDZFPz9AihWojBNqqnR5EcpRHP+PUqFgk4NS7D/opfGa9/z8M5VDu5Yy4zFWwSt\nVyoULJk1hkYtO+P56A7PH9+lRv3mNG4lrO7iY6Iiw1i/eCYly1UhyN+XTr2GYmSSfelapVKJWCxm\n/ZKZlCpXlZJlK7Nl9XyGTZybbXvk839qu9thZpQ3MiC5WxT3MTIT0BcuA5pPxqQpFMxfuY8WDSuj\np6vDzkMXsy2YA7i5OrJm3jC6DJ6HuakRGxaOZIfHeEb2baV1MAf46/h1hk1ZReVyRdm4aBTJKamC\nbV25/RSpTKpVMN916DKdW9X6hICHiNeRmX/fQkamvkdTURmFAs7cgpDE4gQluXHmVvrfZYWgEDFq\nkQ4KRRqJSSLCojXztXjpCjx/ck+zRX8jkUqpUqsR1y+cELQeoGylmqhUSl48uS/YhxG/LOD04V2U\nr1qHmUu2olQqeO31TLBPAGqVih3rFtFv1DSateuBkYkprzVsX/wcEomEh7evUK5KHarVbUpcbDQS\nSd5Ixn5rOFob5JlgDnkpoAOYFAGx9kHge+etXwi9Ry9m+h/bGNWvDQHBEew6dJm9R69kLlOqBa4F\n7Di6eQbPvHzZffgyQLYpVnVpXZthP7Wk86C5XL719IOanaZ4vQ5gwaq/MLfVThTjk1KvQJrEmMTU\nzL93oS1Z7yVENbl3DY+B2Lj/v8Vj48SEZ7EN2tJMjUQqRq1Wo0aBqbFmmbNipSvwQmBAB6jVsBVX\nzmonEtOsbQ82LpksuJJcJpczduYyipYoy9tXz3l89xo29k5a+SQSixk64XdMza3Ys2k5SYkJxMfF\ncGD7Gq3s/ptyVWpTsXo9Av3esH3dH/w0dBKR4SGsWzyD+FgNn87yyRCJREQJ59xtU/s3eeuxTSwH\nIzeIeZLbnny1BARHsGjtAdbNH8GpS/eZMn8Lu1dNJE2h1Kow7XMYGeqxa+VEbtwTfr/9b3qPXkyP\n9vWpX6MMPTrUx8Is41awz3H97nOee/uxaHo/Lt14ikKhRCrVvLo4ITGZc1cfcejPaZm+Jiot8z5j\nL8+HFC5WWlBlc0RYEBZWmvWgy6X8oxNAjRp5Fn8FzIyhQWUVj84dp3xTQwx1NQtkMpkc50JF8Xn5\nFFe3UhqtBahWpwmLZowkLS0VmUzYQ36ZSjW5f+cKv08ahFQmo1L1+oLkV4/s3UhUeBgjp/6Rbffd\nt6+exaVwcSrXbEhkeAiP7lzLFrv/5u2rFwz4eSabV87FwNCIVl36sn/7GnoNnpAj+31PFHM2RU8n\ne7oUsou8dUIHMHQEefaKL3wvKBRKRIh4/S4Y7zeBNG9QiQY1y3L7oVeOBvP3iMUirVXm4uKT8Nh4\nBJVKzbr5I7j14CW9Ri3iwvXHVCnnJsjm0bO3KVzQjhl/7CAqJl5wm+DOQ5f4sfWnK6ffxWTemif0\ndA7CRGXMTaCI8/8DehFnNeYavLWszETIUh6QEits8IfWp/RGrbiihZTr1jULqNu4DZPnrWPCrJUE\nvHtNVESoxnaatO5KtwFj2LTid+ZNHszqhVNJTtKu06BKrUZUrtmQl88esGHpb7Ts3IfLZw4TFRmm\nld1/U73eD4QEvsO5UFHadx/MusUzcXTOehthPhljaijH1U57eezsJu8FdETpCnL5aExgSCQem46w\ne9VEZizajo9vEG2bVhMcCHMDI0M9alUpyeBJHhw+c4tJwzqxYeFI1s0fIdjm0J9acP3uczxmDyYp\nOUVwdf+OAxfp2rZupl9Xi3UIiMn8wen5k7sUL11R0N5ChrIAVCwBxin7MFMcoqKAt5WljT3hoYGa\nL0S7e3SA2o1aaaXNrlKpKFHm//UiZSrWxOflU43tyOU63Lx0kpJlKuPgXIhm7Xty7fxxwX69R61W\n8/TBLdp3H8z2NQsxMbNg5/rFpKamaG37Y9xKlUcsErNm8XScXApT74e2LJo5irWLpueLzwhAJBJR\nxtXqS4kvakQeDOiA3Az0hUlyfo8kp6QSHBaFs4MVQaGRyOVS1i8YSUBwRG67pjFqtZrDp2+xeu4w\nQsOj6Tt2KZHRcYLv5HcfvsyabSfo2qYuMqmEEkWdKeBorbGd4LAonnv7fbKgLkH96Sd2rU7oAgM6\ngFidhIQkQWstre0IDw0StFbbE3rZSjV57fWMWIFBR8/AkOjI8A//v3Cx0pQT2JuuZ2CIgZEx7hVr\nsnnl77gUEd72+B6RSET77oM4e2wPI6cspEzFGphb2hAdkb2ndICmbbvRoFlHOvYa9rcSsIjuA8dp\nPczme6SwgzGmhnmz1itvBnQAk+IgyTvVg3mVNIWCjbvPMn/lPkZMXU3RQg4cPHkTI0M9alfR/O4y\nt7l08ymnLz8gMjqeQT2aMWN0V5KShVW233nkRVRMPKbGBqjVaq7ffU77ZsLmOO/4TO85QHBi5rK2\noUH+yORyzCw0f5iA3BvMok1At7S2Q42aiNDgz784E7RJu7fvNpCTB7cTHhJIdGQ4d66dI8DXR5Ct\ncpVr8+jONZxcXBk0dhYuhYqhSEsTZOvfFHevyLljezm4cx2x0ZHIdXTZ9efSbLH9Me4VqnHt/DG8\nnj2gUNFSBPj60LxDr2zf51vGUE+Gm1PuK8JlRt4N6GI5mH59AelLolAomTp/K7WrlmTR9P78Oq4H\nUomEvUev5LZrGqNQKJm1dBdHz95mzoSeDJ28kgMnb+BkbyXoRA0QHBqFpbkxMXEJWFmYcPmW5ulW\nSM8a7Dp0iWTpp07IInwiMr8/16ZdDbQYzKIlljZ2hIcIC+gAxUtX/DB1TAiNW3Xh+N71Go8whXTV\nuXpN2/Knx2z2bvagRJlKnDu+V5AfIpGI3sN+wczCmvs3L7Jk1hhWzv8lW8aV1mrYkiIlylCsVAXq\nNm3L6oVTsbSxZ8uq+Vrb/jeNWnbG8/FdXns9xdzSJtvtf+u4F7JAIs6Dufa/ybsBHUDXGvS1axP5\nlpFKJYjFYq7dSa8sNzU2YNzg9lhbmpKalsWG4zzChl2naftDNfT1dChexJnxg9tjbqqdNGbzBpU5\nc/kBz739GDTRg0E9mgmy4+sfyuzxPfGY1DzT16RJTEn+xD/5iyf3KKZNQNci5a4NltbC79ABipUq\nz4unwnrBAZxdijBs8mKO79/ClOFduXRas8EtUqkcF9di9Bw8gc2r5mktgRoRGoz/Wx/GzFjK0Ilz\nuXDyL63svcetZDksrGy4fOYwY2cuo2HzjkSGh5CSLOyq5FO07z6In6ctxsLaNtttf8s42xhiZZp7\no1GzQt5qW8sI02KQEg7K7P/F/lqJT0hi3sp9JCalMHlEZ+au2Mvh07c+aMLXr1Hmi1S1ZyfxCUlc\nvP6EUm4FCAqN5OGz1/Tp0liwPR/fIGLjElkzbzhJyanoyGWIBTxZ33rwkt2HL/PgqQ+L1x3kp04N\n6dSy1n9eF5H2aenH50/u0aT1jxrv/57cC+jCU+6Qnk4WGvS8PB9ycOc69A2MKFS0JDb2jhrLwVpY\n22Jt58j4ge1o2bE3DZp14OXT+yQlJlC28n9/jp/i9OGdVKxeH5FYRFhIIAd3rkMslpCSlISOnvYf\n9Fa2DvQbOQ2lUslGjzmULFsZHd28HUC+F3TkEkq65K2e84zI2yd0SB/eYpafeo9PSOLB0/T7v989\n9jKkV3MGdv+BvmOXMn9yHySS//8o2/3w37GUeZnUNAWDejTj8q2nnLp0nw07T9OjQ32tbHpsPELp\nYi5A+nAXoZy4cJdfhnemRcPKjB7QFguzjAO3b1Tm6faU5CSC/N/iUri4IB/i42KQyeS58uGub2CI\nWq0mKTFB0HpXt1L4vn4p6L7Z3tGFn6ctpk7j1oQFBzBk3ByMBUikVqvTlMUbj1K9XjP2b1/Dsjnj\nkco0HxVcrkod9m5egZGxGQunj6BijfpEhoewftmvbF/3h8b2MuPo3o1UrtmARi07E+j3hrvXL2Sb\n7XyE4V7QHLk074fLvO8hgI7Vdy0L6x8Uzsjpa4lPSB8xq1AqiY5JoGghB4oWciAqJj5b5Vy/FJ5e\n79hz5Aqzl+3CQF+X3asmsm7+CJbMHIBMKjzDoFariY5N+FAZv2LTUeIThGV4+nRujEgk4smLt+w/\nfo2Czv9NU6rFugTHfaJd7fFdKlcS1q4GuXc6f4+2afdWnfpyeONsjdcZGpsik8k5fXgXarWarWsW\nsHbRdG5dOaORHR1dPd698WbVgsmUq1KLqQv+FHQnb2VjT8deQyldvhpzV+3lzpWz9B0xhaETfkcm\n1xFcjf9vWnfph61DATZ6zCYmKgK/N168ey1c1z4f7bCz0MPeMvsm4+UkX09e1tQNUsK+y9T7glX7\nWfbrQAz00+//Jg3rxIDxyyjkbIuOXIaZydfxy/ZvihV2Yvay3UgkYiKi4rAwM8L7TQBuro6Cbaam\nKRg+ZRW9Ozem/YDZONha4FrALtNRp5/iwVMfVm89TqWyRRnZrzUiRBTKIKDHf6ZdDZGYUlUbabz/\ne3KrIO497wvjnFyEyeZaWFsBUkKC/LCx07wmZtSUP3h45yrXLx4nOSlJUKYiOTGRKrUa4Vo0Pdtn\n6yDsgGBuafOhmMzIxAyVSoX388e8fvkMQ6N0JcOkxAT09DPveMgKh3dvoFm7Hty+do6kxARCg/1x\nLlRUK5v5aI5cJqF0IavcdiPLfD0BXSQDs9IQfju3PfniRET9sw87IiqWiUM74epii4mRdh8cucmF\n648Y0bcVlubGjJi6GplMQr8fm2gV0OUyKV1a1+Ho2VscWD+FpORU9PUyT4d/ioOnbrBoen+u3fHE\nY+NRRvVrneHrghIzf1iIjYnitdcTTM0sCQl8h4295oEkt1rW3qPNPfqNiye5feU8JctW5siejVhY\n2tC228Asr4+JimDVgimUrVSTXkMmCUq5AxQrXZ6YqALpd9871qJQKOjQcwhWNsL/Xdt2G8C+LSvR\n0dFjxC/zSU5MZOefS7G1d9K6HaxBs46cPbaX1JRk1Go1BQuXYMOyWTRu1Vnwg1U+mlPW1QI9ed6S\nd/0UX09AB9CxBP0CkOib2558Ufr+2Jh+45ayafFoJGIxS9Yf4pfhnb7qYK5SqTl46ibLf0sfI/rn\nolEoFMoPWQgh+PqHcv7ao/Qq/1QFi9YeYMxAzWaHvydNoSAhMYUXr/xpXKc8jetkIggjEvP6E+1q\nJw9up2K1esTHxXL+xF+4V6im8YzuuJgoxKm5p+hVsEhxnt85Q6OWnTVap1apuHbhODMWbUYkTr/d\n27xqnkb67CZmFkycs4q0tFTu3biAVCqnYvV6Gn8PkJ7CXzB1GANGz8DQyIQd6xfz09BJgmwB6Orq\n033AWACuXzjB9Ysn6NhzaLacpJ0LFaWOpA1eng+p3bAVpw7vpHq9Hzh1aCc9Bo7LL5b7AhSwNcTO\n4uv6jP067tA/xtQNpNkzIOFroV51d3p2aEDXofMZOHE5vTs1ws7aPLfd0gqVSkVYRMyHu8wp87do\nFcwBjI30KVHUGZEIKrgX5q1/KMfO3RFka9WW41Qp58bJi/f4cei8THvYU0UmpHyiXa1AoaKkpabg\nXqEaP/YdpXEwB6hcsxGteo3XeN17dPT0CX3zWPD68lXq0rrXOI3XicRizCysPwRzgLTUFJRKzVoq\nU5KTWDhtOGmpqcTHRXPy4HaNfQFIS0vB0cUVc0sboiJCSU5OFHSX/m+2rV1IXGwUpuaWHN6zgSWz\nxpCakowyq7NqM8GxgCu1GrZk29qFVKvThHvXz9Pmx/5a+5vP5zHUk1GqoGVuu6ExInV2/EZ/aVIi\nIPxWbnuRj0COn7/DW79QTE0M2Hv0KpZmxnRsUTPzU3AWeO7tx8I1f1HRvTB9ujRGRy4jMSmFXxfv\nYO4vvTW2N+SXlUz/uSs2Vun340nJqejp/vdUGaR05rZfxk/xyUmJLJszDnungoSHBGFt50jXfj9r\n5EdEWDA7NywhIiwYA0NjfmjbnZJlK2d5vY/XUwJ8X1OybGUsrDTrO05OTuTy6UOEhwQRHhpESnIS\nFta29Bk+Jcs29mxajo6uHpbWdty/dQlb+wJ07DVUIz98Xj7F7603dZu0JSU5iR3rF9F72GSNbLzn\n5MHtPH98F6lMhqGRKaHB/kyYtVKQrfeo1WrOHNmFpY095avU4fG9G7x4eo8AXx9GTF6IRKJdyvbS\nqYN4eT5EKpPTe9gvWtnK5/OIRSJqlbbH1Chvyrt+iq8zoAPEvIR4YTKO+eQe1+54cvexN36B4Tz3\n9mNIr2b8UK+SoB7xj5m7Yi8/92/DlVvPWL/zFCP6tKJ6xeKkpKahI9e8RenAyRscPHkDEyN9+nRp\nTNmShTJ83Y0IN0LjMk50xURFcP/WJeo1TU/7q9VqjTXp925eQf0f2nP1/FEsrGxxdCmMi2vWdcSj\nIsPYuHw2dZu0Qa6ji7WtI9Z2WatRiI+LYf2SX+n00zAsre0Ei7I8fXCTsJBAXN1KYWxijqm5Zicf\npVLJ8jnjMbO0JvDda7oNGItzQeH3yOeO7ePlswc0bdOV1JQU3vo8p2mbboLtAdy8fAqRSIyDcyE2\nrfj977azLiQnJWpdIAfZU2iXT9Yo4WJGEYe8N0ktK3xdd+gfY1IUUqMgNTK3PclHA0LCo+nSqg47\nDl6kY4uanLv6kOYNsn7izAj/oHDuPX7F9bvPaVirLA1rlUWhUAIICuab956jWoVitG1ajfDIWPwC\nMx6WoZLoZRrMAYL8fbl2/jjPHt6maIkyVK/XDEMjzUYD6+rro6OrS1CALyDCxEwzcQu5XIdqdZqS\nEB9HXEw0egaGWQ7ohkYmGBgZY+8kbDodgFKh4OGdq0SGhXDlzBEKFS1B94Gape8lEgkjJs8nJioC\nqUzOzUunSEqMx61kOUE+1fuhLQ2ap89F93x0h7DgAEF2PqZq7Sbs3LCEy2cOM2ziXExMzXnt9Qwv\nz4c0bdNN8HCh9+QH8y+DpYkuhb/SYA5f8wkd0lvYQq+BStjwjnxyB1//UKbM34KOjozfJ/6ElYVm\nQe7fTF2wlZ4dGrD/+DWevvDlt3E9KOgsXKc6ITGZQRM9GN6nFZXLZl7gFIMdF99m/ua/deU0NvbO\nODgV4tXLJzg4FxJcpf3s4W3CQwKp06SNRusSE+LZtGIOSYkJmFva0GvIBMTirKeAl84ei0QipVv/\n0dy7eYmGzTtq6jpRkWGYmae3/uz6cykdegzRWNglMjyErasXINfRxc6xALp6+lqdql97PePo3k04\nurjSqlNfQUIz/0apUCCRSnn76jl7N6+gQfMOlK9aV2u7+XwZZFIxdcs6oK/z9Z5zv+6ADum96eHC\nCp/y+XKkKRRMmb+V8MhY+ndtgo2lGWKxSPDglfcEhUbSdeh8dq6cgK2VGfEJSajV6XPVhZCQmExk\ndBzxCcmMmrGW0QPa0iSTu/3nCa54hWV+z/bG25PH927w5P4N7J1cNLp79vf14cCONQDo6xthbe+I\no7OrxtKnh3atp1KNBtg7FeT+zYukpaVRpVbWe+LX/DGNHoPGc3TfJlRKJZ1+GqbRA8G/SUlOQqlQ\ncPfGBWo3apXldUqlEpVK+aE6fslvY2jbdQAFXN0E+REc8A4zCyveeD/n0umDWFjZ0rbbQK3vu6+e\nO4qP1zM69x6Orq6+4N77fL48Fd2scPhKBGQy4+sP6AAxXhD/Kre9yCcDYuISmL5wO9UqFKOgsy2l\ni7kweJIHE4Z0pHiR7Pmge/z8DYvWHsDB1pLxQ9pr1c538uI97j95hb6eLnq6ch4/f0PHFrWoW630\nP18oEnP8XVHSlBmnUj++L1eplBzfv5UWHX8S5FNiQjyhQX7ERkfhXlEzWd/zx/chEospX6UOF08d\noGiJshR3z7pq3cGd67Cxc+L6xRMAjJmh+VjP0CB/juzdREJcDHJdXZq17YGegaFGPeCJCfHoGxii\nUinZuHwOpStUo3LNhhr78jEhge/Yu3kFJmYW1Gvajkf3rtO8fU+tbL7/OL1+8QQOzoW4e/0CFavV\nFSz7m8+XwdnGkHKFvx4Bmcz4enMLH2NSBNKi0qvf88lTmBgZMLhnM4ZNWUWrxlWpXLYovTo25Pkr\nP60DukKhZNPesyiVKjxmDcbHNxilUiXYnlKp4pHnG34Z/v9+69DwaPYcufKfgJ4iNs00mAN4PrrN\nuWP70NXTRybXwUnDIq5bV05jaW3Pib+2Ymxqga2DE4WLuWv2DQH1mrbj3PF97Nu6iuKlK2gUzCFd\nUS08JIhaDVtSqlxVjfcHMDYzp3Pv4RgamaBUKHjt7cmje9do1rYHkixK/F49d5TY6EhetOlecAAA\nIABJREFUPL2Hk0sRJBJpem1CybJZ7mn/N+GhwVSq2ZDkpER8Xj4lNRsmm4lEIm5cPElEaDDvXntR\no14zzp/Yz0/5AT3PYmwgp/RX2KKWEd/GCR1Amfz3fbrwQRz5ZC837r0gJTWN2lXS5TY9Nh1h/7Fr\nNKpdjolDOyKVapfeXLzuIGVKFEStVrPsz8PsXDFBsCocwNOXvmzdf555WWhzC1AU4K7/f/UQwkIC\nSUpMwN7RBalMRkpyEnGx0YK12JMSE/B7+wq1UolUR/5BujSrPHt4i2KlKiCRSokIDSYpKQHHAq6C\nfBGKUqFg54bFhAT5ExcbjZGxKe26DcSlcHGNisVCAt8REx1JcmIiSUkJJCclUqZiDY2r5j/4pVSy\ndtF0eg2ewNH9m2nzY3/ioqO4ev4Yrbv0FWQT0tP550/sx71CNdYunsGoKX9QqGhJwfbyyTlkUjG1\n3e0x1NO+hiIv8G2c0AEkumBe5ruUhs2rVKtQjIioODoPnsvUUV0Y0acVLRtWQSwWaR3MIb26vVvb\nulhbmvIuIAyv1wGZtpdlBVNjA/R05XQePJe61Up/6GfPiDeRGbdw6RsYIhKJ2LlhMVERYZiYW1Kh\nah1BAd3H6ylHdm/E3rkgb7w96Tdimkbr/d56c/7EfuJio9HR0cP7+SPcK9TQ2I99W1bi99YbHV19\neg/7ReOKa4lUilKpZMTkBchkcnasX4xzwaIaV37b2Dt/kM71f/uKN6+eIxYL18aSSCT0GDgWuY4u\ntRu2YvPKuYhEIlp16iPYJqRnNUqXr8qZo3uYtXyn4ELIfHKe8kUsv5lgDt9SQId0aVijIhDnndue\n5AOcv/aITXvO0qF5TTbvPYexoT6/jOik1SS1jxk9oC3DpqzC1sqM5JQ0enZoINiWUqniyq1nuBcv\nyPSfu3Ll9rNMA45KrE9EYsaBxMDQmCB/X5q27Y6VjT3RkeGC26K8nz2iz/DJGJuaE+j3hkd3r1K/\nWYcsr5dIZVjZOCASiUlMjKdoyXIUK62ZeI/nozuYW1rToecQwoIDOHlwO227DtD0W0GpVBD47g0x\n0ZEEvHutVSC+cvYINy+domDRkmxb+wf9Rk1DLheWmTE0NmXLqvmo1So69BiMmYU1r1484eWzB9Rq\n2FKwj6XLV6N0+WqC1+eT87g5m2Jr/m21A35bAR3AuHB6f3pKeG578l2jVqu5dseTTYtHs2bbcaJj\nE/ihXkWy44InKTmVmYu242RvxabFo0lNU2BipK9Vr++S9QcpU6IQB0/doFKZIujIZchlGb89Yj8z\nXS06MhypTIaVjT2m5paCU8JiiYQ5kwZQuWZD3r56QZPWP5KSnPVpY/aOLtT7oR16egYYm5oTERZM\nXEwURhqcGBVpaR+mi5lb2qBUKgV9L+27D+b8if0YGBozdMLvpKWlChaq8X7+iLG/Lmf3xmUULlaK\n0CB/ra4RuvUfjUQqxfPRHTavnIdTwSI0a9dDsL188j42Znq4OX17mRPJjBkzZuS2E9mLCHQtICkQ\n1MI+fPLRnks3n7Jx9xlaN6lK7SqlKF/KFTdXR3R1tJdT3LL3HE3rVcDQQI8Zi7Yjl8ko6VZAK5v7\njl2lVpVSSKUSYuMSkUokmbbUvU6wITIx8ysDz0d3OLp3E16eD0lOSsDJpYighw1Xt1LUqN8cYxMz\nzCyt8XvjTVJiokZCLycPbKdY6QrIZHIiw0PwfHRHI6U5K1t7rp47xu2rZzl3fB/REaHcvX4ee0cX\njURudPX0uXnpFIF+byhSvDT7t63SuAXvPcGB75DJ5AT6vSEiLITajVohEolQKpWCTv4pyUksmz0O\npVJB/WbtcXAqxNMHN/Mr079RDHSlVC1ph1RLdcq8yDcY0AGRFOSm6UGdb6Pm72vDxcmGmpVLMObX\nDUgkEqqUc0OWyYk3q1y+9ZQCjtZMW7iV8qULU7eaO+2b1cDZ3kqQItzH2FiZ0WvUIvT1dPD0esfg\nns0yDsIiCbeDrFF94tfKwMiYIsXdqVm/OXExUdg5avaw4e/rw/Mnd7ly9gj3b14iISEWcwtr6jZt\nq7FqW1RkGF6eD7GwtuPS321rFlZZF90RicSYmJpTtlJNajdqhb+vD31HTBGUdbh34wK9h//C2SN7\nSE1NplxlYQG9UNGSRIQFU6thSwq4unHmyG6O79+Cjo6uIFU7mUxOlZqNOLBjDSlJScjkcl48uU95\ngQ8c+eRdJGIR1UrYYaD77SWn4VtMub9Hbg4mpSH6UW578t2x//g1rtx6Rs8ODdi5Ynymk8o0Qa1W\nI5NKWbXlGD+2rsPRs7fZuv88E4d2pLCLdrPCb9x7gafXO45smgGocbC1yPREnSwyQ/GJzjhvz0dc\nv3SS8JBAhv8yn4T4WI39cSzgip1DAYxNLXB0LsTls0dQCbyrqF73By6dPsiB7WsoXb4aRYpr3vrm\n6FIYRVoaYSGB+Pv6CE6XW9s6sm/LSh7fvU6FanU1Xv8eiUSCSqVkyW+jMbOwpmaDFrTu0lfwdQCk\nF+5Z2TjQrvsg/lw+i/jYaMG28sm7lHG1wMTw6xu6klW+vvGpmmDgAIaFc9uL74rHz9/g6x/KpGGd\n8Nh0hJv3X1KnaunPL/wMIpGIahWK0b9rU5JT0vALDKdx7fKkpWl3raJUqtiw6xRFCtmzdMNBZiz6\n9GjOsJRPF9G8eHqPVp16Y+9UkOTEBCIjQgX59eLpfRLj4zh5cEd67/ZLYQ9FaakpRISFkJqawsPb\nV3jr80JjG+dP7GfdkplcPXeU9t0HCb77Lu5eEfcKNZi+aBMtO2o+Ae9jChRyY9SUP+g5eDzxcTGs\n/mMqqxZMRqUS/vvQslNvhnZtgIGBEQPH/KaVf/nkPQraGeFkbZTbbuQo304feqaoIfIBJAXntiPf\nNHOW72bi0E5cv+vJrQcvGTOwHQHBEWzee/YfQi1CCQ2P5vTlBzRvUAkzE0MUCiWPPN9QwV34A9v0\nP7aRlqZERy5j+uiuwOcnol0OcSMqKfPn4GcPb3FgxzoMDI2QSGV06z9a47GlAF6eDzl/Yj8qpZJ+\no6bz17bVdOkzUmM76XrlhXnt9RQ9fUNKl6uKo0vuPeRePXeUm5dPY2xihrmlDR16DhFsa/OqeUSG\nh+BevjrV6jZF30B72c78qWbfJhYmulQvaYtYyyE5eZ1vN+X+ARGYlUkf5JIak9vOfLNMGtaJlZuP\nER2bQEpqKj1GLEQiEfPr2OypFl6+8QgHT96gfClXzEwMeeb1jtLFXbSyOXNMd3x8g9iy7xw/Dp1H\nnaql6d25Uab38UqJQabBPDkpEV+fFzx/fI/xv3ng4/WM2KgIQcEcoGiJsh/GnQb6vaFq7caC7KSm\nJlPYrRT3rl/ArmxBfN94aRzQ/d56c/3CCcJDg4iKCKPzT8MpUqKMIH9ePn3A2JnLANi2ZsGHgSZC\n6NhzKPoGhqhVKkJDAoiODNNqMhzkTzX7FjHUk1G5mM03H8zhuwjogEgC5hUg7Hq6olw+2Y5IJGLo\nTy24eOMJHhuPMG5weyqULpwtAjIAxVwd2blyAtv+ukBwWBT6ejp4zBqslc3klFSOn7+LqbEhS2YM\n4OXrgE+ezmOVmberqZRKrl88id8bb/x8X30YyFFFYCAGPlSja1KV/jE3L5/CrUQ51ECp8lXx9XlB\nGwE95CZmltRu1BoLa1sCfH3w9/URHNClMhlqlQqRWIx7xZpa9aPL5TrMntAfQyMTuvYfzckj2+k1\nZKJge/l8e+jIJFQtbotc+m3fLr/n+wjokK4kZ1EBwm7mt7NlM/5B4fy2ZCc6chkThnZk67KxeHq9\ny7ZgfvexNwqlilJuBZgzsRf+geHYWmvfQ7p66wkquhdGR0fG4EkrWDt/RKa95wABcZn3f+sbGtFz\n0HjEEgkikYiwkEDMLYRPkrtz7RyXTh9CLBZj71RQULr99tVzJMTFUrp8VXR09bC0sSc+NvpDX3lW\nMTYxw9jEjPjYaCLDQwl491pjX97TtttAVGo1EsDKxp5LZw5RpHgZHJw1V/hTKNIoUKgoHXoN5dDO\n9SQmxAv2K59vD4lYROXiNhjofT9h7vt4bHmPzCRdHjafbGXHgYssnjGA8UM6MOSXFUilYq3utv9N\nUEgkBvrpSmAJicms33UqWx4WXrzyo6CzLZXKFKVTy9r4+AZl/mKRlLeRn26N27Tid9Tq9BL4pIR4\nwalkAM/Hdxk7cxmjpy9BKpMTHam5UNLA0TMp7p4+kKWAqxt2DgUEFbQlxMey/Pfx7Nu6iqjIMNp1\nH6SxjfcYGZmwd7MHy2aP49Du9dy7cRF9Q2GFSrp6+phZWDNv8hDe+qQL7+STz3vKF7HC3Ej4bIev\nke/n0eU9urZgXBxin+e2J98E4ZGxbN1/nvo1y1DRvQjlSxUmJjYRS3PjbNujWf1KjJy+hpMX75Gc\nnMbcX37KFrtN6lZg4pyNJCWnYm1pSpfWmfcdJ4lNUX6ufFQk+jAr/PKZQ3QfOE6wb/r6hh8K2nx9\nXmik7gbpxV3+vj6ULFOZ6MhwJBIJYokUAwPNg6eBoTHN2/fi0K71RIaHIJVKqdukrcZ2AGKiI5HK\n5IyYvACAaxeOY2YufGxl5VqNqFG/uWA1vny+TUoWNMfe8vurh/j+AjqAUUFQxEOiX2578lXz4KkP\nm/acZcLQDmzee44p87bQq2PDbAnmIWHRTJm/BTsbc+xtzGlUqxyW5sa4Fy+IkWHWpE8/hV9gGKmp\nacye0As9XTk7Dl5k0EQPVs8dluHrQ5M/X0Gtq6fHphW/Y2ZhJbi16/3Y1JDAd6SkJPPa+xkNmnVA\nItEsIyEWi9HR0SUlOYnU1BRUSoVWfdpnj+5h+KT5SGUy/lw+i1oNW2nsE4CpuSVlKqYPiElMiKd6\nnaaCfQI0mqmez/eBi50Rhe1NctuNXOH7DOgApiVBmZg/Q10gaQoF63acYs7EXmzcfYaCTja0bVqN\nlZuPUaNSCZwdhJ+6APR05UTHJjD0pxYEhUaycfcZalQqQbHC2s1QB4hPSGLK/K20b1aDX5fsoGXD\nKozs2/qTa15HfD5116XPKMKCA0j8X3v3HR1XfSZ8/HvvnS5N0xR1yVW2JRsb29jGYCC0wEuWQHBC\nEhZeFgIhzpJwNtl0NptsSAIJHLKQQrIhCWUJoYUSwDQ7GLBxAeOOi2Sry6qjMtJo2vvH2ITktWVp\nZuQ75fmcozPYoHufM8zMM7/2PEMDSbfLXLoisYnuX795O4HebtpbGzEYJ14FLxaL0XzoAJpBw2g0\nYbDaULXk3+6qptHZ0QpA9+H2lDazVU2dyd3/9RVamxqoqJ7OZ66/BV9JedLXE+KokiIrp+RIb/Nk\n5ME59DHEwol2q2E5zjZRI6FRrvvK3Tx8z78ndrh/+xf8/LZVBIdDqKqSlprtHZ19rPrWz6ko9fLv\nX7iCitL0vFF37W3klTe28qXrLgXgK9//H+78j88d97+PanaeO1Ax5jUf+OUdNOzfhYJCka+Yz3/l\n+xiNE38Otm5ch9vjp7i8Eovl/++3Pl6hkWF2vbeJaDRCNBohEokQjURYcd7HUJJIxr09nbzw5EMQ\nj3PeJSs/aGOajA2vr8bucLH9nQ1ceuX1PP/kg6y8OrUTC0K4Ck2cObcMTcv942nHk78jdADVCN7F\n0Pl2YgpejMtoOML+g2188mMruPxzP6DY6+KyixKtIm3W9G1CKfa5+Mmt13PNl+/E5UjPelg0GuOZ\nVzbS3tHDzbf+ClVROH/FgjF/py869hLC6GgIo8lE3YKlXP7ZG3nsD/cmlcwhsXP7xT8/TMP+XXj9\nZQwEeln19R9+cAxuvGKxGIUOF8Tj9Ad6MZutKY3QO1qaOOuCSzm4fzcP/fpOrvjnm5JuXuJy+xjo\n78VV5OXBX93BsrM/mnRcQgDYLAaWzinJ62QO+Z7QAVQzeE+DrrchEtQ7mqyw9q1tOOw2Lr/odC69\nYCmRaDTl5ijHM62qhF/8cBV/enYd1306+TPdR+3e30Rv3wB3f+9Gunr6icVi+L1jt0Nt7h97pKwq\nKnXzl7BnxxY2/PVFhgYmXr/9qMXLz2XP9i38+JePA4lKb8lsGkv3Gnpz4wFqT1nMjq1vc8utd/H4\nAz9POqHPnreQjW+8wulnX8T8xWdiMufXTmSRXhaTxvLaUiym9ByTzWb5dWzteDRrIqlryW1kyhdP\nPP8mb2zcya8ffpEt2/YDoGnqpCXzo06ZMzUtyfxPz67D5SjAajFx5Rd+zGPPrcN5opG/aqSxd+zv\nvZFImKHBfmbPWwTAJ6899sa68TIYTbz454fZufVt9u3ZltQUudlipWH/bmbWzsdfUs4Z516SaDOa\n5Np33fwlPHjfTzAaTMRjsZRbiwZ6u3ngV7fz4H13cM+Pvp7StUT+Mhs1lteV5tVZ87Hk9xr6P4oM\nJKbfY6N6R5Jx7rzvSVyOQtau38Z1n7mQ7bsPsvP9Q/zwG9ficWd+w4OGxg4ee24dX1u1EkjUbF+3\ncSfLFs4es5hMUPXxcv3Ya/e/+umtLF5+Lh2tjbQ01nPjv30v5Xi3v7Oew20tLDjtTDz+5MrH/ubu\n73HDLd/ltz/7L67/8q0pxxQaGcZsSf2EAUBfTxdOd6Kr3VtrXqDA7mAg0Mvp51yc1O55kX+MBpUz\n6kpzunvaRMnXmg8z2P82/R6L6B1Nxmjv7OXPqzfw4kPfx2G3MTIyypeuu5SGxg4Gh4azIqE//NQa\n1m/Zw5TKYi69cCkWs4mzls494e+NdVxt/57tKKqC11/K4uUfAeB39/4w6RiPHll74ckHcbg8lJRX\nEujrTjqhtxw6wEvPPEJjw15ee+EJDAZjUpviWpsa2L9nO12HW+nqaKPrcBtLVlzA+Zd8Mqm4AOwO\nF4/89m66DrehKgpLVlzAnHmL86LetkidQVNZVlsiyfwfyAj9WEZ7oGuTlIj9kNff3sFt//0oNquZ\nJ3/z7TFrnmeim75xL3d8+zr+9Nw6nnnpbcpLPHz7S1eecOf8q+1zGDxO+f+25kNsXv8au7ZuBMBa\nYGfqzDkptQZtrN9Ld2c702rqaG9t5MCeHfyfK5JrcLN7+xbCoRCRaJhoJLHTfdmKCyac0Ov37qSv\nt4sNf139QQnatauf4hNXJV8xDhLH345+WWltPkhxaaWMzsUJaarCstpivM70zBblEknoxxPqhO4t\ncKSUp4DhkVG+e+dDBPqHuOu7N1Bgy449B8Mjo+za2/h35WjrG9spctnH3D0f0ez85QTH1WKxKE0N\n+3F5fAR6u1FVlYrq6UnFuWf7O/zx/ruxFhQybWYdFqsVk9nCRz/+2aSul07RSIT7772NG275LoP9\nfTz06zu56aup9Qwf7O/jwft+ynBwkLLKqVz2mRuwWJM/qidyn6ooLJnjp9gtr5NjkYQ+lpF26H4X\nkKfow7burKduVhXGFGqVZ4OueCVvHhq7Qtxv7v4eHl8x7S1NVE+fxSVXXJPSPdtbGnG6PQR6uxno\n72P6rLoPysnq7c01z7PxjVcwm61ccfVNEz5K949eeuYRps6sY+acU9IUochligKLa/x5WdJ1vGSX\n+1gsJeCep3cUGWdB3bScT+YATYETz0CoisonrrqJVV+7jcNtzSnfs7enE5PZkjjbbjRmTDIHcLqK\nKK+ciqIo/On393Dg/R2sX/ti0tdbtOwjvLNhLX996Wnuv+cHvPDUQ2mMVuSaU2d4JZmfQO5/KqfK\ndmTKtXc7MlLPH3HVRFPgxMlUMxj4wy9+jNdfijnJ+u0ftvGNV5gyfTZ/vP9uNM3Azd+8Pem68Onm\nKynnnJIKPL6SDzrJTZ914o2Fx1PkKyYej1Nod/Kpa2+m0J6f9bfF2BRgwQwflf4T91PIdzLlPl7D\nbdC7FeTpygtDqp9X6j3H/HexWJT1f11N7fzTcBf5aGs+RH+gh5o585M+533Uz2//JoqicuGln2bL\n+jVc9pkb0nZULFVNB/fx1poX6DrcRm93J1deezMza9PXjri3pxOnqyijZiWEvhRFYVGNl3KvJPPx\nkBH6eFlLQdGg513Z/Z4HOoJjT+1ZLDaeefR++ro7sdoKmD1vETVzUk9u//LFb9HZ0Ur19Fk0H9qf\nMckcwOn2ctYFH8fjK6Zh/27aWg6lnNB3vLuB119+htFQiJamer71o/twe/xpilhkM1VVOG2Wj5Ii\nmWYfL0noE2HxHzmnvhnick49l9X3HP98q6pqLDr9HGbMnkegtxtfSTn7didX0e3DotEof/zdz2ht\nasBstjL/tDNTul66OZxuHEf6ss+qOzUts1VTps9mzrzFaAYD/X09vPqXx7j8qs+nfF2R3TRNYels\nPz6X7GafCEnoE2UqAt+SRFKXinI5KaI5GRodOznX793Jc4/9nrKqaezfvY1VX7st5fu+v+Md6hYs\noaDQwTkfvYzt72xI+Zrp9sAv7wDgyn+5mY62ZmbNXZjS9QodLpoPHWDP9i1seH01F1+e3Jl7kTuM\nmsrS2hI8DqnxP1Gyyz0ZRhf4loImL7hc1BMeu7sawNZN67j6C19j5dVf4NPXf5ktG9amfF+D0UhB\noYP+QC/trU30dB9O+Zrp1H24nQK7g1MWL2fPjndoOrgv5WvG43E2v/UapRVT+Ndv3M7ubZuIxWRJ\nK1+ZjBrL55ZKMk+SjNCTZbCDd1min3p0WO9oRBo1BU78YbLkjPP5xe3f4tSlZ1G/dycrr16V0j2D\nQ4PU1CbauHr9ZWzduI6Prbw2pWumm8dfQl93J4P9fWx681WKvMUpX1NRFC77zA0AtDTW09LUwOho\nKKVe8CI7WUwap9eW4iiY3GZPuUx2uacqOpwoEyv91HNCXDHzbMNU4hy7tG3zoQN0dbSyYMkKOtqb\nObhvFzW1C1LeyHW0kcra1U9xzkcvT+lak+nZx36HyWSmrHIqdQuWpGVH+pb1a3n95acpr5rGmef/\nE2UVU1IPVGQVm9nA6XUlFFolmadCRuip0qyJ6feuTRBOvg+2yAxDuI6bzAHWvPAEK6/5Io31e7n/\n3tswmcw4XJ6UE/rR2vj7dm/L6IR+3sUrefC+n7DrvU3s3raZT117c8rXXHT6OSw6/ZzUgxNZyW4z\nsqy2BJtZ0lGq5BlMB9UM3iXQ/U6isYvIWic6rjY0NEB4NMQj99/NLd+5k8GBADve3cCcI73QkxEJ\nh2lvOcRP/uNmmg7u4+Hf3ElF9QzOvvDjSV9zsjz/1ENceuX1lFZUs3b1U+zdtfWDpQIhJsrrtHDa\n7GJMBtnOlQ6S0NNFNSWSeu92GG7ROxqRFIUDYxxXA7josqv45U+/w5nnXoKryMva1U+xcOnZKd3V\nYDTynTt+C0A4PMrhtmYCvd0pXXOyRCNh3F4fAP6SCkIjsn9EJKfSX8CCGT5pmZtGsoY+Gfr3w8Be\nvaMQExTWXDx/oHRCv/P2updZuuKCSYoo8/T39aCqKoUOl96hiCw2u8rFrEq33mHkHEnokyXYCn3b\npP1qFumIVrKhSUpMnsiG11ez+ulHcLm9XP7ZG6maVqN3SCJLqIrC/Bkeqvx2vUPJSbJwMVlsZeBd\nmpiKF1mhMZA5ZVYzVTQSYeumNzj34itYec0qXn3+cb1DElnCaFBZVlssyXwSSUKfTCY3+JeDUV7A\nmS6uWmjtl6YgJxKLx3C5vXj9pezb/R5xmYES42CzGFgxrwyfS740TyZJ6JNNs4FvGVh8ekcixjAY\nl9ad42E0migtr6a0YgqtTQdTLqgjcp/bbmLFKWXYbXLGfLJJQj8ZFCN4FoOtWu9IxHG0BWXtfLzK\nKqfyh1/8mAWnncl7m99kNDSid0giQ5X7CjhjbhkWo8x+nQyS0E8aBdx14KxL/LPIHIpCfY+MHsbr\n9Vee5Ytf/xGb3nwVu9PNvt3b9A5JZBhFUZg7tYjFNX40VT7vThZJ6CdbYTV4FoEqCSRTjKpOQmH5\n0Bmv+YvPYPXT/0ugr4d1rzyDt3hiR/1EbjObNJbXFTO9TJaxTjYpLKMHix/8Z0DPuzAa0DuavNc9\nKh88E1Hk9dN0cB8Ll57F7HmL8PoloYuEIoeZxbOKsZpkil0Pcg5dT/EYBPbA0EG9I8lrG7pr6BiQ\nD6DxeO6x3/OxT16rdxgiA00ptTNvqkcqv+lIRuh6UlRw1YLZBb07IB7RO6K8E1MtkswnYGQ4qHcI\nIsNoqsIp06VYTCaQhJ4JrGVgdCam4KVj20k1GJMSpkIky2YxcNqsYlyFUkArE0hCzxSGgsR59b49\nEGzUO5q80XaC7mri702rqSUej/PXl/5MS2M9fT1dON0eZs9diL+kQsrA5hGf28aiGh9m6ZSWMWQN\nPRMNtUJgO8SjekeS2xSVFxprGI3Kmt9ENdbvxe504SryfdDLXeQHVVWorXbLLvYMJCP0TFRQBmb7\nkSn4Qb2jyVmjqkuSeZK6O9t5/ZVn6OpoYzg4yC233oXVJrMduc5hM7Kwxo+zQKbYM5Ek9ExlsINv\nOfTtgmCz3tHkpK6QbOJJVkX1dCqnzsTt8bPmhSfo6+mShJ7jppXZqav2oEqhmIwlCT2TKQZwnwIW\nbyKxx0b1jiinHOy16B1C1vKVlBOPxejt6aTrcBtdh1sprZDSxrnIbNI4dYaXYrdN71DECUhCzwbW\nMjAXJZL6cLve0eSEmGalc0g28yRr766tvPTMH3F7fMyqO5V5C0/XOyQxCUqKrMyf4ZNa7FlCEnq2\nUC1QtBCCrRDYCbGw3hFltYGYW+8QslpN7QJ6uw/zxqt/4XB7C/7SSqqmztQ7LJEmmqpQN6WIqaUO\nvUMREyBDlGxjKwP/ikT5WJG01gHpy5yKcHiUdzeu4yv/+TO+9M07ePnZR/UOSaSJq9DMWfPLJZln\nIRmhZyPNkmjHOtQC/TshJhXmJkTRqO+RXbqpiMfjOF0eADSDgYJC2WCY7TRVYVaVixllTjmKmKXk\nHHq2iw5D3w4Y6dQ7kqwRUj28WC8zHKlqaaynvGqa3mGINPC5LJwyzUehVcZ42Uwct6UiAAAJ4UlE\nQVQSeq4YaobALqkHPw4tkWo2N8uO3VQFBwd44L476Ghtom7+ElZes0rvkMQEGQ0qc6cUUVUsMyy5\nQNbQc0VBBRSfmdgNL8bUIMfV0uLFpx/m41d+jtlzF1JaUc37O9/VOyQxAWVeG+curJBknkNkfiWX\naDbwLoPhNgjshuiI3hFlnJhaQLccV0uL0VAIb3Ep0WiUw23NlFVO1TskMQ5Wk4F504oo9UghoFwj\nCT0XWUvB4oP+ehiqT/RdFwAEYlJ/Ol2WnXUhrY0NlJRVUuhwMXVmrd4hiROYUmqntroIoyZfanOR\nJPRcpRjAWQMF5YnR+shhvSPKCC2DsnaeLprBwFtrXqDrcBu93Z24i3zMrJ2vd1jiGNx2E3Oneimy\nm/UORUwi2RSXL0Y6Eok9EtQ7Ev0oGn85VENEJizSoj/Qy9BAPx5fMQ37d9PR2sRZF1yqd1jiQywm\njTnVbir9duQgWu6TEXq+sBSD2QsDDTB4IC9bs44obknmaeRwunE4ExX3ZtWdykBfj84RiaNUVWFG\nuYOZ5W4MmqTyfCEJPZ8oGjhmJNqz9u2BkfyqC394pFDvEHLOgfd38Naa5+nt6aJ+707e2/wW13/5\nVr3DymtlXhu11R4KLPLxnm/k/3g+0mzgWQihzkTDl8iQ3hGdFA29sn6Ybq/+5TFWXrMKd5GPxx74\nOZ+69ma9Q8pbzkIjc6d48DqlrHG+kjX0vBdPFKUZ2JfTx9yiWiHPHajUO4ycs3PrRuoWLAFgODgk\nPdF1YDZqzKlyUVXsQCq25jc5u5D3FCiohOKzwVELam6OYgNROa42GUwmMz/7wVfZ9d4mNr/1GqOh\n3P1SmGmMmsqsKhfnLaqgukSSuZCELo5SNLBPgZKzwT4LVKPeEaVVS79MQ06G1195li9+/UdsevNV\n7E43+3Zv0zuknGfQVGZWODl/cSWzK91yplx8QKbcxbHFRmHgIAw1ZP+OeNXAcw0zicorPe02v7WG\njtZGDuzdiaLAp669meJSWdqYDJqqMLXUzowyF2aTpnc4IgPJpjhxbKopUZjGXp2oOBc8lLUV54Zx\nSzKfJEVeP00H97Fw6VnMnrcIr79U75ByjqoqTCkpZGa5G4skcjEGGaGL8YkOQ/8BCDYB2fWSOTg6\nhfdaZcp9smx4fTWrn34El9vL5Z+9kappNXqHlBNURaGqpJCacjdWsyRycWKy+CLGR7OCey6UnAW2\nKlCy56XT0C3d1SZLNBJh66Y3OPfiK1h5zSpeff5xvUPKeqqiUO23c+7CCuZP80oyF+MmU+5iYrSC\nRGJ3zoTBRhg6lFhvz1BR1U5/SLb/TpZYPIbL7cXrL2Xf7veIZ+myTCYwGlSmlNiZWuKUJC6SIgld\nJEc1g2Mm2KfCUGti81wGFqjpk+Nqk8poNFFaXk1pxRTe3biOlVev0jukrGOzGJhW6qCq2C471kVK\nZA1dpEkMRjphsAFCmVPTe2tgBod6c+sIXqbY8e4G7A431dNn6R1KVnIXmphe7qTUU4gqk0giDWSE\nLtJETTSAsRTDaF/iyNtIG7puoFONNPbJS3yy2B1uOjtaJKFPUEmRlellTinRKtJOPu1E+plc4FkA\n0RoYOATBRl3OsgfjLuJxGfpMFo+/hN3bNusdRlbQNIVKbyHTypzYbTJjJCaHJHQxeTQbuOYkOrwF\nWyHYDOHASbt9h3RXm1SFdie+knK9w8horkIT1cV2yn2Fsj4uJp2soYuTKxyAoRYYboFYeFJv9Wrb\nbAZlh/uk27P9HQodTg7u383b617min++iSkz5ugdlm6Mmkq5v4Bqvx1XYW72RhCZSb4yipPL6ARX\nLZScC0ULwOKblNtENIck85OkufEAqqqyY+vb3HLrXby97mW9Q9KFx2Hm1BleLlxSxfxpXknm4qST\nKXehD0UDa1niJzp8ZNTeDJFgWi7fG3Gk5TrixOrmL+GBX92O11dKPBbLq9G5yahR6S+g2u+QtXGh\nO5lyFxkkBqHeRH/2kfaUNtK901dDU58U5zhZDry/gyce+iWxaIyzL/w4p59zkd4hTRpNUygpslHu\nKcDvtqHJmTORIWSELjKICmZP4idWm0jqwx0Q6ppQY5i4aqK5T1aTTqbXnn+c//uFr7Nty3r27trK\nkhUXoGm584VKUxX8RVbKPQUUFxVgkCQuMpAkdJGZVCPYKhM/8TAMdx5J7odPOHIP4iKOfOCeTFZb\nAf6SCtqaDzE4EEDJgadfVRWK3RbKPIUUF9lkl7rIeJLQReZTjGArS/zEo4kRe/BIcj9GHfn2oBxX\nO9mmz5pHOBLGZDZzyRXXoKrZOTpXFQW/20KZp4CSogKMBkniInvIGrrIYrFEmdlgB4Q6IDoCKLzc\nMotgOAeGiFkkHovxx9/9N53tLaiqylWf/yruosk5wZBuFpOG323F77Lic9swyUhcZClJ6CJHxGA0\nwGiwjzcPGukfmtwz7uLvbX5rDaOhEZZ/5GIGAr28/NyjfOKqm/QO65hURaHIYcLntlHssuEoMMkC\njcgJktBFThoZjdLZF+RwYJiuvmFGRqWt52Rqaz7E5vWvseSM89i8fi1dHa24PX4uueIaNIP+K3tW\nswG/20Kxy4bXaZWpdJGT9H+nCTEJLCaNSr+dSr8dgP6hMF2BRILvDowQicr32HRyuNwcOvA+A329\nePwlzD11GV5/KaqqT+I0GzWKHGbcdivFbit2m1FG4SLnyQhd5J14HAJDo/T2D9M9GKKnf4Th0Mlv\nHiPSx24z4rab8dgtFDksFFglgYv8IwldCCA4EqG7f5iewRA9/SEGgmHkrTExa1c/RUtjPX09XTjd\nHmbPXYi/pIKqaTVpvY+qKrgLTbgdFooKzRQ5rJiNMoUuhEy5CwHYLAZslr9N0UdjcfqHRukbDBEI\nhggMjtIfDBOLSZI/no7WZi689NP872/uAmDx8nNTvqZBU3EWGLEXmHBYTTgLzTgLTWi5cNBdiDST\nhC7EMWiqgttuxm3/W4ONaDzOwFCYwOAI/cNhBoZHGQqGCcp0PQAjI0EG+wPMOWUxvd2dRKPRcVeL\nU4BCqyGRuI8kb0eBGZvFIFPnQoyTJHQhxklTFFyFJlyFpr/7+0g0zuBwmIFgiIGRMIPBMIPDEYIj\nYaJ5NKJXFYVHf3cPV934bzQ17Ec9xijabNIoMGtYLUasZgOFFiNOm4lCmwmDJqlbiFTIGroQkyQO\nhEajDIciBENhgqEIwVCE4VCE4ZHEYziHdtvH43HUeASXowCrxZBYxjAZsZkN2I4kcE1TZMQtxCSR\nhC6EjqKxOKFwlNBolFA4kniMRBN/F44RDkeJRGOEo3Ei0RiRI48n411r0FRMBhWTMfFoNGpH/qxh\n0o48Hv2zUcNs1FBVSdhC6OX/AYioy4IaT3uUAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"phylum_color = ['lightsteelblue', \n",
" 'moccasin',\n",
" 'darkseagreen',\n",
" 'khaki',\n",
" 'mediumturquoise',\n",
" 'lightblue',\n",
" 'thistle',\n",
" 'tan',\n",
" 'mistyrose',\n",
" 'honeydew',\n",
" 'peachpuff',\n",
" 'peru',\n",
" 'saddlebrown',\n",
" 'orchid',\n",
" 'lightgray',\n",
" 'gray',\n",
" 'azure',\n",
" 'lightcyan'\n",
" ]\n",
"\n",
"img = deepbiome.deepbiome_draw_phylogenetic_tree(log, network_info_with_covariates, path_info_with_covariates, num_classes=1,\n",
" file_name='%%inline', img_w=500, branch_vertical_margin=20, \n",
" arc_start=0, arc_span=360, \n",
" node_name_on=True, name_fsize=200, \n",
" tree_weight_on=True, tree_weight=trained_weight_list, \n",
" tree_level_list = ['Genus', 'Family', 'Order', 'Class', 'Phylum', 'Disease'],\n",
" weight_opacity=0.8, weight_max_radios=100, \n",
" phylum_background_color_on=True, phylum_color=phylum_color, phylum_color_legend=True,\n",
" show_covariates=True,\n",
" verbose=False)\n",
"img"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.5",
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}