{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Comparing tree topologies by depth"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Summary"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compare the topologies of two trees with consideration of phylogenetic depth.\n",
"\n",
"This involves the measurement of \"phylogenetic depth\" (jargons: **deep** - close to root; **shallow** - close to tips). Two methods can be used: with, or without consideration of branch lengths.\n",
"\n",
"The functions implemented here have been further optimized and added to `tree.py`, as `calc_split_metrics` and `calc_length_metrics`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dependencies"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from os import listdir\n",
"from os.path import join"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from math import exp\n",
"from statistics import mean, median"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import scipy as sp\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from skbio.tree import TreeNode"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mpl.rcParams['figure.figsize'] = (15, 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Input trees"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['concat.rand.b50', 'astral.rand', 'concat.rand', 'concat.cons.b50', 'astral.cons', 'astral.cons.e5p50', 'astral', 'astral.rand.e5p50', 'concat.cons', 'astral.e5p50'])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"trees = {}\n",
"trees_dir = 'trees'\n",
"for fname in listdir(trees_dir):\n",
" if fname.endswith('.nwk'):\n",
" trees[fname.rsplit('.', 1)[0]] = TreeNode.read(join(trees_dir, fname))\n",
"trees.keys()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Metrics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compute the following metrics for internal nodes:\n",
" - `n`: number of descendants\n",
" - `taxa`: list of names of the descendants\n",
" - `postlevels`: maximum number of splits from the tips\n",
" - `prelevels`: number of splits from the root\n",
" - `split_depth`: total number of splits from the tips (see [Puigbò et al., 2009](https://jbiol.biomedcentral.com/articles/10.1186/jbiol159))\n",
" - `depths`: list of depths (sum of branch lengths from a tip to the node)\n",
" - `height`: sum of branch lengths from the root to the node"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"for name in trees:\n",
" for node in trees[name].postorder(include_self=True):\n",
" if node.length is None:\n",
" node.length = 0.0\n",
" if node.is_tip():\n",
" node.n = 1\n",
" node.taxa = [node.name]\n",
" node.postlevels = 1\n",
" node.split_depth = 0\n",
" node.depths = [0.0]\n",
" else:\n",
" node.n = sum(x.n for x in node.children)\n",
" node.taxa = sorted(set().union(*[x.taxa for x in node.children]))\n",
" node.postlevels = max(x.postlevels for x in node.children) + 1\n",
" node.split_depth = sum(x.split_depth for x in node.children) + 1\n",
" node.depths = [y + x.length for x in node.children for y in x.depths]\n",
" for node in trees[name].preorder(include_self=True):\n",
" if node.is_root():\n",
" node.prelevels = 1\n",
" node.height = 0.0\n",
" else:\n",
" node.prelevels = node.parent.prelevels + 1\n",
" node.height = node.parent.height + node.length"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Extra metrics for the depths (mean, median, max, min, etc.)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for name in trees:\n",
" for node in trees[name].non_tips(include_self=True):\n",
" node.max_depth = max(node.depths)\n",
" node.min_depth = min(node.depths)\n",
" node.mean_depth = mean(node.depths)\n",
" node.median_depth = median(node.depths)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need these metrics:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"attrs = ['n', 'prelevels', 'postlevels', 'split_depth', 'height', 'mean_depth', 'median_depth']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Count the overlapping nodes (those with the same set of descendants) between two trees."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def count_overlapping_nodes(tree1, tree2):\n",
" taxas = [x.taxa for x in tree2.non_tips(include_self=True)]\n",
" data = []\n",
" for node in tree1.preorder(include_self=True):\n",
" if node.is_tip():\n",
" continue\n",
" is_match = False\n",
" for taxa in taxas:\n",
" if node.taxa == taxa:\n",
" is_match = True\n",
" break\n",
" row = [node.name, is_match]\n",
" for attr in attrs:\n",
" row.append(getattr(node, attr))\n",
" data.append(row)\n",
" return pd.DataFrame(data, columns=['id', 'is_match'] + attrs)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" id | \n",
" is_match | \n",
" n | \n",
" prelevels | \n",
" postlevels | \n",
" split_depth | \n",
" height | \n",
" mean_depth | \n",
" median_depth | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" N1 | \n",
" True | \n",
" 10575 | \n",
" 1 | \n",
" 67 | \n",
" 10574 | \n",
" 0.000000 | \n",
" 0.973419 | \n",
" 0.971197 | \n",
"
\n",
" \n",
" 1 | \n",
" N2 | \n",
" True | \n",
" 669 | \n",
" 2 | \n",
" 35 | \n",
" 668 | \n",
" 0.061071 | \n",
" 0.923035 | \n",
" 0.900001 | \n",
"
\n",
" \n",
" 2 | \n",
" N4 | \n",
" True | \n",
" 4 | \n",
" 3 | \n",
" 3 | \n",
" 3 | \n",
" 0.185774 | \n",
" 0.582115 | \n",
" 0.581432 | \n",
"
\n",
" \n",
" 3 | \n",
" N8 | \n",
" True | \n",
" 2 | \n",
" 4 | \n",
" 2 | \n",
" 1 | \n",
" 0.437867 | \n",
" 0.330706 | \n",
" 0.330706 | \n",
"
\n",
" \n",
" 4 | \n",
" N9 | \n",
" True | \n",
" 2 | \n",
" 4 | \n",
" 2 | \n",
" 1 | \n",
" 0.304846 | \n",
" 0.462360 | \n",
" 0.462360 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id is_match n prelevels postlevels split_depth height \\\n",
"0 N1 True 10575 1 67 10574 0.000000 \n",
"1 N2 True 669 2 35 668 0.061071 \n",
"2 N4 True 4 3 3 3 0.185774 \n",
"3 N8 True 2 4 2 1 0.437867 \n",
"4 N9 True 2 4 2 1 0.304846 \n",
"\n",
" mean_depth median_depth \n",
"0 0.973419 0.971197 \n",
"1 0.923035 0.900001 \n",
"2 0.582115 0.581432 \n",
"3 0.330706 0.330706 \n",
"4 0.462360 0.462360 "
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = count_overlapping_nodes(trees['astral.cons'], trees['concat.cons'])\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Plot the correlation"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 10574.000000\n",
"mean 28.860318\n",
"std 252.249727\n",
"min 1.000000\n",
"25% 1.000000\n",
"50% 3.000000\n",
"75% 8.000000\n",
"max 10574.000000\n",
"Name: split_depth, dtype: float64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"attr = 'split_depth'\n",
"df[attr].describe()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n5wAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.hist(attr, log=True);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plan A: Cut to even numbers of nodes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: May not work when there are many identical small integers."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"528"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bin_num = 20\n",
"bin_size = int(df.shape[0] / bin_num)\n",
"bin_size"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"bound, matches = 0, []\n",
"data = []\n",
"for i, (is_match, val) in enumerate(df[['is_match', attr]].sort_values(attr).itertuples(False)):\n",
" matches.append(is_match)\n",
" if (i + 1) % bin_size == 0:\n",
" data.append([bound, matches.count(True) / len(matches)])\n",
" bound, matches = val, []"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bounds = [x[0] for x in data]\n",
"values = [x[1] for x in data]\n",
"plt.plot(values)\n",
"plt.xticks(range(len(data)), bounds)\n",
"plt.xlabel(attr)\n",
"plt.ylabel('consistency');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Plan B: Cut to designated value ranges"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The binning scheme has to be manually determined."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"attr = 'split_depth'"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"%%script false\n",
"bounds = sorted(set(int(exp(x / 10)) for x in list(range(80))))\n",
"print('Lower bounds: %s.' % bounds)\n",
"print('Number of bins: %d.' % (len(bounds) - 1))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"%%script false\n",
"bounds = [0] + sorted(set(int(exp(x / 5)) for x in list(range(40)))) + [df[attr].max()]\n",
"print('Lower bounds: %s.' % bounds)\n",
"print('Number of bins: %d.' % (len(bounds) - 1))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"%%script false\n",
"bounds = [0] + sorted(set(int(exp(x / 4)) for x in list(range(30))))\n",
"print('Lower bounds: %s.' % bounds)\n",
"print('Number of bins: %d.' % (len(bounds) - 1))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lower bounds: [0, 1, 2, 3, 4, 6, 7, 9, 11, 13, 16, 20, 24, 29, 36, 44, 54, 66, 81, 99, 121, 148, 181, 221, 270, 330, 403, 492, 601, 735, 897, 1096, 1339, 2440, 10574].\n",
"Number of bins: 34.\n"
]
}
],
"source": [
"# the chosen scheme\n",
"bounds = [0] + sorted(set(int(exp(x / 5)) for x in list(range(40))))[:-3] + [2440] + [df[attr].max()]\n",
"print('Lower bounds: %s.' % bounds)\n",
"print('Number of bins: %d.' % (len(bounds) - 1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Group nodes by bins"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" size | \n",
" matches | \n",
" consistency | \n",
"
\n",
" \n",
" split_depth | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" (0, 1] | \n",
" 3119 | \n",
" 2442 | \n",
" 78.294325 | \n",
"
\n",
" \n",
" (1, 2] | \n",
" 1643 | \n",
" 1192 | \n",
" 72.550213 | \n",
"
\n",
" \n",
" (2, 3] | \n",
" 1031 | \n",
" 697 | \n",
" 67.604268 | \n",
"
\n",
" \n",
" (3, 4] | \n",
" 704 | \n",
" 470 | \n",
" 66.761364 | \n",
"
\n",
" \n",
" (4, 6] | \n",
" 918 | \n",
" 609 | \n",
" 66.339869 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" size matches consistency\n",
"split_depth \n",
"(0, 1] 3119 2442 78.294325\n",
"(1, 2] 1643 1192 72.550213\n",
"(2, 3] 1031 697 67.604268\n",
"(3, 4] 704 470 66.761364\n",
"(4, 6] 918 609 66.339869"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gb = df['is_match'].groupby(pd.cut(df[attr], bins=bounds))\n",
"dfx = pd.concat([gb.size(), gb.sum().fillna(0).astype(int)], axis=1)\n",
"dfx.columns = ['size', 'matches']\n",
"dfx['consistency'] = (dfx['matches'] / dfx['size'] * 100).fillna(0)\n",
"dfx.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check if there is any bin with n < 5. They were manually merged to the next bin."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"for row in dfx.itertuples():\n",
" if row.size < 5:\n",
" print(row.Index)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot consistency (%) versus the attribute."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3MAAAEQCAYAAAAati2nAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XecVNX5x/HPQ1FEFLGBvaCAoLFXUDaxxQqxa8SuGDsm\nUYgFiNFYYiFWsGJsscSenwV1LSgqKlVARQRFWSNNEUHK+f3xzMiyzOzO7tw7d2b2+3695rVTz332\n7p2788w55zkWQkBERERERERKS5OkAxAREREREZH6UzInIiIiIiJSgpTMiYiIiIiIlCAlcyIiIiIi\nIiVIyZyIiIiIiEgJUjInIiIiIiJSgmJP5sysj5mNM7MxZvagma1kZm3M7CUzm2RmL5pZ67jjEBER\nERERKSexJnNmtj5wLrBDCOFXQDPgWKAvMCyE0BF4FegXZxwiIiIiIiLlphDDLJsCq5pZM2AVYDrQ\nAxiaenwo0LMAcYiIiIiIiJSNWJO5EMLXwPXANDyJmxtCGAa0DSFUpZ4zA1g3zjhERERERETKTdzD\nLNfAe+E2AdbHe+h+D4QaT615W0RERERERGrRLOb29wE+DyHMAjCzJ4E9gCozaxtCqDKzdsC3mV5s\nZkryRERERESkUQshWKb7454zNw3YzcxamJkBewMfA88AJ6WecyLwdLYGQgixXfr376/2y7T9Uo5d\n7at9tR9f+6Ucu9pX+2q/dNsv5djVfvKX2sTaMxdCeM/MHgc+Ahalfg4BVgMeNbNTgKnAUXHGISIi\nIiIiUm7iHmZJCGEgMLDG3bPwIZgiIiIiIiLSAE0HDBiQdAxZDRw4cMBxxw1grbXi28amm24aX+Nq\nP9H2Szl2ta/21X587Zdy7Gpf7av90m2/lGNX+8kaOHAgAwYMqNk5BoDVNQ4zSWYW1lorcMklcN55\n0LRp0hGJiIiIiIgUjpkREiqAkrcRI+A//4Hu3eHTT5OORkREREREpDgUfTK3xRbw+utwxBGw++4w\naBAsXZp0VCIiIiIiIskq+mGW1eP79FM4+WQfbnnPPdC+fYLBiYiIiIiIxKykh1lWt+WW3kvXowfs\nuivccot66UREREREpHEqqZ656iZNgpNOghYtvJdus80KG5uIiIiIiEjcyqZnrrqOHeGtt+Cgg2Dn\nneH229VLJyIiIiIijUfJ9sxVN2GC99K1agV33w0lvIyEiIiIiIjIL8qyZ666rbaC4cNhv/28l27w\nYCjiHFVERERERCRvZdEzV9348d5L16YN3HUXbLxxPLGJiIiIiIjErex75qrr0gXeeQcqKmDHHT2h\nK+J8VUREREREpEHKrmeuurFjvZdunXU8qdtww+hiExERERERiVuj6pmrbpttYMQI6NYNdtgB7r1X\nvXQiIiIiIlIeyrpnrroxY+DEE2H99WHIENhgg0iaFRERERERiU2j7Zmr7le/gvfeg113he23h6FD\n1UsnIiIiIiKlq9H0zFU3apTPpVt7bbjpJth668g3ISIiIiIikjf1zNWw3XYwciT07Am/+Q2ccw7M\nnJl0VCIiIiIiIrlrlMkcQLNmnsRNmABmvvD4zTfDokVJRyYiIiIiIlK3WJM5M+tgZh+Z2Yepn3PN\n7Dwza2NmL5nZJDN70cxaxxlHbdZay5O4V1+FZ57xXruXX04qGhERERERkdwUbM6cmTUBvgJ2Bc4B\nZoYQrjWzi4E2IYS+GV4Ty5y5bEKAZ5+FCy+Ezp3h+uthyy0LtnkREREREZHlFMucuX2AySGEL4Ee\nwNDU/UOBngWMIyszOPRQGD/e16bbfXe46CL4/vukIxMREREREVleIZO5o4GHUtfbhhCqAEIIM4B1\nCxhHnVZe2ZO4ceO8MEqnTnD33bBkSdKRiYiIiIiIuIIMszSz5sDXwFYhhO/MbFYIYc1qj88MIayV\n4XUFHWaZzciRcP75sGABDBrkvXYiIiIiIiJxq22YZbMCxXAA8EEI4bvU7SozaxtCqDKzdsC32V44\nYMCAX65XVFRQUVERZ5wZ7bQTvPUWPPIIHHcc7LEHXHstbLxxwUMREREREZEyVllZSWVlZU7PLVTP\n3MPACyGEoanb1wCzQgjXFFMBlFz8+CNcd51XwDz3XB+O2bJl0lGJiIiIiEg5qq1nLvZkzsxaAlOB\nzUMIP6TuWxN4FNgo9dhRIYQ5GV5bdMlc2rRpnsi9/TZccw0cc4wXUBEREREREYlKoslcPoo5mUt7\n802fT9eyJdx0kw/JFBERERERiUKxLE1QlvbcE95/H04+GQ45BE45BWbMSDoqEREREREpd0rmItC0\nKZx6KkyaBGuvDVtv7UMvJ0yAuXN9MXIREREREZEoaZhlDD79FC69FD76CL7+GpYuhfXWW/6y/vor\n3rfWWpp3JyIiIiIiy2jOXMJ++AG++WbFy9dfL397/nxo127FJK9m8rfOOt4bWGoWLfKeytmz4eef\noXPn0kteQ/BhtR9+CCeeCKusknREIiIiIlLOlMyViJ9+8vl2NZO8msnfnDme0K2xBqy2GrRqtfzP\n+tzXsiU0yXGw7ZIlnozNmbPsMnv28rdre2zBAo95jTW8rebN4YwzPClaZ514922+5s+Hhx+G227z\n36tjR/jsM7jjDth776SjExEREZFypWSuzPz8M1RVwfffe6/fDz/AvHmZf9Z1308/waqrrpj0rbqq\nr6lXPTH78UdYfXVPxtq0WZaYVb9kuj9936qrLuuJCwFGjIAhQ+Cpp2D//aF3b6ioKK7eukmT4Pbb\n4YEHfLH4P/zBY23SBJ57Ds4+G7p3h+uvL/6EVERERERKj5I5yWrJEk/SaiZ6P/7oyVf15Gy11XLv\nxauPOXM8WRo8GBYuhNNP9966ddeNflu5WLQInnnGe+HGj/fiNmecAZtssuJz582Dyy+HBx/0ojcn\nnlhcyaiIiIiIlDYlc1ISQoB33/WkLt1bd8YZ3lsXRxJZ0/TpcOedfmnf3nvhDjsMVl657td+8IHH\n2rq1D73s0CH+eEVERESk/GmdOSkJZrDbbnDvvTBliq/hd8EFPj/t2mvh22+j32YI8MorcMQRsM02\n8L//wQsvwBtvwLHH5pbIAey4oyeihxziwzH/+lfvZRQRERERiYt65qSopXvrhgyBJ5+E/fbzHrBf\n/zq/3rrZs2HoUO9FW2kl74U7/ngfSpqvadPgnHO8QMrgwZ6UioiIiIg0hIZZSlmYM8fnpg0e7IVb\nTj8dTjqpfnPrPvjAC5o88QQceKAncV27Rj/PLQT4z3/g/PPhgAO8Z7FNm2i3ISIiIiLlT8MspSys\nsYZXjxw92gumTJrkQzCPOgqGDfPF2TP56Se47z7YdVc4/HCfDzdpkieG3brFU7DEzLc1frz3/HXu\n7Esb6LsJEREREYmKeuakpM2du6y37scfl/XWtW27bB24oUNhl128F+6AA5JZcH3ECB8euv763jO4\n2WaFj0FERERESo965qRstW4NZ50Fo0Z5UvfJJ95bt9NOXoikaVOfc/f883DwwckkcuCFXT74wOf6\n7byzD7tctCiZWERERESkPKhnTsrO3Lnw3nteeKRFi6SjWdHnn3sv4YwZXthl112TjkhEREREipUK\noIgUmRB8Dt0f/+hz6666ClZfPemoRERERKTYaJilSJExg+OO8wIpCxdCly5e/VLfXYiIiIhIrtQz\nJ1IE3ngDeveGDh3glltgo42SjkhEREREioGGWYqUgIUL4Zpr4J//9KqcG23ka9O1aePLMlS/vtJK\nSUcrIiKyzJQp/n+rWbOkIxEpP4kmc2bWGrgL2BpYCpwCfAL8G9gE+AI4KoQwN8NrlcxJozNpEtx/\nP8yaBbNn+2Lps2cvu8yZ48lcpiQvfb22x1q2jGdtPRERaZwWLvRE7tJL4bzzko5GpPwknczdB7we\nQrjXzJoBqwJ/AWaGEK41s4uBNiGEvhleq2ROpIYQfE29moletus1by9eDFtuCb16+WWDDZL+jURE\npJQ9+ihccgnMn+9rvK6yStIRiZSXxJI5M1sd+CiE0L7G/ROB7iGEKjNrB1SGEDpleL2SOZGILVzo\na94NHQqPPeYLqp90EvTooX/AUQkB/vc/+OKLZZepU/3ntGm+eH3//rDqqsnGKSIShX32gdNOg0ce\n8fVUzz8/6YhEykuSydy2wBDgY2BbYCRwATA9hNCm2vNmhRDWzPB6JXMiMfrpJ3jqKbjvPhg5Eo48\n0hO7XXfVUMzahABVVSsmatVvt2wJm24Km2ziP9OXtm1h0CB4+2247TZP7EREStXkybD77vDll/Dx\nx3DQQX6fvhwUiU6SydyOwAhg9xDCSDO7EfgBOKd68mZmM0MIa2V4fejfv/8vtysqKqioqIgtXpHG\n7Msv4V//8sSuSRNP6hrrMMylS31R90yJWrp3bbXVVkzU0snbJpv447V58UU46yzYeWe46SZo1y7W\nX0lEJBb9+sGiRfCPf/jtnj3VOyeSr8rKSiorK3+5PXDgwMSSubbAOyGEzVO3uwF9gfZARbVhlq+F\nELbK8Hr1zIkUWAjwzjue1D3+uPfSpYdhtmiRdHTxqqryJSJeeMGLxtRM1tK3N9kkmiGS8+fDFVfA\n3XfD3/7mw5SaaPVPESkRP/8MG28Mr78OHTv6fR99pN45kaglXQDldeD0EMInZtYfaJl6aFYI4RoV\nQBEpXvPnLxuG+cEHcNRRntjtskv5DcN87jlfEuK006Bv38LOZxs7Fs44A5o2hcGDfRH5YrRoEQwb\nBttsAxtumHQ0IpK0J56Am2+Gah0IAPzud9C9O1xwQSJhiZSdpJO5bfGlCZoDnwMnA02BR4GNgKn4\n0gRzMrxWyZxIkag+DLNp02XDMNdfP+nI8jN/Pvz5z/D88/777blnMnEsWeKJXP/+3jt46aXF0xM6\naxYMGeIL2q+/vler23FHOOEE/9DWqlXSEYpIEvbfH048EY47bvn7R43y+cCTJ/v8YRHJT23JXOwD\nekIIo0MIO4cQtgshHBZCmBtCmBVC2CeE0DGEsF+mRE5EistGG8Ff/uLr4N19t3+g79LF/2H/+9+w\nYEHSEdbfqFGw006+dMPo0cklcuAJ8llneRwTJ3rv16uvJhcP+N/6rLNgiy08pmefhffeg+nTvRfz\n0Ue9h+6EE7zHbsmSZOMVkcKZMgU+/BAOO2zFx7bbzouiDB5c+LhEGpvYe+byoZ45keI2fz48+aT3\n1n34IRx9tPfY7bxzcQ/DXLoUbrgBrrnGi4/8/vdJR7SiZ5+Fc86Bigq4/npYe+3CbDcEeOUVuPFG\nr3Dau7cndNkKtHz7LTz8sC90X1UFxx/vPbbFOlRURKKRXlfuxhszPz56NPz2t+qdE4lCosMs86Fk\nTqR0TJu2bBjmaqv5cMFDDy2+pG76dB8WtGABPPCAFzQpVvPmweWXw4MPwrXXeg9YXPtzwQLfzk03\neULXp48PnapPAYNx4/wYePBBX4LhhBPg2GNh3XXjiVlEkrFokRc+eeUV6Nw5+/MOPxy6doULLyxc\nbCLlSMmciBRMCPD00zBggA8dHDAADj64OJK6J57wXqZzz/UiJ82aJR1Rbj74wAuktG4Nd9wBHTpE\n13ZVla93d8cdPg+uTx9fADifv9eSJfDaa95b98wzPny1Vy9P7otlHqCINNyTT/rohjffrP156p0T\niYaSOREpuKVLvRLmgAGw8sr+88ADk0nq5s3zqmqVld5rtOuuhY8hX4sXe9W4K6/09ZsuvhhWWqnh\n7Y0e7cOjnn4ajjkGzjsPtlphgZj8zZsH//mPJ3YffghHHOE9dl27FkeCLyL1d+CB3uveq1fdz1Xv\nnEj+lMyJSGKWLvUP8wMH+pC9AQO8aEqhPsi/957PidtzTxg0qO7FvIvd1Kk+l27yZK8w2a1b7q9d\nutSrdt54oxc3Oecc7/Fba6344q3uq688mR46FBYu9A+CvXpB+/aF2b6I5G/qVO/F//LL3IZhjxnj\nVS8/+6ywS76IlBMlcyKSuKVLfRHygQM9oRowwP/Bx5XULVkCV18N//wn3Hqr9wiVixB8yOj55/vi\nvNdcA23aZH/+vHk+l3HQIB+q2acPHHlkfj17+QjBe+nuv9+Lp2y5pffWHXVU7b+HiCTv8sth7lw/\nn+TqiCO8uuUf/xhfXCLlTMmciBSNJUvgscc8qWvTxpO6ffeNNqmbOtV7fJo184ShXBe4njvXl4tI\nz185+ujl9+O0ab423D33+AK+ffoU3/DGRYvghRe8cMqLL8J++3mP4V57FVecIuLDvTfZxN+rW2+d\n++vGjvXz/OTJ6p0TaYhE15kTEamuaVOfozVunBciOe88Hyo4bJj32OTr4Yd9aYRDDvE2yzWRA+9l\nu/VW76W78kqfxzJlCowY4Ynddtt5svT++/6cbt2KL0Fq3tz/Vo8+Cl98Ab/+tQ/93HFHrzb6889J\nRygiaf/9rydz9UnkwNfN3HNPuP32eOKS0jZtmv/vloZRz5yIJGrJEnjkEfjrX72E/cCB/oG+vknH\n3Lneo/P++/DQQ7DDDvHEW6wWLfL16K66ytekO+88OOUUWH31pCOrv6VL/UPjjTf6YuXnnOPr3a25\nZtKRiTRuBx/sQyZPOqn+r1XvnGRz++2+/M6UKUlHUrzUMyciRatpUy9QMn6898j07u0LZVdW5t7G\nW295L1SrVj4Xq7ElcuA9XH37+jecn37q1TtLMZEDaNLEPzS+8oondZMmeZGUs86CTz5JOjqRxmna\nNHjnHZ/b2hDbbOPDp2+7Ldq4pPSNGeMjM6ZOTTqS0qRkTkSKQrNmPs9twgTvUTrtNO+he+ON7K9Z\ntMgn4x9xhE/Gv/12rWW0xhqeIJeLbbf14i0ff+xVN7t182GZr70WzbBcEcnNPff4cgT5nGMvvxz+\n8Q/48cfo4pLSN3YsrLcevP560pGUJg2zFJGitGiRz5m64grYbDMfflm9DP/kyd6jt8Ya/mG/XbvE\nQpUCmj/fj4sbb/QFyPv08TmYSVXmFGkMliyBTTeF557zL1jycdRRPq/5z3+OJDQpcSH4//E//tF7\n5+65J+mIipOGWYpIyWneHE4+2YfYHXec99rtuy8MH+7J2267+f3//a8SucakZUsfjjt+vM8PfOAB\n/5B55ZXw3XdJRydSnl54ATbYIP9EDpb1zs2bl39bUvqmTfM5lIcfrp65hlIyJyJFrXlzOPVUT+qO\nOsp7466/Hl591Yt8NNFZrFFq0sQXn3/pJS+T/vnnvl7dmWd60RQRic6QIf4lShS23trnRWvunIAP\nsdxmG+jcGX74wRejl/rRMEsRKSlLlvgH+WIrsS/Jq6ryeZO33w477QQXXgi/+Y2OFZF8TJ/uH7a/\n/DK6KpTjx/t7c/JkL1wljdff/w6zZsF118GRR0KPHnD88UlHVXw0zFJEykbTpvpwLpm1beuL0H/x\nBfzud95zu912Pix34cKEg5OS9/HH8MEHSUdRePfc4+tWRrmcQJcuXuDq1luja1NK05gx/mUBQPfu\n9atkLU7JnIiIlJVVVvFqqOPG+dpFjzzi8+quuAL+97+ko2u4EGDmzKSjaLzOPNM/bPbtCwsWJB1N\nYSxZAnfdFd0Qy+ouvxxuuEFz5xq79DBLqP+yROKUzImISFkyg/339+INw4b5RPtOnTy5KzU//uhl\n4ddbzxOKoUNV3r2QRo/2eZmTJvlahzvuCCNHJh1V/F56CdZdF7bfPvq2O3f2oZa33BJ921IaFi70\nobZbbeW3O3eGOXPgq6+SjavUKJkTEZGy16UL3HmnL0Ter5+XRV+8OOmocjNlCuyxB6y8slfsvOAC\nePxx2HBDOP10X8hZ08vjdfPN8Ic/eEXHJ56ASy+Fgw7yn+U8hDfKwieZXHaZ98798EN825DiNXGi\nLz3UooXfbtLEv6xSVcv6iT2ZM7MvzGy0mX1kZu+l7mtjZi+Z2SQze9HMWscdh4iIyHbbeY/KqFFe\nDbPYhy2+8grsvjuccorP/Vt9dZ8P+OyzXkRiiy3gpJP8G+3rroMZM5KOuPzMnOkJ3Omn+20z7yUd\nNcqHiO28M3z0UbIxxuGbb3zI2zHHxLeNzp1h7701d66xqj7EMq2iQslcfRWiZ24pUBFC2D6EsEvq\nvr7AsBBCR+BVoF8B4hAREWGtteD//g922MGrXhbjB/EQfGH03/8eHn4Yzj9/xcI/668PF1/s327f\ndZf/3Gor6NkTnnkGFi1KJvZyc/fdcOihPtywuvXWg6eegosu8uG8AweW1z6/915fDma11eLdTnru\nnHrnGp+xY+FXv1r+PhVBqb/YlyYwsynATiGEmdXumwh0DyFUmVk7oDKE0CnDa7U0gYiIxObRR+Hs\ns+GmmzxxKgY//eRD28aNgyef9OItuZo3Dx57zCsQfvYZ9OoFJ5+8bE6K1M+SJdC+vQ9r3Wmn7M/7\n+mvvufv6a+9BjWJx7SQtXeq/92OP1f57R+W447yHpp++2m9UDjjAhy8feuiy+5YuhXXW8URv/fWT\ni63YJL00QQBeNrP3zey01H1tQwhVACGEGcC6WV8tIiISk6OO8gXo+/eHPn2Sn0c3bRp06+ZJxPDh\n9UvkwNfsOvlkePNN/3a7SRMfxrbHHt579/33cURdvp591nvg6kpo1l8fnnvOe1D32Qf+9rfS7qUb\nNgzatPFCL4Vw+eXeE63js3HJNMyySRPYay8NtayPQvTMrRdC+MbM1gFeAs4Dng4hrFntOTNDCGtl\neG3o37//L7crKiqoqKiINV4REWl8Zs3ynrkFC7y3bp11Ch/D66/7/KQ//ckXPI9qPcXFi72i5z33\neOLasyeceqonjVqzsXZ77+376rjjcn/Nl196L91333kv3dZbxxZebI44wpPSM88s3DZ//3svVPSX\nvxRum5KcWbP8y6o5czyBq27QIF/XcfDgREIrCpWVlVRWG286cODArD1zOSVzZnY9cE8IYXw+gZlZ\nf2AecBo+jy49zPK1EMIKg0A0zFJERAplyRLvIXjgAfjPfwrXKxGCF4C44grf9r77xretb7/1bdx9\nN/z8sxdWOeEEr9Ioyxs/3hOaqVNhpZXq99oQfB/36wd//KMn6M2axRNn1GbM8GG5U6d6wZ1CmTjR\ne2Q++6yw25VkvP66vz/efnvFx0aP9oXqJ04sfFzFKophlhOAIWb2rpmdmWv1STNraWatUtdXBfYD\nxgLPACelnnYi8HSOcYiIiMSiaVO48kovxvDb3/pabnFbsMB7foYM8SUG4kzkwIt4XHihz8d78EH/\nwL7NNl5m/4knPMETd8st0Lt3/RM58B7P007zyqnDhkHXrjBhQvQxxuG+++DwwwufUHXqBPvt58tA\nSPnLNMQybZtt/Iunb74pbEylql7DLM2sI3AycCwwHLgzhPBaLc/fDHgSnzfXDHgwhHC1ma0JPAps\nBEwFjgohzMnwevXMiYhIwY0f70sA7L+/J3fNm0e/jenT4bDDYOONvXJgq1bRbyMX8+d7InfXXZ5c\nvvPOisOeGps5c3z9q48/9jlz+QjBh4tddplXH+3Tx784KEZLl8KWW3oF1V12qfv5UZs4Efbc0xeS\nVu9ceevd2ytZnn125sd79vRh53EujVFKIimAYmZNgU6py3fAaOBCM3sk22tCCFNCCNulliXYJoRw\nder+WSGEfUIIHUMI+2VK5ERERJLSpQu8954v2L333lBVFW37w4f7h+Xf/c7n6CWVyAG0bOlVLysr\nvUfpoYeSi6VY3HuvV9rLN5ED36dnnunH0/PPe7LyySf5txuH117zpQh23jmZ7Xfq5F+gqHeu/I0Z\n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\nyS7unrl7gf1r3NcXGBZC6Ai8CvSLOQYREREREalDbYVQJkyA9u1h5ZULH5dkF2syF0J4C5hd4+4e\nQLoDdyjQM84YRERERESkbrUVQtEQy+KUxJy5dUMIVQAhhBnAugnEICIiIiIiNWQrhKJKlsWpGAqg\n1LE8oYiIiIiIFEK2QiiqZFmcmiWwzSozaxtCqDKzdsC3tT15wIABv1yvqKigoqIi3uhERERERBqx\n3r3htNOgTx8fegkaZllIlZWVVFZW5vRcC5nK1UTIzDYFng0hbJO6fQ0wK4RwjZldDLQJIfTN8toQ\nd3wiIiIiIrJMCNClC9xxB+y1lw+53HxzmDNnWXInhWNmhBAy7vm4lyZ4CHgb6GBm08zsZOBqYF8z\nmwTsnbotIiIiIiJFoGYhlPR8OSVyxSf2nrl8qGdORERERKTwZs3y3rjJk+HBB31pgttvTzqqximx\nnjkRERERESk91QuhqJJl8VIyJyIiIiIiK+jdG4YM8eInqmRZnDTMUkREREREVpAuhDJxog+7XGON\npCNqnDTMUkRERERE6iVdCGXDDZXIFask1pkTEREREZEScOqp0KlT0lFINhpmKSIiIiIiUqQ0zFJE\nRERERKTMKJkTEREREREpQUrmRERERERESpCSORERERERkRKkZE5ERERERKQEKZkTEREREREpQUrm\nRERERERESpCSORERERERkRKkZE5ERERERKQEKZkTEREREREpQUrmRERERERESpCSORERERERkRKk\nZE5ERERERKQEJZbMmdlvzWyimX1iZhcnFYeIiIiIiEgpSiSZM7MmwC3A/kAX4Fgz61ToOCorK9V+\nmbZfyrGrfbWv9uNrv5RjV/tqX+2XbvulHLvaL25J9cztAnwaQpgaQlgEPAL0KHQQpX7gqP1k2lb7\nal/tl277pRy72lf7ar902y/l2NV+cUsqmdsA+LLa7a9S94mIiIiIiEgOVABFRERERESkBFkIofAb\nNdsNGBBC+G3qdl8ghBCuqfG8wgcnIiIiIiJSREIIlun+pJK5psAkYG/gG+A94NgQwoSCByMiIiIi\nIlKCmiWx0RDCEjM7B3gJH+p5txI5ERERERGR3CXSMyciIiIiIiL5KcoCKGZ2t5lVmdmYGNre0Mxe\nNbPxZjbWzM6LuP2VzexdM/so1X7/KNuvtp0mZvahmT0TQ9tfmNno1O/wXsRtd0i1+2Hq59wY/gZ9\nzGycmY0xswfNbKU821vheDSzNmb2kplNMrMXzax1xO1fa2YTzGyUmT1hZqtH2X61x/5oZkvNbM2I\n438k9Tf+0MymmNmHDWw74/vVzI5I/Y2XmNkOecRes/1zU/f3N7Ovqv0Ov21g+xnPB1EdP7W0H8n+\nr7adJqltPJO6Hcn+SbW1wvkm4vZbm9ljqffTeDPbNbV/Popi/2Q436ycz/u3vucbM+tnZp+mtrdf\nA9vPGK+Z7WNmI1N/n/fN7NcNab/aY8udb8ysuZndk9p3H5lZ9wbGv62ZvZM+hsxsp4bEX8v5IJL9\nU0v7Gd+vZrZm6vk/mNk/c9g32c4Hf632HnvBzNo1pP1q21nu80dtx2fq8Y1T27iwHu1XP99sa2Zv\np36Hp82sVer+nVPPS1965tB2pvNBxvgb8PfN+Pkm2/5PveZXqd9tXOo5WT+vWIbPNrXsm2Zmdl/q\nuePNa1NkajPn841leb+aWasav/f/zOyGWtrPuj9Sj69wvJjZDqntfmJmN6Xuq/XzvGX5fJOl/b+Z\n2TQz+z7b/i9qIYSiuwDdgO2AMTG03Q7YLnW9FT53r1PE22iZ+tkUGAHsEsPv0Qd4AHgmhrY/B9oU\n4O/cBPga2CjCNtdPxb9S6va/gRPybHOF4xG4Brgodf1i4OqI298HaJK6fjXw9yjbT92/IfACMAVY\nM+r2qz3+D+DSBrad8f0KdAS2BF4Fdsgj9mzt9wcujOiYXOF8EPHxU+v5Jp/9X62N5c43Ee+fFc43\nEbd/H3By6nozYPUIj8+M55t83r/1Od8AnYGPUr/XpsBnpEbc1LP9jPEC2wLtUte7AF81JP7U/Suc\nb4Cz8GkWAOsAIxu4f14E9ktdPwB4rSHxk/18EMn+ydZ+tuMRaAnsAZwB/DPH4yfT+aZVtcfPBW5v\naPup19U8H9R6PgMew98bOb2nM7T/HtAtdf0k4K+p6y2q/V3aAVXp27W0fR/Lnw9aZ4u/vn/fGtv5\n5fNNLfu/KTAa2Dp1uw1Z3r9kPtecWMu+ORZ4KHV9Ffx9t3GO76ds+yOn9yswEuhaS/sZ90dtxwvw\nLrBz6vp/gf2p5f1ELZ9vsrS/C9AW+D7Xv3ExXYqyZy6E8BYwO6a2Z4QQRqWuzwMmEPEadyGE+amr\nK+Mni0jHsprZhsCBwF1Rtlt9ExSm13YfYHII4cs6n1k/TYFVzawZ/s/q63way3I89gCGpq4PBer8\nRrA+7YcQhoUQlqZujsBPTJG1n3Ij8OeGtptD+2lHAQ83sO2M79cQwqQQwqf4sdpgdZwP8mq72jYy\nnRnYhycAAAx2SURBVA+iPH7qOt80eP9DreebSPYP2c83ebdv3oOyZwjhXoAQwuIQQs1vXvPaP2Q4\n3+Tz/q3n+eZQ4JHU7/UF8Cn+oaRe7WeLN4QwOoQwI3V9PNDCzJo3IH7IfL7pjH8hQwjhf8AcS/Wq\n1bP9pfiHcoA1gOkNib+W800k+yfHzx+/HI8hhPkhhLeBhdnazLCNFc4HqW2lrYrvrwa1n+V8kPV8\nZmY98CRkfB7td0j93QGGAYen4l9Q7e+ySvr3qqXtTOeDudnib8jxX80vn2+y7X9gP2B0CGFcahuz\nQyqzyKL6uWYV/DjfMtO+wf8PrGpecLAl/jdeodcpx/NNj9T1Ot+vZtYBWCeEMDxb+7Xsj4zHS6rn\nbrUQwvupu+4Hetbxfsr4+Sbb8RhCeC+EUFXz+aWiKJO5QjGzTfFvDN6NuN0mZvYRMAN4udoBGJX0\nQRppklhNAF5ODSs4PaZtABxNfh+iVhBC+Bq4HpiGn+jmhBCGRbmNlHXTb/zUyX7dGLaRdgrwf1E2\naGaHAl+GEMZG2W6G7ewJzAghTI6grU2J4f1aS/vnmA+rusvyG0ab6XzQNqrjp7bzTUT7P9v5JpL9\nQ/bzTRTtbwZ8Z2b3poYADTGzVdIP5rt/cjzfRPH+zXa+2QCo/mXYdPL/cjJjvGZ2BPBhCGFRfRus\n5XwzGjjUzJqa2WbAjnhPRn31Af5hZtOAa4F+GWKoV/y1nG8i2T+Z2o/i/ZrtfJAeRgYcB1ze0PbJ\nfD6oeT5rm9pmK+AiYCC5fzmTqf1xqWMIPNn95csRM9vFzMbhx9KZ1ZK7TDKdD1pmiH+F83EDjv/l\nPt9k2f8dUo+9YD6cM+uXqxnONXNT55rxWfbN48B8vGL8F8A/Qghzcoy95vmmber+XN6vR+O9XrXK\ntD/MbFUyHy8bAF9Vu/0VNc5z1d9P2c43tbRf8hptMpc6yTwOnF/jW4K8hRCWhhC2x99Uu5pZ56ja\nNrODgKrUtxFGPAdk1xDCDvi3Y2ebWbeoN5D6dutQvLs7ynbXwL9F2gQfltDKzI6LchtZxJJYm9kl\nwKIQwkMRtrkK8Bd8KNsvd0fVfg3HEkHCHuf7NUv7twGbhxC2wz8U3dDQtmucD3Yxsy6seLw0+Pip\n43yT1/7PcL5Ji2z/kPl8E1X7zYAdgFtT25jP8h/0890/tZ5v4nj/phT0fJM6Zv+OD8erb5u1nW/u\nwT+Yvo//jYcDS+ofOX/A37sb44ndPTViqFf82c43Ue2fWs5neZ8vs50PQgiXpvbPg/jQtnqr5XxQ\nUzqh6g/cWK23sNb/M7W0fyp+bngf78n5Of1Aqkdla2Bn4C9W+xz5mueDH4G+1HE+bsDfd4XPN1n2\nfzOgK/533xP4nWWZl1fLueYUMu+bXYHF+FDEzYE/pRKehkjvj1zer8eQwzGcZX8MYPnjJSfV30+p\neGqeb9Jqtl8+CV0ogrGemS74ARv5nLlU283wsbTnF+D3uIyI5n6k2rsK/2bmc/wbl3nA/THGH9nc\nlRrtHgq8EEO7RwB3VrvdC7glgnaXOx7x7vy2qevtgAlRtp+67yT8ZLlylPEDW+MfkD/Hx5Mvwr+5\nWzfi+JumtrN+nrFnfb8Cr5HHnLm62s/2u+WxrcuAP0Z9/NRo/8Ko9n8u55uI988K55t82se/Uf68\n2u1uwLMR7p+s55t83r+5nm/wD6IXV3veC8Cu9W2/tnjxpGASsFtD4q/P+Sa1/TrnsGfYP3NqPD63\nofFnOx9EtX9qaT/r8YjPjcp5Tlu1163w+QPvSRnbkPaznA/+Vcvx+UbquZ/jQ+2+A86qZ/s1zzdb\nAiOyvP4Vavl/QObzwXPZ4s/j+M/6+Sa1/9PvjaOBe6s9dinwxyyvq/OzTfV9A9wC/L7aY3cDR+T4\nfsrp/xM13q/Ar4CJdbVfy/7IeLxk+Jscw7J5h8u9n6jlfJPL8YjmzEUurl4n8G8XPg4hDIq6YTNb\n25ZV/lkF2BeYGFX7IYS/hBA2DiFsjh/Qr4YQToiqfTNracuqIa2Kj+keF1X71UTSY5PBNGA3M2th\nZoYvTB/FGoY1j8dn8H/u4P8In46yffPqfX8GDg0h5DyfIZf2QwjjQgjtQgibhxA2w4csbB9C+DaK\n9qvZFz8B5zVnkbrfr/meJ1Zo35avrnUYDXwPZDkfTCCi46eO803e+z/b+SbC/ZPxfBNV+8GHCn1p\nPo8D/Hzwcep6FMdnxvNNBO/fXM83zwDHmFe12wzYAi+IUK/2s8WbOraewxPGEQ2Jv7bzjZmtkhrm\nhpnti/d65fL/sub+mW7LKuvtDXySur5GA+LPdD6Icv9kO5/VdTzWeZ7Ldj4wsy2qPa0nmf8n1tl+\nlvNBL+BZMhyfIYS9Un/3zYGbgKtCCLfVs/0TzGyd1O/UBE947kjd3tR8ThhmtgleGOuLWtrPdD4Y\nT5b3VwOPH6jx+SbD/k8f4y8C26TOH82A7iw7P9WU7VxTc9/cXu35v0k9tiqwG9k/i+Z0vsnh/Zrt\nc13N803G/ZHteAk+1HNuakit4UWm0ufA5d5PtZ1vcjweS7O3LulsMtMFeAgvWrEQPyBPjrDtrng3\n7Ci8CtiHwG8jbH+bVJujgDHAJTHup+5EXM0SH1Oe3jdjgb4xxN0S+B8+oTWO/dIf/2c1Bp+82zzP\n9lY4HvGqU8Pwb+xeAtaIuP1PgampY+lD4LYo26/x+OfkV80yY/vAvcAZee77jO9X/B/Al8BP+De4\n/xdx+/enjp9RwFOkvqVsQPsZzwfAmlEcP7Wdb6LY/zW29cv5JsL9k/F8E1X7qba2xYcFjQL+A7SO\ncv/UON/cBzTP5/1b3/MNPmz0s1QM+zWw/YzxApcAP6TuS78/1q5v+zUe/+V8g39jPxH/QP0SOVQ2\nzhL/HngFvY+Ad1hW4a5e8ZP5fHBAVPsnS/u/re14xHsXvsOLV0yjlp5Lsp9vHmfZ++lpYL2GtF/L\n+aDO8xn1HOVTo/3zUm1PxD+Ap59zPP5Fz4epv///t3c/IVaVYRzHvz8qCYtAbFG5kFq0CFQyyKyh\npD8QQQRRmUJEtCoIo1WrxmohQyGIuYooWvQPWxRBEjhGQSlBllYQLVwZLUpBg9K0p8V9R645d+7M\nMDAe5/uByz3nfe/7nPeeuefc89z7vnPvn835YFD/Z/r3bW3Oub4Zsv83tudwgCH/9ZZJrm2m2DeX\nAR+02D8M2vfM4HzDkOOV3nno+mnE30nvfH/O/hj0eqE3P+8gvWNx27DjabLzzZD4Y/SuKU61fr4w\n3dfq+XDzR8MlSZIkqYPO52GWkiRJkqQBTOYkSZIkqYNM5iRJkiSpg0zmJEmSJKmDTOYkSZIkqYNM\n5iRJkiSpg0zmJEmSJKmDTOYkSResJKNJnmvLLya5sy1vSnLpDOI8nmT7LPuwPMmGuYglSVI/kzlJ\n0oJQVaNVNd5WnwUWzzTELDd9LbBxjmJJknSGyZwkqVOSLE7ySZL9SQ4keSTJoSRjbX1vkusmafdm\nkgeTPANcA+xJsnuK7TyR5Ocke4Hb+sqvTLIzyb52W9vKR5O8neSr1u7J1mQLMJLk2ySbWtmyJJ+2\nx43N1b6RJC0sJnOSpK65FzhcVTdW1UpgVys/2tZ3ANsGNa6q7cCvwLqqumuyxyS5CtgMrAVGgBv6\nqrcBW6tqDfAQ8EZf3QpgHXArMNriPA98WVWrq2qiX6uAh4GVwPoky6b53CVJOsNkTpLUNQeBe5Js\nSTJSVcda+Xvt/l3glmnEyRR1a4A9VXWkqk4B7/fV3Q28lmQ/8DFweZKJIZsfVdXJqvoDGAduHhB/\nd1X9WVUngJ+A5dPoryRJZ7l4vjsgSdJMVNUvSVYD9wEvJxmnNwetfx7aXMxJG5TsBVhTVf+cVZj8\nf7uZoh8n+pZP4/uxJGkW/GZOktQpSa4G/qqqd4BXgdWtan27fxT4ekiYY8AVU9TvA25PsiTJJfSG\nRE74DJiY+0aSVX11DyRZlGQpcAfwDXB8yLYkSZoVPwmUJHXNCuCVJP8CJ4GngA+BJUm+B/4GNkzS\nrv9bsteBXUkOTzZvrqp+S7IZ2AscBb7rq94E7Gjbugj4Ani61R0APgeWAi+1OL8Dp9uwzLdavEH9\nkiRp2lLle4gkqduSHAJuqqoj89iHUeB4VW2drz5IkhYWh1lKki4EfjIpSVpw/GZOkrSgtd+RWzSx\nSi8xfKyqfpy/XkmSNJzJnCRJkiR1kMMsJUmSJKmDTOYkSZIkqYNM5iRJkiSpg0zmJEmSJKmDTOYk\nSZIkqYP+A6FMCghBqzRvAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(dfx['consistency'].tolist())\n",
"plt.xticks(range(dfx.shape[0]), [x + 1 for x in bounds])\n",
"plt.xlabel(attr)\n",
"plt.ylabel('consistency');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Overlay the other tree"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" size | \n",
" matches | \n",
" consistency | \n",
"
\n",
" \n",
" split_depth | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" (0, 1] | \n",
" 3119 | \n",
" 2545 | \n",
" 81.596666 | \n",
"
\n",
" \n",
" (1, 2] | \n",
" 1643 | \n",
" 1268 | \n",
" 77.175898 | \n",
"
\n",
" \n",
" (2, 3] | \n",
" 1031 | \n",
" 782 | \n",
" 75.848691 | \n",
"
\n",
" \n",
" (3, 4] | \n",
" 704 | \n",
" 508 | \n",
" 72.159091 | \n",
"
\n",
" \n",
" (4, 6] | \n",
" 918 | \n",
" 653 | \n",
" 71.132898 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" size matches consistency\n",
"split_depth \n",
"(0, 1] 3119 2545 81.596666\n",
"(1, 2] 1643 1268 77.175898\n",
"(2, 3] 1031 782 75.848691\n",
"(3, 4] 704 508 72.159091\n",
"(4, 6] 918 653 71.132898"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = count_overlapping_nodes(trees['astral.rand'], trees['concat.rand'])\n",
"gb2 = df2['is_match'].groupby(pd.cut(df2[attr], bins=bounds))\n",
"dfx2 = pd.concat([gb2.size(), gb2.sum().fillna(0).astype(int)], axis=1)\n",
"dfx2.columns = ['size', 'matches']\n",
"dfx2['consistency'] = (dfx2['matches'] / dfx2['size'] * 100).fillna(0)\n",
"dfx2.head()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\niIgUQv8PWLcpvls/KV4AAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.plot(dfx['consistency'].tolist())\n",
"plt.plot(dfx2['consistency'].tolist())\n",
"plt.xticks(range(dfx.shape[0]), [x + 1 for x in bounds])\n",
"plt.xlabel('%s (lower bound)' % attr)\n",
"plt.ylabel('consistency (%)')\n",
"plt.legend(['conserved', 'random'], loc='upper right');"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"fig.savefig('total.pdf')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot population sizes"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.plot(dfx['size'].tolist(), ls='--', color='r')\n",
"plt.xticks(range(dfx.shape[0]), [x + 1 for x in bounds])\n",
"plt.xlabel(attr)\n",
"plt.ylabel('size')\n",
"plt.yscale('log', basey=10);"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"fig.savefig('total_size.pdf')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Postlevels (maximum number of splits from node to tip)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"attr = 'postlevels'\n",
"df.hist(attr, log=True);"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lower bounds: [1, 2, 3, 4, 6, 7, 9, 11, 13, 16, 20, 24, 29, 36, 44, 67].\n",
"Number of bins: 15.\n"
]
}
],
"source": [
"bounds = sorted(set(int(exp(x / 5)) for x in list(range(20)))) + [df['postlevels'].max()]\n",
"print('Lower bounds: %s.' % bounds)\n",
"print('Number of bins: %d.' % (len(bounds) - 1))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"gb = df['is_match'].groupby(pd.cut(df[attr], bins=bounds))\n",
"dfx = pd.concat([gb.size(), gb.sum().fillna(0).astype(int)], axis=1)\n",
"dfx.columns = ['size', 'matches']\n",
"dfx['consistency'] = (dfx['matches'] / dfx['size'] * 100).fillna(0)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"gb2 = df2['is_match'].groupby(pd.cut(df2[attr], bins=bounds))\n",
"dfx2 = pd.concat([gb2.size(), gb2.sum().fillna(0).astype(int)], axis=1)\n",
"dfx2.columns = ['size', 'matches']\n",
"dfx2['consistency'] = (dfx2['matches'] / dfx2['size'] * 100).fillna(0)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.plot(dfx['consistency'].tolist())\n",
"plt.plot(dfx2['consistency'].tolist())\n",
"plt.xticks(range(dfx.shape[0]), [x + 1 for x in bounds])\n",
"plt.xlabel('%s (lower bound)' % attr)\n",
"plt.ylabel('consistency (%)')\n",
"plt.legend(['conserved', 'random'], loc='upper right');"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"fig.savefig('max.pdf')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nJEkV8f8BN4+ZRCb0LagAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"plt.plot(dfx['size'].tolist(), ls='--', color='r')\n",
"plt.xticks(range(dfx.shape[0]), [x + 1 for x in bounds])\n",
"plt.xlabel(attr)\n",
"plt.ylabel('size')\n",
"plt.yscale('log', basey=10);"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"fig.savefig('max_size.pdf')"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}