{ "metadata": { "name": "", "signature": "sha256:f151df0e6f32f7ad981a4b98eba6fad2277ddfd8540393a65c8288d8dd27c7ed" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Classifying pediatric IBD stool samples (work in progress)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook is a recoding of the analysis used in the PLoSONE paper: [Non-Invasive Mapping of the Gastrointestinal Microbiota Identifies Children with Inflammatory Bowel Disease](http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0039242) using python, sklearn and pandas.\n", "\n", "[We](http://almlab.mit.edu) decided that the SLiME package, as it was packaged for the publication of the paper, should not be available anymore. This notebook replaces it, replicating the analysis executed on the paper with more up-to-date tools and (hopefully soon) expanding on its conclusion. \n", "I hope this can be the starting point for others trying to follow the same approach and improve upon it. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy import interp\n", "from sklearn.ensemble import RandomForestClassifier\n", "from sklearn.multiclass import OneVsRestClassifier\n", "from sklearn.cross_validation import cross_val_score, StratifiedKFold, train_test_split, KFold\n", "from sklearn.metrics import roc_curve, roc_auc_score, auc\n", "from sklearn.preprocessing import LabelEncoder, label_binarize" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Loading data\n", "The data came from two rounds of 16S sequencing of previously collected stool samples. Here we will use the OTU tables directly, which were created by using the RDP classifier and were subsequently normalized (details in the paper's methods).\n", "\n", "Sequencing was performed at the [Broad Institute](https://www.broadinstitute.org/). The first round of sequencing was dubbed CHIMP (Children Hospital IBD Pediatric), while the second round of sequencing -- performed following the request of an anonymous peer reviewer -- was termed 'blind validation'. Its purpose was to further validate the algorithm trained on the CHIMP dataset, as the reviewer did not think sufficient a \"leave 20% out\" approach on CHIMP was sufficient to demonstrate robust prediction. These were used as training and test set in the last figure of the paper respectively.\n", "\n", "It is useful to join the two data sets here." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#get the CHIMP training data\n", "\n", "X_chimp = pd.read_csv('data/chimp/chimp.Qsorted.rdpout.xtab.norm', delimiter=\"\\t\", index_col=0)\n", "y_chimp = pd.read_csv('data/chimp/sampledata.training.chimp.csv', index_col=0)\n", "\n", "#just make sure the labels are the same\n", "X_chimp.sort_index(inplace=True)\n", "y_chimp.sort_index(inplace=True)\n", "assert (X_chimp.index == y_chimp.index).all()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "## do the same for the blind validation test data\n", "X_blind = pd.read_csv('data/chimp/blind.sorted.rdpout.xtab.norm',\n", " delimiter=\"\\t\", index_col=0)\n", "y_blind = pd.read_csv('data/chimp/sampledata.validation.blind.csv',\n", " index_col=0)\n", "\n", "X_blind.sort_index(inplace=True)\n", "y_blind.sort_index(inplace=True)\n", "assert (X_blind.index == y_blind.index).all()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "#concatenate using pandas\n", "X = pd.concat([X_chimp, X_blind], keys=['chimp','blind'])\n", "X.head()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cls_Actinobacteriacls_Alphaproteobacteriacls_Bacillicls_Bacteroidiacls_Betaproteobacteriacls_Clostridiacls_Cyanobacteriacls_Deltaproteobacteriacls_Epsilonproteobacteriacls_Erysipelotrichi...phylum_Euryarchaeotaphylum_Firmicutesphylum_Fusobacteriaphylum_Lentisphaeraephylum_NAphylum_Proteobacteriaphylum_Spirochaetesphylum_Synergistetesphylum_TM7phylum_Verrucomicrobia
chimp003A 0.000000 0.000549 0.014827 0.002197 0.000275 0.230917 0 0.000000 0 0.000000... 0 0.245744 0.023064 0 0.000000 0.728995 0NaNNaN 0
004A 0.000000 0.000000 0.002486 0.754195 0.000000 0.230889 0 0.000932 0 0.001865... 0 0.238036 0.000000 0 0.000000 0.007147 0NaNNaN 0
005A 0.006521 0.000000 0.026084 0.000000 0.000000 0.908706 0 0.000000 0 0.054451... 0 0.990545 0.000000 0 0.000326 0.002608 0NaNNaN 0
008A 0.000315 0.000000 0.000210 0.837024 0.035995 0.112499 0 0.000000 0 0.000840... 0 0.113758 0.000000 0 0.000000 0.048903 0NaNNaN 0
009A 0.001291 0.000000 0.001550 0.823864 0.024277 0.118027 0 0.000000 0 0.000000... 0 0.119576 0.000000 0 0.000000 0.055269 0NaNNaN 0
\n", "

5 rows \u00d7 284 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ " cls_Actinobacteria cls_Alphaproteobacteria cls_Bacilli \\\n", "chimp 003A 0.000000 0.000549 0.014827 \n", " 004A 0.000000 0.000000 0.002486 \n", " 005A 0.006521 0.000000 0.026084 \n", " 008A 0.000315 0.000000 0.000210 \n", " 009A 0.001291 0.000000 0.001550 \n", "\n", " cls_Bacteroidia cls_Betaproteobacteria cls_Clostridia \\\n", "chimp 003A 0.002197 0.000275 0.230917 \n", " 004A 0.754195 0.000000 0.230889 \n", " 005A 0.000000 0.000000 0.908706 \n", " 008A 0.837024 0.035995 0.112499 \n", " 009A 0.823864 0.024277 0.118027 \n", "\n", " cls_Cyanobacteria cls_Deltaproteobacteria \\\n", "chimp 003A 0 0.000000 \n", " 004A 0 0.000932 \n", " 005A 0 0.000000 \n", " 008A 0 0.000000 \n", " 009A 0 0.000000 \n", "\n", " cls_Epsilonproteobacteria cls_Erysipelotrichi \\\n", "chimp 003A 0 0.000000 \n", " 004A 0 0.001865 \n", " 005A 0 0.054451 \n", " 008A 0 0.000840 \n", " 009A 0 0.000000 \n", "\n", " ... phylum_Euryarchaeota phylum_Firmicutes \\\n", "chimp 003A ... 0 0.245744 \n", " 004A ... 0 0.238036 \n", " 005A ... 0 0.990545 \n", " 008A ... 0 0.113758 \n", " 009A ... 0 0.119576 \n", "\n", " phylum_Fusobacteria phylum_Lentisphaerae phylum_NA \\\n", "chimp 003A 0.023064 0 0.000000 \n", " 004A 0.000000 0 0.000000 \n", " 005A 0.000000 0 0.000326 \n", " 008A 0.000000 0 0.000000 \n", " 009A 0.000000 0 0.000000 \n", "\n", " phylum_Proteobacteria phylum_Spirochaetes phylum_Synergistetes \\\n", "chimp 003A 0.728995 0 NaN \n", " 004A 0.007147 0 NaN \n", " 005A 0.002608 0 NaN \n", " 008A 0.048903 0 NaN \n", " 009A 0.055269 0 NaN \n", "\n", " phylum_TM7 phylum_Verrucomicrobia \n", "chimp 003A NaN 0 \n", " 004A NaN 0 \n", " 005A NaN 0 \n", " 008A NaN 0 \n", " 009A NaN 0 \n", "\n", "[5 rows x 284 columns]" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "X.fillna(value=0,inplace=True) #replace NAs with zeroes" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "y_dx = pd.concat([y_chimp.dx, y_blind.dx], keys=['chimp','blind'])\n", "y_dx #btw, what joy is to use pandas over R/dplyr for this. so intuitive and fast." ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ " sample\n", "chimp 003A UC\n", " 004A UC\n", " 005A NM\n", " 008A CD\n", " 009A UC\n", " 012A UC\n", " 016A CD\n", " 018A CD\n", " 024A NM\n", " 025A CD\n", " 026A UC\n", " 027A UC\n", " 030A NM\n", " 031A NM\n", " 034B UC\n", "...\n", "blind 251-AX CD\n", " 252-AX CD\n", " 253-AZ UC\n", " 254-AX CD\n", " 255-AZ UC\n", " 256-AX CD\n", " 258-AZ CD\n", " 259-AX NM\n", " 260-AY CD\n", " 261-AX UC\n", " 262-AZ CD\n", " 263-AX UC\n", " 264-AX NM\n", " 265-AX UC\n", " 291-AX CD\n", "Name: dx, Length: 158, dtype: object" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "#convert the training and testing labels to numerical values\n", "le = LabelEncoder()\n", "le.fit(y_dx)\n", "y = le.transform(y_dx)\n", "\n", "# just for reference, the columns of the binarized label read respectively:\n", "le.inverse_transform([0,1,2])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "array(['CD', 'NM', 'UC'], dtype=object)" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Label classification\n", "*Please note that the ROC plots will look different everytime the notebook is run due to the random nature of the cross-validation split*\n", "\n", "### Vanilla classifier\n", "We will go straight to using RandomForest and a 10-fold cross validation. Many other models were tried but RandomForest consistently prevented overfitting. First let's get an idea of how it looks like when you try to classify all the labels at the same time. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "clf = RandomForestClassifier(n_estimators=50, oob_score=True)\n", "clf.fit(X.values, y)\n", "scores = cross_val_score(clf, X.values, y, cv=10)\n", "\n", "print(\"Cross validation score:\")\n", "print(scores.mean())\n", "\n", "importances = clf.feature_importances_\n", "std = np.std([tree.feature_importances_ for tree in clf.estimators_],axis = 0)\n", "indices = np.argsort(importances)[::-1]\n", "\n", "print(\"feature ranking:\")\n", "\n", "for f in range(20):\n", " print(\"%d. feature %d (%f)\" % (f + 1, indices[f], importances[indices[f]]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Cross validation score:\n", "0.567471988796\n", "feature ranking:\n", "1. feature 71 (0.030080)\n", "2. feature 92 (0.029311)\n", "3. feature 52 (0.021462)\n", "4. feature 223 (0.019596)\n", "5. feature 12 (0.018157)\n", "6. feature 66 (0.017697)\n", "7. feature 45 (0.017373)\n", "8. feature 145 (0.016363)\n", "9. feature 216 (0.015820)\n", "10. feature 79 (0.015636)\n", "11. feature 65 (0.014432)\n", "12. feature 99 (0.014312)\n", "13. feature 109 (0.014086)\n", "14. feature 72 (0.014012)\n", "15. feature 51 (0.013417)\n", "16. feature 37 (0.013062)\n", "17. feature 27 (0.013053)\n", "18. feature 2 (0.012811)\n", "19. feature 0 (0.012587)\n", "20. feature 272 (0.012439)\n" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Build a One-vs-all ROC curve (not cross validated)\n", "To build a ROC curve we need to binarize the variable and run the classifier as one class vs. all others" ] }, { "cell_type": "code", "collapsed": false, "input": [ "y_bin = label_binarize(y,classes=[0,1,2])\n", "n_classes = y_bin.shape[1]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "X_train, X_test, y_train, y_test = train_test_split(X.values, y_bin, test_size=.3)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "clf1 = OneVsRestClassifier(RandomForestClassifier(n_estimators=50))\n", "y_score = clf1.fit(X_train, y_train).predict_proba(X_test)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/usr/local/lib/python3.4/site-packages/sklearn/utils/__init__.py:93: DeprecationWarning: Function multilabel_ is deprecated; Attribute multilabel_ is deprecated and will be removed in 0.17. Use 'y_type_.startswith('multilabel')' instead\n", " warnings.warn(msg, category=DeprecationWarning)\n" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The probabilities of each class are now in a numpy array where each row corresponds to sample and each column to the label in question (CD, NM or UC). Let's take a pick at the first 10:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "y_score[:10,:]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "array([[ 0.48, 0.1 , 0.34],\n", " [ 0.56, 0.08, 0.56],\n", " [ 0.02, 0.74, 0.14],\n", " [ 0.32, 0.16, 0.58],\n", " [ 0.16, 0.4 , 0.58],\n", " [ 0.28, 0.02, 0.76],\n", " [ 0.34, 0.42, 0.34],\n", " [ 0.48, 0.06, 0.58],\n", " [ 0.3 , 0.08, 0.48],\n", " [ 0.28, 0.64, 0.2 ]])" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "# Compute ROC curve and ROC area for each class\n", "fpr = dict()\n", "tpr = dict()\n", "roc_auc = dict()\n", "for i in range(n_classes):\n", " fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])\n", " roc_auc[i] = roc_auc_score(y_test[:,i], y_score[:,i],average=\"micro\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "# Plot of a ROC curve for a specific class\n", "plt.figure()\n", "plt.plot(fpr[2], tpr[2], label='ROC curve (area = %0.2f)' % roc_auc[2])\n", "plt.plot([0, 1], [0, 1], 'k--')\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('ROC - UC vs all')\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4FWX6//H3TaTXAIoIUgQE6b0ti1GDEmCV3QVsiKxe\ngK4IIqIiFlxFl3UtoNhQEPyprGJBvouCIEEBKUpogaCA9CIkVIGEkPv3xwzZJKQcQubMSc79uq5z\n5ZQ5M58M4dxn5nnmeURVMcYYY84q5ncAY4wxocUKgzHGmEysMBhjjMnECoMxxphMrDAYY4zJxAqD\nMcaYTKwwGFPEiUiaiFzh3n9PRJ7xO5MJbVYYTMgRkW0ickJEjonIPhF5X0QqZFmms4h8KyJHReSw\niHwpIldlWaaCiLwiItvddW0WkZdFpMoF5Louy3MDReT7DI9LiMhYEflZRI6LyK8i8q6I1M7PNj2g\n7s2YHFlhMKFIgV6qWh5oATQDHj/7ooh0AuYCnwPVgbrAGmCJiNR1lykBLACuAm5w19UJOAi0v4Bc\neX2ozgR6AbcCFdz8PwLX5famIBO/A5jQZoXBhDRV3Q/MA5pkePpfwDRVfVVVf1fVQ6r6BLAMGOsu\nMwC4HPizqia46zqgquNU9SsvsopINBAN3KSqP6lqmqoeVdU3VHVKNss/IiKfZHlugohMcO8PFJEt\n7lHRVhG5LYfttheRH0TkkIjsEZFXRaS4F7+jCQ9WGEyoEgARqQl0B5a7j8vgfPP/JJv3fAx0c+9H\nA1+p6gnvo6aLBpar6u4Al/8I6CEi5QBEJALoC3wgImWBCUB3Va2A8zuvzmE9qcBwoIq73HXA3/P9\nW5iwZ4XBhCIBvhCRo8AOYAvwrPtaZZy/273ZvG8fUNW9XyWHZbxUxc0QEFXdAawC/uw+dS1wQlVX\nuI/TgGYiUlpV96vqhhzWs0pVV7hHKNuBt4Gr8/1bmLBnhcGEIsU5HVMBiML5wGzrvnYI5wOzejbv\nqw4ccO8fBC4LdIMi8pjbQH1MRF7PYbFUIOspmuLAafd+Yg65cvMhTnsEwG3ABwCq+jtwM3APsEdE\n/k9EGuaQ/Ur39b0icgQYh1OkjMkXKwwmpKnqd8CrwHj38e/AD0C/bBbvh9PgDDAfuME99RTIdp5T\n1fLuLafTMDtwGrozqgtsy7DN9iJSI5BtumYCUe57euMUirOZ5qnq9cClQAIwOYd1vAFsAOqrakVg\nDPZ/21wA++MxhcErOB+4HdzHjwJ3isj9IlJeRCJF5FmgA/C0u8z7wE7gUxFpKCLFRKSKe2QQk88c\n/wEecNcnItIW+BswA0BV5wPfAJ+LSGsRucjNd4+I/C27FarqASAWeA/YqqqbAETkEhG5yW1rOA38\nDpzJIVc54BhwQkQaAffm8jtYjySTJysMJuSp6kFgGvCI+3gJcAPwF2APzjf2FkAXVd3iLpOC0xic\ngPNhfQSnAbsyTu+l/JgMTAVmA4fdTI+p6rwMy/QB5uAUkcPAOqC1myEnH+I0GH+Y4bliwAhgN84p\nqj+S8wf+QzinoY7itC/MIHO32qz37ToGkyuxiXqMMcZkZEcMxhhjMrHCYIwxJhMrDMYYYzKxwmCM\nMSaTi/wOEAgRsRZyY4zJB1U97y7KheaIQVXtpspTTz3le4ZQudm+sH1h+yL3W34VmsJgjDEmOKww\nGGOMycQKQyETFRXld4SQYfvif2xf/I/tiwtXKK58FhEtDDmNMSaUiAgaao3PIjJFRPaLyLpclpko\nIr+IyBoRaeVlHmOMMXnz+lTSVJzZt7IlIj1whgpuAAzGGT7YGGOMjzwtDKr6Pc7EKjm5EWeESlR1\nOVBJRKp5mckYY0zu/L7ArQbOmPln7QJqAvv9iWOMycmGDbA70Nmsje9Onvw93+/1uzDAuROHZNvK\nPHbs2PT7UVFR1vPAmCDZswdGj4Z586BpU7/TmNwkJcVy6FAsoCQlzc/3ejzvlSQidYDZqtosm9fe\nBGJVdYb7OAG4WlX3Z1nOeiUZE2SnTsHLL8OLL8KgQfDYY1C+vN+pzPkIyV5JAfgSGAAgIh2Bw1mL\ngjEmuFThiy+gSRNYvty5Pf+8FYVw4umpJBH5CLgaqCoiO4GngOIAqvqWqs4RkR4ishlnTtts58U1\nxgTH+vXwwAOwdy+8+SZ06+Z3IpObtLQ0pkyZQs+ePalevXqBrdfTwqCqtwawzFAvMxhj8paUBE89\nBf/5Dzz5JNxzD1wUCi2QJkcJCQkMHjyYlJSUAm9z9ftUkjHGR6mpMGkSNGrknELauBGGDrWiEMqS\nk5N5+umn6dKlC/369WPJkiXUr1+/QLdh//zGhKkFC2D4cLjkEud+s3O6h5hQk5KSQrt27ahbty5x\ncXFcfvnlnmzHxkoyJsxs3QoPPQSrVzs9jnr3BjnvfivGL+vWraNp06ZIAP9ohbVXkjEmSI4fd7qc\ntm8P7do5F6z9+c9WFAqbZs2aBVQULoQVBmOKuLQ0eP99px1h1y5Ys8a5YK1UKb+TmdwcPnzYt21b\nYTCmCFu+HDp3htdeg5kzYfp0qFHD71QmN2lpaUyaNIkGDRqwfft2XzJY47MxRdDZYSzmz3cuTuvf\nH4rZ18CQFx8fz6BBgyhWrBiLFi2idu3avuSwwmBMAUpNdbp7rl/vb46EBGcYi4QEu2K5MEhOTmbc\nuHG88cYbPPPMMwwePJhiPlZyKwzGFBBV56rhzZvhn//0N0udOlCzpr8ZTOCSk5PZt28fq1evpkYI\nnOuz7qrGFJCXX4Z334UlS6BiRb/TGJP/7qp2xGBMAfj8c/j3v2HpUisKpvCz5ihjLtCKFTB4MMya\nBT61FZpCYseOHdx///0kJyf7HSVXVhiMuQDbtjlXDr/7LrRt63caE6rOnDnDhAkTaN26NdWqVfP8\nArULZaeSjMmnw4ehRw949FG48Ua/05hQtXbtWgYNGkTp0qVZsmQJDRs29DtSnqzx2Zh8SEmB7t2d\ngecmTPA7jQlVa9euJTo6mueee4677ror6F1Q89v4bIXBmPOkCn/7Gxw6BJ99BhERficyoUpVSUpK\nokqVKr5s33olGRMkzz7rXMC2aJEVBZM7EfGtKFwIa3w25jx88IHT0Dx7NpQt63caEypUlU2bNvkd\no8BYYTAmQN99ByNGwH//CwU4va4p5LZt20aPHj0YOHAgaWlpfscpEFYYjAnApk3Qty98+CE0aeJ3\nGhMKUlNTeemll2jbti1du3blu+++83V8o4JkbQzGBGDECGe00uhov5OYULBhwwYGDBhAxYoV+eGH\nH2jQoIHfkQqU9UoyJg8//wx//CNs326T2xjHpk2b+OGHH7jzzjtD+mI1665qjEfuv98Z/+jZZ/1O\nYsz5scJgjAeOHIG6dWHdOpv5zBQ++S0MRaOlxBiPTJ0KN9xgRSEcqSrTp09nyJAhfkcJOmt8NiYH\nZ87Aq6861y6Y8LJlyxaGDBlCUlISkydP9jtO0NkRgzE5mDMHqlSBDh38TmKC5fTp04wfP54OHTrQ\nvXt3VqxYQZs2bfyOFXR2xGBMDiZMgOHDIYQ7nZgC9tprr7FgwQJWrFjBFVdc4Xcc31jjszHZiI+H\nbt2c+RZKlPA7jQmW1NRUIiIiQroL6vmwQfSMKUATJ8I991hRCDcXXWQfiWBHDMacIykJ6tWDhASo\nVs3vNMYL+/fvZ/fu3bRu3drvKJ6y7qrGFJB33nFmZLOiUPSoKlOmTKFZs2bExsb6HSdk2XGTMRmk\npsKkSc4EPKZo+fnnnxkyZAjHjx9n3rx5tGzZ0u9IIcvTIwYR6S4iCSLyi4g8ks3rVUXkaxFZLSLr\nRWSgl3mMycusWXD55RCGPRSLtDfffJPOnTtz0003sWzZMisKefCsjUFEIoBNQDSwG1gJ3KqqGzMs\nMxYoqaqjRaSqu3w1VU3Nsi5rYzBB0bWrMzZS375+JzEF6YcffuCyyy6jdu3afkcJqlDsldQe2Kyq\n2wBEZAZwE7AxwzJ7gebu/QpAYtaiYEywxMXBr79C795+JzEFrVOnTn5HKFS8LAw1gJ0ZHu8Csl5D\nOhn4VkT2AOWBfh7mMSZXEyfCffdB8eJ+JzEXIi0trchMmOMXL/deIOd+HgNWq+plQEtgkoiU9zCT\nMdn67Tf44gsYNMjvJCa/9u7dS58+fXjllVf8jlLoeXnEsBu4PMPjy3GOGjLqDIwDUNUtIvIr0BD4\nMevKxo4dm34/KiqKqKiogk1rwtrbb0OfPs7YSKZwSUtL45133mHMmDEMHjyYe++91+9IvomNjS2Q\nbrheNj5fhNOYfB2wB1jBuY3PLwFHVPVpEakG/AQ0V9WkLOuyxmfjmdOnoU4d+PpraNbM7zTmfCQk\nJDB48GBSUlKYPHkyzewfMJOQa3xW1VQRGQrMBSKAd1V1o4gMcV9/C3gOmCoia3BOaz2ctSgY47WZ\nM6FhQysKhdE///lP+vbty9///nciIiL8jlNk2JAYJux17AijR8NNN/mdxJiCZUNiGJMPy5c7Dc+9\nevmdxJjQYYXBhLWJE2HoULCzEKHts88+Y/PmzX7HCBtWGEzY2rMHvvoK7rrL7yQmJ7t37+bPf/4z\nY8aM4ejRo37HCRtWGEzYWrQIrrkGKlXyO4nJKi0tjddff52WLVvSokULVq9eXeSHyA4lNrqqCVuq\nULKk3ylMVqpKt27dSE5OZtGiRTRu3NjvSGHHCoMxJqSICC+++CLNmze3oS18YoXBGBNybFhsf1k5\nNsb45tixY9g1SqHHCoMxJuhUlY8//piGDRuyevVqv+OYLOxUkjEmqHbs2MF9993Hr7/+ysyZM2nV\nqpXfkUwWdsRgjAmKM2fOMHHiRFq3bk2HDh1YtWoVnTt39juWyUbARwwiUkZVT3gZxhhTdJ0+fZq4\nuDiWLFlCw4YN/Y5jcpHnEYOIdBaRDThDaCMiLUXkdc+TGWOKlFKlSjF16lQrCoVAIKeSXgG6AwcB\nVHU1cLWXoYwxxvgnoDYGVd2R5alUD7IYY4qAxMRERo4cyfHjx/2OYvIpkDaGHSLyBwARKQEMAzbm\n/hZjgk8VPv4YJk+G1AC+uuzfD23bep8rXKgqH330ESNHjqRfv35+xzEXIJDCcC8wAaiBM4/zPOA+\nL0MZc75WrYLhw+H4cXjiCahcObD3NWjgba5wsW3bNu699152797NrFmzaN++vd+RzAUIpDBcqaq3\nZXzCPYJY4k0kYwL3228wZgzMng3/+AfcfbfNrRBsO3fupG3btowcOZKHHnqI4sWL+x3JXKA8p/YU\nkThVbZXXc16yqT1NVikp8Npr8PzzcMcd8OSTNny2n/bv30+1atX8jmGyyO/UnjkeMYhIJ6AzcLGI\nPAicXXl57MI446M5c2DECLjiCvj+e2jUyO9ExopC0ZLbqaQSOEUgwv151lGgj5ehjMnOpk3w4IOw\neTO8/DL06OF3ovCzdetWrrjiCr9jGI8FciqpjqpuC06cHDPYqaQwdvgwPPMMTJsGo0fD/fdDiRJ+\npwovBw4c4MEHH2T58uWsW7eOkjbDUaGQ31NJgZwSOiEi/xaROSKy0L19m4+MxpyXM2ecrqeNGsHR\noxAfDyNHWlEIJlVl+vTpNG3alGrVqhEXF2dFIQwE0ivpA+A/QC9gCDAQOOBhJmP4/nun+2nZsk6b\ngk33G3w7duzg7rvvJjExkTlz5tCmTRu/I5kgCeSIoYqqvgOkqOoiVf0bcK3HuUyY2rEDbrkFbr8d\nHn4YvvvOioJfIiIiiImJYcWKFVYUwkwghSHF/blPRHqJSGsg0sNMJgydOAFPPw2tWjmnjhISnAIh\n53121BSUGjVq8OCDD3LRRTZtS7gJ5F98nIhUAkYCrwIVgBGepjJh4+wwFg8/DB07Olcw167tdypj\nwluevZKyfZNIe1Vd4UGenLZnvZICtG4dJCX5nSIwv/8O//wnHDsGEyZA165+JwpPc+bMYcaMGUyb\nNg2xQ7QixYsL3IoBfwbqAetVdY6ItAWeAy4BWuY3rPHGxx/D0KFw1VV+JwlMsWLQv78NY+GX/fv3\nM3z4cFauXMmbb75pRcGky/GIQUTeAeoCK3DmX9gLNALGALOC+RXejhjytnQp9O4N33wDLVr4ncaE\nMlVlypQpjB49mrvuuosnn3ySMmXK+B3LeKDAjxiAjkBzVU0TkVLAPqCeqibmN6TxxpYt8Ne/OheA\nWVEwefnwww958803mTdvHi1b2oG/OVduRwyZBsoL9sB5WbLYEUMOEhOhc2dn7KB77vE7jSkMUlNT\nEREi7PxdkZffI4bcCsNJYHOGp+oBW9z7qqrNzztlPllhyF5yMnTrBh06wAsv+J3GGBNqvCgMdXJ7\nYzDHT7LCcC5Vp+E2OdlpdC5m492aLI4dO0ZCQgLt2rXzO4rxSYGPlaSq23K7BRiqu4gkiMgvIvJI\nDstEiUiciKwXkdjz/QXC1ZNPOm0L779vRcGc68svv6RJkyZ88sknfkcxhZBnlzSKSATwGhCNMyXo\nShH5UlU3ZlimEjAJuEFVd4lIVa/yFCVTp8IHH8CyZVC6tN9pTCjZu3cv999/P2vXrmXatGlcc801\nfkcyhZCX3zXbA5vdI4zTwAzgpizL3AZ8qqq7AFT1oId5ioQFC+DRR+G//4VLLvE7jQklM2fOpHnz\n5jRs2JA1a9ZYUTD5FtARg4iUAS5X1U3nse4awM4Mj3cBHbIs0wAoLiILcSYDmqCq75/HNsLKhg1w\n661Om0JhuYjNBE/dunX59ttvadasmd9RTCGXZ2EQkRuBF4CSQB0RaQU8rao35vHWQFqLiwOtgeuA\nMsAPIrJMVX/JuuDYsWPT70dFRREVFRXA6ouOffugZ0/4978hzH51EyAbAdXExsYSGxt7wesJZAa3\nVTjDbC88ex2DiKxX1aZ5vK8jMFZVu7uPRwNpqjo+wzKPAKVVdaz7+B3ga1WdmWVdYd0r6cQJpxj0\n6AEZ6qMJY6pqQ1iYPHlx5fNZp1X1cJY/wrQA3vcj0MDt9roHuBm4Ncsys4DX3Ibqkjinml4KYN1B\nc+CA0y309Gn/MuzdC+3awVNP+ZfBhIYjR47w6KOPEhkZyXPPPed3HFNEBVIY4kXkduAiEWkADAOW\n5vUmVU0VkaHAXCACeFdVN4rIEPf1t1Q1QUS+BtbiFJvJqrohv7+MF2bPduYEePxx/zJERDhXN9sX\nxPD22WefMWzYMHr27MmoUaP8jmOKsEBOJZXFGTjvevepucAzqnrK42wZM/h2KqlPH7jxRhgwwJfN\nG8Pu3bsZOnQoGzdu5O2336arjU9uAlTgVz5nWHFrVV2V72QFwK/CcPo0XHwx/PyzdQ01/hk2bBiV\nK1dm9OjRlCxZ0u84phDxsjDEApcCnwD/UdX1+Up4AfwqDLGxMGoUrFwZ9E0bk84amk1+FfiQGGep\nahRwDXAQeEtE1onIE+cfsfD56iunJ5AxfrKiYIItoCufVXWvqk4A7gHWAE96mipEzJljhcEEz6JF\ni1i7dq3fMYzJuzCISGMRGSsi63HGPlqKc1VzkbZzp3NRWdu2ficxRd2hQ4cYNGgQ/fv3JzHR5sEy\n/gvkiGEKcBhnoLurVfV1Vf3N41y+++oruOEGm4vYeEdV+fjjj2nSpAklS5YkPj7exjcyISHP6xhU\ntWMwgoSaOXOgXz+/U5iibMCAAcTFxTFz5kw6d+7sdxxj0uU2Uc8nqtpXRNZl83KRnsEtOdnpnrp1\nK1SpErTNmjDz008/0axZM0qUKOF3FFNEeTEkxnD3Zy8g64qL9MBF338PjRtbUTDeskHvTKjKbQa3\nPe7dv2cze9vfg5LOJ9ZN1RSkkydPkpYWyPBixoSGQBqfr8/muSL9sWndVE1BWbBgAc2aNWP+/Pl+\nRzEmYDmeShKRe3GODOplaWcoDyzxOphffv0VkpKgVSu/k5jCLDExkZEjR7Jw4UImTZrE9ddn9/3K\nmNCU2xHDh8CfgC9x2hn+5N7aqOrtQcjmi6++gpgYKOblpKemyFJVPvzwQ5o2bUrFihVZv349vXr1\n8juWMeclt8ZnVdVtInIfWRqbRaSyqiZ5G80fc+bYSKom/9LS0pg3bx6zZs2iffv2fscxJl9y6676\nX1XtKSLbyKYXkqrW9ThbxixB6a568iRUqwbbt0NkpOebM8YYTxV4d1VV7en+rHMBuQqVRYugRQsr\nCsaY8BbIWEl/EJFy7v07ROQlEantfbTgs26qJlAnTpzgiSee4ODBg35HMabABdLE+iZwQkRaAA8C\nW4HpnqbyiXVTNYGYN28eTZs2ZevWrX5HMcYTgcz5nKqqaSLSG5ikqu+IyF1eBwu2X36BEyegedAG\n+jCFzYEDB3jwwQdZvHgxr7/+OjExMX5HMsYTgRwxHBORx4D+wP+JSARQ3NtYwXe2m6rNiWKyc+TI\nEVq0aMEll1zC+vXrrSiYIi2QI4abgduAu1R1n4jUAl7wNlbwzZkDgwf7ncKEqooVK7JixQpq1qzp\ndxRjPJfnnM8AInIp0A6n2+qKYM/H4HV31RMnnG6qu3dDhQqebcYYY4LKszmfRaQfsBzoC/QDVohI\n3/OPGLoWLnRmarOiYAB27NjhdwRjfBVIG8PjQDtVHaCqA3COHJ7wNlZwWW8kA3D8+HFGjBhBx44d\nOXTokN9xjPFNIIVBgAMZHidy7vwMhZaqUxisLTG8zZkzh6ZNm5KUlMTatWuJtKscTRgLpPH5a2Cu\niHyIUxBuBr7yNFUQJSTAmTPQpInfSYwfDh48yNChQ1m5ciWTJ0+mW7dufkcyxneBzPk8SkT+AnRx\nn3pLVT/3NlbwnL3a2bqphqdixYrRsGFDpkyZQpkyZfyOY0xIyG0QvStxuqXWB9YCo1R1VxCzZczi\nWa+k6GgYNgxuvNGT1RtjjG/y2yspt8KwGJgGfI8zD0MnVf3LBaXMJ68Kw7FjcNllsHcvlCtX4Ks3\nxhhfedFdtZyqTlbVBFV9AQjaMNvB8u230LGjFYVwsGzZMvr3709qaqrfUYwJebm1MZQSkdbufQFK\nu48FZxKfVZ6n85h1Uy36jh49ypgxY/j00095+eWXiYiI8DuSMSEvt1NJsWSeoEcyPlbVazxNljlL\ngZ9KUoVateCbb6BRowJdtQkRX375Jffddx/XX389L7zwApUrV/Y7kjFB5cVEPVEXlCjErV8PxYtD\nw4Z+JzFemD9/Pg899BDTp0/nmmuC9h3GmCLB0ynvRaS7iCSIyC8i8kguy7UTkVS3W2xQWDfVou26\n665j7dq1VhSMyQfPCoM7PPdrQHegMXCriFyVw3LjcS6kC9rHtF3tXLSJCKVKlfI7hjGFkpdHDO2B\nzaq6TVVPAzOAm7JZ7n5gJpmH3fDcqlXQqVMwt2i8kJyczMqVK/2OYUyREsjoqsXcuZ6fdB/XEpH2\nAay7BrAzw+Nd7nMZ110Dp1i84T7l3djaWag6bQym8Fq8eDGtWrViwoQJfkcxpkgJ5IjhdaATzmQ9\nAMfd5/ISyIf8K8CjbpcjoQgNzme8c+TIEe69915uvvlm/vGPf/D+++/7HcmYIiWQQfQ6qGorEYkD\nUNUkEQnku/Zu4PIMjy/HOWrIqA0wQ5wW4KpAjIicVtUvs65s7Nix6fejoqKIiooKIIIpar799lsG\nDBhAz549iY+Pp1KlSn5HMiZkxMbGEhsbe8HryXMGNxFZDnQGfnQLxMXAPFVtlcf7LgI2AdcBe4AV\nwK2qujGH5acCs1X1s2xeK/DrGMqXhz17nJ+m8IiPjycxMZGuXbv6HcWYkFfg1zFk8CrwOXCJiDwH\n9MGZvCdXqpoqIkOBuUAE8K6qbhSRIe7rb51vWGOa2Pjoxngu0Dmfr8L55g+wIKdv/V6xI4bwpKqI\nXWhiTL55dsQgIrWA34HZ7lMqIrVU1SbGNZ44deoU48aN4+DBg7zxxht5v8EYU6ACOZU0h//1MCqF\nM8rqJsCO6U2BW7RoEYMHD6Zp06ZMnDjR7zjGhKVAZnBrmvGxO8LqfZ4lMmHp0KFDPPzww3z99de8\n+uqr9O7d2+9IxoStQI4YMlHVVSLSwYswJny9/PLLlCxZkvj4eCpUqOB3HGPCWiDdVUdmeFgMaA1U\nVtUbvAyWJYM1Phdx1tBsTMHzsrtqxvnNUoH/Az493w0ZkxsrCsaEjlwLgzvyaQVVHZnbcsYEau3a\ntZw6dYr27QMZbssY44ccx0oSkYtU9QzwB7Gvc+YCnTx5kscee4zo6Gh27LCezsaEstyOGFbgtCes\nBmaJyCfACfc1zW7oCmOys2DBAoYMGUKbNm1Yu3Ytl156qd+RjDG5yK0wnD1KKAUkAtdmed0Kg8nT\nww8/zH/+8x8mTZpEr169/I5jjAlAjr2SRGQX8BI5DIWtqi96mCtrFuuVVEitWrWKBg0aUN52tDFB\n50WvpAjA/jebC9K6dWu/IxhjzlNuhWGfqj4dtCSmUEtNTUVVKW7T4hlT6Hk557MJE3FxcXTs2JEZ\nM2b4HcUYUwByKwzRQUthCqUTJ04watQounfvztChQ+nfv7/fkYwxBSDHwqCqicEMYgqXefPm0bRp\nU/bs2cO6desYOHCgXb1sTBFx3oPoGaOq6V1QY2Ji/I5jjClgAc3g5rdAu6vu3Am7dgW2zuuug/37\nrbuqMabo8nIQvULjb39zrk2oWDHvZbt0gVKlvM9kjDGFTZEqDKmp8PrrEBXld5Ki4fTp07zyyivc\nfPPN1KpVy+84xpggse6qJlsrV66kXbt2fPPNN35HMcYEmRUGk8nx48cZMWIEf/rTnxg1ahRz5861\nowVjwkyROpVkLkxKSgqtW7emU6dOrF+/nqpVq/odyRjjAysMJl2JEiWYN28ederU8TuKMcZHdirJ\nZGJFwRhjhSFM7d271+8IxpgQZYUhzKSkpDBu3DiaNWvG9u3b/Y5jjAlBVhjCyLJly2jTpg1Llizh\np59+onbt2n5HMsaEIGt8DgPHjx9n9OjRzJw5k5dffpmbb77ZBrwzxuTICkMYEBFKly5NfHw8lStX\n9juOMSbEWWEIA2XLluVf//qX3zGMMYWEtTEYY4zJxApDEbJx40buuOMOTp486XcUY0whZoWhCEhO\nTubpp58WpY2uAAAW6klEQVTmj3/8Ix06dKBEiRJ+RzLGFGKeFwYR6S4iCSLyi4g8ks3rt4vIGhFZ\nKyJLRKS515mKksWLF9OqVStWrVpFXFwcQ4cOJSIiwu9YxphCzNPGZxGJAF4DooHdwEoR+VJVN2ZY\nbCvQVVWPiEh34G2go5e5ioo1a9Zw8803M2HCBP76179aF1RjTIHwuldSe2Czqm4DEJEZwE1AemFQ\n1R8yLL8cqOlxpiKjRYsWbNq0iXLlyvkdxRhThHh9KqkGsDPD413uczm5G5jjaaIixoqCMaageX3E\noIEuKCLXAHcBf8ju9bFjx6bfj4qKIiqM5u9MS0sjLi6ONm3a+B3FGBPCYmNjiY2NveD1iGrAn93n\nv3KRjsBYVe3uPh4NpKnq+CzLNQc+A7qr6uZs1qOB5IyKgrFji9acz/Hx8QwaNIgyZcowb948ihWz\njmTGmMCICKp63o2PXn/K/Ag0EJE6IlICuBn4MuMCIlILpyj0z64ohKtTp07xxBNPEBUVxYABA6wo\nGGOCxtNTSaqaKiJDgblABPCuqm4UkSHu628BTwKRwBtur5rTqtrey1yhbtWqVdx66600bdqUNWvW\ncNlll/kdyRgTRjw9lVRQwu1U0q+//sqaNWvo3bu331GMMYVYfk8l2SB6Iahu3brUrVvX7xjGmDBl\nJ62NMcZkYoXBJ2fOnGHChAncfvvtfkcxxphM7FSSD9auXcugQYMoVaoUb7/9tt9xjDEmEztiCKKT\nJ08yevRooqOjGTRoEAsXLqRhw4Z+xzLGmEzsiCGI3nrrLbZu3cratWu59NJL/Y5jjDHZsu6qQZSW\nlmYXqRljgiZUr3w2GVhRMMYUBvZJ5YFt27axePFiv2MYY0y+WGEoQKmpqbz44ou0bduW9evX+x0n\n7IiI3ewWtreCZI3PBWTVqlUMGjSISpUqsWzZMurXr+93pLBUGNrMjCloBV0Y7IihALz00kvExMQw\nbNgw5s+fb0XBGFOo2RFDAbj22mvp378/l1xyid9RjDHmgllhKAAtW7b0O4IxxhQYO5V0HlSV06dP\n+x3DGGM8ZYUhQFu2bOH6669n4sSJfkcxpkjYsGED7dq18ztGoTB79mxuueWWoG3PCkMeTp8+zb/+\n9S86dOjADTfcwPDhw/2OZAqpOnXqUKZMGcqXL8+ll17KHXfcwdGjRzMts3TpUq699loqVKhApUqV\nuPHGG9m4cWOmZY4ePcoDDzxA7dq1KV++PPXr12fEiBEkJiYG89e5YE888QSjRo3yO8YF2bZtG9dc\ncw1ly5blqquuYsGCBTkuGxMTQ/ny5dNvJUuWpHnz5umvL126lPbt21OhQgVatGjBkiVL0l/705/+\nRHx8POvWrfP090mnqiF/c2Lm7eqrVRcuDGjRgKxcuVJbtGih3bp10y1bthTcio0nAv078UudOnV0\nwYIFqqq6b98+bdGihY4aNSr99aVLl2q5cuV04sSJevz4cU1KStLHH39cIyMjdevWraqqmpycrG3b\nttXrr79eN27cqKqqv/32mz777LM6Z84cz7KfPn26QNe3Z88erVy5siYnJ+fr/ampqQWaJ786duyo\nI0eO1FOnTumnn36qlSpV0gMHDgT03qioKH3mmWdUVTUxMVErV66sM2fO1LS0NP1//+//aWRkpB46\ndCh9+XHjxunQoUOzXVdOf/vu8+f/mZufNwX75ldhuO+++/T999/XtLS0glup8UxhKgyqqqNGjdIe\nPXqkP+7SpYved99957wvJiZGBwwYoKqqkydP1mrVqunvv/8e8HbXr1+v0dHRWrlyZa1WrZo+//zz\nqqp655136uOPP56+3MKFC7VmzZrpj2vXrq3jx4/XZs2aacmSJXX8+PHap0+fTOseNmyYDhs2TFVV\nDx8+rHfddZdWr15da9SooY8//rieOXMm20zTpk3Tbt26ZXru+eef13r16mn58uW1cePG+vnnn6e/\nNnXqVO3cubOOGDFCq1Spok888YQmJyfryJEjtVatWlqtWjW955579OTJk6qqeujQIe3Zs6defPHF\nGhkZqb169dJdu3YFvM8CsWnTJi1ZsqQeP348/bmuXbvqm2++med7f/31V42IiNDt27erqurs2bO1\ncePGmZa58sor9d13301/vGTJEq1bt2626yvowmCnknLx2muv0b9//wK/eMSEL3UvwNu1axdff/01\nHTp0AODEiRP88MMP9O3b95z39OvXj2+++QaA+fPnExMTQ5kyZQLa3rFjx4iOjqZHjx7s3buXzZs3\nc9111wEEdMXsjBkz+Oqrrzhy5Ai33HILc+bM4fjx44Az2dQnn3ySPtnUwIEDKVGiBFu2bCEuLo55\n8+bxzjvvZLvedevWnTPkfP369Vm8eDFHjx7lqaeeon///uzfvz/99RUrVlCvXj1+++03HnvsMR55\n5BE2b97MmjVr2Lx5M7t37+Yf//gH4AxYeffdd7Njxw527NhB6dKlGTp0aI6/Z69evYiMjMz2duON\nN2b7nvj4eK644grKli2b/lyLFi2Ij4/PdZ8CTJ8+na5du1KrVq0cl0lLS8u0rkaNGrFt27b0/e+p\n/FSTYN/w6YjBFC6B/J1Awdzyo3bt2lquXDktX768ioj27t07/Rv1zp07VUR006ZN57zvq6++0uLF\ni6uqanR0tI4ePTrgbX744YfaunXrbF8bOHBgrkcMderU0alTp2Z6T5cuXXT69Omqqjpv3jytV6+e\nqjqnxkqWLJn+jf3stq+55ppstz1o0CB99NFHc83esmVLnTVrlqo6Rwy1atVKfy0tLU3Lli2b6RTv\n0qVLc/xGHRcXp5GRkblu73xNnz5dO3bsmOm5MWPG6MCBA/N8b7169XTatGnpjw8ePKiRkZE6Y8YM\nTUlJ0ffee0+LFSum99xzT/oyKSkpKiK6c+fOc9aX098+dsSQP6rKlClT2LBhg99RTBAUVGnIDxFh\n1qxZHD16lNjYWL799lt+/PFHACIjIylWrBh79+4953179+7l4osvBqBq1ars2bMn4G3u3LmTK664\nIn+BgcsvvzzT49tuu42PPvoIgA8//DD9aGH79u2cPn2a6tWrp3/Tvueeezhw4EC2642MjOTYsWOZ\nnps+fTqtWrVKf//69eszNahnzHLgwAFOnDhBmzZt0pePiYnh4MGDgHMENmTIEOrUqUPFihW5+uqr\nOXLkSPoRW0EoV67cOZ0HDh8+TIUKFXJ93+LFi9m/fz99+vRJf65KlSp88cUXvPjii1x66aXMnTuX\n6Ohoatasmb7M2f1VqVKlAvsdchLWheHnn3/m2muv5Y033vA7igkzXbt25f777+eRRx4BoGzZsnTq\n1ImPP/74nGU//vjj9NM/0dHRzJ07lxMnTgS0nVq1arF169ZsXytbtmym9ezbt++cZbKeaurTpw+x\nsbHs3r2bL774gttuuw1wPrRLlixJYmIihw4d4tChQxw5ciTHXjTNmzfn559/Tn+8fft2Bg8ezKRJ\nk0hKSuLQoUM0bdo00wd5xixVq1aldOnSbNiwIX17hw8fTv+gfvHFF/n5559ZsWIFR44cYdGiRRnP\nQJwja4+hjLeePXtm+54mTZqwdevWTKd21qxZQ5MmTbJd/qxp06bx17/+9ZzTgV27dmXFihUkJiYy\nffp0EhISaN++ffrrGzdupE6dOpQrVy7X9ReI/BxmBPtGAZ9KSk5O1meffVarVKmiL7/8csj0cDAX\nJtC/E79kbXw+cOCAlilTRpctW6aqqosXL9ayZcvqxIkT9ejRo5qUlKRjxozRyMhI3bx5s6o6f7vt\n2rXT7t27a0JCgp45c0YPHjyo48aNy7ZX0rFjx7R69er6yiuv6KlTp/To0aO6fPlyVXUashs1aqRJ\nSUm6d+9e7dChwzmnkjLmPSsmJkajo6PPOUV100036fDhw/Xo0aN65swZ3bx5sy5atCjbfbFv3z6t\nUqVKeq+k+Ph4LVWqlG7atElTU1N1ypQpetFFF6U3vk6dOlW7dOmSaR3Dhw/Xfv366W+//aaqqrt2\n7dK5c+eqqurDDz+sMTExeurUKU1MTNTevXuriOTYGJ5fHTt21IceekhPnjyZ3ivp4MGDOS5/4sQJ\nrVixoi7M5oNq1apVmpKSokeOHNHhw4ef8/uOGzcu284JqmF8KunHH/O+ZTkyzZaqEhUVxZIlS/jp\np5944IEHiIiI8P4XMCaLqlWrcueddzJ+/HgA/vCHPzB37lw+++wzLrvsMurUqcOaNWtYvHgx9erV\nA6BEiRLMnz+fRo0a0a1bNypWrEiHDh1ISkqiY8eO52yjXLlyfPPNN8yePZvq1atz5ZVXEhsbC8Ad\nd9xBixYtqFOnDt27d+eWW24JqKPFbbfdxoIFC9KPFs6aPn06KSkpNG7cmMqVK9O3b99sj0IAqlWr\nxrXXXssXX3wBQOPGjRk5ciSdOnXi0ksvZf369XTp0iV9+ewaysePH0/9+vXp2LEjFStWpFu3bulH\nIQ888AAnT56katWqdO7cmZiYGE86kcyYMYMff/yRypUrM2bMGD799FOqVKkCwPfff0/58uUzLf/F\nF18QGRlJVDbTTL7wwgtcfPHF1KpVi/379/P555+fs60hQ4YU+O+QnUIztWebNnnnjIiADz6AvAY3\n/eWXX6hfv771NipiRKRAzyEbb23cuJE777yTFStW+B0l5M2ePZsPPviAGTNmZPt6Tn/77vPn/UFX\naApDYchp/GWFwYSrgi4MheZUUn4cOHDAPiiMMeY8FcnCkJaWxttvv03jxo1Zs2aN33GMMaZQKXLz\nMSQkJDB48GBSUlL49ttvadasmd+RjDGmUCkyRwwpKSk8/fTTdOnShX79+rFkyRIrCsYYkw9F5ohB\nRDh8+DBxcXHnXK1pjDEmcNYryRQZ1v3YhLOC7JXk6RGDiHQHXgEigHdUdXw2y0wEYoATwEBVjfMy\nkym67MuDMQXDszYGEYkAXgO6A42BW0XkqizL9ADqq2oDYDCQ56BFu3bt4u677+bw4cMepA59Z69a\nNbYvMrJ98T+2Ly6cl43P7YHNqrpNVU8DM4CbsixzIzANQFWXA5VEpFp2K0tLS2PSpEm0bNmSmjVr\nUqpUKQ+jhy77o/8f2xf/Y/vif2xfXDgvTyXVAHZmeLwL6BDAMjWB/VmWo0uXLhQrVozvvvuOxo0b\nF3RWY4wxLi+PGAI94Zu1YSTb9w0YMMCKgjHGBIFnvZJEpCMwVlW7u49HA2kZG6BF5E0gVlVnuI8T\ngKtVdX+WdVmrojHG5EOo9Ur6EWggInWAPcDNwK1ZlvkSGArMcAvJ4axFAfL3ixljjMkfzwqDqqaK\nyFBgLk531XdVdaOIDHFff0tV54hIDxHZDPwO/M2rPMYYYwJTKC5wM8YYEzwhNVaSiHQXkQQR+UVE\nHslhmYnu62tEpFWwMwZLXvtCRG5398FaEVkiIs39yBkMgfxduMu1E5FUEflLMPMFS4D/P6JEJE5E\n1otIbJAjBk0A/z+qisjXIrLa3RcDfYgZFCIyRUT2i0j2E2yTj8/N/MwH6sUN53TTZqAOUBxYDVyV\nZZkewBz3fgdgmd+5fdwXnYCK7v3u4bwvMiz3LfB/wF/9zu3T30QlIB6o6T6u6nduH/fFWOD5s/sB\nSAQu8ju7R/vjj0ArYF0Or5/352YoHTEU6AVxhVye+0JVf1DVI+7D5TjXfxRFgfxdANwPzAQOBDNc\nEAWyH24DPlXVXQCqejDIGYMlkH2xF6jg3q8AJKpqahAzBo2qfg8cymWR8/7cDKXCkN3FbjUCWKYo\nfiAGsi8yuhuY42ki/+S5L0SkBs4Hw9khVYpiw1kgfxMNgMoislBEfhSRO4KWLrgC2ReTgSYisgdY\nAwwPUrZQdN6fm6E07HaBXhBXyAX8O4nINcBdwB+8i+OrQPbFK8CjqqriDLFaFLs3B7IfigOtgeuA\nMsAPIrJMVX/xNFnwBbIvHgNWq2qUiNQDvhGRFqp6zONsoeq8PjdDqTDsBjJOpHA5TmXLbZma7nNF\nTSD7ArfBeTLQXVVzO5QszALZF21wroUB53xyjIicVtUvgxMxKALZDzuBg6p6EjgpIt8BLYCiVhgC\n2RedgXEAqrpFRH4FGuJcXxVuzvtzM5ROJaVfECciJXAuiMv6H/tLYACkX1md7QVxRUCe+0JEagGf\nAf1VdbMPGYMlz32hqleoal1VrYvTznBvESsKENj/j1lAFxGJEJEyOA2NG4KcMxgC2RcJQDSAez69\nIbA1qClDx3l/bobMEYPaBXHpAtkXwJNAJPCG+035tKq29yuzVwLcF0VegP8/EkTka2AtkAZMVtUi\nVxgC/Jt4DpgqImtwvgA/rKpJvoX2kIh8BFwNVBWRncBTOKcV8/25aRe4GWOMySSUTiUZY4wJAVYY\njDHGZGKFwRhjTCZWGIwxxmRihcEYY0wmVhiMMcZkYoXBhAwROeMOGX32ViuXZY8XwPbeE5Gt7rZ+\nci/+Od91TBaRRu79x7K8tuRCM7rrObtf1orIZyJSLo/lW4hITEFs24Qnu47BhAwROaaq5Qt62VzW\nMRWYraqfiUg34N+q2uIC1nfBmfJar4i8hzO88ou5LD8QaKOq9xd0FhMe7IjBhCwRKSsi891v82tF\n5MZslqkuIt+536jXiUgX9/nrRWSp+96PRaRsTptxf34P1Hff+6C7rnUiMjxDlv+6E7+sE5G+7vOx\nItJGRP4JlHZzvO++dtz9OUNEemTI/J6I/EVEionICyKywp1AZXAAu+UHoJ67nvbu77hKnMmarnSH\niPgHcLObpa+bfYqILHeXPWc/GpOJ35NM2M1uZ29AKhDn3j7FGe6gvPtaVeCXDMsec3+OBB5z7xcD\nyrnLLgJKu88/AjyRzfam4k7qA/TF+dBtjTOkRGmgLLAeaAn8FXg7w3sruD8XAq0zZsomY2/gPfd+\nCWAHUBIYDIxxny8JrATqZJPz7Hoi3P3yd/dxeSDCvR8NzHTv3wlMzPD+54Db3fuVgE1AGb//ve0W\nureQGSvJGOCkqqZPOygixYHnReSPOGP/XCYil6jqbxneswKY4i77haquEZEooDGw1B1HqgSwNJvt\nCfCCiDwO/IYzr0U34DN1RihFRD7DmSHra+Df7pHB/6nq4vP4vb4GJrjf5mOARaqaLCLXA81EpI+7\nXAWco5ZtWd5fWkTicMbV3wa86T5fCZguIvVxhlE++/8569Dj1wN/EpGH3MclcUbb3HQev4MJI1YY\nTCi7Hefbf2tVPSPO0MmlMi6gqt+7haMX8J6IvIQzm9U3qnpbHutX4CFV/ezsEyISTeYPVXE2o7+I\nM1duT+BZEVmgqs8E8kuo6ilx5l++AegHfJTh5aGq+k0eqzipqq1EpDTOwHE3AZ8DzwALVPXPIlIb\niM1lHX/Rojcvg/GItTGYUFYB+M0tCtcAtbMu4PZcOqCq7wDv4Mx9uwz4gzgTtJxtH2iQwzayTmDy\nPdBbREq77RK9ge9FpDpwSlU/AP7tbier0yKS05et/+BMqHT26AOcD/m/n32P20ZQJof34x7FDAPG\niXMoVAHY476cccTMozinmc6a674Pdzt5TwZvwpoVBhNKsnaR+wBoKyJrgTuAjdksew2wWkRW4Xwb\nn6DOXMcDgY/cYZeX4ozHn+c2VTUOeA/nFNUynKGr1wDNgOXuKZ0ngWezWdfbwNqzjc9Z1j0P6Ipz\nJHN27uF3cOZLWCUi63CmJs2usKSvR1VXA5vd3/VfOKfaVuG0P5xdbiHQ+GzjM86RRXG3AX898HQO\n+8IYwLqrGmOMycKOGIwxxmRihcEYY0wmVhiMMcZkYoXBGGNMJlYYjDHGZGKFwRhjTCZWGIwxxmRi\nhcEYY0wm/x+0WgvQogFAigAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "# Plot ROC curves all together now\n", "plt.figure()\n", "\n", "for i in range(n_classes):\n", " plt.plot(fpr[i], tpr[i], label='ROC curve {0} (area = {1:0.2f})'\n", " ''.format(le.inverse_transform(i), roc_auc[i]))\n", "\n", "plt.plot([0, 1], [0, 1], 'k--')\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('ROC - one random 1/3 split')\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEZCAYAAACTsIJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FFX3xz+HiKEkQGgBEZAiWIAISEeMEpAqFgSRoq/8\naApIF6QrqLwWpCmiwgs2RARsoUMiIFV6IGDoID0BQgskOb8/ZolJSFnC7k4S7ud55snOzJ17vzOb\nnXPrOaKqGAwGg8Fwgxx2CzAYDAZD5sIYBoPBYDAkwRgGg8FgMCTBGAaDwWAwJMEYBoPBYDAkwRgG\ng8FgMCTBGAaDwY2ISKCIHLFbh12IyEERedLx+S0R+cJuTYb0MYbhDsfxw70sItEickJEvhaRfMnS\n1BWRFSJyQUTOicgvIvJgsjT5ROQTETnkyCtCRMaLSCHP3tGdi4i8IyI7ROS6iIxMJc3nItLFYbB2\niEiUiESKyBIRecgNshIWSqnqu6raxaHjPhGJFxHzDsqEmC/FoEALVfUFAoDKwLAbJ0WkDrAYmA8U\nB8oA24A1IlLGkeZuYDnwIPCUI686wBmgpudu5fbJ4i+qv4GBwO8keiEno4nj/C6giar6Af7AFmC6\nJ0QmQ2wo05AOWflHYHAxqnoSWAI8nOjwf4GZqjpJVS+papSqDgfWAaMcaToBJYFnVTXckddpVR2r\nqgszokVE7nG0TM6KyN8i8n+Jzo0SkTkiMtPRitkpItWTXfuTiJwSkf0i0iuNcv4nIp+JSLCIXAQC\nRaS5iGwRkfMicjhx7TtRTbeTo3V0WkTeSnQ+tyPPSBEJA2okK+9BEQlx1NR3ikjLZFo+dWiJFpFV\nIlJMRCY40u8WkUdSuxdVnaWqi4BoUnjhikgV4Jyq/qOqp1T1mONUDiAeOJ7Gc3pTRI46nnd4ou6h\nUSIyV0RmO8795SgnpTxGicjXjt0/HH/POe61VmplGzyPMQwGcLxERORerBrlesd+Hqya/48pXDMH\naOT4HAQsVNXLLtQ0GziM1UppDbwrIk8kOt8S+B7ID/wCTHZozgH8ilUDvgdoCPQRkcZplNUOeEdV\nfYA1wEWgg6rmB5oDPUSkVbJr6gEVHPmPEJGKjuMjsVpVZYGngJdx1N5FJKdD2yKgCNAL+FZEKiTK\n9wVgKFAYuIZlgDcCBYG5wMdp3Ed6NAN+u7EjIqVEJAq47LjPzild5Li314FHVTUf0Bg4mCjJ01j/\nD37Ad8ACEfFKIavErZjHHH/zq6qvqq7P0B0Z3IIxDAbB+iFfwHoR7wPGOM4VxPofSakmeQLr5QVQ\nKJU0GRMkUhKoC7ypqtdUdRvwJVbL5AarVHWRWs6+vsHqBgOrhl5YVceoaqyqHnBc+2IqxSmwQFXX\nAqhqjKqGqmqYY38HlpF6PNl1ox1pt2N1rd0o/wVgrKqeU9WjwAT+rb3XBvKq6vsObSuxXtTtEuU7\nT1W3qGoMVvfdJVX9xnGfc4CqTjzC1GgGBCfcuOphR1dSYcc9zEjlujjAG3hYRHI6rtuf6PwmVZ2n\nqnFYhiuX416TI6l8NmQyjGEwKNDKURMMBJ4EHnWci8LqYiiewnXFgdOOz2ewaudO4ZidEu3YPk0h\nyT1ApKpeSnTsMFAi0f7JRJ8vA7kcrYXSwD2OrpcoR414CFA0DUlJZg2JSC0RWenoijoHdMMyfok5\nkax8n0TaE+d3ONl9JZ+hdIh/n50CpxKdu5ps/0qicm4JESkAPAD8mfycqkYBA4CWkmzigeN8BNAH\nq+vwpIh8LyKJ/yeOJkqrjn2n/x8MmQ9jGAwJqOofwCRgnGP/ErAWaJNC8jZYA84Ay4CnHF1PzpTz\nrqP7wFdVX0shyT9AQRFJ/BIsRaIXUBocAQ6oql+iLZ+qtnBGm4PvgAXAvapaAJiK87+V4w6tiXXf\n4B+gpIgkri2XBo7hepIPPj8FLNfU3SnnxKoExKSYmer3qvoYll7F8T/ioOSNDw7jfC/Wvd6KPkMm\nwhgGQ3I+AWomGgwcDLwsIr1ExFdE/ERkDFALGO1I8zXWC/knEakoIjlEpJCjZdD0VgWo6hGsmu17\nIuLtGMx8FavLKD02ANEiMsgxEOwlIpVE5NFU0qfUpeEDRKnqNRGpCbyE8y+yOcAQESngGLNJPPC9\nHqt1MUhEcopIINACq6sqNS1OIyJ3iUguwAvIKSI3WlFgdSP9nijtsyJSwfFdFcHqAgp2dGElz7eC\niDwpIt5YhuMqVvfSDao78rsLq2VxFWtsJC1OYxmichm7W4M7MYbBkARVPQPMBN507K/Bqm0+h1UL\nPIjVn15fVfc50lzDGoAOB5YC57FeggVJ/wWRGu2A+xxlzgNGqOqKGzK5+UWtDi1xWC/bR4D9WC+g\nacBNXSRp5PUa8LZj3GU48ENKZaXCaKzuoQNYg8yzEmm7hjVo3tShazLQUVX3pqIl1ftMhS+xDM+L\nWAPYl4EOjhZKY4eeG5Rw7F8ANmN1G76cSr7ewHsOzcexxiSGJNLzM9AWiATaA885vofkJNyPY6LC\nWKxpz1EOA2zIJIgJ1GMwZG8cL92JqprSgPDt5j0SKK+qHV2dt8E+TIvBYMj+KNY0WndgZhdlQ+6y\nW4DBYHAvqrrRndljBpKzHaYryWAwGAxJMF1JBoPBYEhCluhKEhHTrDEYDIYMoKq3PA6UZVoMqmo2\nVUaOHGm7hsyymWdhnoV5FmlvGSXLGAaDwWAweAZjGAwGg8GQBGMYshiBgYF2S8g0mGfxL+ZZ/It5\nFrdPlpiuKiKaFXQaDAZDZkJE0Mw2+Cwi00XkpIjsSCPNRLEidG0TkdvxNW8wGAwGF+DurqQZWBHB\nUkREmmH5Wbkf6Ap85mY9BoPBYEgHtxoGVV2F5bUxNZ7G8uSJWqH9CoiIvzs1GQwGgyFt7F7gVoKk\nEa2OYgX5OJlycoPBYBu7dsEx18cUOnz+MKcvnU4/oYHjx+HipfTTAVy9di3D5dhtGOBm74wpjjKP\nGjUq4XNgYKCZeWAweIp//oEhQ2DJEqhUyaVZX4m9yv6j6/D1Ti1chiExuaMgr1fqLm23Xr3O1pjr\nqMJfMdczXI7dhuEYicICYrUWUqySJDYMBoPBA1y9CuPHw0cfQZcusHcv+Pq6tIhOP75A5aLDGfH4\nCJfmm13x94ftm62/KRGYbD9pFFnnsXsdwy9AJwARqQ2cU1XTjWQw2IkqLFgADz8M69db23vvudwo\nrDywko3HNjKw7kCX5mu4fdzaYhCR74HHgcIicgQrWEhOAFX9XFWDRaSZiEQAl4D/uFOPwWBIh507\noU8fqzN76lRo1MgtxcTGx9J7UW8+avwRuXPmdksZdwLx8fFMnz6d5s2bU7x4cZfl61bDoKrtnEjT\n050aDAaDE0RGwsiR8MMPMGIEdO8Od7nv9TB101SK5i3Kcw8+57Yysjvh4eF07dqVa9euuXzM1e6u\nJIPBYCexsTBlCjzwgNWFtHs39OzpVqNw5vIZ3g59mwlNJmS4D/xOJiYmhtGjR1O/fn3atGnDmjVr\nKF++vEvLsHvw2WAw2MXy5fDGG1C0qPW5cmWPFDt8xXDaVWpHpaKuneF0J6B6jSZNanD//WXYsmUL\nJUuWTP+iDGAMg8Fwp7F/PwwYAFu3WjOOnnkGPFRz33J8C/PC5xH+erhHystuiNzNp59+y+OPV3Jr\na8t0JRkMdwoXL8Jbb0HNmlCjhrVg7dlnPWYUVJXei3rzzhPv4JfbzyNlZkcefLCy27vgjGEwGLI7\n8fHw9dfWOMLRo7Btm7VgLVcuj8qYvXM2l65donPVzh4tN6ty7tw528o2hsFgyM6sXw9168LkyTB3\nLsyaBSVKeFzGpWuXGLRsEJOaTsIrh5fHy89KxMfHM2XKFO6//34OHTpkiwYzxmAwZEduuLFYtsxa\nnNahA+Swrx743ur3eLz049QrVc+t5axYAZs2ubUIt3LiRBg//dSFHDly0KlTKD/8UDrJ+UtO+km6\nXYxhMBhcSWysNd1z5057dYSHW24swsNdvmL5VtkXuY+pm6ayrfs2t5f14YeQOzeUK+f2olxKbGwM\n69aNZevWz6hf/x0CAroikoMzZ5Km698fChVyvx5jGAwGV6FqrRqOiID337dXy333wb332qvBQf8l\n/elfpz8l8nmmC6tzZ2jWzCNFuYwLF2IYMOAEP/64lRI2dPUlxxgGg8FVfPIJhITAmjWQP7/dajIF\nS/YtYeepncxuPdtuKZmafPnyMW3aNLtlJGAMg8HgCubPt/ox/vzTGAUH1+Ou88aiNxj/1Hhy3eXZ\nGVCG28PMSjIYbpcNG6BrV/j5ZyhdOv30dwAHzx2kzdw2lClQhhYVWtgtJ9Nw+PBhevXqRUxMjN1S\n0sQYBoPhdjh40Fo5/NVX8OijdquxneiYaIYuH0r1adWpWqwqc9vMNf6QgLi4OCZMmEC1atXw9/fP\n9M/EdCUZDBnl3DlrlHPwYHj6abvV2Eq8xjNz60yGrhhKo3KN2N59u8cGmzM727dvp0uXLuTOnZs1\na9ZQsWJFuyWlizEMBkNGuHYNnnvOilfQu7fdamwl9GAofRf3JXfO3Cx4cQE1S9S0W1KmYfv27QQF\nBfHuu+/y6quvksPGtSS3gjEMBsOtomqNKfj6wscf263GNvZH7WfQ0kFs/Gcj/w36L20ebpPpu0g8\nTeXKldm9ezeFPLH4wIVkDfNlMGQmxoyxFrB99x143XnuHS7EXGDwssHU+KIGVYtVJfz1cNpWamuM\nQgqISJYzCmAMg8Fwa3z7rTXQ/OuvkDev3Wo8Slx8HF9u/pKKkyty8tJJdvTYwdAGQ01oTizPsXv2\n7LFbhsswXUkGg7P88Qf07QsrV4IL4+tmBVYeWEnfxX3x9fblt3a/Uf2e6h4p99o1y1P4sWPOpd+y\nxWNexBM4ePAgPXr04Ny5c6xZsybLjCOkhaiq3RrSRUQ0K+g0ZGP27IEGDawWQ1CQ3Wo8RkRkBAOX\nDmTria180OgDnn/weY91GcXGQrt2cPUqvPSSc9fkyAEtWnimMRcbG8vEiRN599136d+/PwMGDCBn\nzpzuL/gWEBFU9Za/MNNiMBicoW9fy1vpHWIUzl89z5g/xjBj6wwG1B3A989/79HVy/Hxlg/A8+et\nXjtvb48V7RS7du2iU6dO5M+fn7Vr13L//ffbLcmlGMNgMKTH3r3w118wb57dStxObHwsX23+ipEh\nI2lRoQU7X9tJMZ9iHtWgatnhvXthyZLMZxQAvLy86NmzJy+//HK2HHQ3XUkGQ3r06mX5Pxozxm4l\nbmXZ/mX0W9yPgrkLMv6p8VQtXtUWHcOHw++/W7EVChSwRUK2IaNdScYwGAxpcf48lCkDO3bYEvnM\nE+w9u5cBSwYQdjqMDxp9wLMPPGtbLfi//4UZM6xx/iJFbJGQrcioYcj6w+cGgzuZMQOeeipbGoWo\nK1H0W9yPul/V5bFSj7HrtV089+BzthmFqVOtbdmyzGEUVJVZs2bRrVs3u6V4HDPGYDCkRlwcTJpk\nzUTKRsTGxzLtr2mMDh3NMxWfIey1MPx9/G3V9M03MHYshIZmDhu8b98+unXrRmRkJF988YXdcjyO\naTEYDKkRHGzFUaxVy24lLmNxxGICpgYwd9dclnRYwuctP7fdKCxYAAMHwuLFULasrVK4fv0648aN\no1atWjRp0oQNGzZQvbpn1mxkJkyLwZAlWfj3QhZFLHJrGa+NmM/6Rg/y16I+bi3HU+w+s5sD5w7w\nYaMPebri05liNs3SpZbbqYUL4aGH7FYDkydPZvny5WzYsIGydlspGzGDz4YsycsLXiY2Ppaa97jH\nk2fB/cd59o3PmDFvBPE5s0f9yS+3Hy9WepG7ve62WwpgRUB99llrFnD9+narsYiNjcXLyytTGE1X\nYBa4Ge44GpdtzMuPvOyezGd0g1796fVYf/fkf4ezebPltfybbzKPUQC46y7zSgRjGAyGm4mMhDlz\nIDw8xdNHjsDy5dbsmc2brVW6hlvjxAmYPh0aN7an/JMnT3Ls2DGqVatmj4BMjjEMBkNyvvzSisjm\nbw3KRkVBSIhlCJYtg7NnoWFDaxs0CO7OHD0zWQpfX3tmH6kqM2bMYPDgwQwePNgYhlQwhsFgSExs\nLDp5Cpvemsf8tyxDsHs31KtnuUmaPRsCAixnbYasxd69e+nWrRsXL15kyZIlPPLII3ZLyrS49d9b\nRJqISLiI/C0ib6ZwvrCILBKRrSKyU0RecacegyEl4uIsV0jjxsHoaj+z7lhJes+sjpcXfPABnDkD\nixbBgAFQtaoxClmRqVOnUrduXVq1asW6deuMUUgHt7UYRMQLmAwEAceAjSLyi6ruTpSsJ7BFVYeI\nSGFgj4h8o6qx7tJlMKjCvn3/dg2tXGn1GgUFwci4CeSa/gZr3TSmbbCHgIAA/vrrL0qXLm23lCyB\nO7uSagIRqnoQQERmA62AxIbhOFDF8TkfcNYYBYM7OHnScsq2bJk1cHz9umUIWrWCCRMc/d1btsD8\nA/DSM3bLNbiYOnXq2C0hS+FOw1ACOJJo/yiQfAnpF8AKEfkH8AXauFGP4Q7i4kXLEdsNQ3DoEAQG\nWsZgwAB44IEUIn1NnAivvw6ZLNiK4daIj4/PFlHU7MSdhsGZFWlvAVtVNVBEygFLRSRAVaPdqMuQ\nDbl+HTZs+NcQbN4MNWpYhmDaNKheHdKcon7qlOWbISLCY5oNruX48eP06tWLunXr0q9fP7vlZGnc\naRiOASUT7ZfEajUkpi4wFkBV94nIAaAisCl5ZqNGjUr4HBgYSGBgoGvVGrIWCkePwSchljFYtQrK\nlbMMwbBh1qKpPHluIb9p06B1a8s3kiFLER8fz5dffsnQoUPp2rUrPXr0sFuSbYSEhBASEnLb+bjN\nJYaI3AXsARoC/wAbgHaJB59F5GPgvKqOFhF/4C+giqpGJsvLuMQwcPjwvwvL5unL+J5+kmfLvkxQ\nEDzxBBQunMGMr1+H++6zph5VruxKyQY3Ex4eTteuXbl27RpffPEFlc33l4RM5xJDVWNFpCewGPAC\nvlLV3SLSzXH+c+BdYIaIbMOaOjsouVEw3LlERVkzhm50D0VGWovKgoLgqjc8XRledsWsw7lzoWJF\nYxSyIO+//z4vvPACr732Gl5eXnbLyTYYJ3qGTMPVq5ZjtRuGIDz834VlDRtClSr/riF4ecHLPHnf\nk67xlVS7NgwZYk1RMhiyEZmuxWAw3CoNGlgzhZ56Cj780Hpfu93dxPr11sBzixZuLshgyDoYw2BI\nkwNRBzh16ZTbyzlyBPbFwG+/QQ5H/WZLGsWevnTaNQVPnAg9e4LphsjUzJs3jypVqlC+fHm7pdwR\nGMNgSJX9UfupPq06FQpVcHtZx4/DXS2gz2Lnr7ltXf/8Y0WImTLl9vIxuI1jx47Rs2dPwsPD+Tab\nhVjNzBjDYEiVfov7MbDuQN567C23l1W3LowcaXUjeYzQUGs6U4ECHizU4Azx8fFMnTqVkSNH8vrr\nrzN79my8vb3tlnXHYAyDIUWW7FvCjlM7mN16ttvLOn7c8mD6xBNuLyopqmBeNpkOVaVRo0bExMQQ\nGhrKQ5kh5ucdhjEMhpu4HnedNxa9wfinxpPrrlxuL++XX6BpUxPXwGAhInz00UdUqVLFuLawCfPU\nDTcxecNkSucvTcsKLT1S3oIF8IzxW2dIxCOPPGKMgo2YFoMhCScvnuTd1e+y6j+rPBIQ/fx5a+3C\nnDluL8qQCYmOjsbHx8cj/2sG5zEm2ZCEoSuG0qlKJx4o/IBHygsOttYv+Pp6pDhDJkFVmTNnDhUr\nVmTr1q12yzEkw7QYDAlsPLaR3//+nfDXwz1WpulGuvM4fPgwr7/+OgcOHGDu3LlUrVrVbkmGZJgW\ngwGAeI2n96LevPvku+TPld8jZV69CosXw9NPe6Q4g83ExcUxceJEqlWrRq1atdi8eTN169a1W5Yh\nBZxuMYhIHlW97E4xBvv4Zvs3xMXHucb3kJMsX275Pypa1GNFGmzk+vXrbNmyhTVr1lCxYkW75RjS\nIN0Wg4jUFZFdWC60EZFHRORTtyszeIzomGgGLxvMpKaTyCGea0SabqQ7i1y5cjFjxgxjFLIAzrwF\nPgGaAGcAVHUr8Lg7RRk8y5g/xtC4XGNq3Zs88qr7iIuz1i88+6zHijQYDE7iVPVQVQ8nOxTrBi0G\nG9h7di9fbfmK9xq+59Fy//wTiheHMmU8WqzBA5w9e5b+/ftz8eJFu6UYMogzYwyHRaQegIjcDfQG\ndqd9iSGr0HdxXwbXH0xx3+IeLdct3Uiq1oKIL76AWCfqLidPwqOPuljEnYuq8v3339O/f3/atGlj\ntxzDbeCMYegBTABKYMVxXgK87k5RBs/w+97fiYiMYH7b+R4tVxXmz7c2l7F5M7zxBly8CMOHQ8GC\nzl13//0uFHHncvDgQXr06MGxY8f4+eefqVmzpt2SDLeBM4ahgqq+lPiAowWxxj2SDJ4gJjaGvov7\nMrHpRO728qyToh07rL9Vqrggs1OnYOhQ+PVXePtt6NzZxFbwMEeOHOHRRx+lf//+DBgwgJw5c9ot\nyXCbOGMYJgPJV6CkdMyQhZiwfgIVC1ekSfkmHi97/nyrG+m2vCBcuwaTJ8N770HHjlYcUOM+2xZK\nlixJWFgY/v7+dksxuIhUDYOI1AHqAkVEpB9w42fsi1kYl6X5J/of/rvmv6z7v3W2lD9/PkyadBsZ\nBAdD375QtiysWgUPeMZ9hyF1jFHIXqTVYrgbywh4Of7e4ALQ2p2iDO5l8LLBdKnWhfIFPR8m8cAB\nK3Bahha87tkD/fpBRASMHw/NmrlcnyFt9u/fT9myZe2WYXAzqRoGVQ0FQkXkf6p60HOSDO5k7ZG1\nrDiwgvCenvOHlJgFCywXGLc0DHDuHLzzDsycCUOGWE0OE7zBo5w+fZp+/fqxfv16duzYYaKpZXOc\n6RK6LCIfikiwiKx0bCvcrszgcuI1nl4LezEuaBw+d/vYomH+/FtY1BYXZ009feABuHABwsKgf39j\nFDyIqjJr1iwqVaqEv78/W7ZsMUbhDsCZwedvgR+AFkA34BXgtBs1GdzEjC0z8L7Lm5cqv5R+Yjdw\n6hRs3w4NGzqReNUqa/pp3rzWmEK1am7XZ0jK4cOH6dy5M2fPniU4OJjq1avbLcngIZwxDIVU9UsR\n6Z2oe2mTu4UZXMu5q+cYumIov7/0u21BUX79FRo3hlxpRQs9fBgGDbKWRv/3v9C27W1OXzJkFC8v\nL5o2bUrv3r256y7jof9OwpmupGuOvydEpIWIVAP83KjJ4AZGh4zm6YpPU/0e+2p9aXYjXb4Mo0dD\n1apW11F4OLz4ojEKNlKiRAn69etnjMIdiDPf+FgRKQD0ByYB+YC+blVlcCm7Tu/imx3fsOu1XbZp\niI6GP/6Ab79NduKGG4tBg6B2bWsFc+nStmg0GAwW6RoGVf3V8fEcEAggIma9e2Zlxw6IjEzYVVW+\nWjqAz0q8SJFN9hmGTSHQ7QHInziK46VL8P77ltX4+msrxqfB4wQHBzN79mxmzpxpYi8bgLQXuOUA\nngXKATtVNVhEHgXeBYoCj3hGosFp5syBnj3hwQcTDp29fIYXzx2kevE8INttk1YsHPrmB0YkOpgj\nB3ToYNxY2MTJkyd544032LhxI1OnTjVGwZCAqGrKJ0S+BMoAG7DiLxwHHgCGAj9rahe6Q6SIJ4vL\nmvz5p+VnYulSCAgA4GrsVR6a8hDTWk4jqGyQbdKuXYNixazZpsU968TVkAKqyvTp0xkyZAivvvoq\nI0aMIE+ePHbLMrgBEUFVb9nip9WVVBuooqrxIpILOAGUU9WzGRVpcBP79sHzz1sLwBxGAeCjPz+i\navGqthoFgJUrrfFkYxQyB9999x1Tp05lyZIlPPKIafgbbiatFsMWVa2a2r4nMS2GNDh71vIv0bcv\ndO+ecPjI+SM88vkjbOqyiTJ+9kbD6dHDcms0cKCtMgwOYmNjERG8TPddtiejLYa0DMMVICLRoXLA\nPsdnVVVXOE12CmMYUiEmBho1glq14IMPkpxq91M77i94P28/8bZN4izi4+HeeyE01IQ+MBg8jTu6\nkh5M45zBblTh1VehaFEYNy7JqT8O/cGaw2v46umvbBL3L+vXWzFzjFHwPNHR0YSHh1OjRg27pRiy\nGGk50Tt4u5mLSBPgEywPrV+q6rgU0gQC44GcwBlVDbzdcjMTv+z5hY3HNro834YzQii35QDTP+pA\nbMjIJOfm7p7Lh40/JE9O+wcU3RLC05Auv/zyCz179uTFF180hsFwy6TalXTbGYt4AXuAIKyQoBuB\ndqq6O1GaAliR4J5S1aMiUlhVz6SQV5bsStoXuY9aX9aid63eCK6bChiwcDOPzQpl+qdduOx3szO8\nInmL0K16N9unH547Z7k4+vFHMG52PMPx48fp1asX27dv5/PPP+eJJ56wW5LBRtzRlXS71AQibrQ8\nRGQ20ArYnSjNS8BPqnoUICWjkJXpv6Q//ev0Z8hjQ1yX6fLlMGMyhKyh/4OZt7cvLMxyf9GypfF/\n5ynmzp1Ljx496Nq1K19//TW5c+e2W5Ihi+KUYRCRPEBJVd1zC3mXAI4k2j8K1EqW5n4gp4isxAoG\nNEFVv76FMjItiyMWs/PUTma3nu26THftgnbtrIVsmdgozJ1rzUT6+GMr6qbBM5QpU4YVK1ZQuXJl\nu6UYsjjpGgYReRr4APAG7hORqsBoVX06nUud6fvJCVQDGgJ5gLUisk5V/06ecNSoUQmfAwMDCQwM\ndCJ7e7ged50+i/sw/qnx5LorLVeit8CJE9C8OXz4IWTSe4+Lg6FD4YcfYPFi01LwNMYttiEkJISQ\nkJDbzifdMQYR2Qw8Cay8sY5BRHaqaqV0rqsNjFLVJo79IUB84gFoEXkTyK2qoxz7XwKLVHVusryy\n1BjD+LXjWbJ/CcEvBbumn//yZcsYNGsGiQxkZuLsWcsZKsD330Phwvbqye6oqu1jSIbMjzvHGK6r\n6rlk/4TxTly3CbhfRO4D/gHaAu2SpfkZmOwYqPbG6mr62Im8Pcfp05Y/n+vXnUp+Le4ajx7bQNfi\n1ZCvnIk/JFGdAAAgAElEQVRI4wTHj0ONGjByZPppbWDLFnjuOWjTBsaOBeOl2X2cP3+ewYMH4+fn\nx7vvvmu3HEM2xZmfcJiItAfuEpH7gd7An+ldpKqxItITWIw1XfUrVd0tIt0c5z9X1XARWQRsxzI2\nX6iqfS5AU+LXX62YAMOGOZV8wpoP8PV+hsce7Z5+Ymfx8rJWN2fCGuI331iLrqdMsQyDwX3MmzeP\n3r1707x5cwaaZeQGN+JMV1JeLMd5jR2HFgPvqOpVN2tLrMG+rqTWra3o9Z06pZt047GNtJrdivCe\n4eTzzucBcfZx/ToMGGBF3Zw/Hyql2bFouB2OHTtGz5492b17N9OmTaOBcU9ucBKXu8RIlHE1Vd2c\nYWUuwDbDcP06FCkCe/daK4zTIF7jqTe9Ht2qd+OVR17xjD6bOHnSah34+FiBdwoUsFtR9qZ3794U\nLFiQIUOG4O3tbbccQxbCnWMMH4tIMeBH4AdV3XnL6rIqa9ZYvhzSMQoA32z/hniNp1NA+i2LrMyG\nDVYj6j//sYY8cjgTHNZwW0yYMMEMNBs8Sro/a4eLiieAM8DnIrJDRIa7W1imYOFCayZQOlyIucDg\nZYOZ1HQSOST7vim//BJatIBJk6zwzMYoeAZjFAye5pZcYohIZeBNoK2q5nSbqpvLtacrqXJl621Y\nK/m6vKQMWjqI05dPM6PVDA8J8ywxMdC7txWzecECqFjRbkXZk9DQUPz8/KhSxWOOiw3ZnIx2JaVb\n5xORh0RklIjsBCZjzUgqkQGNWYsjR6xFZY8+mmayvWf3Mn3LdN5r+J6HhHmWY8esJRRnzljdSMYo\nuJ6oqCi6dOlChw4dOHvWxMEy2I8znQHTgXNYju4eV9VPVfWUm3XZz8KF8NRT6cYi7ru4L0PqD6GY\nTzEPCfMcq1ZBzZrWpKy5c8HX125F2QtVZc6cOTz88MN4e3sTFhZmnN4ZMgXpDj6ram1PCMl0BAen\nOzH/972/sy9yH/PbzveQKM+gaq1LeOcdK1pokyZ2K8qedOrUiS1btjB37lzq1q1rtxyDIYG0Irj9\nqKoviMiOFE5n7whuMTHWTKT9+6FQoZSTxMZQ6bNKTGo6iSbls8+b88oVK0Lo1q3W+oSyZe1WlH35\n66+/qFy5MnfffbfdUgzZFHdMV33D8bcF3BRMIOs4LsoIq1bBQw+lahQAQg+FUjhP4WxlFA4dslxb\nVKwIf/4JefParSh7Y5zeGTIrqY4xqOo/jo+vqerBxBvwmkfU2YUT01Rj42Pxy+XnIUHuZ/lya/JV\nhw7WojVjFFzHlStXiI93xr2YwZA5cGbwuXEKx9Kf3J+VCQ52av1CdkDV8uTdoYPlFbVv30zpkinL\nsnz5cipXrsyyZcvslmIwOE2qXUki0gOrZVAu2TiDL1Y4zuzJgQMQGQlVq9qtxO1cugSdO8O+fbB+\nPZQqZbei7MPZs2fp378/K1euZMqUKTRunFL9ymDInKTVYvgOaAn8gjXO0NKxVVfV9h7QZg8LF0LT\nptl+WW9EBNSuDXnyWEMqxii4BlXlu+++o1KlSuTPn5+dO3fSokULu2UZDLdEWoPPqqoHReR1kg02\ni0hBVY10rzSbCA52ypNqViY42PJ1NGqUNQPJdB25jvj4eJYsWcLPP/9MzZo17ZZjMGSItAzD90Bz\n4C9SnoVUxi2K7OTKFcvvw9fZIuz0TcTHW4F0pk6FefOgXj27FWU/vLy8+N///me3DIPhtkjVMKhq\nc8ff+zymxm5CQyEgAPyyz2yjG1y4YDWETp+GjRvhnnvsVmQwGDIrzvhKqiciPo7PHUXkYxEp7X5p\nNuCkN9Wsxu7dlmuLe+6BlSuNUXAFly9fZvjw4Zw5c8ZuKQaDy3FmhHUqcFlEAoB+wH5glltV2UU2\nnKY6fz48/jgMGgSffgpmke3ts2TJEipVqsT+/fvtlmIwuAVnAvXEqmq8iDwDTFHVL0XkVXcL8zh/\n/w2XL0M2cXkcFwcjRljDJb//DjVq2K0o63P69Gn69evH6tWr+fTTT2natKndkgwGt+CMYYgWkbeA\nDsBjIuIFeCwWg8e4MU01G0zRiYqCl16Cq1dh0yanAtAZ0uH8+fMEBATQrl07du7cSV6zNNyQjXGm\nK6ktEAO8qqonsGIxfOBWVXaQTbqRtm+3Qkg8+CAsXWqMgqvInz8/GzZs4KOPPjJGwZDtcSa053Hg\nW6CAiLQArqpq9hpjuHzZiu8cFGS3ktti9mxo2NByl/3xx3CXM+1Bg9Pce++9dkswGDyCM7OS2gDr\ngReANsAGEXnB3cI8ysqVVjU7Xz67lWSI2Fjo3x+GDoVly6xuJEPGOXz4sN0SDAZbcaZOOQyocSNq\nm4gUAZYDP7pTmEfJwt1Ip09D27aQM6e1PqFgQbsVZV0uXrzI8OHD+eGHHwgLC8MvG65nMRicwZkx\nBgFOJ9o/y83xGbIuqpZhyIIzTP76y2ro1K5t3YIxChknODiYSpUqERkZyfbt241RMNzRONNiWAQs\nFpHvsAxCW2ChW1V5kvBwa27nww/breSW+N//YOBA+PxzK7iOIWOcOXOGnj17snHjRr744gsaNWpk\ntySDwXacifk8UESeA+o7Dn2uqtknyPGN1c5ZZJrqtWtWzIRlyywPHg89ZLeirE2OHDmoWLEi06dP\nJ0+ePHbLMRgyBWnFY6iANS21PLAdGKiqRz0lzGMEB0Pv3narcIoTJ6B1a6vLaMMGyJ/fbkVZn4IF\nCzJ69Gi7ZRgMmYq0xhimA78BzwObgYkeUeRJoqOtCDVPPmm3Eqfo1cvyebRggTEKBoPBfaRlGHxU\n9QtVDVfVD8iObrZXrLBGbn187FaSLleuwJIl8NZb2T6GkFtYt24dHTp0IDY21m4pBkOmJ60xhlwi\nUs3xWYDcjn3BCuKz2e3q3E0Wmqa6dClUqwaFC9utJGtx4cIFhg4dyk8//cT48ePx8vKyW5LBkOlJ\nyzCcAD5KY/8JtyjyFDemqfbta7cSp1iwAJ55xm4VWYtffvmF119/ncaNG7Nz504Kmvm8BoNTpBWo\nJ9CDOjzPzp3WqrCKFe1Wki6xsfDrrzBypN1Ksg7Lli1jwIABzJo1iyeeyNp1GIPB07i1t1pEmohI\nuIj8LSJvppGuhojEOqbFeoYsNE11zRooVQpKZ8/wSG6hYcOGbN++3RgFgyEDuM0wONxzTwaaAA8B\n7UTkwVTSjcNaSOe5t3QWWu08f77pRrpVRIRcuXLZLcNgyJK4s8VQE4hQ1YOqeh2YDbRKIV0vYC5J\n3W64n82boU4djxaZEVQtw/Dss3YryZzExMSwceNGu2UYDNkKZ7yr5nDEeh7h2C8lIjWdyLsEcCTR\n/lHHscR5l8AyFp85DqlTql2BqjXGkMnZutUKx5nFPHZ4hNWrV1O1alUmTJhgtxSDIVvhTIvhU6AO\ncMOZ80XHsfRw5iX/CTBYVRWrGynzd/h7mBvdSFlgKMRjnD9/nh49etC2bVvefvttvv76a7slGQzZ\nCmec6NVS1aoisgVAVSNFxJmq9jGgZKL9klithsRUB2aL9dYrDDQVkeuq+kvyzEaNGpXwOTAwkMDA\nQCckZH3mz7cc5RksVqxYQadOnWjevDlhYWEUKFDAbkkGQ6YhJCSEkJCQ285HrMp6GglE1gN1gU0O\nA1EEWKKqVdO57i5gD9AQ+AfYALRT1d2ppJ8B/Kqq81I4p+npvGV8feGff6y/GSD472Amb5hMcPtg\n1+pKREQE1K9vyTSrnS3CwsI4e/YsDRo0sFuKwZDpERFU9Zb7G5xpMUwC5gNFReRdoDVW8J40UdVY\nEekJLAa8gK9UdbeIdHOcz7T14Hm757Evcl+aaXafSdG+uZQFC6BVK2MUEvOwGWwxGNxOui0GAMc0\n04aO3eWp1frdhadbDBUmVeCxUo9RMHfaK2XrlqzLsw+6b7pQ/fowbBg0aeK2IjI1qoqYwRWDIcO4\nrcUgIqWAS8CvjkMqIqVUNVsHxn2z/ptUKFTBtvJPnoSwMLgT12ddvXqVsWPHcubMGT777LP0LzAY\nDC7Fma6kYP6dYZQLy8vqHsC06d3Izz9bLQVvb7uVeJbQ0FC6du1KpUqVmDgx+3l6NxiyAs5EcKuU\neN/hYfV1tykyANb4wiuv2K3Cc0RFRTFo0CAWLVrEpEmTeMYs9TYYbMOZFkMSVHWziNRyhxiDxYUL\nsHo1zJ5ttxLPMX78eLy9vQkLCyNfvnx2yzEY7micGWPon2g3B1ANa42CwU0EB8Njj8Gd9H4cPXq0\nGWg2GDIJzrQYEoc3i8UK9/mTe+QYwOpGutN8IxmjYDBkHtI0DA7Pp/lUtX9a6QyuIyYGFi2C7Or+\nZ/v27Vy9epWaNZ1xt2UwGOwg1aVTInKXqsYB9cRU5zzGihVQuTL4+9utxLVcuXKFt956i6CgIA4f\nztYznQ2GLE9aLYYNWOMJW4GfReRH4LLjnKbkusJw+2TH2AvLly+nW7duVK9ene3bt1OsWDG7JRkM\nhjRIyzDcaCXkAs4CTyY7bwyDi4mLs9YvrF1rtxLXMWjQIH744QemTJlCixYt7JZjMBicIC3DUERE\n+gE7PCXmTmfdOihWDMqWtVuJ63jxxRcZPnw4vhl0VmgwGDxPWobBCzC/Zg+SHbuRqlWrZrcEg8Fw\ni6RlGE6o6miPKbnDuRHC86csOhE4NjYWVSVnFoiKZzAY0sY4dM4k7NwJ8fEQEGC3kltny5Yt1K5d\nm9l30lJtgyEbk1aLIchjKgxZMoTn5cuXGTlyJLNmzWLcuHF06NAh3WvMzGeDwT24MjRBqoZBVc+6\nrJQsxNnLZzlz+Qz5vD3rj2LBAvjkE48WeVssWbKE7t27U6dOHXbs2EHRokWdvtblsTUMhjscV1e4\nbtmJXnZnxMoRtK/cnmI+nptrf/AgHD0K9ep5rMjbQlUTpqA2bdrUbjkGg8HFZC/DcOSI9YZ1hri4\nmw5tP7mdubvnsvt1jwaoY8ECaNkSvLw8WmyGERG++uoru2UYDAY3kb0Mw3/+Y4XrzJ8//bT160Ou\nXAm7qkrvhb0ZHTg63ZCermbBAhgwwKNFGgwGQ6pkL8MQGwuffgqBgbd86Y+7fuTc1XN0qdbF9brS\n4PRp2LoVgjLhUP/169f55JNPaNu2LaVKlbJbjsFg8BBmuipw6dolBiwZwKSmk/DK4dn+nF9/hUaN\nkjReMgUbN26kRo0aLF261G4phmxIu3bt+Pnnn+2WkSWoVasWu3bt8miZxjAA49aMo16pejxW+jGP\nlz13buaKvXDx4kX69u1Ly5YtGThwIIsXL76jWgv33XcfefLkwdfXl2LFitGxY0cuXLiQJM2ff/7J\nk08+Sb58+ShQoABPP/00u3cnHZe6cOECffr0oXTp0vj6+lK+fHn69u3L2bNZa7Lf3r17eeGFFyhS\npAgFChQgICCA8ePHEx8fz8GDB8mRIwe+vr4Jz6tly5YsW7YszTy3b9/O9u3badWqlYfuwj2MHz+e\n4sWLkz9/fjp37sy1a9dSTRsXF8ewYcMoUaIE+fLlo1q1agn/V927d094hr6+vuTKlStJFMMBAwYw\nYsQIt99PElQ102+WTCd4/HHVlSudS+tgf+R+LTiuoB4+d/iWrnMFYWGq/v6qly55vOgUiYmJ0fvv\nv187deqkp0+fdksZTn+XNnHffffp8uXLVVX1xIkTGhAQoAMHDkw4/+eff6qPj49OnDhRL168qJGR\nkTps2DD18/PT/fv3q6r1HB999FFt3Lix7t69W1VVT506pWPGjNHg4GC3ab9+/bpL84uIiNACBQpo\n//799cSJE6qqumfPHm3fvr2eP39eDxw4oCKicXFxqqp68uRJnTBhgvr4+Oj//ve/VPN97bXX9N13\n382QJlffY0ZZtGiR+vv7665duzQqKkoDAwN18ODBqaYfOnSoNmzYUA8ftt4zYWFhevXq1RTTvvLK\nK9q5c+eE/StXrmjBggUTvoOUSO135Th+6+/cjFzk6c2dhuG5H57TMaFjbukaV9Gpk+rYsbYUnSoH\nDhxwa/5ZyTCoqg4cOFCbNWuWsF+/fn19/fXXb7quadOm2qlTJ1VV/eKLL9Tf318v3YLF37lzpwYF\nBWnBggXV399f33vvPVVVffnll3XYsGEJ6VauXKn33ntvwn7p0qV13LhxWrlyZfX29tZx48Zp69at\nk+Tdu3dv7d27t6qqnjt3Tl999VUtXry4lihRQocNG5bwYk9O+/bttUWLFqlqTm4YbvDhhx+qv79/\nqteVLVtW16xZk7AfERGhTzzxhBYqVEgLFy6s7du313PnzqV4j7ly5dK4uDhdu3at1qlTRwsUKKAB\nAQEaEhKSkH769On64IMPqq+vr5YtW1Y///zzVLVklHbt2unQoUMT9lesWKHFihVLMW1kZKT6+Pgk\nVBzS4uLFi+rr66t//PFHkuONGjXSmTNnpnqdMQxpcYuGYem+pVp2Qlm9cv2K09e4igMHVAsWVI2K\n8njRtpIVDMOyZctUVfXIkSNauXJlHT16tKqqXrp0Sb28vJK8hG4wY8YMLV68uKqqtm3bVl955RWn\ny7xw4YIWK1ZMP/74Y42JidHo6GjdsGGDqlq1x+HDhyekTckwVK1aVY8ePapXr17VQ4cOaZ48eTQ6\nOlpVVWNjY7V48eK6fv16VVV95plntHv37nr58mU9deqU1qxZM9UXZ7FixdKs+admGPbt26ciouHh\n4Tddc/HiRRURPXPmTMKxiIgIXbZsmV67dk1Pnz6tDRo00D59+qR6j0ePHtVChQrpwoULVVV16dKl\nWqhQoYQ8f//994SXcGhoqObJk0c3b96c4j2sWrVKCxQokOqW2IAlJiAgQOfMmZOwf+bMGRURjYyM\nvCltaGioFihQQMeNG6fFihXTChUq6JQpU1LMd+bMmVquXLmbjvfu3Vv79euX4jWqrjcMd+wYw/W4\n67yx6A0+avwRue7y/Mjvhx9Cly5QoIDHiwbg+PHj9hTsBCKu2TKCqvLMM8+QL18+SpUqRbly5Rg2\nbBgAkZGRxMfHU7x48ZuuK1asGGfOnAHg7NmzKaZJjd9++4177rmHvn37cvfdd+Pj40ONGjWSaEoN\nEaF3796UKFECb29vSpUqRbVq1Zg/fz4AK1asIE+ePNSsWZOTJ0+ycOFCxo8fT+7cuSlSpAh9+vRJ\n1cfVrd7HDe655x7Ael7JOXfuHEASN+zlypWjYcOG5MyZk8KFC9O3b19CQ0NTvcdvvvmGZs2a0aRJ\nEwCCgoJ49NFH+f333wFo1qwZZcqUAaBBgwY0btyYVatWpai1fv36REVFpbrVrVs3xesuXrxI/kTT\n4m+MCURHR9+U9ujRo5w/f56///6bgwcPMnfuXEaNGpXiWMzMmTPp1KnTTcd9fX0Tnp0nuGMNw6cb\nP6WEbwlaVfT8ANjJk/Ddd9Cnj8eL5tq1a4wdO5bKlStz6NAhzwtwAqsle/tbRhARfv75Zy5cuEBI\nSAgrVqxg06ZNAPj5+ZEjR44Ujerx48cpUqQIAIULF+aff/5xuswjR45Q9jaCcJQsWTLJ/ksvvcT3\n338PwHfffUf79u0BOHToENevX6d48eL4+fnh5+dH9+7dOX36dIr5FipU6Jbu4wbHjh0DoGDBm9cD\nFXDUhBK/QE+ePMmLL77IvffeS/78+enYseNNg/SJ7/HQoUP8+OOPCffg5+fHmjVrOHHiBAALFy6k\ndu3aFCpUCD8/P4KDg10+6O/j45NkUsL58+cBUow7kjt3bgBGjBiBt7c3lStX5sUXXyQ4ODhJusOH\nDxMaGpqiYbhw4QJ+fn6uvIU0uSMNw+lLpxmzagwTmkywxanbhAnw4otWUB5Psm7dOqpXr86aNWv4\n66+/KF26tGcFZDEaNGhAr169ePPNNwHImzcvderUYc6cOTelnTNnDg0bNgSsGuzixYu5fPnyTelS\nolSpUuzfvz/Fc3nz5k2Sz42XX2KS/w+3bt2akJAQjh07xoIFC3jppZcA6+Xq7e3N2bNnE2rE58+f\nZ8eOlGNxBQUF8VMG/MDPnz8ff39/KlasmOL9lCtXjj179iQce+utt/Dy8mLnzp2cP3+er7/+mvj4\n+FTvsVSpUnTs2DFJzT46OppBgwYRExPD888/z6BBgzh16hRRUVE0a9Ys1VbXqlWrkswISr6tWbMm\nxesefvhhtm7dmrC/bds2/P39U3x5V6lSJcU8kn9vX3/9NfXr1+e+++67Ke3u3bsJ8KTr5Yz0P3l6\nw8VjDF1+6aJ9F/V1Lk8Xc+6cNbbgxDiUy4iOjtaePXtqsWLF9Pvvv9f4+HjPFZ4Mp79Lm0g++Hz6\n9GnNkyePrlu3TlVVV69erXnz5tWJEyfqhQsXNDIyUocOHap+fn4aERGhqtaspBo1amiTJk00PDxc\n4+Li9MyZMzp27NgUZyVFR0dr8eLF9ZNPPtGrV6/qhQsXEsYEvvjiC33ggQc0MjJSjx8/rrVq1Uoy\nxpBc7w2aNm2qQUFBWq1atSTHW7VqpW+88YZeuHBB4+LiNCIiQkNDQ1N8Fvv27dOCBQvqwIEDE2bE\n/P3339qhQ4cks5JiY2NV1ZrFNWnSJPX19dUZM2ak+ox79+6dZFZSmzZttEuXLhoXF6dHjx7VunXr\npnmPR44c0WLFiunixYs1NjZWr1y5oitXrtSjR4/qhQsX1MvLS0NDQzU+Pl6Dg4M1T548ScZpXMGi\nRYu0WLFiumvXLo2MjNTHH39chwwZkmr6Bg0aaLdu3TQmJkZ37dqlRYsW1RUrViRJU6FChRSf241Z\nScePH081/9R+V5jBZ3XKMGw6tkmLfVhMz105l2Y6d/Hee6ovveTZMi9evKgDBw7Us2fPerbgFMhq\nhkFVtUePHvrss88m7K9evVoDAwPVx8dH8+XLpy1atNCwsLAk15w/f1779OmjJUuWVB8fHy1Xrpz2\n798/xcFJVWtWUsOGDdXPz0+LFSum48aNU1XVq1evatu2bTVfvnwaEBCg48eP15IlS6apV1X166+/\nVhHRDz/88CZdPXr00HvvvVfz58+vVatW1R9++CHV57Fnzx594YUXtFChQpo/f34NCAjQCRMmaFxc\nXIJh8PHx0bx582rRokW1efPmunjx4lTzu3GvDz/8cMJ+WFiYVq9eXX18fLRq1ar60UcfpXuP69ev\n18cff1wLFiyoRYoU0RYtWuiRI0dUVXXKlCnq7++vBQoU0I4dO2q7du1cbhhUVT/++GP19/fXfPny\n6auvvqrXrl1LONe0adOEmWWqqseOHdMmTZqoj4+Pli1bVqdNm5YkrxvToC9evHhTOXPmzNHnn38+\nTS2uNgyiGe2M9SAiok7pDAyEUaNSdYmhqtSbXo/OVTvTuVpnV0p0iitXoEwZWLoUKlf2ePGZAhFJ\ntVlvuHNo3749bdq0yfKL3DxB7dq1mT59Og899FCqaVL7XTmO33J/efbylZQO3+74lmtx1/hP1f/Y\nUv6MGVCjxp1rFAyGG3z77bd2S8gyrFu3zuNl3jGDz9Ex0by57E0mNZ1EDvH8bcfGwgcfwJAh7itj\n9+7ddOzYkStXrrivEIPBkO25YwzDu6veJahsEHVK1rGl/NmzoVQpSGVa9G0RExPD6NGjeeyxx6hV\nqxZ333236wsxGAx3DG7vShKRJsAngBfwpaqOS3a+PTAIECAa6KGq212p4e+zf/PF5i/Y0SPlaXnu\nJj4e3n/fWtTmalavXk3Xrl25//772bJly01z2g0Gg+FWcathEBEvYDIQBBwDNorIL6qa2BXlfqCB\nqp53GJFpQG1X6ui3pB+D6g2iuO+tr+J0Bb/9BnffDU895dp8t23bRtu2bZkwYQLPP/+8LWsyDAZD\n9sPdLYaaQISqHgQQkdlAKyDBMKjq2kTp1wP3ulLAwr8XsufMHua+MNeV2TqNKrz3HgwenHE3DakR\nEBDAnj178PHxcW3GBoPhjsbdYwwlgCOJ9o86jqVGZyA4jfO3xLW4a/RZ3IfxT43H+y5vV2V7S4SG\nwtmz8Pzz7snfGAWDweBq3N1icHrCuog8AbwK1Evp/KhRoxI+BwYGEuhE+M6J6ydSvmB5mldo7qwM\nl/PeezBoEHjdRmC4+Ph4tmzZQvXq1V0nzGAwZDtCQkIICQm5/YwysirO2Q1rrGBRov0hwJsppKsC\nRADlU8knzVV/CSRa+Xw8+rgWGldI95zZ49y1bmDTJtUSJVRTicfhFDt37tQ6depow4YNU/Wbn5Vw\n+rs0ZHvCwsL00UcftVtGluCXX37Rtm3bpno+td8VmdTt9ibgfhG5T0TuBtoCvyROICKlgHlAB1WN\ncFXBQ5YP4dWqr1KhUAVXZXnLvP8+9OsH3hnoxbp69SrDhw8nMDCQTp06sWTJEnLkuGNmF9uGCe35\nL6NGjSJHjhz8+OOPCcdiY2PJkSMHhw8fBuCVV14hR44c/PJLkp81ffv2JUeOHMycOTPV/IcPH87A\ngQPdI95DHDx4kCeeeIK8efPy4IMPsnz58lTTNm3aNImDPm9v7yQO9sLCwggMDKRAgQKULFmSMWPG\nJJxr2bIlYWFhqTo8dDVufdOoaizQE1gM7AJ+UNXdItJNRLo5ko0A/IDPRGSLiGy43XLXH13P4ojF\nDGsw7HazyjB79kBICHTteuvXbt68mYCAAHbt2sW2bdvo3r27MQoeQkT47bffiI6OZtu2bezYsSPJ\nD3Tt2rU89dRTPPvssxw/fpwDBw4QEBBAvXr1OHDgAGC5Nm/YsCG7d+9m8eLFREdHs3btWgoXLsyG\nDbf9750qsbGxLs+zYMGCjBw58iZvpzcQESpUqMCsWbOS6JgzZw7ly5dPdabc8ePHCQkJ4ZlnnsmQ\nrri4uAxd52ratWtH9erViYyMZOzYsbRu3TohLkdyFi5cSHR0dMJWt25d2rRpk3C+Y8eOPPbYY0RF\nRREaGsqnn37Kr7/+mqSsadOmuf2egOznRC9uxXKtMa2Gztyaehg8T/Dqq6ojR2bs2v379+v8+fNd\nqgbaU/4AABvOSURBVCez4PR3aRMmtOe/jBo1Stu3b68BAQEJYSWvX7+uIqKHDh1SVSvC3IABA9Tf\n31+jHOEIf/31V23atKnWr18/1QhwM2fO1EaNGiU59t5772m5cuXU19dXH3rooSS/gRkzZmjdunW1\nb9++WqhQIR0+fLjGxMRo//79tVSpUurv76/du3fXK1esaIxRUVHavHlzLVKkiPr5+WmLFi306NGj\n6XwLt8aePXvU29s7ieO7Bg0a6NSpU9O99sCBA+rl5ZXwHFVVvb29E2KEq6q+8MIL+v777yfsr1mz\nRsuUKZNifqn9rsikXUkeZ8m+JXjl8KJDlQ62aTh6FObPh169MnZ9mTJlMlyTMtw+6nBGdvToURYt\nWkStWrUAuHz5MmvXruWFF1646Zo2bdqwdOlSAJYtW0bTpk3JkyePU+VFR0cTFBREs2bNOH78OBER\nEQmxHUQk3fUps2fPZuHChZw/fz4hAMzFixcBq2b9448/JgTreeWVV7j77rvZt28fW7ZsYcmSJXz5\n5Zep5i0ivPPOO4wePTrVWnquXLlo1apVQiS4WbNmJQSbSU37jh07borXUL58eVavXs2FCxcYOXIk\nHTp04OTJkwnnN2zYQLly5Th16hRvvfUWb775JhEREWzbto2IiAiOHTvG22+/DVgTNjp37szhw4c5\nfPgwuXPnpmfPnqneZ4sWLZIE/km8Pf300yleExYWRtmyZcmbN2/CsYCAAMLCwlIt5wazZs2iQYMG\nlCpVKuFY48aNmTlzJrGxsYSHh7N27VqCgoISzj/wwAMcPHgw4bt1KxmxJp7ecLKWef2xevpc94K6\n4egGp9K7iz59VPvaE+4h0+PMd8koXLJlhNKlS6uPj4/6+vqqiOgzzzyTUKM+cuSIioju2XPzhIaF\nCxdqzpw5VVU1KCgoTd/8yfnuu+9uiptwg1deeSXNFsN99913kw//+vXr66xZs1RVdcmSJQkxhE+c\nOKHe3t4JteobZT/xxBMplj1y5Ejt2LGjqqrWqlVLP/vssxRbDMOGDdPVq1drnTp19Ny5c+rv769X\nrlzR+vXrpxrAvkuXLjp48OC0Hos+8sgj+vPPP6uq1WIoVapUwrn4+HjNmzev7tu3L+HYn3/+mWqN\nesuWLern55dmebfKrFmztHbt2kmODR061Kl43+XKlbvp2URERGiZMmX0rrvuUhHRUaNGJTl/7do1\nFZEE9+KJSe13RQZbDNnKu+qh84eoVaIWNUrUSD+xG5kzB1auTDtNXFwckydPZsOGDcbTZDJ0pH1u\nuW+E9nzyySf5448/aNmyJZs2baJmzZpJQntWqJB0UkNmDO3ZsWPHVEN73iA+Pj5JrTU56mg9jRkz\nhv/85z907NjxpjQiQr169Th9+jRjxoyhZcuW5MqVdhx1Pz+/m+Ijz5o1i/Hjx3Pw4EHAiquceLA+\n8X2ePn2ay5cvJ5nCraoJYyGXL1+mb9++LF68mKioqIT8VNVlHgKSh/cEK6b1jfjPqbF69WpOnjxJ\n69atE45dvnyZJ598krFjx/LSSy9x/PhxWrduTdGiRenRowfwbzjUAh4IFJ9tupLCz4Rz4uIJ/q/6\n/9kthdhYSBQn/Ca2b99O3bp1mTdvHiNGjPCcMMMtcaeH9kycb1BQEOXLl2fKlCmp3keHDh34+OOP\nU4xZnJwqVaqwd+/ehP1Dhw7RtWtXpkyZQmRkJFFRUVSqVCnBMCXXU7hwYXLnzs2uXbsS7uXcuXMJ\nL+qPPvqIvXv3smHDBs6fP09oaGjiHoibSD5jKPHWvHnK66Aefvhh9u/fn6RrZ9u2bTz88MNp3vvM\nmTN5/vnn/7+9Mw+PosoW+O+EzUAWA1G2JKAgMnFkC4ssOoCoBFFwEHEgCE8nroyC+OlDcIA3woiA\niDLuGzKM+FDkiaKIAgEUUB5LDAIDIvPAYU1ICJgQkj7vj6406awNJt1NOL/vu19qOXXr3JPqOnXr\n1j3H61Xjtm3byM7OJikpiZCQEJo2bcqQIUO88kJv376d5s2b+2VS63njGF7d+Gq5JXlJMnGRzagf\nWjIBebCQk5PDuHHj6NOnD8nJyaxcubLUvLhG8DB69Gi+/fZbNmzYAMAzzzzD3LlzefHFF8nOzubY\nsWNMmDCBDRs2MHHiRMD9dUlsbCyDBg1i586duFwu0tPTmTp1Kp999lmJc/Tv358DBw4we/ZsTp06\nRXZ2tufrpXbt2rF06VKOHTvGwYMHef755yvU+ZJLLqFnz56MHDmSyy+/3HONNW7cmBtvvJFHH32U\n7OxsXC4XP/74I6tXry61nuI30SlTpvDss8+WkCmUe/jhh/nyyy+59tprK9SxT58+bNq0iby8PABO\nnjyJiBAdHY3L5eLtt98mLS2tzONDQkJITk5m9OjRHDlyBICff/6ZL774AnD3DkJDQ4mMjCQjI4PJ\nkyeXq0/xL4aKlk8//bTUY1q1akW7du2YPHkyubm5LFq0iLS0NAaVE+YgJyeHhQsXMnLkSK/tLVu2\nJC8vj/feew+Xy8XBgwd5//33vfI8p6Sk0K9fv3LbUVmcN45h04FN5Zbusd1pGl5etI3A8+qrr7Jn\nzx5SU1P54x//aJ+gngdER0czYsQIpk1zBwXu3r07y5YtY9GiRTRp0oTmzZuzdetW1q5dS4sWLQCo\nXbs2X375Ja1bt+aGG24gMjKSLl26kJGRwTXXlIwPGRYWxvLly1myZAmNGzemVatWntmrw4cPp23b\ntjRv3py+ffty5513+vQqZOjQoXz11Vee3kIh7777Lnl5ecTHx1O/fn0GDx5cai8ESg58d+vWjS5d\nunhtKyoTFRVFr169KtQNoGHDhvTu3ZvFixcDEB8fz9ixY+natSuNGjUiLS2NHj16lKkLwLRp02jZ\nsiXXXHMNkZGR3HDDDZ5eyOjRo8nJySE6Oppu3bqRmJhYJUEmFyxYwMaNG6lfvz7jx4/nww8/pEGD\nBgCsWbOG8PBwL/nFixcTFRVVInJDVFQUCxcuZPr06URFRdG+fXvatGnDhAlnPrlfsGAB9913H/7g\ngkrt6S8aNoTUVPfforhcrgveGVhqT6OQ7du3M2LEiCqd21FdWLJkCfPnz/d8+VWcyk7taY6hCijL\nMRjmGAyjKqhsx3BhP75WEQUFe9mwYW2g1TAMwzgnzDFUIvn5+cycOZOMjI7s2FH2wJlhGEYwU63m\nMQSSTZs2kZyczMUXX0xU1HpGjGgZaJUMwzDOCesxVALPPfcciYmJns/1atY0p2AYxvmL9Rgqgd69\ne5OUlMSll14aaFUMwzB+NeYYfGTZMjh5sqy97Sg6cTU31x8aGYZhVA3mGHzg2DHo3x/691dU8wkJ\nqVWufP/+4IdwJoZhGFWCOQYfUIW6dX/kxIn76du3L2PHjg20SoZx3rJs2TJeeeUVPvroo0CrEvTM\nmTOH/fv388wzz/j1vDb4XAGnT5/mhReeJTu7CzfddBOPPPJIoFUyqhBL7XmGkSNH8tRTT3lt27t3\nLyEhIV4Z3f7xj3/QsWNHwsPDadKkCf369ePrr78us97x48czbty4KtPbH2zZsoWEhATq1atHx44d\n2bp1a5myV111lVdQvlq1annleFiyZAm//e1vCQ8Pp3v37l7XUnJyMvPnz/fEg/IX5hjKYePGjXTq\n1ImUlC8JD/+Wxx57jJo1rZNVnbHUnmfwJUnQc889x5gxY5gwYQKHDx9m3759PPTQQyVyQBfy3Xff\ncfz4cTp37nxOOgVDSs+8vDwGDBjAXXfdRWZmJiNGjGDAgAGcPn26VPnCyKmFJTY21pPSc9euXSQl\nJfHaa6+RlZXFLbfcwq233uppZ506dUhMTPRKneoXziWJg78LZ5HaU1eu9E3WBx566CGdN2+eHj3q\n0krO8XHB4vP/MkBYas8zFE8SpOpOSSkiWlBQoJmZmRoWFqYffPCBz+2cPHmyJicnl9AvNjZWIyIi\nNCEhQdesWePZN3HiRB00aJAmJSVpRESEvvnmm+W2Yffu3dqrVy9t0KCBRkdH67BhwzQzM9Nn/Xxh\n2bJl2rRpU69tcXFx+vnnn1d47KpVqzQ8PFx/+eUXVVV98cUX9eabb/bsd7lcGhoa6nUNzp8/v8xk\nSoWU9bvCUntWPnPmzCEpKalKojIawYuqpfb0hXXr1pGbm8ttt93m8zFpaWklQs137tyZrVu3cuzY\nMYYOHcrgwYM94bgBPv74YwYPHkxWVhZDhw6tsA3jx4/nwIEDbN++nX379jFp0qQy9WnTpk2ZKT3L\nSgW6bds22rRp47XN15Sec+fO5fbbbyc0NBQoGePI5XKhql51tW7dutxXVVWBOQYj+BCpnHIOqCoD\nBw4kIiKCuLg4WrRo4Ql9nJGRgcvl8sqAVkijRo04evQoAOnp6aXKlMUnn3xCkyZNGDNmDLVr1yYs\nLIxOnc5kISx64yiOiPDwww/TtGlT6tSpQ1xcHB06dPAM7K5YsYK6devSuXNnDh06xGeffcasWbMI\nDQ3lkksuYfTo0WVG7KyI9PR0oqOjzypicGZmZolQ1MOGDfNkx3v00Uc5deoUO3fu9Ozv1q2b5518\nVlZWuW1o0aIF119/PbVq1SI6OpoxY8aQkpJSpj6pqameRD/Fy5w5c0o95sSJE0QWy8QVERFRIiNd\ncX755Rc+/PBDr1wMffr0ISUlhZSUFPLy8pg6dSp5eXleyZnCw8PJysoqt+7K5oJ3DKrKW2+9xQ8/\n/BBoVYxCVCunnAOFqT2PHz/OqlWrWLFiBRs3bgTwSu1ZnGBM7QmUmdqz8Kn4/vvvL3Ngs2bNmiXe\nm58+fZqQkBBCQkJo0KABR48e9RqIroioqKgSg/kzZswgPj7eCScTRVZWlsfJAsTExHiWK2rDoUOH\nuPPOO4mJiSEyMpLhw4dX+oB/eHh4iTZkZWVVmNJz0aJFNGjQgOuuu86z7corr2Tu3LmMGjWKJk2a\nkJ6eTnx8vFebs7OzSziiquaCdgz//Oc/6d27Ny+//HKgVTGCkAs9tWdcXJwn/3IhP/30k8cRde3a\nlTp16pzVZ6fFU3quWbOG6dOns3DhQjIzMzl27BiRkZFlpvSsqA1PPvkkNWrUIC0tjaysLObNm1eu\n4yr+xVDR8uCDD5Z5TGpqqte21NRUn1J6lpb2dNCgQXz//fccPXqUSZMmsXfvXq8e4/bt22nXrl25\ndVc65zIw4e9CJQ8+nzp1Sp9++mlt0KCBzpo1S/Pz88uVT09XG3yuJHz+XwaI4oPPR44c0bp16+r6\n9etVVXXt2rVar149feGFF/T48eOakZGh48eP16ioKN29e7equq+vTp06ad++fXXHjh1aUFCgR48e\n1SlTpujSpUtLnDM7O1sbN26szz//vObm5urx48d1w4YNquoeyG7durVmZGTogQMHtEuXLl6Dz8X1\nLSQxMVH79OmjHTp08No+YMAAfeSRR/T48eNaUFCgu3fv1pSUlFJtsW3bNg0LC9MvvvhC8/Pz9eef\nf9Zrr71Wx40b55GZOXOmNmzYUBcvXqwnT57UvLw8Xbp0qT7++OOl1rlp0yZt1aqVZ/3TTz/VJk2a\n6MGDB/XUqVM6efJkrVGjhqdNEydO1KSkJJ/bcMcdd2hycrIWFBTo/v37tVu3bl72qgzy8vK0WbNm\nOnv2bM3NzdXZs2dr8+bN9fTp02Ues2/fPq1Zs6bu2bOnxL6NGzdqfn6+Hj58WAcPHqzDhg3z2p+c\nnKzTp08vV6eyflec4+BzwG/6PikJqt99V3Hp0KFCx+ByubRr166amJioe/fuLVe2EHMMlcf55hhU\nVR944AG97bbbPOtr167Vnj17alhYmEZERGj//v1127ZtXsdkZWXp6NGjNTY2VsPCwrRFixY6duxY\nzcjIKPW8aWlpev3112tUVJQ2atRIp02bpqqqubm5OmTIEI2IiNC2bdvqrFmzNDY2tlx9VVXnzZun\nIqIzZswoodcDDzygMTExGhkZqe3bt9f333+/THssWbJEExISNDIyUps1a6aPP/645ubmesnMnz9f\nO3bsqPXq1dNGjRpp//79dd26dWXW2alTJ4/jKygo0LvvvlsjIiK0cePG+uyzz+pll13madOkSZN0\n+PDhPrdh27ZtmpCQoGFhYdq+fXudOXOml70qi82bN2tCQoKGhoZqQkKCbtmyxbPv73//u1511VVe\n8lOnTtXrrruu1Lp69Oih4eHhWr9+fb3//vs9Xyypqubk5GhMTIwePny4XH0q2zGcPxncEhIqlMvN\nr8ErPeaTUb/86Kbp6buoX7+lz18b5eTAm29CRoZP4kY5WAY3Y/ny5bz00ks289kHfJ35bKk9y+GN\nN+Cll2DgwMrXoWlTuOeeyq/3QsMcg2FUPpXtGKrdNN4OHeDPf3YvHzlyhOjoaJuHYBiGcRZUy6+S\nXC4Xr732GvHx8X6fGGIYhnG+U+16DJmZO+jZ817y8vJYsWIFV199daBVMgzDOK+oNj2GvLw8Pv54\nMp980oM77riDr7/+2pyCYRjGOVBtegwiQk5OJgMHbmbUqNiKDzAMwzBKpdo4hlq1ajFkyCzWrw+0\nJkZF2McAhhHcVKljEJG+wPNADeANVZ1WiswLQCLwCzBSVTdXpU5GYLFPVQ0j+KmyMQYRqQHMAfoC\n8cAfROQ3xWT6AS1V9QrgXqDCoEX79+/nnnvuITMzswq0Dn5WrVoVaBWCBrPFGcwWZzBb/HqqcvC5\nM7BbVfeq6mlgATCgmMytwFwAVd0AXCwiDUurzOVy8be//Y127doRExPDRRddVIWqBy920Z/BbHEG\ns8UZzBa/nqp8ldQU2FdkfT/QxQeZGOBQ8cp69OhBSEgIq1evJj4+vrJ1NQzDMByq0jH4+jK5+Ehk\nqcedOHEXcXH38sQTZXdy/vUvuOYaH89qGIZhlEqVxUoSkWuASara11kfB7iKDkCLyCvAKlVd4Kzv\nAH6nqoeK1WUjloZhGOdAsMVK2ghcISLNgX8DQ4A/FJP5GBgFLHAcSWZxpwDn1jDDMAzj3Kgyx6Cq\n+SIyCliG+3PVN1V1u4jc5+x/VVWXikg/EdkNnAT+o6r0MQzDMHzjvAi7bRiGYfiPoIqVJCJ9RWSH\niOwSkSfKkHnB2b9VRNr7W0d/UZEtRGSYY4NUEflaRNoEQk9/4Mt14ch1EpF8Efm9P/XzFz7+PnqK\nyGYRSRORVX5W0W/48PuIFpHPRWSLY4uRAVDTL4jIWyJySERKT97NOdw3zyXtW1UU3K+bdgPNgVrA\nFuA3xWT6AUud5S7A+kDrHUBbdAUineW+F7ItisitAD4BBgVa7wBdExcD24AYZz060HoH0BaTgL8W\n2gFIB2oGWvcqsse1QHvg+zL2n/V9M5h6DJU6Ie48p0JbqOo6Vc1yVjfgnv9RHfHlugD4E/ABcMSf\nyvkRX+wwFPhQVfcDqOpRP+voL3yxxQEgwlmOANJVNd+POvoNVV0DHCtH5Kzvm8HkGEqb7NbUB5nq\neEP0xRZFuQdYWqUaBY4KbSEiTXHfGApDqlTHgTNfrokrgPoislJENorIcL9p5198scXrwFUi8m9g\nK/CIn3QLRs76vhlM0VUrdULceY7PbRKRXsDdQPeqUyeg+GKL54H/VFUVd+jW6vh5sy92qAV0AK4H\n6gLrRGS9qu6qUs38jy+2eBLYoqo9RaQFsFxE2qpqdhXrFqyc1X0zmBzDz0DRRAqxuD1beTIxzrbq\nhi+2wBlwfh3oq6rldSXPZ3yxRQLuuTDgfp+cKCKnVfVj/6joF3yxwz7gqKrmADkishpoC1Q3x+CL\nLboBUwBU9UcR+Qm4Evf8qguNs75vBtOrJM+EOBGpjXtCXPEf9sfAXeCZWV3qhLhqQIW2EJE4YBGQ\npKq7A6Cjv6jQFqp6uapepqqX4R5neKCaOQXw7ffxP0APEakhInVxDzT+4Gc9/YEvttgB9AFw3qdf\nCezxq5bBw1nfN4Omx6A2Ic6DL7YA/gxEAS87T8qnVbVzoHSuKny0RbXHx9/HDhH5HEgFXMDrqlrt\nHIOP18RU4G0R2Yr7AfhxVc0ImNJViIi8B/wOiBaRfcBE3K8Vz/m+aRPcDMMwDC+C6VWSYRiGEQSY\nYzAMwzC8MMdgGIZheGGOwTAMw/DCHINhGIbhhTkGwzAMwwtzDEbQICIFTsjowhJXjuyJSjjfOyKy\nxznX/zqTf862jtdFpLWz/GSxfV//Wh2degrtkioii0QkrAL5tiKSWBnnNi5MbB6DETSISLaqhle2\nbDl1vA0sUdVFInIDMENV2/6K+n61ThXVKyLv4A6vPLMc+ZFAgqr+qbJ1MS4MrMdgBC0iUk9EvnSe\n5lNF5NZSZBqLyGrnifp7EenhbL9RRL5xjv1vEalX1mmcv2uAls6xjzp1fS8ijxTR5VMn8cv3IjLY\n2b5KRBJE5Bkg1NFjnrPvhPN3gYj0K6LzOyLyexEJEZHpIvKtk0DlXh/Msg5o4dTT2WnjJnEna2rl\nhIj4L2CIo8tgR/e3RGSDI1vCjobhRaCTTFixUliAfGCzUz7EHe4g3NkXDewqIpvt/B0LPOkshwBh\njmwKEOpsfwJ4qpTzvY2T1AcYjPum2wF3SIlQoB6QBrQDBgGvFTk2wvm7EuhQVKdSdBwIvOMs1wb+\nD6gD3AuMd7bXAb4DmpeiZ2E9NRy7POishwM1nOU+wAfO8gjghSLHTwWGOcsXAzuBuoH+f1sJ3hI0\nsZIMA8hRVU/aQRGpBfxVRK7FHfuniYhcqqqHixzzLfCWI7tYVbeKSE8gHvjGiSNVG/imlPMJMF1E\nJgCHcee1uAFYpO4IpYjIItwZsj4HZjg9g09Ude1ZtOtzYLbzNJ8IpKjqKRG5EbhaRG535CJw91r2\nFjs+VEQ2446rvxd4xdl+MfCuiLTEHUa58PdcPPT4jcAtIvKYs14Hd7TNnWfRBuMCwhyDEcwMw/30\n30FVC8QdOvmiogKqusZxHP2Bd0TkOdzZrJar6tAK6lfgMVVdVLhBRPrgfVMV92l0l7hz5d4MPC0i\nX6nqX3xphKrmijv/8k3AHcB7RXaPUtXlFVSRo6rtRSQUd+C4AcBHwF+Ar1T1NhFpBqwqp47fa/XL\ny2BUETbGYAQzEcBhxyn0ApoVF3C+XDqiqm8Ab+DOfbse6C7uBC2F4wNXlHGO4glM1gADRSTUGZcY\nCKwRkcZArqrOB2Y45ynOaREp62HrfdwJlQp7H+C+yT9YeIwzRlC3jONxejEPA1PE3RWKAP7t7C4a\nMfM47tdMhSxzjsM5T8XJ4I0LGnMMRjBR/BO5+UBHEUkFhgPbS5HtBWwRkU24n8ZnqzvX8UjgPSfs\n8je44/FXeE5V3Qy8g/sV1Xrcoau3AlcDG5xXOn8Gni6lrteA1MLB52J1fwFch7snU5h7+A3c+RI2\nicj3uFOTluZYPPWo6hZgt9PWZ3G/atuEe/yhUG4lEF84+Iy7Z1HLGcBPAyaXYQvDAOxzVcMwDKMY\n1mMwDMMwvDDHYBiGYXhhjsEwDMPwwhyDYRiG4YU5BsMwDMMLcwyGYRiGF+YYDMMwDC/MMRiGYRhe\n/D/PcNfCVDeJXwAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ROC cross validated [Figure 6A](http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0039242#pone-0039242-g006)\n", "#### top panel: one vs all" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Run classifier with cross-validation and plot ROC curves\n", "\n", "for dx in range(n_classes):\n", " cv = StratifiedKFold(y_bin[:,dx], n_folds=10)\n", " classifier = RandomForestClassifier()\n", "\n", " mean_tpr = 0.0\n", " mean_fpr = np.linspace(0, 1, 100)\n", " all_tpr = []\n", "\n", " for i, (train, test) in enumerate(cv):\n", " probas_ = classifier.fit(X.iloc[train], y_bin[train,dx]).predict_proba(X.iloc[test])\n", " # Compute ROC curve and area the curve\n", " fpr, tpr, thresholds = roc_curve(y_bin[test,dx], probas_[:, 1])\n", " mean_tpr += interp(mean_fpr, fpr, tpr)\n", " mean_tpr[0] = 0.0\n", " roc_auc = auc(fpr, tpr)\n", " #plt.plot(fpr, tpr, lw=1, label='ROC fold %d (area = %0.2f)' % (i, roc_auc))\n", "\n", "\n", " mean_tpr /= len(cv)\n", " mean_tpr[-1] = 1.0\n", " mean_auc = auc(mean_fpr, mean_tpr)\n", " plt.plot(mean_fpr, mean_tpr, \n", " label='Mean ROC %s (area = %0.2f)' % (le.inverse_transform(dx), mean_auc), lw=1)\n", "\n", "plt.xlim([-0.05, 1.05])\n", "plt.ylim([-0.05, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('Figure 6A - ROC - crossvalidated - one vs. all')\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nrFlpvveFCxcYPHgwFSpUwNfXl7p16zJmzBiionS+Rg8PD7y9vfHx8aF06dJ07NiRhQsXpvt5QkND\nmT17NkOHDs3aCckjzJs3jypVquDt7U337t0JDw9Ps23VqlUpWrQoPj4++Pj40LlzZ7uP9dZbb/HO\nO+/kqO1uI/yFIm7iWdz1cuWnJqm3b0LhHYdSimrVqjF//vzkdXv37uXmzZtOm4NQsWJFIiIiuH79\nOpMmTWLYsGHs378/eftLL73EjBkzmD17NpGRkfz++++sXr2axx9/PLnN5s2b6dChA+3ateP48eNc\nuXKFadOmpdmbDAsLo2XLlsTExLBlyxauX7/OqlWruHbtGidOnEhut2fPHiIiIjhy5AiDBg1i+PDh\nfPjhh2l+llmzZvHwww9TOAv1OkUkT4QC79+/n6FDhzJ37lwuXbpE0aJFGTZsWJrtlVKsWLGCiIgI\nIiIiUpzzjI7VtGlTrl+/zs6dO3PuAySdyLy8aDOzx9wWxeTy5x9n+zjO5vnnRT7/3NlWZI+c+D4d\nSdWqVeXjjz+Wpk2bJq97/fXX5ZNPPhGllJw6dUpERKKjo+X111+XgIAAKVu2rAwdOlRu3rwpIiLh\n4eHy8MMPS5kyZcTPz0+6dOkiZ8+eTT5e27Zt5d1335XWrVuLj4+PPPDAA3L58mWb9qxdu1YqVaqU\nYp2/v78sWrRIRESOHDkinp6esn379hRtzpw5I4ULF5a1a9eKiEjr1q1l+PDhdp+H0aNHS4MGDdJt\no5SS48ePp1i3ePFiKVKkiISFhdncp3379jJ37tzk1/acq9GjR0urVq3Ey8tLjh8/LgcPHpSOHTtK\nyZIlpXbt2rJw4cLk9itWrJC7775bfH19pXLlyjJmzBi7P7O9jBo1Svr165f8+vjx41KoUCGJjIy0\n2b5q1ary119/ZflYQ4YMkQ8++CBNe9L6T1nW36apbtPjLxIVS+FSeTOzZmYw/v3coUWLFly/fp1D\nhw6RkJDAjz/+SP/+/VO0GTlyJMeOHSMkJIRjx45x7ty55J5uYmIigwcP5vTp05w+fRovLy+GDx+e\nYv/58+cza9Ys/vvvP2JjY5kwYUKGdiUmJrJ8+XKuXbvGPffcA8Dq1aupXLkyTZo0SdG2UqVKtGjR\nglWrVhEVFcWWLVvo1auX3efgr7/+okePHna3T+LRRx8lPj6ebdu22dy+d+9eateuneIzZXSu5syZ\n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\ns2dPPDw8Miy9WK1atRSlF+2tEmXNhx9+SLNmzXjttddu26aUonLlytSoUYNRo0ZRq1YtKlVKv55S\nyZIlbxO133//nQ8++ICjR4+SmJhIVFQUDRrcqsRapkwZClnVHT158iTdu3fHwyrVeoECBbh06RL+\n/v6MHj2axYsXExoaiofH/7d37vFVVNce/64ECIGTACGigoHIwxAVtLYoiEhAoQYFK8/aUvR6q2JL\nL1WqtFEEL1Cr9dJqbYu1CAholYJXUcDLRYgGFHxBAAM+IFbEEh6BEEhIQlb/mMnpyeMkJ+Tkdc76\nfj7zycyePXvW2idZ2bNnn/WLQEQ4fPiwX3nE2uLxeLyKa2VUJ7/49NNPs379evbv3895553HkiVL\nGDp0KLt27Qq4rWBJMIb8VM+JohO0KxL2Hm5vUz1GrQh36UVfkpKSGD16NHPmzKl0rsynSZMmMW/e\nPCZNmuQ95+/lbt++ffn000+9x6dPn2bMmDE88MAD5OTkkJuby4gRI/zKL4Lz+axdu7acBOOpU6c4\n//zzeeGFF3jttddYv349x48fZ9++fdX2/+TJk/3KL/bp06fKay666CJKSkr4/PN/JxXevn07l/rR\nR127di233nornTt3JiIigttuu43c3FyysrICauvrr7+mqKio0hTZ2RD6gb8wD89p5dN/xlrgN2pN\nOEsvVmTmzJksXLjQ71TDhAkTWLduHePGjfP658/Hfv36cezYMa+Ye1FREUVFRcTHxxMREcGaNWu8\nfemPyZMnk5aW5l1ee+jQIe90WX5+PlFRUcTFxXHy5EnS0tKqbWv+/Pl+5Rd37NhR5TVt27Zl9OjR\nPPzww5w6dYqMjAxWrVrl9/1G3759efnll8nJyaG0tJQlS5ZQUlJCz549A2orPT2d6667jpYtW1br\nSyCEfOA/mXuQopYRHDzSAj/ToIbhl+7du3PFFVd4j31HnY899hg9e/akf//+tGvXjmHDhnlHsT//\n+c8pKCggPj6eq6++mtTU1Eoj1orLIqtbKlrx3B133EFOTo430D399NP8+Mc/ZuLEicTExJCamsrQ\noUNZsWKF95oBAwbw1ltv8dZbb9GjRw86duzI3XffzY033uj3nr73TUxMZNKkSZw6darKOq1bt2bo\n0KG0dsUmqvOpVatW3H777SxduhRw5q6feuopxo8fT1xcHC+++CI331xOnrtSW1OnTmXUqFEMHz6c\n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\n", "text": [ "" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### bottom panel: CD vs UC" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Only CD vs UC\n", "\n", "X_cduc = X[(y == 0) | (y == 2)]\n", "y_cduc = y[(y == 0) | (y == 2)]\n", "np.place(y_cduc,y_cduc == 2, 1)\n", "\n", "cv = StratifiedKFold(y_cduc, n_folds=10)\n", "clf_cduc = RandomForestClassifier()\n", "\n", "mean_tpr = 0.0\n", "mean_fpr = np.linspace(0, 1, 100)\n", "all_tpr = []\n", "\n", "for i, (train, test) in enumerate(cv):\n", " fitted = classifier.fit(X_cduc.iloc[train], y_cduc[train])\n", " probas_ = fitted.predict_proba(X_cduc.iloc[test])\n", " scored_ = fitted.predict(X_cduc.iloc[test])\n", " # Compute ROC curve and area the curve\n", " fpr, tpr, thresholds = roc_curve(y_cduc[test], probas_[:, 1])\n", " mean_tpr += interp(mean_fpr, fpr, tpr)\n", " mean_tpr[0] = 0.0\n", " #roc_auc = auc(fpr, tpr)\n", " roc_auc = roc_auc_score(scored_, y_cduc[test], average=\"micro\")\n", " #plt.plot(fpr, tpr, lw=1, label='ROC fold %d (area = %0.2f)' % (i, roc_auc))\n", "\n", "\n", "mean_tpr /= len(cv)\n", "mean_tpr[-1] = 1.0\n", "mean_auc = auc(mean_fpr, mean_tpr)\n", "plt.plot(mean_fpr, mean_tpr, \n", " label='Mean ROC (area = %0.2f)' % mean_auc, lw=1)\n", "\n", "plt.xlim([-0.05, 1.05])\n", "plt.ylim([-0.05, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('Figure 6A - ROC - crossvalidated - CD vs UC')\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nlfucSy65ROvVq6fVq1fXM888U5cvXx50fMHYt2+fVqpUSdesWZO7bMiQIXr33XfnW/7111/X008/\nPeD2WrRoodOnT899/M9//lNvuOGG3McbN27UhIQEzcjIOOy5gT733vLDcqrV+I2JsE6dOpGens7K\nlSvJysrinXfeOazme/fdd7N27VoWL17M2rVr2bRpEw899BAA2dnZXHPNNaxfv57169eTkJDA8OHD\n8zx/8uTJjB8/nm3btpGRkcFTTz1VaFzZ2dlMnTqVPXv20LZtWwBmzZrFMcccw6mnnpqnbIMGDejU\nqRNffPEF+/fvZ/78+VxyySVBvwZLly7luOOOy7PsqKOO4r///S/p6em8/vrr/P3vf2fRokW567du\n3UpaWhrr169nzJgxPPfcc0ydOpW5c+eyZcsWatasyc0335xbvk+fPqxdu5bt27fTrl07Bg4cGDCe\nm266iZo1a+Z7O/nkk/N9zurVq6lYsSLNmjXLXdamTZs8v5Z8iQiLFi2iTp06HHfccYwcOTK3KQeg\nR48eTJo0iQMHDrBp0yamT59Or169ctcnJycTHx/PqlWrAh5H0PL7NihtN0pQizvvPNWPPy72000Z\nE8xnBUp+K65GjRrpzJkzdeTIkXrPPffo9OnTtXv37pqZmZlb48/OztYjjzxSf/7559znff3119q4\nceN8t7lo0SKtWbNm7uOUlBR95JFHch+/9NJL2rNnz3yfO2fOHI2Li9MaNWpo5cqVNS4uTt99993c\n9Q8//LB26tQp3+defvnlev311+umTZtURHTVqlVBvw4jR47Uyy+/vMAy/fr102effTY3zkqVKunB\ngwdz17ds2VJnzZqV+3jz5s0aHx+vWVlZh20rLS1NRUTT09ODjrEwc+fO1Xr16uVZ9sorr2hKSkq+\n5X/55Rddt26dqqouXbpUW7VqpY899lju+p07d2rbtm21YsWKKiJ61VVXHbaN5ORk/eqrrw5bHuhz\nTyzX+K1Xj/EVitRfEiLC4MGDmThxIm+88QZDhgzJqeAArrfL/v37OeWUU3Jrnb169WLHjh0A7N+/\nnxtuuIFGjRpRvXp1zjrrLPbs2ZNnG/Xq1cu9n5CQwL59+wLGc/TRR5OWlkZ6ejp/+9vfePTRR8nO\nzgbIbXPOz+bNm0lKSqJmzZrExcUFLJefWrVqsXfv3jzLpk+fTqdOnahduzY1a9Zk2rRpeU6C16lT\n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\nS9iSAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comparison with the Frank et al. dataset\n", "The [original paper](http://www.pnas.org/content/104/34/13780.full) links to the available dataset. As outlined in the paper, the SLiME pipeline runs RDP on the fasta files and outputs a matrix of normalized abundance of each family, class, genus, etc. \n", "\n", "I am going to load directly that table, which has had the ibd classification label appended to it." ] }, { "cell_type": "code", "collapsed": false, "input": [ "frank = pd.read_csv('data/pace/pace.rdpout.xtab.norm.ibd.csv')\n", "frank_label = frank['ibd']\n", "del frank['ibd']\n", "frank_label = (frank_label == 'yes')\n", "frank_label.value_counts()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "True 129\n", "False 61\n", "dtype: int64" ] } ], "prompt_number": 40 }, { "cell_type": "code", "collapsed": false, "input": [ "def crossval_roc(X, y):\n", " cv = StratifiedKFold(y, n_folds=10)\n", " clf = RandomForestClassifier()\n", "\n", " mean_tpr = 0.0\n", " mean_fpr = np.linspace(0, 1, 100)\n", " all_tpr = []\n", "\n", " for i, (train, test) in enumerate(cv):\n", " fitted = clf.fit(X[train], y[train])\n", " probas_ = fitted.predict_proba(X[test])\n", " scored_ = fitted.predict(X[test])\n", " # Compute ROC curve and area the curve\n", " fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])\n", " mean_tpr += interp(mean_fpr, fpr, tpr)\n", " mean_tpr[0] = 0.0\n", " #roc_auc = auc(fpr, tpr)\n", " roc_auc = roc_auc_score(scored_, y[test], average=\"micro\")\n", " #plt.plot(fpr, tpr, lw=1, label='ROC fold %d (area = %0.2f)' % (i, roc_auc))\n", "\n", "\n", " mean_tpr /= len(cv)\n", " mean_tpr[-1] = 1.0\n", " mean_auc = auc(mean_fpr, mean_tpr)\n", " return plt.plot(mean_fpr, mean_tpr, \n", " label='Mean ROC (area = %0.2f)' % mean_auc, lw=1)\n", "\n", "fig = crossval_roc(frank.values,frank_label.values)\n", "plt.xlim([-0.05, 1.05])\n", "plt.ylim([-0.05, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('Frank et al. cross-validated ROC')\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nFB07dmT33Xfn6KOPZvz48QnPffvtt/Od73yHVq1apePS6sX69es566yzaNu2LT169ODJJ5+stvxn\nn33GaadApDtrAAASeklEQVSdRrt27ejcuTPXXXdd+b62bduSl5dXvjRv3pyf/OQnAPTr148OHTrw\nr3/9KzWBu3uDX0KYtdOxo/u6dbV+ujQydfldqQ89evTwAw880P/4xz+Wb5szZ44fcMABnpOT4198\n8UW9xjN58mTfZ599ytdfeuklb9asmc+bN69829ixY33//ff36dOne0lJic+fP98HDhzoZ5xxRnmZ\nt956y9u2bet33nmnr4v+4N577z2/4IIL4p73m2++8fz8fF++fHmt4t6+fXutnpdqF154oV944YX+\n9ddf+5tvvunt27f3+fPnxy27bds279mzp//+97/3oqIi37Ztm8+ZMydu2S1btnjbtm196tSp5due\neOIJP+200+KWT/R7H23fOafG29jQlrr8Mbdq5b51a62fLo1MY0j8t9xyix911FHl26655hq/9dZb\n3czKE/8333zj11xzjXfr1s333HNPHzNmjG+NfpE3bNjgp556qnfu3Nk7duzop512mi9btqz8eMcd\nd5z/6le/8qFDh3peXp4PHz7c165dGzeeqonf3X2PPfbwZ5991t3dP/74Y2/WrJm/8847lcosXbrU\nW7Vq5ZMnT3Z396FDh/rYsWOTfh2mTJnivXv3rrTtr3/9q/ft29fz8vK8Z8+e/sADD1SKs2vXrn7H\nHXd4ly5d/LLLLvPS0lL/7W9/67169fLdd9/dzz//fF+/fn35c84991zv0qWLt2/f3o899tiECbm2\ntmzZ4i1btvRPPvmkfNtll13m119/fdzyDzzwgB977LFJHXv8+PHeq1evStuWLVvmubm5XlxcvFP5\nXU38Tbqpp6QEiouhEf8nKU3QoEGD2LRpEwsXLqSkpISnn36a0aNHVypz/fXXs2jRImbPns2iRYtY\nvnw5v/nNbwAoLS3le9/7HkuWLGHJkiXk5uYyduzYSs9/8sknGT9+PKtXr6a4uJi77767xrhKS0uZ\nMGECGzdupH///gBMmjSJfffdlyOPPLJS2X322YdBgwbx2muvUVRUxPTp0zn33HOTfg3mzp3LAQcc\nUGnbnnvuyb///W82bdrEI488wtVXX82sWbPK969atYoNGzawZMkSHnjgAe69914mTJjAG2+8wcqV\n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\n", "text": [ "" ] } ], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "array([False, True], dtype=bool)" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }