diff --git a/cactice/grids.py b/cactice/grids.py index 7a25f68..c8cbd70 100644 --- a/cactice/grids.py +++ b/cactice/grids.py @@ -115,6 +115,33 @@ def get_neighborhoods( for j in range(0, grid.shape[1])} +def neighborhood_distribution( + grid: np.ndarray, + neighbors: Neighbors = Neighbors.CARDINAL, + exclude_zero: bool = False) -> Dict[int, Dict[int, float]]: + """ + + :param grid: + :param neighbors: + :param exclude_zero: + :return: + """ + + neighborhoods = get_neighborhoods(grid=grid, neighbors=neighbors, exclude_zero=exclude_zero, absolute_coords=True) + unique = list(set(np.unique(np.ravel(grid)))) + if exclude_zero: unique = [c for c in unique if c != 0] + freq = {k: {kk: 0 for kk in unique} for k in unique} + for loc, neighborhood in neighborhoods.items(): + k = grid[loc[0], loc[1]] + if exclude_zero and k == 0: continue + for nloc, neighbor in neighborhood.items(): + nk = grid[nloc[0], nloc[1]] + if exclude_zero and nk == 0: continue + freq[k][nk] += 1 + + return {k: {kk: (v[kk] / sum(freq[k].values())) for kk in unique} for (k, v) in freq.items()} + + def get_band( grid: np.ndarray, i: int, diff --git a/cactice/knn.py b/cactice/knn.py index 266c9c4..42f9ac1 100644 --- a/cactice/knn.py +++ b/cactice/knn.py @@ -8,7 +8,6 @@ import cactice.grids from cactice.grids import get_neighborhood, get_neighborhoods, Neighbors from cactice.distance import hamming_distance -import cactice.stats as stats class KNN: diff --git a/cactice/mrf.py b/cactice/mrf.py index a579726..baa0e47 100644 --- a/cactice/mrf.py +++ b/cactice/mrf.py @@ -8,7 +8,6 @@ from numpy.random import choice, RandomState import cactice.grids -import cactice.stats as stats from cactice.grids import Neighbors, get_neighborhood, get_neighborhoods # bond interaction signature diff --git a/cactice/rns.py b/cactice/rns.py index 6e80842..d77f086 100644 --- a/cactice/rns.py +++ b/cactice/rns.py @@ -1,12 +1,10 @@ +import logging import random from typing import List, Dict -from pprint import pprint -import logging import numpy as np import cactice.grids -import cactice.stats as stats from cactice.grids import Neighbors, get_neighborhood diff --git a/notebooks/explore.ipynb b/notebooks/explore.ipynb index 15fcde0..bc89e2b 100644 --- a/notebooks/explore.ipynb +++ b/notebooks/explore.ipynb @@ -406,33 +406,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{(4, 7): 1,\n", - " (4, 8): 3,\n", - " (4, 9): 1,\n", - " (5, 7): 2,\n", - " (5, 9): 0,\n", - " (6, 7): 4,\n", - " (6, 8): 0,\n", - " (6, 9): 4}\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "from matplotlib.patches import Rectangle\n", "from cactice.grids import Neighbors, get_neighborhood\n", @@ -453,7 +428,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -468,21 +444,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "First 5 neighborhoods:\n", - "{(0, 0): {(0, 1): 0, (1, 0): 4, (1, 1): 2},\n", - " (0, 1): {(0, 0): 3, (0, 2): 0, (1, 0): 4, (1, 1): 2, (1, 2): 4},\n", - " (0, 2): {(0, 1): 0, (0, 3): 4, (1, 1): 2, (1, 2): 4, (1, 3): 0},\n", - " (0, 3): {(0, 2): 0, (0, 4): 4, (1, 2): 4, (1, 3): 0, (1, 4): 4},\n", - " (0, 4): {(0, 3): 4, (0, 5): 3, (1, 3): 0, (1, 4): 4, (1, 5): 2}}\n" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "from itertools import islice\n", "from cactice.grids import get_neighborhoods\n", @@ -499,7 +462,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -516,49 +480,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{(2, 5): 1,\n", - " (2, 6): 4,\n", - " (2, 7): 2,\n", - " (2, 8): 1,\n", - " (2, 9): 4,\n", - " (2, 10): 3,\n", - " (2, 11): 2,\n", - " (3, 5): 4,\n", - " (3, 11): 3,\n", - " (4, 5): 0,\n", - " (4, 11): 0,\n", - " (5, 5): 4,\n", - " (5, 11): 4,\n", - " (6, 5): 4,\n", - " (6, 11): 3,\n", - " (7, 5): 4,\n", - " (7, 11): 1,\n", - " (8, 5): 1,\n", - " (8, 6): 4,\n", - " (8, 7): 3,\n", - " (8, 8): 2,\n", - " (8, 9): 1,\n", - " (8, 10): 2,\n", - " (8, 11): 0}\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "from cactice.grids import get_band\n", "\n", @@ -578,7 +501,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -595,65 +519,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{(1, 8): 1,\n", - " (2, 6): 4,\n", - " (2, 7): 2,\n", - " (2, 8): 1,\n", - " (2, 9): 4,\n", - " (2, 10): 3,\n", - " (3, 5): 4,\n", - " (3, 6): 4,\n", - " (3, 7): 1,\n", - " (3, 8): 2,\n", - " (3, 9): 0,\n", - " (3, 10): 2,\n", - " (3, 11): 3,\n", - " (4, 5): 0,\n", - " (4, 6): 0,\n", - " (4, 10): 0,\n", - " (4, 11): 0,\n", - " (5, 4): 4,\n", - " (5, 5): 4,\n", - " (5, 6): 2,\n", - " (5, 10): 4,\n", - " (5, 11): 4,\n", - " (5, 12): 3,\n", - " (6, 5): 4,\n", - " (6, 6): 3,\n", - " (6, 10): 1,\n", - " (6, 11): 3,\n", - " (7, 5): 4,\n", - " (7, 6): 1,\n", - " (7, 7): 1,\n", - " (7, 8): 1,\n", - " (7, 9): 2,\n", - " (7, 10): 4,\n", - " (7, 11): 1,\n", - " (8, 6): 4,\n", - " (8, 7): 3,\n", - " (8, 8): 2,\n", - " (8, 9): 1,\n", - " (8, 10): 2,\n", - " (9, 8): 0}\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "from cactice.grids import get_bin\n", "\n", @@ -674,7 +541,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -691,19 +559,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAD4CAYAAABPLjVeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAgWklEQVR4nO3de5xdZX3v8c93ZnJPuAXlkqQkalCp9oUQo7QWUcDGS6FWPQb0VeGg6ekxXmpbxYMvKvjSglY4HouXiFBvgIgtRoyAIKhtAYMYIAkXY7hkAgEMlwAJJJP5nT/2mrgzndlrr/2svWfN5vvOa72y99r7efZv9uz5zTPPetZvKSIwM7PO6BnrAMzMnkucdM3MOshJ18ysg5x0zcw6yEnXzKyD+tr9Avd/7rvJyyPu70sPsy8ximmDySHwcG/6SpFtpAeyefCZpPYzeyYnx1AVUxLHHWV8P1JjAJgWSu5jkwaS2h+z99bkGKafdHLyF7Lz6Ueb/kHrnbZP+htXUNuTrplZR1V8GayTrpl1GSddM7PO8UjXzKxzqn6WrZOumXWXKOGodxvlJl1JLwGOB2ZluzYCyyPijnYGZmbWkoon3YZrVSR9DLgEEPDLbBNwsaRTG7RbIulmSTdfdOM1ZcZrZtZYRPPbGMgb6Z4C/GFE7KjfKekcYA1w1kiNImIZsAzKWadrZta0is/p5q3KHgQOHGH/AdljZmYVEwW2zssb6X4YuFbSb4AN2b4/AF4ELG1jXGZmran4SLdh0o2IKyUdDCxk9wNpKyNiZ7uDMzMrbLDaf4Tnrl6IiEHgxg7EYmZWgnE80i3DLSW8wr3bH07uY3LPxKT2c/v2SI6hf/Dp5D6eHdyR/6QcT2xPi2PbxBnJMewo4Q+lnSX0MaEn7QM6qWdCcgx79UxK7qM/0j8XTw6kFUK6/rG9kmN4S3IPjO/pBTOzccdJ18ysg5x0zcw6p+rH+J10zay7eKRrZtZJTrpmZp1T8ZFuyxdnknRyg8d2Fby5+gYXvDGzDqp4wZuUK+KdMdoDEbEsIhZExII3HHFMwkuYmRVUYtKVtEjSXZLWjVRZUdK5klZl292SHs/rs+H0gqTbRnsI2C83YjOzTiupnq6kXuA84FigH1gpaXlErN31UhF/W/f8DwCvyOs3b053P+DPgMeGxwP8V3Ohm5l1UHnTBguBdRGxHkDSJdQu6LB2lOefAPxjXqd5SfcKYHpErBr+gKTr8zo3M+u48q4cMYvfV1eE2mj3VSM9UdJBwDzgp3md5lUZO6XBYyfmdW5m1nEFRrqSlgBL6nYtyy7CUNRi4LJmqi+2fcnY9hJqnW8deDa5j2fYntR+9cC25Bgm96YV3QHo6+lN7mOfSWkFayYoPYYyllLu3Jn+2Uq9cuxTiUViAKZMSC+as1/PlOQ+JiktHfSh5BjK0fz3tP4qNyPYCMypuz872zeSxcD7m3nNlNULZmbVU97qhZXAfEnzJE2klliXD39SdvHevYEbmgnPJ0eYWXcpqYh5RAxIWgpcBfQCF0TEGklnAjdHxFACXgxcEk3+2eSka2ZdpryTHiJiBbBi2L7Th93/ZJE+nXTNrLuM99OAJb1E0tGSpg/bv6h9YZmZtWg8nwYs6YPAD4APAKslHV/38GcatNtVe+GaG64tJ1Izs2ZUPOnmTS+8Dzg8Ip6SNBe4TNLciPgCjL4+pH4ZxqXnXlztsb6ZdZfyTo5oi7yk2xMRTwFExL2SjqKWeA+iQdI1Mxsz43xO9yFJhw7dyRLwW4B9gZe3MS4zs9ZUfHohL+n+FbCpfkdEDETEXwFHti0qM7NWVTzp5tVe6G/w2H+WH46ZWaJxPr1gZmYlavvJEVNJL46SWpQEAKUd9+vrSX+rppRQ8GZHCZeXntEzOan9M7EjOYYy9Cl9zJD6PekrofjPnkoveLM50go6AUxIfD+fYiA5hlKUdBpwu/iMNDPrLhWfXnDSNbPu4qRrZtZJTrpmZp0z3ke6khYCERErJR0CLALuzEqemZlVS8WTbl7Bm38E/h/wZUn/BPwLMA04VdJpDdrtKnhz5Q3XlBqwmVkjMRhNb2Mhb6T7duBQYBK1M9NmR8QWSf8M3AR8eqRG9QVvrjj30mr/2jGz7lLxkW5e0h3Irm65VdJvI2ILQERsk1TtxXBm9hw1vpPudklTI2IrcPjQTkl7QgmX+TUzK9s4H+keGRHPAkTsVqRyAvCetkVlZtaq8Zx0hxLuCPt/B/yuLRGZmaUYowNkzfI6XTPrLuN5pFuGw0oo0LJx8p7JfWzbmVYQpIziKpNLKGwyt2d6/pNybCHte/LYwNPJMZRR/GdCb3qxmdQCQmUUINram/5jmFqsBuCgSPuebFB60Z1SVDzpurSjmXWZKLA1JmmRpLskrZN06ijP+R+S1kpaI+mivD49vWBm3aWkga6kXuA84FigH1gpaXlErK17znzg48CfRMRjkp6f169HumbWXcq7XM9CYF1ErI+I7cAlwPHDnvM+4LyIeKz20vFwXqdOumbWXQYHm97qSxZk25K6nmYBG+ru92f76h0MHCzpPyXdKGlRXniFpxckfTO7MKWZWfUUmF6oL1nQoj5gPnAUMBv4uaSXR8TjjRqMStLy4buA10naCyAijhul3RJgCcDZbz+Fdx9xdHPhm5mlKm/1wkZgTt392dm+ev3ATRGxA7hH0t3UkvDK0TrNG+nOBtYC51P7/SFgAfD5Ro3qf3s8cM7F1V6/YWbdpbykuxKYL2ketWS7GDhx2HMuB04ALpS0L7XphvWNOs2b010A/Ao4DXgiIq4HtkXEzyLiZ0W/AjOz9itnyVhEDABLgauAO4BLI2KNpDMlDf2VfxWwWdJa4DrgHyJic6N+804DHgTOlfS97P+H8tqYmY2pEv+2zi7WsGLYvtPrbgfwkWxrSlMJNCL6gXdIejOwpdnOzcw6LbrpEuwR8SPgR22KxcwsXcWPIo2LqYLZvTOS+5jcq6T2++9Maw+wo4QPw7b0Lugn7Rz5p3akRzEQ6aORGX2T0/voSetjoCJlpSeUsOR+iyqerZpV8doL4yLpmpk1zUnXzKyDqp1znXTNrMt004E0M7PK80jXzKyDumlOV9JrqJU7Wx0RV7cnJDOz1lU75eacBizpl3W33wf8CzAD+MfRqqhnz91VLu3bN1xbWrBmZrnKq6fbFnmL++ov6rUEODYizgDeALxrtEYRsSwiFkTEAlcYM7OOKu9qPW2RN73QI2lvaslZEfEIQEQ8LWmg7dGZmRU1zi/Bvie1KmMCQtIBEfGgpOnZPjOzaql2zs2tMjZ3lIcGgbeWHo2ZWaLoptULQyJiK3BPybGYmaWrds5t/zrdmS9NfwdeuDp9JuOxxII3W0q4hOceJZwos62ESZ2ZmpQWw6TpyTFM6ZmY3EcZJijtG/vM4I7kGHaUcX3YEj4X2xPjmF6VZf/P9aRrZtZR3Ti9YGZWVSVUDW0rJ10z6y7VHug66ZpZl3HSNTProIon3bzaC6+StEd2e4qkMyT9UNLZkvZs0G5X7YXzf/zTsmM2MxtVxUsv5K4RuQDYmt3+ArUz1M7O9l04WqP62gvvfePrSwnUzKwpgwW2HJIWSbpL0rqRinxJOknSI5JWZdt78/rMrb0QEUM1FhZExGHZ7f+QtCo/ZDOzziprBCupFzgPOBboB1ZKWh4Ra4c99bsRsbTZfvNGuqslnZzdvlXSgiyYg4H0VeFmZmUrr8rYQmBdRKyPiO3AJcDxqeHlJd33Aq+V9FvgEOAGSeuBr2WPmZlVS4GkW3/8KduW1PU0C9hQd78/2zfc2yTdJukySXPywssrePMEcFJ2MG1e9vz+iHgor2Mzs7FQZHohIpYByxJe7ofAxRHxrKS/Br4BNDyQ1dSSsYjYAtyaEJiZWWdEaVVnNwL1I9fZ2b7fv1TE5rq75wOfzeu07et0N9+R/gaUcVbffjt3JrV/qLc3OYYJJczwb1D6VPqTg88mtX/82aeSY3imL63oDsCMvsnJfWxLbL8j0j5XZXmmhINHM3sm5D+pgf7BrflP6oASl4KtBOZLmkct2S4GTqx/wlCN8ezuccAdeZ365Agz6yplJd2IGJC0FLgK6AUuiIg1ks4Ebo6I5cAHJR0HDACPAifl9euka2bdpbzpBSJiBbBi2L7T625/HPh4kT6ddM2sq1S8sqOTrpl1mYon3bzaCx9sZt2ZmVlVRKjpbSzknRzxKeAmSb+Q9L8lPa+ZTusXHH/7hmvTozQza9J4L3izntratE8BhwNrJV0p6T2SZozWqL7gzbuPOLrEcM3McoSa38ZAXtKNiBiMiKsj4hTgQOBLwCJqCdnMrFKqPtLNO5C226+CiNgBLAeWS5ratqjMzFpU8eNouUn3naM9EBHVOP3EzKzeGE0bNCuv4M3dnQrEzKwMXqdrZtZBY7UUrFnjIulu7kt/E59IbP/Q4JPJMcwoocjL/c9szn9SjukTpiS1f97kUS+P17QZPenvxUzSCrQAbE6sxT+lN/1HKLUAUVl+M5D2U7JvXzUO83ika2bWUR7pmpl1jEe6ZmYdVPGc66RrZt1lXB9IkzSRWrX0ByLiGkknAn9MrTr6suxkCTOzyqj69ELeacAXAm8GPiTpW8A7gJuAV1K7HtCIXPDGzMaOCmydlze98PKI+CNJfdSuEXRgROyU9G0aXKiy/gqbD5xzccV/75hZNxnvI92ebIphBjAVGFqgOQlKWCRpZlayKLCNhbyR7teBO6ldlO004HuS1gOvBi5pc2xmZoWN6wNpEXGupO9mtx+Q9E3gGOBrEfHLTgRoZlZExWcX8peMRcQDdbcfBy5rZ0BmZiniuX5G2v1MTO5j+mB6HL/rGfvff9tiILmPgcGdJUSSZp+etNoNADNL+OjNLOGtmNqT9vncoO3JMeyI9C9kRs/k5D6eGnwmqf3Tg9VYQVrmT7qkRcAXqE2xnh8RZ43yvLdRG5C+MiJubtRn3oE0M7NxpawDaZJ6gfOANwKHACdIOmSE580APkRtOW0uJ10z6zKlrdNdCKyLiPURsZ3a4oHjR3jep4Czgab+VHDSNbOuMlhgqz+RK9uW1HU1C9hQd78/27eLpMOAORHxo2bjc+0FM+sqReZ060/kKkpSD3AOcFKRdh7pmllXKfHkiI3AnLr7s7N9Q2YALwOul3QvtfMXlkta0KjT3JGupBcAf5m9+E7gbuCiiNiSH7OZWaeVtmRsJTBf0jxqyXYxcOLQgxHxBLDvrleVrgf+Pmn1gqQPAl8BJlMrcjOJWvK9UdJRDdrtmie5/IafNPyqzMzKVNZINyIGgKXAVdQqK14aEWsknSnpuFbjyxvpvg84NCtycw6wIiKOkvRV4AfAK0YJdtc8yY3nfH/sF8ia2XNGmQknIlYAK4btO32U5x7VTJ/NHEjrozatMAmYnnV+vyQXvDGzyinhXKq2yku65wMrJd0E/Cm1tWhIeh7waJtjMzMrLDSOTwOOiC9IugZ4KfD5iLgz2/8IcGQH4jMz6yrNFLxZA6zpQCxmZsmqfhCp7SdHTCthguVG0lenTYy0L7WMoiRl9FGG1KI5E3rT/3wro1jNlBLezy30JrWfmtge4Eml9/Hgs48l9/HszrSCNY8/+3RyDGV4ziddM7NOGu8H0szMxpWKXzjCSdfMukvVpxdce8HMrIPyTgPeU9JZku6U9KikzZLuyPbt1aEYzcyaVvWrAeeNdC8FHgOOioh9ImIm8Lps36XtDs7MrKjxnnTnRsTZEbFpaEdEbIqIs4GDRmtUX/Dmshtd8MbMOmdQzW9jIS/p3ifpo5L2G9ohaT9JH2P3iuq7iYhlEbEgIha8/dXHlhWrmVmu8T7SfScwE/hZNqf7KHA9sA/wjjbHZmZWWNWTbl7thceAj2XbbiSdDFzYprjMzLpSypKxM0qLwsysJON6pCvpttEeAvYb5TEzszFT9ZMj8s5I2w/4M2pLxOoJ+K9mXuDh3vS3IHaO/ds4oYSiJDN6JqUHUkIXM3omJ7WfPZj+Xmwt47ScEuLYpIGk9jtKONO/jM/F5Enp1xToTby2WF9F6tiO99oLVwDTI2LV8Aeyi7CZmVXKuK69EBGnNHjsxNEeMzMbK2P/d3Fjrr1gZtZBrjJmZl2la0e6kn5cZiBmZmUYLLDlkbRI0l2S1kk6dYTH/5ek2yWtkvQfkg7J6zOvythho2yHA4c2aLer9sIVN7j2gpl1TlnrdCX1AucBbwQOAU4YIaleFBEvj4hDgc8C5+TFlze9sBL4GYy4lmSv0RpFxDJgGcC1515W9dG+mXWREhPOQmBdRKwHkHQJcDywdtdrRdRfwHFaMy+fl3TvAP46In4z/AFJoxa8MTMbK1Eg7UpaAiyp27UsGzQCzGL3wl79wKtG6OP9wEeAicDr814zL+l+ktGnID6Q17mZWZXV/1We0Md5wHmSTgQ+Abyn0fPz1ule1uDhvYuHZ2bWXiVOL2wE5tTdn53tG80lwJfzOnXBGzPrKiWuXlgJzJc0T9JEYDGwvP4JkubX3X0z8N+mYodzwRsz6ypljXQjYkDSUuAqoBe4ICLWSDoTuDkilgNLJR0D7KBWo6bh1AJ0oODNthLKTwxG+ts4U2lFRWZHenGVMipxbOpNP59lQmJhk37tTI5hRwk/Glt70orVADy585nkPqpgSs/E5D56KeEzXgFFDqTl9hWxAlgxbN/pdbc/VLRPF7wxM+sgF7wxs65S9RMDXHvBzLpK1evp5p0GvIekf5L0rWwNWv1jX2pvaGZmxUWBf2Mhb8nYhdQOmn0fWCzp+9KuI1KvbmtkZmZdKC/pvjAiTo2IyyPiOOAW4KeSZjZqVF/w5sobriktWDOzPOP6wpTAJEk9ETEIEBGflrQR+DkwfbRG9afWXXHupVWf1zazLlL1hJM30v0hwwo4RMS/An8HbG9TTGZmLav6nG7ekrGPjrL/SkmfaU9IZmatG+8j3UZce8HMKmdcz+m69oKZjTdjNW3QrLbXXjAz66Rqp9wO1F6YUsJV3ndEeoGVVDNjR3ofB2xL7mPe1rRiNQATpqZ9LO95cI/0GEooYrSqL/3cowlKK/JSxmdzdu+M5D4OHkj/OZucWMho/4UTkmMow7hOuq69YGbjT7XTrmsvmFlXqXrtBSddM+sqVT+QllfwZn9JX5Z0nqSZkj4p6XZJl0o6oFNBmpk1q+pLxvJm3/+V2jXeNwDXAduANwG/AL7S1sjMzFpR8aybl3T3i4gvRsRZwF4RcXZEbIiILwIHjdaovuDNFTf8pNSAzcwaqfppwHlJt/7xbw57bNS1NhGxLCIWRMSCtxxxbMvBmZkVVeLVgNsi70DaDyRNj4inIuITQzslvQi4q72hmZkVV/UDaXnrdE8fZf86ST9qT0hmZt3LBW/MrKuUeRxN0iJJd0laJ+nUER7/iKS1km6TdK2kUY91DXHBGzPrKmVNL0jqBc4DjgX6gZWSlkfE2rqn/RpYEBFbJf0N8FngnY36HRcFb7YPptc92GP0435NSp92L+HLoHfC2M9X7dP7bHIf2wbSz8uZExOT+9gjsY8t6SUP2Ex6/Ya+Ej6fM/ffmtReM2Ylx1CGEn9CFgLrImI9gKRLgOOpLaOtvVbEdXXPvxF4d16nbS94Y2bWSVGgmJKkJcCSul3LssuNAcyido7CkH7gVQ26OwX4cd5ruuCNmXWVItML9ddzTCHp3cAC4LV5z3XtBTPrKiVOL2wE5tTdn53t242kY4DTgNdGRO7cW+EZKUnPL9rGzGwcWgnMlzRP0kRgMbC8/gmSXgF8FTguIh5uptO81Qv7DN8F/DJ7IUXEo81Gb2bWCWWtXoiIAUlLgauonYF7QUSskXQmcHNELAc+B0wHvicJ4P6IOK5Rv3nTC78D7hu2bxZwC7VR/AsKfyVmZm1U5vqeiFgBrBi27/S628cU7TNveuEfqJ3ue1xEzIuIeUB/dnvUhOuCN2Y2VgYjmt7GQsOkGxGfB94LnC7pHEkzaOIXiQvemNnYqXZtx9wDaRHRHxHvAK4HfgJMbXdQZmatqnbKLbB6IZs0fh1wDICkk9sVlJlZq8Z7Pd3dRMS2iFid3XXBGzOrnooPdV3wxsy6yuB4rqdLRQre9Cq9qsiDpBVp2d6bXlxl3817JPcxd/pTyX1oe1r7GfukF7zZ95Wzk/vYf9Vvk/tI9cRDk5L7mDKY3seBL0krVgPQO+vApPY98w9PjqEM47qIOS54Y2ZWKhe8MbOuUqTK2FhwwRsz6yrVTrlOumbWZao+p9vwCJWkRXW395T09exaQBdJ8uoFM6uciGh6Gwt5ywI+U3f788CDwJ9TK3n21XYFZWbWqoov0y10csSCiPhERNwXEecCc0d7ogvemNnYqXbazZvTfb6kj1Bbl7uHJMXvx+SjJuz6S2Bce+5l1Z5gMbOuUvU53byk+zVgRnb7G8C+wCOS9gdWtTEuM7OWVHzFWO463RHrK0TEJknXjfSYmdlYqvpIN+X8Whe8MbPKqfrqBRe8MbOuUu1xbgcK3kwLtRDW7rYNJFZoAe4f3JzUvnfyvskx3DWYXqzmqa3DrxVa3IsSi/9Mjh3JMUy45/7kPvpm75nch2ZMT2q/p/7bFbmLx7ApuQseX9eb3Mc+++9M60DpP+vlqHbadcEbM+sq1U65LnhjZl2m6gVv0gvVmplVSJkH0iQtknSXpHWSTh3h8SMl3SJpQNLbm4mvcNKVNLNoGzOzTinrfDRJvcB5wBuBQ4ATJB0y7Gn3AycBFzUbX17Bm7Mk7ZvdXiBpPXCTpPskvbbZFzEz65QSL0y5EFgXEesjYjtwCXD8bq8VcW9E3AYMNhtf3kj3zRHxu+z254B3RsSLgGOpFcAZUX3thctde8HMOiii+S3HLGBD3f3+bF+SvKTbJ2noYNuUiFgJEBF3A6Ne2CkilkXEgohY8BdHHJsao5lZAc1PMNQPELNtSbujy1sy9iVghaSzgCslfQH4N+D1uPaCmVVQkbUL9cW5RrARmFN3f3a2L0nekrEvSrod+Bvg4Oz584HLgU+lvriZWdlKXDK2EpgvaR61ZLsYSF4qm3u5noi4Hrh++H5JJwMXpgZgZlamsgreRMSApKXAVUAvcEFErJF0JnBzRCyX9Erg34G9gT+XdEZE/GGjflOukXYGTrpmVjUlnhsRESuAFcP2nV53eyW1aYemueCNmXWVap+PRuOzN4CHgEOBg4Ztc4EHipz5kfM6S8ayfTf1UYUY/HX4vWhnH+N9y1syNlTw5r5h272MMM+bIHWZRhnLPLqljyrEUEYfVYihKn1UIYYq9TGuueCNmVkHueCNmVkHVSXpjrY4uVPtu6mPKsRQRh9ViKEqfVQhhir1Ma4pm9w2M7MOqMpI18zsOcFJ18ysg8Y06eZVZW+i/QWSHpa0OiGGOZKuk7RW0hpJHyrYfrKkX0q6NWvf8qXpJfVK+rWkK1psf6+k2yWtknRzi33sJekySXdKukPSEQXavjh77aFti6QPtxDD32bv5WpJF0ua3EIfH8rar2k2hpE+T5L2kfQTSb/J/t+7YPt3ZDEMSlrQYgyfy74ft0n6d0l7tdDHp7L2qyRdLenAon3UPfZ3kmKo1naBGD4paWPd5+NNjWLoWmO1QJjaucy/BV4ATARuBQ4p2MeRwGHA6oQ4DgAOy27PAO4uEge1s/OmZ7cnADcBr24xlo9Qq0B/RYvt7wX2Tfy+fAN4b3Z7IrBXwvd3E3BQwXazgHuolRIFuBQ4qWAfLwNWA1OpLYu8BnhRK58n4LPAqdntU4GzC7Z/KfBiauvaF7QYwxuAvuz22Y1iaNDHHnW3Pwh8pWgf2f451GoR3NfoszZKDJ8E/j7l89kN21iOdHOrsueJiJ8Dj6YEEREPRsQt2e0ngTsoUKg4aoaurT4h2wofnZQ0G3gzcH7RtmWRtCe1H5avA0TE9oh4vMXujgZ+GxH3tdC2D5iS1XKeCjxQsP1LgZsiYmtEDAA/A/4yr9Eon6fjqf0iIvv/L4q0j4g7IuKuZgMfpY+rs68D4EZyzvUfpY8tdXenkfMZbfCzdS7w0YT2z3ljmXTbUpU9haS5wCuojVaLtOuVtAp4GPhJRBRqn/m/1D7MTV/2YwQBXC3pVy0WY54HPAJcmE1znC9pWouxLAYuLtooIjYC/0zt2lMPAk9ExNUFu1kN/KmkmZKmAm9i97qoRewXEQ9mtzcx9jVH/ifw41YaSvq0pA3Au4DT854/QvvjgY0RcWsrr59Zmk1zXNBoqqab+UBaRtJ04PvAh4eNCnJFxM6IOJTaCGShpJcVfO23AA9HxK+KtBvBayLiMGoX0nu/pCMLtu+j9ifhlyPiFcDT1P6kLkTSROA44HsttN2b2uhyHnAgME3Su4v0ERF3UPsz/GrgSmoF93cWjWWEfpu5nmHbSDoNGAC+00r7iDgtIuZk7ZcWfO2pwP+hhWRd58vAC6nVc3mQBpf86mZjmXTbUpW9FZImUEu434mIf2u1n+xP8euARQWb/glwnKR7qU2zvF7St1t4/Y3Z/w9Tq/G5sGAX/UB/3Uj9MmpJuKg3ArdExEMttD0GuCciHomIHdSuVPLHRTuJiK9HxOERcSTwGLW5+lY8JOkAgOz/h1vsJ4mkk4C3AO/Kkn+K7wBvK9jmhdR+Ed6afU5nA7dI2r/ZDiLioWyAMgh8jeKfz64wlkl3V1X2bGS0GFje6SAkidoc5h0RcU4L7Z83dDRZ0hRqF+28s0gfEfHxiJgdEXOpvQ8/jYhCoztJ0yTNGLpN7eBLoVUdEbEJ2CDpxdmuo4G1RfrInEALUwuZ+4FXS5qafW+OpjbPXoik52f//wG1+dymL5E9zHLgPdnt9wA/aLGflklaRG3q6biI2NpiH/Pr7h5P8c/o7RHx/IiYm31O+6kdgN5UIIYD6u6+lYKfz64xlkfxqM213U1tFcNpLbS/mNqfKTuofQhOaaGP11D7k/E2an+GrgLeVKD9HwG/ztqvBk5PfE+OooXVC9RWgdyabWtaeT+zfg4Fbs6+nsuBvQu2nwZsBvZMeA/OoJYUVgPfAia10McvqP3CuBU4utXPEzATuBb4DbVVEPsUbP/W7Paz1EqlXtVCDOuoHf8Y+nzmrTwYqY/vZ+/nbcAPgVlF+xj2+L00Xr0wUgzfAm7PYlgOHJDyszJeN58GbGbWQT6QZmbWQU66ZmYd5KRrZtZBTrpmZh3kpGtm1kFOumZmHeSka2bWQf8fWCxV09yQE/cAAAAASUVORK5CYII=\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "from cactice.grids import neighborhood_correlations\n", "\n", @@ -720,7 +577,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -735,19 +593,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "outputs": [ - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "_, avg_dist_grid = neighborhood_correlations(grid, radius=1, exclude_zero=True)\n", "sns.heatmap(1 - avg_dist_grid, alpha=0.5)\n", @@ -756,18 +603,17 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, { "cell_type": "markdown", "source": [ - "#### Neighborhood distributions\n", - "\n", - "It's natural to ask whether a given location's class has any influence on its neighbors. To test this we can use a chi-squared test, comparing the proportion of classes in cell neighborhoods to an expectation value. If there is no correlation between a particular location's class and that of its neighbors, we would expect its neighbor distribution to match the overall class distribution.\n", + "#### Transition matrices\n", "\n", - "The first step is to compute the transition matrix (i.e., count the number of adjancent bonds from each class to each class), then normalize by column to obtain the proportion of each bond from each class." + "The transition matrix counts the number of bonds from a particular cell class to neighboring cell classes." ], "metadata": { "collapsed": false @@ -775,51 +621,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transition frequencies:\n", - "array([[ 72., 91., 44., 92.],\n", - " [ 91., 74., 41., 68.],\n", - " [ 44., 41., 12., 45.],\n", - " [202., 159., 93., 221.]])\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transition proportions:\n", - "array([[0.17603912, 0.24931507, 0.23157895, 0.21596244],\n", - " [0.22249389, 0.20273973, 0.21578947, 0.15962441],\n", - " [0.10757946, 0.11232877, 0.06315789, 0.1056338 ],\n", - " [0.49388753, 0.43561644, 0.48947368, 0.51877934]])\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "from cactice.grids import transition_matrix\n", "\n", @@ -851,18 +654,21 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, { "cell_type": "markdown", "source": [ - "This is merely another way to represent and visualize the adjacency distribution explored above. The transition matrix is more amenable to various computations, however.\n", + "This is merely another way to represent and visualize the adjacency distribution explored above.\n", + "\n", + "#### Neighborhood distributions\n", "\n", - "We can first take a look at the distribution of neighbors of each given cell class. If there is no spatial structure underlying neighborhood distributions, we expect that on average, the proportions of each class in a cell's neighborhood might match the observed adjacency distribution in the broader sample (in this case the grid). In other words, a given cell's class should tell us nothing about its neighbors except what we might guess from the overall transition proportions.\n", + "It's natural to ask whether a given location's class has any influence on its neighbors. To test this we can use a chi-squared test, comparing the proportion of classes in cell neighborhoods to an expectation value. If there is no correlation between a particular location's class and that of its neighbors, we would expect its neighbor distribution to match the overall class distribution.\n", "\n", - "As a reminder, we can first look again at the grid's cell and adjacent bond distributions:" + "We can first take a look at the distribution of neighbors of each given cell class. If there is no spatial structure underlying neighborhood distributions, we expect that on average, the proportions of each class in a cell's neighborhood might match the observed cell distribution in the grid. In other words, a given cell's class should tell us nothing about its neighbors except what we might guess from the overall proportions." ], "metadata": { "collapsed": false @@ -870,83 +676,29 @@ }, { "cell_type": "code", - "execution_count": 13, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Grid 3 cell distribution:\n", - "{1: 0.2947, 2: 0.2579, 3: 0.1421, 4: 0.3053}\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Grid 3 undirected bonds (combined):\n", - "{(1, 1): 0.07664410059999999,\n", - " (1, 2): 0.16134751775,\n", - " (1, 3): 0.09509993550000001,\n", - " (1, 4): 0.1755319149,\n", - " (2, 2): 0.07309800129999999,\n", - " (2, 3): 0.08470341715,\n", - " (2, 4): 0.13531592520000002,\n", - " (3, 3): 0.0035460993,\n", - " (3, 4): 0.09509993550000001,\n", - " (4, 4): 0.0996131528}\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ - "title = f\"Grid 3 cell distribution\"\n", - "print(f\"{title}:\")\n", - "pprint(cell_dist)\n", - "plot_cell_dist(cell_dist, title)\n", + "from cactice.grids import neighborhood_distribution\n", "\n", - "title = \"Grid 3 undirected bonds (combined)\"\n", + "neighborhood_dist = neighborhood_distribution(grid, Neighbors.COMPLETE, exclude_zero=True)\n", + "\n", + "title = f\"Grid 3 neighborhood distribution\"\n", "print(f\"{title}:\")\n", - "pprint(bond_dist)\n", - "plot_undirected_bond_dist(bond_dist, title)" + "pprint(neighborhood_dist)" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, { "cell_type": "markdown", "source": [ - "Now we can construct a dataframe compared observed neighborhoods distributions with our expectation." + "Now we can construct a dataframe to compare observed neighborhood distributions with our expectations." ], "metadata": { "collapsed": false @@ -954,121 +706,16 @@ }, { "cell_type": "code", - "execution_count": 14, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:10: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", - "/var/folders/bk/xk1_stdx6096p4_57slyjzgw0000gn/T/ipykernel_47467/243329422.py:11: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n", - " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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O3fuTDNIT548qbfffluenp5atWqV+vXrJ39/f4WGhqZqFxMTo549e6pcuXJavXq1li5dKmdnZ40YMcK6fv39/TVw4EBt2LBB3bp10+DBg3X69GldvnxZ/fv31+uvv67169frk08+0eeff37XPP5t5MiRqlOnjg4cOKBhw4bdty2eLByKfwK4uLjc88syIiJCuXPnVrFixZQvXz6NHj1a58+flyQ99dRTkm4dMr7zcHvv3r1VqFChNOc1atQoVa5cWdL/Hx24/WPhfm7Pz8XFRfny5dPVq1et044ePaodO3Zo+fLlqlixoiRp8uTJql+/voKDg9WhQwdJko+Pj/XLu3fv3tqwYYPOnz+vkiVLpppXevpzcHCQk5PTfU8H1KxZU507d5Yk9e/fXwsWLNDhw4dVrVo1fffdd5o/f76qVq0qSRo2bJh+/fVXrVmzRl26dEnVz4IFC9SxY0e1atXKug5DQkJStcmfP79Gjhwps9ms559/XtWqVbOGmnTr1MXkyZNVpEgRlS1bVu+//77mzp2rXr16acmSJSpevLiGDx8uk8mkUqVKaciQIfrkk0/0wQcfWPu439/2hx9+UMeOHdWuXTtJ0qBBgyRJV69e1ddff60WLVro9ddflySVKFFCZ8+e1bfffqtmzZqluf4iIiJkb2+vZ555RsWLF1efPn1UvXr1e157ULduXX3//fdKSEjQtWvXFBERIS8vL+3du1cVK1bUr7/+qnr16qX6jJ2dnfLnzy/p1vbl5OQk6dZe77hx46zbXMOGDVOtyzstW7ZMpUuX1ieffCJJKlmypK5du6aUlBTlyvX/+0Xx8fF655139NZbb1nr79y5s/r37y/p1jUrJpNJRYsWVbFixdS5c2c999xzeuqppxQREaHExES5urqqWLFiKlasmAoVKqTnn38+zXUnSW+88YZat26tOXPm6K233lJwcLB1mfBkI9ifADExMfc8t96jRw+9//77evnll1W9enU1aNBArVu3TrMfZ2fn+4a6nZ2dNSglqXz58kpMTLQe3n9Qx48fl729vSpUqJCqFnd3dx07dsw67s4vwrx580pSqsPRGe3PlrTmd/bsWSUkJKhHjx4ymUzWNjdv3kx1OP62I0eOpLoI8d+1SdIzzzyTKvBcXFysV3pLkpubm4oUKWIdLl++vCIjI3Xt2jUdP35clSpVSlWLp6enEhMTdebMGevy3+9ve+LECb311lvW4Vy5csnPz0+SdOzYMR09elQ//fSTdXpSUpLNiwN9fX21ePFiNWnSRO7u7nrllVfUtm1bawDfqXLlyjKbzTpw4IAuXrwoDw8PVa9eXXv27FH37t0VEhKi6dOn33d+t+XLly9VALq4uOjs2bNpLved27Qk699q165d1nGFChVShw4d9MMPP+jw4cM6ffq0/vzzT6WkpEiS6tSpIw8PD3Xo0EEvvPCCXnnlFbVu3VouLi4qV66cGjdurH79+qlYsWKqV6+eWrRocd+/hySVKlVK0q0fpfXq1dO6dese6cWseHwR7AYXFxenU6dO6e23375rWvXq1bV161Zt375d27dvV2BgoBYvXpzm+VEHBweb87vzPN/tC5fs7e1Thcpt9wrde0nrauaUlBTrF+ft+fzbvS6eSm9/tqQ1v9vnfb/99ls9/fTTqabf/gFwJ7PZbHO+d+4d3jmvtKbf7s9sNt9zeW9Pv12rrb+tvb19mheiJScnq2vXrurYseN9+/i3p59+WmvXrtWuXbu0bds2BQcHa8GCBVq4cKHKli2bqq3ZbJa3t7d27typixcvqkaNGqpRo4a+//57hYeHKzEx0Xp0xJZ7rcu03G+57xQZGan27durZMmSqlu3rnx8fPTPP//o448/liQ5OTnpxx9/1P79+7Vt2zZt2bJFCxcu1KxZs1SrVi0FBgbq8OHD+s9//qOtW7dq8eLFGjt27F3XsMTHx2vbtm2qVauWdVtycnLSs88+q3/++SfdywVj4xy7wa1cuVJms1mvvPLKXdO+++477du3Tz4+PpowYYKWLl2q48eP68iRI/cMYluSk5NT3Xe+f/9+OTo66tlnn7WG4J0Xz93rorR7KVWqlBITE/XHH39Yx924cUOHDx/WCy+8kOE6H3V//1aiRAmZzWZduXJFzz33nJ577jk9++yzmj59ug4cOHBX+9KlSys8PNw6nJycbL2fP70iIyMVHR1tHf7vf/+rYsWKydnZWaVKldKBAwdSBdT+/ftlb2+f7qv+n3/++VSHqy0Wi5o3b64NGzaoVKlSOnPmjHVZn3vuOYWGhmrhwoX37XPbtm1asGCBvL299emnn2r9+vXKly+ftm/ffs/2devWVWhoqPbt26fq1aurUqVKiouL07x581SrVq17HiF4kO3438t9599GunVa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jhwpDw8P7dixQ5K0du1atWjRQseOHdPSpUu1ePFirV69Wk8//bS++eYbRUZGavLkyVq0aJGWLFmi2NjYDC1XmsF++xnxFSpU0DfffKPY2FjFxcVp0aJF8vLyeohVCQBA9tu5c6eaNWsmJycnmc1mtW3bVqGhoSpZsqSqVasm6dZrU3fv3i03Nzc5OjqqY8eO+u6779S/f385OjoqJCREixcvVsuWLdWlSxfra1slyd3dXWbzrQPjLVu2tL669eeff5avr6927dqlM2fOqEOHDmrZsqV++eUXnTx5Uvv371eVKlVUqFAhmc1m+fr6Zmi50jwU7+XlJZPJZN07DwgIsE4zmUzy8/PL0IwAAMhJUlJS7hqXlJRkDePbzGazzGazli1bpt27d2v79u3q2LGjFixYkOZrW4ODg+Xk5GTto0GDBho/frz27NmjIkWKqEiRIkpOTlbTpk2t71uPjY1VcnKyQkNDU9X273psSXOP/fDhwzp06JAOHz5813+HDh3K0EwAAMhpvLy8tHbtWsXHxyspKUkrVqyQl5eXTpw4oT///FOStHz5cnl7e+vPP//UG2+8oerVq8vPz0+lSpXSqVOn0nxt6785ODioTp06GjdunPWNbzVr1tSmTZt0+fJlWSwW+fv7a/78+fL09NSBAwcUGRmplJQUrVu3LkPLZfNnQHx8vDZu3KgrV66kOrd++8X0AAA8KPvczvJ4vXem9GtL/fr1dejQIbVt21ZJSUmqU6eO6tevr8WLF+vLL7/U2bNn9dJLL2nAgAHKkyePKleurObNmyt37twqV66c6tatqxo1atzzta179+69a34tW7bUmjVr9Nprr0mSypYtq759++rNN99USkqKypUrp3fffVeOjo4aNmyYunfvrty5c+vFF1/M0LLbfG1r7969deHCBb300kup7l8fP358hmaEW65Hns9xt7sZ/XWLwMPgta228T2Ss9jcYz927Jg2bNigXLlsXkAPAACymc20fvrpp5WUlJQVtQAAgIeU5h77vHnzJEmFCxdW165d9eqrr8re3t46nXPsAADkPGkG+9GjRyVJefPmVd68eXXq1KksKwp4FHguP4AnUZrBzsVxeNzxXH4ATyKbF881aNAg1dXwJpNJuXPnVunSpTV48GC5urpmaoEAACD9bAZ7w4YNFRsbqy5duihXrlxavny5YmNjVaZM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6tKlizw8PHTkyBF99NFHMpvNmj17thISEnTlyhW1atVK/fv3v2+ty5cv17x585QrVy4VLFhQEydOVNGiRbVlyxbNnDlTiYmJcnJykp+fn6pUqZKu5T916pRGjBihK1euKFeuXHr//ffl4+NjnZ6SkqJx48bpwIEDio2NlcVi0ZgxY+Tp6am9e/dqwoQJSklJkSS99957atKkSZrjAeQgFsCg1q9fb2nbtu192wQGBlomTJhgSUlJsVgsFsuUKVMsn332mcVisVjq169vmTBhgsVisVguXLhgqVixouXs2bMWi8VieemllyyXL1+2tvviiy8sFovFkpKSYnnjjTcsp06dsn6uXLlylsuXL1t27txpadas2V01HDp0yFKzZk3LX3/9ZbFYLJZ58+ZZhg8fbjl16pSlefPmlitXrlgsFovl6NGjllq1alliY2MtM2bMsIwcOdI6/7CwsLv6bdWqlWXhwoUWi8Vi+euvvyyvvvqq5fr169b2v//+u+WDDz6wJCcnWywWi2X27NmW9957z2KxWCzdunWz/PTTT9b6/P397zseQM7BHjsMK1euXNY9y7Rs3bpV169fV0hIiCQpMTFRTz/9tHX6q6++Kklyc3PT008/ratXr+rZZ5+9q59q1apJkkwmk2bNmqWtW7fqp59+0okTJ2SxWBQXF5dmDaGhoapdu7aKFi0qSerevbskadGiRYqKirIO3+7/7NmzNpc9Ojpahw8fVvv27SVJRYsW1ebNm1O1qVKlivLnz6/Fixfr3Llz2rVrl/LkySNJatq0qUaNGqUtW7bI29tbH3300X3HA8g5OMcOw/Lw8NDJkycVExOTanxkZKTeffddxcfHKyUlRUOGDNHq1au1evVqLVu2TNOnT7e2dXR0tP7bZDLJksYTmJ2dnSVJN27cUOvWrRUeHi53d3d98sknMpvNaX5Okuzs7GQymazD8fHxOnHihFJSUvTyyy9ba1u9erWWLl2a6p3zaTGbzdaabzt58qTi4+Otw1u3btV7770n6dYPmDufp9+xY0etWbNGtWrV0o4dO9SiRQtdv349zfEAcg6CHYbl5uYmX19fDRkyxBruMTEx8vf3V4ECBeTk5KTatWtr0aJFSkhIUEpKioYPH66pU6fa7NvOzk5JSUl3jT9z5oxiYmLUv39/NWjQQLt377b2nZaaNWsqNDRUUVFRkqTFixcrICBAXl5e+u2333TixAlJ0rZt29SiRQvdvHnTZn158+ZV+fLltWrVKkm33nrXqVOnVCH822+/qX79+urcubMqVqyozZs3Kzk5WdKtYD906JDatGmj0aNH69q1a7p69Wqa4wHkHByKh6F99tln+uqrr9SxY0fZ2dkpISFBDRs21AcffCBJ6t27tyZOnKjWrVsrOTlZ5cqV0+DBg23226hRI3Xu3FlfffVVqvFlypTRK6+8oqZNm8rFxUUlSpTQiy++qDNnzsjBweGefZUpU0aDBg3SO++8I0kqXLiwxo0bJzc3N40aNUofffSRLBaLzGazZs6caT06YMuUKVM0cuRILViwQCaTSWPHjlXhwoWt0zt27KiPP/5Yvr6+srOzU7Vq1bRx40alpKTo448/1rhx4/T5558rV65c6tu3r4oXL57meAA5B293AwDAQDgUDwCAgRDsAAAYCMEOAICBEOwAABgIwQ4AgIEQ7AAAGAjBDgCAgfwfxBu2WH5cRL4AAAAASUVORK5CYII=\n" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfYAAAGoCAYAAAC0b8c7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA8IklEQVR4nO3de3yP9f/H8ednR4ah2GhSkrAxc2prTiWHbOZ8WIrkUE6JJHJq5Dw5rRwrCTViDosY+SK2HMrXIiLnKZtDo81mp8/vj74+P4v5bNjB5XG/3dxuu67r/Xlfr+vax56f67ren+symc1mswAAgCHY5HcBAADg/iHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCC3SAaN26sypUrW/7VqFFDrVq10ooVKzK1Gz58uAYOHJitPjdv3qw///wzy+UhISFq166dJGn37t2qXLmyEhMT73ob9uzZo8OHD0uSYmJiVLlyZR09evSu+7sXx48fV0BAgKpVq6bp06ff9/67du2qKVOmZKvtzfv5dsLCwuTt7X2/Srvvbq4/L2q9+T1uNpu1YsUKXb9+/b6v/3685+/V/Pnzs/3/GQ8Pu/wuAPfPO++8o3bt2slsNishIUE7d+7UhAkTFB8frzfeeEOSNHLkSGXn1gXnzp3TgAEDFB4errJly962TY8ePfTqq6/et/q7du2qefPmqWrVqipbtqx27typkiVL3rf+c2LRokWysbHRhg0b5OzsfN/7DwkJkZ0d//1yw83v8b1792r06NHy9/eXo6NjPld2f61Zs0YzZ85U06ZN87sUFDD8ZTGQIkWKqHTp0pIkFxcXPfXUU7KxsdHUqVPVrl07lSpVSsWKFctWX9kJ/yJFiqhIkSL3VHNWbG1tLduSH65evaoqVaqofPnyudJ/iRIlcqVfKNN73Ij330pOTtbYsWO1YcMGPfHEE/ldDgogTsUbXLt27WRjY6Nt27ZJynyaMiEhQUOGDJG3t7e8vLzUs2dPnTp1SpL04osvSpICAgIUEhKisLAwtW3bVu+++65q1aqluXPn3vYUcVhYmOrXr6+aNWtq2LBhSkhIkHT705Y3v75x48aSpD59+mj48OG3nIpPSEjQ+PHj1bBhQ9WoUUM9e/bUiRMnLH01btxYixcvVteuXVW9enU1a9ZMW7duzXK/3Km/rl27atOmTVqzZo0qV66smJiYW17ftWtXzZ49W3379pWnp6caNWqkb775xrI8NTVV06ZNU7169VS7du1b6v33qfilS5fq+eefl5eXl4YOHaohQ4YoJCTEsjwjI0NTp06Vt7e3ateurTFjxig1NTVTTfPmzZO3t7e8vb01ceJEpaWlWZYdOnRIr732mmrVqqX69esrODjY8vrb/W5v5+uvv1bz5s1Vo0YNdezYUT///LNl2fbt29W6dWt5enrK399fq1atynLf3+yTTz5Ro0aNVL16dbVp00bbt2+/bbs2bdpowYIFlulx48apVq1aSk9PlyRduHBBVapU0R9//GF5j8fExKhbt26SpFq1aiksLMzy+s8++0z169eXl5eX3n77bf39999Z1rh792517txZNWrUUJMmTbRy5crbtouOjtZrr72mmjVrqnr16urYsaP++9//WpYvX75cTZs2VbVq1fTSSy9pzZo1lmVbtmxRy5YtVb16dTVu3FiffvpplvVcunRJMTExWrlypby8vLJsh4cXwW5wTk5OcnNz0++//37LslmzZunEiRNavHixVq9eLVtbW40YMUKSLCG1ZMkS9ejRQ5L066+/ytnZWatXr1br1q1vu74VK1bo448/1sKFC7V///5sX0e+8cdy6tSpGjly5C3L3377be3evVvTp0/XihUr5OjoqJ49eyopKcnS5uOPP9bLL7+s9evXq0qVKhoxYoRSUlJuu7479RcSEqIXXnhBLVq00M6dO7O8FLFw4UI1aNBA69evV9OmTTV27FhdvHhRkjR79mzt2LFDM2fO1IoVK1ShQgV17dr1tgGyfv16BQcHa9CgQVq1apXs7Oy0fv36TG0OHz6sK1euaPny5Zo6darCwsK0evVqy/L4+Hjt3LlTixcv1tSpU/Xtt99awuHUqVN69dVXVbFiRX3zzTf68MMPtXbt2kxjB6z9bletWqXJkyerd+/eWrdunerUqaM333xT8fHxOnbsmAYOHKguXbro22+/Vf/+/TVlypRbtuHftmzZos8++0yTJk3Sd999p0aNGmnQoEGWD4M3a9iwoX788UfL9O7du3Xt2jX9+uuvkqRdu3bp6aef1mOPPWZpU7ZsWcuHoy1btsjPz8+yr/bu3atFixZpwYIF+vHHH7MM0hMnTqhnz56qXbu21qxZo4EDByooKEhRUVGZ2iUkJKh3796qWrWq1q5dqxUr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e/aswsLCVLRoUVWoUEFOTk6S/hm0dacRwzczmUx6//33FR0draioKE2ZMkXdunWTo6OjKlWqpEKFCmn+/Pk6e/asVq5caRmpf4OTk5OOHTuWKaCkf/64NmvWTCNHjtS+ffv022+/adiwYbKzs7vjNdys3O/+/q1IkSJ6+eWXNWHCBG3fvl2nT59WUFCQ/vOf/9x2wFP37t21fPlyrVu3TidOnLCMdchJKKWnp2vIkCE6cuSINm/erPnz56t3796S/rnWGxMTo/Hjx+v48ePavn27Jk+erDZt2mT7O/rdu3dXaGio1q1bp9OnTys4OFgXL15U3bp11aNHD23btk3z5s3T6dOn9d1332nKlClydXW9Y59ms1kfffSRvv32W507d04RERG6cOHCLae+b2jQoIGio6N19uxZeXl5ycHBQTVq1ND69etv+8FVkuV9fOjQobu6kczLL7+sY8eOaebMmTp16pTWrVuntWvX3nI939XVVRcvXtS2bdsUExOjsLAwy7cLUlJSVLhwYc2fP19ffvmlYmJitHPnTh0/flyenp4qXry4Vq1apY8++khnz57Vzz//rP/+97/y9PTMcb2AxKl4Q5k+fbplpHOJEiX01FNPacKECZYBZf82aNAgJScna/Dgwbpy5YqqVKmi+fPnW/7Yd+zYUaNGjVJgYKCqVq1qdf2FCxdW+/bt9cYbbygtLU1t2rSxfLWuaNGimjhxoqZPn65vvvlGvr6+lhvg3NCzZ0998sknOnDggN5///1MfU+cOFGTJk1S3759lZaWprp162rp0qV3/X3w+93fv7333nuys7PTiBEjlJCQoKpVq+rTTz/V448/fkvbZs2a6ezZs5o6daoSEhLUokUL1axZ87an+rNSsWJFVatWTa+88oocHBzUvXt3y6lxV1dXffrppwoODlbr1q1VsmRJtWvXTv379892//7+/rpw4YJmzpypS5cuqWrVqlqwYIEeeeQRPfLII5o9e7Zmz56tjz/+WKVLl1afPn1ue/nnZs8//7yGDRumWbNm6c8//1TZsmU1evRoPffcc7dt7+rqqooVK6pIkSKW6/DPPvus9u7dq4YNG972Nc8884xeeOEF9ejRQ0OGDLEMpsuucuXKad68eZo2bZo+++wzPfbYY5owYYKee+65TNfYW7Roof3792v48OFKTU1VpUqVNH78eL3zzjs6ePCgateureDgYM2ZM0fBwcF65JFH9Prrr6t9+/aSpDlz5mjatGn68ssvVaRIEfn7+6tPnz45qhW4wWQ24h0cgAfI7t275ebmpnLlylnm+fv7q3fv3paR8gCQXRyxA/ls69at+vHHHzV+/HiVKFFC69atU2xsrBo0aJDfpQF4ABHsQD4bOHCgrl69qt69eyspKUnu7u767LPPbhlRDwDZkaun4sPDwzV37lylpqaqe/fut9yY4+OPP9aqVass13Q7dep0SxsAAJB9uXbEHhsbqxkzZigsLEwODg4KDAyUt7e3nn76aUubgwcPavr06apZs2ZulQEAwEMl177uFhkZKR8fH5UoUUJOTk5q3ry5Nm7cmKnNwYMHtXDhQgUEBGjcuHGZ7qQFAAByLteO2OPi4jLdZ9vFxUXR0dGW6cTERFWtWlXDhg2Tm5ubhg8frjlz5mjw4MHZ6v/QoUNKTk6+73UDAO6/2rVr53cJD41cC/bbXbq/+YYbRYoU0cKFCy3TPXr00IgRI7Id7B4eHvdeJAAABpNrp+Jv3Inphri4OLm4uFim//jjj0zPNTabzVYfGgEAAO4s14Ld19dXUVFRunz5spKSkhQREZHp7lCFChVScHCwzp49K7PZrGXLlqlp06a5VQ4AAA+FXP+62/z585WamqoOHTqod+/e6t27twYOHKjq1atr06ZNCgkJsTyZaezYsdl6ghgAPKySr/6l1KRr+V1GJvaFnVTIuWR+l4H/4ZayAPAA+Tv2nKKXz8nvMjLx7NxPxVzd8rsM/A9PdwMAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQHI12MPDw+Xn56emTZtq2bJlWbbbtm2bGjdunJulAADwULDLrY5jY2M1Y8YMhYWFycHBQYGBgfL29tbTTz+dqd3Fixc1ZcqU3CoDAICHSq4dsUdGRsrHx0clSpSQk5OTmjdvro0bN97SbtSoURowYEBulQEAwEMl147Y4+LiVLp0acu0i4uLoqOjM7X58ssv5e7urho1auS4/0OHDik5Ofme6wSAB0kZ58K6cOFCfpeRydWrV3Q05vwd29SuXTuPqkGuBbvZbL5lnslksvx89OhRRURE6IsvvtD583d+Q9yOh4fHPdUHAA+iv2PPZTpoKgicnYvLrZJ7fpeB/8m1U/Gurq66ePGiZTouLk4uLi6W6Y0bN+rChQtq37693njjDcXFxalLly65VQ4AAA+FXAt2X19fRUVF6fLly0pKSlJERIQaNmxoWT5w4EBt2rRJa9eu1YIFC+Ti4qKvvvoqt8oBAOChkKtH7IMHD1a3bt3Upk0btWzZUp6enurdu7d++eWX3FotAAAPNZP5dhfDAQAF0t+x5xS9fE5+l5GJZ+d+Kubqlt9l4H+48xwAAAZCsAMAYCAEOwAABkKwAwBgIAQ7AAAGQrADAGAgBDsAAAZCsAMAYCAEOwAABkKwAwBgIAQ7AAAGQrADAGAgBDsAAAZCsAMAYCAEOwAABkKwAwBgIAQ7AAAGQrADAGAgBDsAAAZCsAMAYCAEOwAABkKwAwBgIAQ7AAAGQrADAGAgBDsAAAZCsAMAYCAEOwAABkKwAwBgIAQ7AAAGQrADAGAgBDsAAAZCsAMAYCAEOwAABmKX3wUAQEF2OT5RCYnX87sMi6JKy+8SUMAR7ABwBwmJ1zV93ub8LsNiZK9n87sEFHCcigcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQLK881xERMQdX9isWbP7XgwAALg3WQZ7aGiofv75Z3l6espsNmdaZjKZCHYAAAqgLIN93rx56ty5s3r27KlGjRrlZU0AAOAuZXmN3cHBQR988IHWrVuXl/UAAIB7cMenu3l5ecnLyyuPSgEAAPeKUfEAABgIwQ4AgIEQ7AAAGEiOgz01NTU36gAAAPfBHQfPSdK+ffu0Z88e9erVS507d9aJEyc0adIk+fn55UV9eEBcjk9UQuL1/C4jk6JFHPVIiSL5XQYA5CmrwR4cHKy3335bW7ZsUalSpRQSEqJBgwYR7MgkIfG6ps/bnN9lZPJOn6YEO4CHjtVT8enp6fL19VVkZKSaNGmicuXKKSMjIy9qAwAAOWQ12DMyMhQdHa1t27apXr16Onr0KNfZAQAooKyeiu/Tp4+GDBmiDh06qFy5cmrcuLFGjhyZF7UBAIAcshrszZo1y/TAl02bNsne3j5XiwIAAHfH6qn4ffv2ac6cOUpJSVHbtm1Vp04dbdiwIS9qAwAAOWQ12IODg+Xl5WUZFb9+/Xp9/vnneVEbAADIIUbFAwBgIIyKBwDAQKwG+79Hxffp00eDBg3KVufh4eHy8/NT06ZNtWzZsluWb968WQEBAfL399fw4cOVkpKS4w0AAAD/L8ej4jdv3ixbW1urHcfGxmrGjBkKCwuTg4ODAgMD5e3traefflqSdO3aNY0bN06rV69WqVKlNHjwYK1evVqdO3e+h80BAODhZjXYT506paVLl+ratWsym83KyMjQ6dOnFRoaesfXRUZGysfHRyVKlJAkNW/eXBs3btSAAQMkSU5OTtq6davs7e117do1Xbp0Sc7Ozve+RQAAPMSsBvuQIUNUrVo17d+/X/7+/vrPf/4jDw8Pqx3HxcWpdOnSlmkXFxdFR0dnamNvb6/t27frvffek4uLi+rXr5/twg8dOqTk5ORst0fucnR6RBcvXszvMjK5evWKfjp/Mr/LwAOuoL2309LTdOHChfwuI5OrV6/oaMz5O7apXbt2HlUDq8GemJiosWPHasKECWrYsKG6deum119/3WrHZrP5lnkmk+mWeY0aNdLu3bs1ffp0BQUF6aOPPspW4dn5cIG8c+bcZZUqVSq/y8jE2bm4yletkN9l4AFX0N7bdrZ2mQ6aCgJn5+Jyq+Se32Xgf6wOnrtxKv2JJ57QsWPH5OzsnK2vu7m6umb6lBsXFycXFxfLdHx8vHbu3GmZDggI0G+//ZaT2gEAwL9YDfYnnnhCEyZMUK1atbR06VItWbIkW6PXfX19FRUVpcuXLyspKUkRERFq2LChZbnZbNbQoUP1xx9/SJK+++471apV6x42BQAAWD0VHxQUpB07dsjd3V0dO3bUrl27NG7cOKsdu7q6avDgwerWrZtSU1PVoUMHeXp6qnfv3ho4cKCqV6+uDz/8UG+++aZMJpOefvppjR079r5sFAAAD6ssgz0+Pt7ys7e3t+Lj4+Xn5yc/P79sdx4QEKCAgIBM8xYuXGj5uUmTJmrSpEkOygUAAHeSZbD7+PjIZDJlGgR3Y9pkMunw4cN5UiAAAMi+LIP9yJEjlp9vhHl6eroyMjJ4bCsAAAWU1cFzu3fvVuvWrSVJJ06c0PPPP6/9+/fnemEAACDnrAb7lClTNGnSJElSpUqVtGDBAss0AAAoWKwGe2pqaqabwXh4ePCwFgAACiirwV64cGHt2LHDMh0VFSUnJ6dcLQoAANwdq99jHzlypPr37y87OzuZTCaZTCaFhITkRW0AACCHrAZ7jRo1tG3bNh09elS2traqUKGCHBwc8qI2AACQQ1aDXZLs7Ozk7s4N/gEAKOisXmMHAAAPjiyD/cbDWQAAwIMjy2AfMGCAJGno0KF5VgwAALg3WV5j//vvvzV69Gjt2rVL48ePv2X5qFGjcrUwAACQc1kGe0hIiL7//nvZ2NioRIkSeVgSAAC4W1kGe5UqVVSlShWVL19eAQEBSktLk9ls5gEwAAAUYFZHxT/33HPq1auXvLy85OnpqW7duik2NjYvagMAADlkNdg//PBDeXl5KTIyUpGRkapTp46CgoLyoDQAAJBTVoP91KlTGjBggJydnVWyZEkNHDhQZ86cyYvaAABADlkN9rS0NF2/ft0ynZSUJJPJlKtFAQCAu2P1lrJ+fn7q3r272rVrJ0kKCwtT8+bNc70wAACQc1aDvX///ipTpox++OEHZWRkqF27durQoUNe1AYAAHIoWw+Bad++vdq3b5/btQAAgHvEQ2AAADAQgh0AAAPJcbCnpqbmRh0AAOA+sHqNfd++fdqzZ4969eqlzp0768SJE5o0aZL8/Pzyoj4AgIFdjk9UQuJ16w1zqGgRRz1Sosh97/dBYDXYg4OD9fbbb2vLli0qVaqUQkJCNGjQIIIdAHDPEhKva/q8zfe933f6NC2QwT579mz5+vqqTp062X5N5cqV9dtvv2W7vdVT8enp6fL19VVkZKSaNGmicuXKKSMjI9srAAAA/9i7d6/S09NzdR1Wj9gzMjIUHR2tbdu2qU+fPjp69CjX2QEAhrBgwQJ99913Sk9PV/369VWrVi1NnTpV4eHhOn/+vLp27aoVK1Zo5syZMplMOnr0qBISEtS3b1+1adNGiYmJGjdunI4dO6b09HT17t1bLVu21PXr1zV27Fj99NNPsre3V79+/ZSSkqKDBw9q1KhR+vjjj1WoUCEFBQUpPj5ehQoV0ujRo+Xu7q6YmBgNHTpU165dU40aNXK8TVaDvW/fvhoyZIg6dOigcuXKqXHjxho5cuRd7UAAAAqKHTt26ODBg1q5cqVMJpOGDh2qxMRE1axZU3PnztWePXs0bNgwlSlTRpIUGxur0NBQXbp0Se3atVO9evW0ePFieXh4aMqUKUpISFBgYKBq1KihTZs26dq1a/ruu+906dIlde/eXatXr9aqVas0YMAAVa5cWYGBgRozZozc3d31+++/q3///tq0aZM+/PBDtWvXTh07dtSaNWu0fPnyHG2X1WCPi4vT5s3/f/1j8+bNsrW1zeHuAwCgYImKilJ0dLTllunJycl67LHHNHLkSPn5+alWrVry9/e3tG/Xrp3s7e1VpkwZ1apVSz/99JMiIyOVnJysVatWSZKuXbumY8eOae/everUqZNsbGxUunRprV+/PtO6ExMTdfDgQb3//vuWedeuXdNff/2lPXv26KOPPpIktWrVSqNGjcrRdlkN9q+//lqvvPKKZZpQBwAYQXp6ul577TW9/vrrkqSrV6/K1tZWsbGxsrW11cmTJ5WSkiIHBwdJmfMvIyNDdnZ2ysjIUHBwsDw8PCRJFy9eVPHixS1Bf8Pp06dVtmzZTK93cHDQ2rVrLfPOnz+vEiVKSJLMZrMkyWQy5fjBa1YHz1WoUEGjRo3SmjVrFBERYfkHAMCDzMfHR2vXrlViYqLS0tLUv39/bdiwQe+//75GjhypunXraubMmZb23333ncxms86dO6fo6GjVrl1bPj4++vrrryX9c4a7VatW+vPPP1W3bl1L+0uXLunVV19VSkqKbG1tlZ6ermLFiunJJ5+0BPuuXbssB9G+vr5at26dJCkiIkIpKSk52i6rR+zx8fGKj4/X6dOnLfNMJpOaNWuWoxUBAPBvRYs46p0+TXOlX2saN26sI0eOqFOnTkpPT1eDBg30119/6dFHH1WzZs3k6+urli1bWvIuOTlZ7du3V0pKisaNG6eSJUtqwIABCgoKUsuWLZWenq6hQ4eqfPny6tKli8aPH69WrVpJkkaPHq2iRYuqQYMG+uCDDzRlyhQFBwcrKChIn376qezt7TVjxgyZTCaNGTNGQ4cOVWhoqKpXr64iRXL2tT2T+cbxvhVpaWkym82yt7fP0QrwcDhz7nKufBf1XrzTp6nKuz2S32XgAVfQ3tsjez2ro2s/ze8yMvHs3E/FXN3yu4xcNXz4cD377LOW6/EFmdVT8ZcuXVKvXr3k5eUlT09PdevWTbGxsXlRGwAAyCGrwT5u3Dh5eXkpMjJSkZGRqlOnjoKCgvKgNAAACobJkyc/EEfrUjaC/dSpUxowYICcnZ1VsmRJDRw4UGfOnMmL2gAAQA5ZDfa0tDRdv/7/N+hPSkrK8dB7AACQN6yOivfz81P37t0tpyDCwsLUvHnzXC8MAADknNVg79+/v8qUKaMffvhBGRkZateunTp06JAXtQEAgByyGuzSP9/1K1mypOzt7VWjRg1OxQMA7ovkq38pNenafe/XvrCTCjmXzPHrYmJi1K1bN23duvW+13S3wsLCtGfPHk2ePDlb7a0G+7Zt2zRs2DBVqlRJGRkZOnPmjGbMmKG6devec7EAgIdbatI1RS+fc9/79ezc766C3QisBvusWbO0dOlSVapUSZJ06NAhjR49WmFhYbleHAAAuWnevHlat26dbG1tVa9ePXXp0kXXr1/X22+/rZMnT6p8+fKaMGGCihcvrilTpmjXrl2ytbXViy++qAEDBmT52NawsDCtXr1a8fHxqlWrlrZs2aJt27bJ3t5eR48e1ZAhQxQeHq41a9Zo8eLFysjIkIeHhz744AM5OjpqzZo1mjt3rooWLSo3Nzc5OTlle5usjoo3mUyWUJckDw8PZfNmdQAAFFjbt2/X1q1bLSF8+vRp/fDDD7p06ZK6du2qdevWqXz58vrkk0907tw57dixQ+vWrVNoaKhOnTql69eva+7cufLw8FBYWJiWLVumefPm6ezZs5L+eczr6tWrNXbsWHl6emrnzp2SpPXr16tVq1Y6duyYVqxYodDQUK1du1aPPvqoPvvsM8XGxmratGlatmyZli9frsTExBxtV5bBfuMe8dWqVdNnn32mxMREJSUladmyZfLx8bmHXQkAQP778ccf5e/vr0KFCsnOzk7t27dXVFSUKlSooDp16kj657Gpe/bskaurqxwdHRUYGKgvvvhCgwYNkqOjoyIjIxUaGqrWrVvrlVdesTy2VZLc3d1lZ/fPifHWrVtbHt363XffKSAgQLt379bp06fVqVMntW7dWt9//71OnDih/fv3q2bNmipVqpTs7OwUEBCQo+3K8lS8j4+PTCaT5eg8ODjYssxkMmnYsGE5WhEAAAVJRkbGLfPS0tIsYXyDnZ2d7Ozs9M0332jPnj3asWOHAgMDtWTJkiwf2xoeHq5ChQpZ+mjcuLEmTZqkvXv3qkyZMipTpozS09PVokULy/PWExMTlZ6erqioqEy1/bsea7I8Yj9y5IgOHz6sI0eO3PLv8OHDOVoJAAAFjY+Pj9avX6/k5GSlpaVp1apV8vHx0fHjx/Xrr79KklauXClfX1/9+uuvevXVV1W3bl0NGzZMFStW1MmTJ7N8bOu/OTg4qEGDBpo4caLliW/e3t7avHmzLl26JLPZrKCgIC1evFi1a9fWgQMHFBsbq4yMDG3YsCFH22X1Y0BycrIiIiJ0+fLlTNfWbzyYHgCAu2Vf2EmenfvlSr/WvPDCCzp8+LDat2+vtLQ0NWjQQC+88IJCQ0P1ySef6MyZM3rmmWc0ePBgFSlSRF5eXmrZsqUKFy6sqlWrqmHDhnr22Wdv+9jWffv23bK+1q1ba926dXrppZckSVWqVNGAAQP02muvKSMjQ1WrVtUbb7whR0dHjRo1St27d1fhwoX19NNP52jbrT62tV+/fjp//ryeeeaZTN9fnzRpUo5WBGMraI+2lKRR/RrJ0SY9v8uwuNvv1SJ/FbT3No9thTVWj9iPHTumTZs2ycbG6gB6oEAxpyQpugD9AXyYv1cLIO9YTetHH31UaWlpeVELAAC4R1kesS9atEiSVLp0aXXt2lUvvvii7O3tLcu5xg4AQMGTZbAfPXpUklS0aFEVLVpUJ0+ezLOiAADA3cky2BkcBwDAg8fq4LnGjRtnGg1vMplUuHBhVapUScOHD5eLi0uuFggAALLParA3adJEiYmJeuWVV2RjY6OVK1cqMTFRlStX1pgxYzRv3ry8qBMAAGSD1VHx+/bt04QJE+Tu7q4qVapo1KhROnbsmLp3765z587lRY0AACCbrAZ7YmKiEhISLNMJCQlKTk7O1aIAAMDdsXoqvn379urUqZNeeuklmc1mRUREqGPHjlqyZImeeuqpvKgRAABkk9Vgf+ONN+Tu7q7t27fLzs5Oo0ePlo+Pjw4ePKi2bdvmRY0AACCbsgz248ePq2LFijp06JBKliypNm3aWJYdOnRI1apVy4v6AABADmQZ7FOnTtX8+fP11ltv3bLMZDLp+++/t9p5eHi45s6dq9TUVHXv3l2vvPJKpuVbtmxRSEiIzGazypUrp0mTJql48eJ3sRkAAEC6Q7DPnz9fkrR169a76jg2NlYzZsxQWFiYHBwcFBgYKG9vb8vj5xISEhQUFKRVq1bJ1dVVs2bNUkhIiOWB8wAAIOeyNSp+3Lhxeu211xQfH68xY8YoMTHRaseRkZHy8fFRiRIl5OTkpObNm2vjxo2W5ampqQoKCpKrq6skqXLlyrd9OD0AAMg+q8E+fvx4FStWTJcuXZKjo6MSEhI0ZswYqx3HxcWpdOnSlmkXFxfFxsZapkuWLKkmTZpIkpKTk7VgwQLLNAAAuDtWR8UfPnxYkyZN0vbt21W4cGFNmzZNLVu2tNqx2Wy+Zd7Nt6a94e+//1a/fv1UpUqVHI2yP3ToEN+nL0AcnR7RxYsX87uMTNLS03ThwoX8LsPi6tUrOhpzPr/LQA4VtPd2QXtfS9l7b9euXTuPqoHVYLexyXxQn56efsu823F1ddW+ffss03FxcbfcVz4uLk49e/aUj4+PRowYkd2aJUkeHh45ao/cdebcZZUqVSq/y8jEztYu01mj/ObsXFxuldzzuwzkUEF7bxe097XEe7ugsZrQdevWVXBwsJKTk/XDDz/orbfekre3t9WOfX19FRUVpcuXLyspKUkRERFq2LChZXl6err69OmjFi1aaOTIkbc9mgcAADlj9Yj93Xff1YIFC1SsWDHNmDFDDRo0UL9+/ax27OrqqsGDB6tbt25KTU1Vhw4d5Onpqd69e2vgwIE6f/68fv31V6Wnp2vTpk2SpGrVqmnChAn3vlUAADykrAa7vb29+vfvr/79++e484CAAAUEBGSat3DhQklS9erVdeTIkRz3CQAAspZlsL///vtZvshkMmnixIm5UhAAALh7WQZ7pUqVbpn3119/afHixXJzc8vVogAAwN3JMth79OiRaToyMlLDhg1TQEAAd4cDAKCAsnqNPS0tTR999JFWr16toKAgvfTSS3lRFwAAuAt3DPbTp09r8ODBcnJy0urVq1W2bNm8qgvAHVyOT1RC4vX8LsOiaBFHPVKiSH6XAUB3CPaVK1dq6tSpev3119W3b9+8rAmAFQmJ1zV93ub8LsPinT5NCXaggMgy2EeNGiUbGxstWLDA8hU16Z9bxZpMJv388895UiAAAMi+LIM9O89bBwAABUuWwc5X2gAAePBYf5oLAAB4YBDsAAAYCMEOAICBWL1BDe6v5Kt/KTXpWn6XYWFf2EmFnEvmdxkAgPuEYM9jqUnXFL18Tn6XYeHZuR/BDgAGwql4AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBACHYAAAyEYAcAwEDs8ruA3HQ5PlEJidfzu4xMiiotv0sAABiYoYM9IfG6ps/bnN9lZDKy17P5XQIAwMA4FQ8AgIEQ7AAAGAjBDgCAgRDsAAAYCMEOAICBEOwAABgIwQ4AgIEQ7AAAGAjBDgCAgRDsAAAYCMEOAICBEOwAABgIwQ4AgIEQ7AAAGAjBDgCAgRDsAAAYCMEOAICBEOwAABgIwQ4AgIEQ7AAAGAjBDgCAgRDsAAAYCMEOAICBEOwAABgIwQ4AgIEQ7AAAGAjBDgCAgRDsAAAYCMEOAICB2OV3AQAefE42Kfo79lx+l5GJfWEnFXIumd9lAHmOYAdwz8wpSYpe+2l+l5GJZ+d+BDseSrl6Kj48PFx+fn5q2rSpli1blmW7YcOGKSwsLDdLAQDgoZBrwR4bG6sZM2boq6++0tq1a7V8+XL9/vvvt7Tp06ePNm7cmFtlAADwUMm1YI+MjJSPj49KlCghJycnNW/e/JYADw8P14svvqgWLVrkVhkAADxUcu0ae1xcnEqXLm2ZdnFxUXR0dKY2vXr1kiT99NNPOe7/0KFDSk5OvmMbR6dHdPHixRz3nZvS0tN04cKF/C7D4urVKzoac/6e+2FfW3e/9rVU8PZ3QdvXknHf2w/qvq5du3YeVYNcC3az2XzLPJPJdN/69/DwsNrmzLnLKlWq1H1b5/1gZ2uX6QNPfnN2Li63Su733A/72rr7ta+lgre/C9q+loz73jbyvsb9kWun4l1dXTN9yo2Li5OLi0turQ4AACgXg93X11dRUVG6fPmykpKSFBERoYYNG+bW6gAAgHL5iH3w4MHq1q2b2rRpo5YtW8rT01O9e/fWL7/8klurBQDgoZarN6gJCAhQQEBApnkLFy68pd3kyZNzswwAAB4a3CseAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAMh2AEAMBCCHQAAAyHYAQAwEIIdAAADIdgBADAQgh0AAAPJ1WAPDw+Xn5+fmjZtqmXLlt2y/PDhw2rfvr2aN2+ukSNHKi0tLTfLAQDA8HIt2GNjYzVjxgx99dVXWrt2rZYvX67ff/89U5uhQ4dq9OjR2rRpk8xms1asWJFb5QAA8FCwy62OIyMj5ePjoxIlSkiSmjdvro0bN2rAgAGSpHPnzik5OVleXl6SpHbt2mn27Nnq0qWL1b7NZrNSUlKstktPS1URp1zbxLuSlp4uk6NTfpdhkZqWpuvXr99zP+xr6+7XvpYK3v4uaPtaMu57+0He1w4ODjKZTHlQ0cMt196tcXFxKl26tGXaxcVF0dHRWS4vXbq0YmNjs9V3SkqKDh48mK227Zo9mb2C88gff12RY52X8rsMi5PnL0rnL96XvtjXd3Y/97VUsPZ3QdvXknHf2w/yvq5WrZocHR3zoKKHW64Fu9lsvmXezZ/UrC2/EwcHB1WrVu3uiwMA5DkHB4f8LuGhkGvB7urqqn379lmm4+Li5OLikmn5xYv//wnvwoULmZbficlk4lMfAAC3kWuD53x9fRUVFaXLly8rKSlJERERatiwoWW5m5ubHB0d9dNPP0mS1qxZk2k5AADIOZP5dufE75Pw8HDNnz9fqamp6tChg3r37q3evXtr4MCBql69uo4cOaJRo0YpMTFR7u7umjRpEqdqAAC4B7ka7AAAIG9x5zkAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGDPQwkJCWrZsqViYmLyuxRD+/jjj+Xv7y9/f39NnTo1v8sxtFmzZsnPz0/+/v5atGhRfpfzUJgyZYqGDx+e32WgACPY88iBAwf08ssv69SpU/ldiqFFRkZq586dWr16tdasWaNDhw5p8+bN+V2WIe3Zs0c//vij1q1bp1WrVmnJkiU6ceJEfpdlaFFRUVq9enV+l4ECjmDPIytWrNAHH3yQ7dvm4u6ULl1aw4cPl4ODg+zt7VWxYkX98ccf+V2WIT377LP68ssvZWdnp0uXLik9PV1OTgXrqWNGEh8frxkzZqhPnz75XQoKuILzLEKDmzBhQn6X8FCoVKmS5edTp05pw4YNCg0NzceKjM3e3l6zZ8/W559/rpdeekmurq75XZJhjRkzRoMHD9aff/6Z36WggOOIHYZ07Ngx9ejRQ8OGDdOTTz6Z3+UY2sCBAxUVFaU///xTK1asyO9yDOmbb75R2bJl9dxzz+V3KXgAcMQOw/npp580cOBAjRgxQv7+/vldjmEdP35cKSkpqlq1qgoXLqxmzZrpt99+y++yDGnDhg26cOGCWrdurStXrujatWuaOHGiRowYkd+loQAi2GEof/75p/r3768ZM2ZwdJPLYmJiNHv2bH399deSpO+//17t27fP56qM6eZvHISFhWnPnj2EOrJEsMNQPvvsM12/fl2TJ0+2zAsMDNTLL7+cj1UZU6NGjXTgwAG1adNGtra2atasGWdIgAKAp7sBAGAgDJ4DAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2GFp6eroWLVqkdu3aqXXr1vLz81NwcLBSUlLuqd8ePXro8uXLOXrN7t271bJly3ta7w0hISEaN26cJKlx48b65Zdfsv3anLYH8GAh2GFoQUFB2r9/vxYvXqy1a9dq5cqVOnnypEaOHHlP/e7ates+VQgA9xc3qIFhnT17VuHh4dq5c6eKFi0qSXJyctLYsWO1f/9+SVJKSoqmTZumvXv3Kj09Xe7u7ho1apSKFi2qxo0bq23btpb7oLdo0ULvvfee3n//fUnSa6+9pgULFuiVV16Rp6enfvvtN73zzjuys7PT/PnzlZKSosuXL6tNmzYaNGjQHWtduXKlFi1aJBsbG5UsWVJTpkxR2bJltXXrVs2dO1epqakqVKiQhg0bppo1a2Zr+0+ePKkxY8bo8uXLsrGxUd++feXn52dZnpGRoYkTJ+rAgQNKTEyU2WzW+PHjVbt2be3bt0+TJ09WRkaGJOnNN99U8+bNs5wPoAAxAwa1ceNGc/v27e/YJiQkxDx58mRzRkaG2Ww2mz/66CPzBx98YDabzeYXXnjBPHnyZLPZbDafP3/eXL16dfOZM2fMZrPZ/Mwzz5gvXbpkaffxxx+bzWazOSMjw/zqq6+aT548aXld1apVzZcuXTL/+OOPZn9//1tqOHz4sNnb29v8xx9/mM1ms3nRokXm0aNHm0+ePGlu2bKl+fLly2az2Ww+evSouV69eubExETz7NmzzWPHjrWsPzo6+pZ+27RpY166dKnZbDab//jjD/OLL75o/vvvvy3tf/75Z/Nbb71lTk9PN5vNZvP8+fPNb775ptlsNpu7detm/vbbby31BQUF3XE+gIKDI3YYlo2NjeXIMivbtm3T33//rcjISElSamqqHn30UcvyF198UZLk6uqqRx99VFeuXNHjjz9+Sz916tSRJJlMJs2bN0/btm3Tt99+q+PHj8tsNispKSnLGqKiolS/fn2VLVtWktS9e3dJ0rJlyxQXF2eZvtH/mTNnrG57fHy8jhw5oo4dO0qSypYtqy1btmRqU7NmTRUvXlyhoaE6e/asdu/erSJFikiSWrRooXHjxmnr1q3y9fXVO++8c8f5AAoOrrHDsDw9PXXixAklJCRkmh8bG6s33nhDycnJysjI0IgRI7R27VqtXbtW33zzjWbNmmVp6+joaPnZZDLJnMUdmJ2cnCRJ165dU9u2bXXo0CG5u7vrvffek52dXZavkyRbW1uZTCbLdHJyso4fP66MjAw999xzltrWrl2rFStWZHrmfFbs7OwsNd9w4sQJJScnW6a3bdumN998U9I/H2Buvp9+YGCg1q1bp3r16mnnzp1q1aqV/v777yznAyg4CHYYlqurqwICAjRixAhLuCckJCgoKEglSpRQoUKFVL9+fS1btkwpKSnKyMjQ6NGjNX36dKt929raKi0t7Zb5p0+fVkJCggYNGqTGjRtrz549lr6z4u3traioKMXFxUmSQkNDFRwcLB8fH+3atUvHjx+XJG3fvl2tWrXS9evXrdZXtGhReXh4aM2aNZL+eerdyy+/nCmEd+3apRdeeEFdunRR9erVtWXLFqWnp0v6J9gPHz6sdu3a6cMPP9TVq1d15cqVLOcDKDg4FQ9D++CDDzRnzhwFBgbK1tZWKSkpatKkid566y1JUr9+/TRlyhS1bdtW6enpqlq1qoYPH26136ZNm6pLly6aM2dOpvmVK1fW888/rxYtWsjZ2Vnly5fX008/rdOnT8vBweG2fVWuXFlDhw5Vr169JEmlS5fWxIkT5erqqnHjxumdd96R2WyWnZ2d5s6dazk7YM1HH32ksWPHasmSJTKZTJowYYJKly5tWR4YGKh3331XAQEBsrW1VZ06dRQREaGMjAy9++67mjhxombOnCkbGxsNGDBA5cqVy3I+gIKDp7sBAGAgnIoHAMBACHYAAAyEYAcAwEAIdgAADIRgBwDAQAh2AAAMhGAHAMBA/g8/E0sxDuv/vQAAAABJRU5ErkJggg==\n" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "
", - "image/png": "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kJCg8+fPW9//o/62p0+f1jvvvGOddnBw0LBhwyRJJ0+e1IkTJ/Tjjz9alycmJtocHOjj46Nly5apadOm8vDwUP369dW2bVtrAN+vYsWKMpvN+vXXX3XlyhV5enqqWrVqOnDggLp166bQ0FDNnj37keu7J1euXNZQl+5uywsXLqT6vu//TEuy/q327dtnnZc/f3516NBB3333nY4fP65z587p999/V3JysiSpbt268vT0VIcOHfTyyy+rfv36atOmjdzc3FSmTBk1adJEAwYMUJEiRfTaa6+pZcuWj/x7SNKuXbs0YMAAvf7669YfEIBEsBvenTt3dPbsWfXo0eOBZdWqVdOOHTu0a9cu7dq1S0FBQVq2bFmq50ednZ1trs/R0dH673sDl5ycnFKEyj0PC92HSW00c3JysvWL8956/ulhg6fS2p8tqa3v3nnfr776Ss8991yK5Q8btWw2m22u9/69w/vXldrye/2ZzeaHvt97y+/Vautv6+TklOpAtKSkJHXp0kV+fn6P7OOfnnvuOa1fv1779u3Tzp07FRISoiVLlmjp0qUqXbp0irZms1m1atXS3r17deXKFVWvXl3Vq1fXN998o6NHjyohIcF6dMSWh23L1Dzqfd8vIiJC7du3V/HixVWvXj15e3vr77//1kcffSRJypYtm77//nsdPnxYO3fu1Pbt27V06VLNmzdPtWvXVlBQkI4fP67/+7//044dO7Rs2TJNnDgx1cscN2zYoKFDh6pZs2aaMmVKut4TjI9Pg8GtXr1aZrNZ9evXf2DZ119/rUOHDsnb21tTpkzRihUrdOrUKf3xxx8PDWJbkpKSUlx3fvjwYbm4uOiFF16whuD9g+ceNijtYUqUKKGEhAT99ttv1nm3b9/W8ePH9fLLL6e7zqfd3z8VK1ZMZrNZ169f14svvqgXX3xRL7zwgmbPnq1ff/31gfYlS5bU0aNHrdNJSUnW6/nTKiIiQlFRUdbp//73vypSpIhcXV1VokQJ/frrrykC6vDhw3JyckrzqP+XXnopxeFqi8WiFi1aaPPmzSpRooTOnz9vfa8vvvii9uzZo6VLlz6yz507d2rJkiWqVauWPv74Y23atEm5cuXSrl27Htq+Xr162rNnjw4dOqRq1aqpQoUKunPnjhYtWqTatWs/9AjB43yO//m+7//bSHdPq0yZMiXFvPXr18tsNuvrr79Wjx49VKdOHV2+fFnS3W11+PBhBQUFqXLlyho0aJBCQkJUtmxZbdmyRadPn9aECROsp1CWL18ub29vbdiw4aE17d69W0OGDFGbNm0UEBCQ4sc0IBHshhITE6MrV67oypUrOnPmjJYsWWIdlPWwy6siIiI0fvx4HThwQBcvXlRwcLBy5syp4sWLy9XVVdLdQVuPGjF8P5PJpI8//lhhYWHas2ePAgIC1LVrV7m4uKhkyZLKli2b5s+fr4sXL2rlypXWkfr3uLq66uTJkykCSrr75dqkSRONHDlSBw8e1B9//KFhw4bJbDY/8hxuap52f/+UI0cOderUSRMnTtTOnTt1/vx5+fv76//+7/9UsmTJB9p369ZNy5cv17p163TmzBnrWIf0hFJSUpIGDx6s48ePa+vWrZo/f7569eol6e653vDwcE2YMEGnT5/Wzp07NWXKFLVu3TrN1+h369ZNy5Yt07p163T+/HkFBgbq6tWrqlatmrp3764dO3Zo3rx5On/+vDZu3KiAgAC5u7s/sk+LxaLp06frxx9/1KVLl7RlyxZduXLlgUPf99StW1dhYWG6ePGiKlasKGdnZ1WoUEHr169/6A9XSdbP8dGjRx/rRjKdOnXSyZMnNWvWLJ07d07r1q3T2rVrHzif7+7urqtXr2rHjh0KDw9XcHCw9eqC+Ph4Zc+eXfPnz9c333yj8PBw7d69W6dPn5anp6dy586tVatWafr06bp48aJ++eUX/fe//5Wnp+cD9cTFxWn48OGqVKmS3n//fV27ds36//z9A0nxbONQvIHMmDHDOtI5T548evnllzVx4kTrgLJ/GjhwoGJjYzVo0CDduHFDpUuX1vz5861f9u3bt9eoUaPk5+enMmXK2Fx/9uzZ1bZtW7377rtKTExU69atrZfW5cyZU5MmTdKMGTP0ww8/qFatWtYb4NzTo0cPffbZZ/r111/18ccfp+h70qRJmjx5svr06aPExERVq1ZNS5cufezrwZ92f/80dOhQmc1mjRgxQtHR0SpTpoy++OILvfDCCw+0bdKkiS5evKipU6cqOjpazZo1U6VKlR56qD81JUqUULly5fTmm2/K2dlZ3bp1sx4ad3d31xdffKHAwEC1atVKefPmla+vr/r165fm/ps3b64rV65o1qxZunbtmsqUKaMFCxYoX758ypcvn+bMmaM5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\n" - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "outputs": [], "source": [ "import pandas as pd\n", "\n", "data = pd.DataFrame(columns=['type', 'cell', 'neighbor', 'proportion'])\n", "for ci in range(0, len(trans_props)):\n", " for cj in range(0, len(trans_props)):\n", - " ek = sorted([ci + 1, cj + 1])\n", - " others = [bond_dist[min(ek[0], i), max(ek[0], i)] for i in range(1, len(trans_props) + 1)]\n", - " expected = bond_dist[ek[0], ek[1]] / sum(others)\n", - " observed = trans_props[ci, cj]\n", + " expected = cell_dist[cj + 1]\n", + " observed = neighborhood_dist[ci + 1][cj + 1]\n", " data = data.append({'type': 'expected', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': expected}, ignore_index=True)\n", " data = data.append({'type': 'observed', 'cell': ci + 1, 'neighbor': cj + 1, 'proportion': observed}, ignore_index=True)\n", "\n", @@ -1076,19 +723,20 @@ " sns.set_theme(style=\"whitegrid\")\n", " # Draw a nested barplot by species and sex\n", " g = sns.catplot(\n", - " data=data[data.neighbor==cls], kind=\"bar\",\n", - " x=\"cell\", y='proportion', hue=\"type\", ci=None,\n", + " data=data[data.cell==cls], kind=\"bar\",\n", + " x=\"neighbor\", y='proportion', hue=\"type\", ci=None,\n", " palette=\"dark\", alpha=.6, height=6\n", " )\n", " g.despine(left=True)\n", - " g.figure.suptitle(f\"Distribution of neighbor cells with class {cls}\")\n", - " g.set_axis_labels(\"Central cell class\", f\"Neighbors of class {cls}\")\n", + " g.figure.suptitle(f\"Distribution of cells of class {cls}\")\n", + " g.set_axis_labels(\"Neighbor cell class\", f\"Number\")\n", " g.legend.set_title(\"\")" ], "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1117,21 +765,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'cactice.stats'", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mModuleNotFoundError\u001B[0m Traceback (most recent call last)", - "Input \u001B[0;32mIn [15]\u001B[0m, in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mcactice\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mrns\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m RNS\n\u001B[1;32m 2\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mcactice\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mgrids\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Neighbors\n\u001B[1;32m 4\u001B[0m rns \u001B[38;5;241m=\u001B[39m RNS(neighbors\u001B[38;5;241m=\u001B[39mNeighbors\u001B[38;5;241m.\u001B[39mCARDINAL)\n", - "File \u001B[0;32m~/dev/cactice/cactice/rns.py:9\u001B[0m, in \u001B[0;36m\u001B[0;34m\u001B[0m\n\u001B[1;32m 6\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mnumpy\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mnp\u001B[39;00m\n\u001B[1;32m 8\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mcactice\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mgrids\u001B[39;00m\n\u001B[0;32m----> 9\u001B[0m \u001B[38;5;28;01mimport\u001B[39;00m \u001B[38;5;21;01mcactice\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mstats\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m \u001B[38;5;21;01mstats\u001B[39;00m\n\u001B[1;32m 10\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mcactice\u001B[39;00m\u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mgrids\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Neighbors, get_neighborhood\n\u001B[1;32m 13\u001B[0m \u001B[38;5;28;01mclass\u001B[39;00m \u001B[38;5;21;01mRNS\u001B[39;00m:\n", - "\u001B[0;31mModuleNotFoundError\u001B[0m: No module named 'cactice.stats'" - ] - } - ], + "execution_count": null, + "outputs": [], "source": [ "from cactice.rns import RNS\n", "from cactice.grids import Neighbors\n", @@ -1141,7 +776,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1164,7 +800,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1192,7 +829,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1225,7 +863,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1253,7 +892,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1276,7 +916,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1304,7 +945,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1335,7 +977,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1367,7 +1010,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1390,7 +1034,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1418,7 +1063,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1460,7 +1106,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1483,7 +1130,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }, @@ -1515,7 +1163,8 @@ "metadata": { "collapsed": false, "pycharm": { - "name": "#%%\n" + "name": "#%%\n", + "is_executing": true } } }