{ "cells": [ { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import json\n", "import itertools\n", "import pathlib\n", "\n", "import geojson\n", "import scipy.stats\n", "import toolz\n", "import toolz.curried\n", "import pydash\n", "import numpy as np\n", "import seaborn\n", "import matplotlib.pyplot as plt\n", "import cartopy\n", "import cartopy.crs" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "with open('/Users/baart_f/Downloads/BOX099_transects_rates.json') as f:\n", " features = geojson.load(f)\n", "with open('/Users/baart_f/Downloads/BOX187_transects_rates.json') as f:\n", " features = geojson.load(f)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{\"coordinates\": [[17.966394475619165, 54.8245417781275], [17.96443101967979, 54.834828544733064]], \"type\": \"LineString\"}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features['features'][0]['properties'].keys()\n", "features['features'][0]['geometry']\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sand_features = list(toolz.filter(lambda x: pydash.get(x, 'properties.flag_sandy') == 'True', features['features']))\n", "grouped = toolz.groupby(\n", " lambda x: pydash.get(x, 'properties.country_id'),\n", " sand_features\n", ")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "\n", "for country, country_features in grouped.items():\n", " path = pathlib.Path(country).with_suffix('.json')\n", " if path.exists():\n", " with path.open() as f:\n", " data = json.load(f)\n", " else:\n", " data = {}\n", " change_rates = [\n", " pydash.get(feature, 'properties.change_rate')\n", " for feature\n", " in country_features\n", " ]\n", " coordinates = [\n", " pydash.get(feature, ['geometry', 'coordinates'])\n", " for feature\n", " in country_features\n", " ]\n", " rates = np.ma.masked_equal(change_rates, -999)\n", " freqs, bins = np.histogram(rates[~rates.mask], bins=np.linspace(-20, 20, num=51))\n", " summed_freqs = data.get('freqs', np.zeros_like(freqs)) + freqs\n", " data['freqs'] = summed_freqs.tolist()\n", " data['coordinates'] = data.get('coordinates', []) + coordinates\n", " # just overwrite verytime\n", " data['bins'] = bins.tolist()\n", " data['country'] = country\n", " with path.open('w') as f:\n", " json.dump(data, f)\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "path = pathlib.Path('GAB').with_suffix('.json')\n", "path.exists()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nYrPZ9MQTT5i6zouRlpam7du365dfflFWVpZrFulUzPn7+7uioXXr1rriiisUHh5+0THQqFEjtWvX\n7pyP5+fn65tvvtHjjz+u++67r9J3Wc3Ly7vg/99gLgIDQJ1TWlqqnTt36qOPPlJYWJhuu+02NW3a\nVJ6ennr55ZeVk5Pj2oKRmZmpTZs2yTAMBQcH669//auaNm16xjoTEhIUHR2tV199VUVFRSovL1fH\njh1111131aszDAoKCvTrr79q+/btOnz4sOvnERERio2N1d13323J7cwDAgJ00003aeDAgRo7dqzi\n4uJct3q/GDabTee7NQbMR2AAqHUcDoeOHDmiw4cP69ChQzpx4oScTqfrA8LLy0tt2rTRpEmTzjhg\nLzk5WX/729+qdDXGtm3basKECaa8h+pgGIbKyspUWlqq0tLSCt//9utsP4+OjlaHDh0qbFHJzc3V\nihUrtHv3bpWWlkqSGjRooMsuu0z9+/dXixYtTN8Cc6nsdruGDRumxYsX66677rro5xEYNY/AAGCZ\nzMxMvf766yovL6/wx9/X11fNmjVTy5Ytdf311ysqKqrCpvbCwkJ9//33mjVrlsrLyytsqm/VqtUl\nnaVRU44cOaJly5YpNTVVdrv9nB+Ap88OOc3T01NeXl7y8vKq8P3Zvk4/7uPjo40bN+qtt97SDTfc\noObNm2vJkiUqKSnRn/70Jw0aNKhSWwOs1r17d3300UcERi1HYACoMWlpadqwYYN+/vlnORwO+fr6\natSoUYqIiDjnc/Ly8rR69Wrt2rVLaWlpMgxDvr6+6tu3r5566in5+PjU4DuoOsMwtGXLFq1YsUJ5\neXlq3ry5Bg0adMaxINXlyiuv1N13363Vq1dr8+bNGjlypCW7OszSsWNH7dix46IPdCUwah6BAaDa\nGYahcePGqXnz5urVq5eefPLJM644eVpJSYl+/PFHfffddyoqKlJgYKB69+6tO++8UxEREbVuk/25\nlJSUaNGiRdq2bZt8fHzkdDoVGxurRx99VEFBQZbMZLfb1b9/f0te22xDhgzRCy+8oKSkpItansCo\neQQGgGr3ySefaODAgbrmmmvOeMzpdGrbtm1avXq1MjMz5eXlpd69e+vxxx+v9A25rFZcXKyNGzdq\nzZo1ys/P12233aahQ4daPZZbOv3fRkFBwUX9dxIZGam9e/dW91j4DQIDQLXr0qWLFixYoNjYWHl6\neiorK0urVq3S4cOHZbPZFBcXp3vuuafObbIvKCjQjz/+qB9//FFFRUXy9vZWz5499eijjyo4ONjq\n8dzeXXfdpYULF+qBBx644LJ+fn6Kjo7W7t271b59+xqYDrbzbTKaMmWKMWXKlJqbBoDb2rBhg376\n6SeVlZUpKChI/fr1U8uWLa0eq1Kys7P1ww8/aOPGjSorK5O/v7969+6tyy+/XP7+/laPVy+9/PLL\nSktL0x133KFu3bqdd9ni4mI99thj6tWrlwYOHFilM41Qkc1mSzIMY8pZHyMwAODs0tPTtWbNGm3b\nts11HY2+ffuqW7dudeqsC3dXUlKihQsXavv27UpKSrrgvUb27dun5cuXuy6gdtr5jtMwDEMeHh7y\n9vaWl5eX6//+9vvAwED16NGjXl03hcAAgEo4ceKE3nzzTQUEBOi6665T586dq3R5atSs48eP65VX\nXpGvr6/atm2rPn36KCYmxrT1l5eXq7S01HVju6+++krffPONHA6HSktLFRgYKMMw1LhxYzmdTg0b\nNqxWXc69OpwvMDgGA0ClGYahDRs26Msvv5RhGDIMQwEBAYqIiFBCQoJatWpl9YgXxTAMnThxQseP\nH9eJEyd04sQJHT16VA0bNtTYsWM5jqKOiY6O1gsvvCCn06n9+/fr+++/13vvvaewsDANHjxYTqdT\neXl5rl0phw8fVlpamnr27HlR6/fw8JCHh4e8vLw0c+ZMXX755Xr99dfl5eUlp9OpY8eOad26ddq8\nebMiIyM1Z84c3XPPPbryyiur823XWgQGgIu2c+dOLVmyRHl5eerZs6cefvhhbdmyRd9//71SU1O1\nfft2eXp61vrAOHDggN555x15enqqadOmatq0qVq0aKE+ffpU6v4ZqJ3sdrtiYmJcWy8yMjL02Wef\nydvbW06nU4sXL5bdbte+ffsUFBR00YEhndod89RTT+mhhx6qsHXCbre77nszZMgQHT9+XIsWLdKb\nb76p2NjYenkfFAIDwHmVl5dr/vz52rlzpzp16qRHH31UX331ldavX6+9e/eqd+/eeuaZZ+rMMQkf\nfPCBUlNTlZiYeM5rccC9hIeH68EHHzzj56NHj9Yrr7xSqXU5HA55enpecNdHdHS0HnvssUqt290Q\nGADO6b///a+WL1+ue++9V8OHD9f27ds1efJkDR48WDNnzrR6vEopKSnRzJkz1a1bN913331Wj4Na\nICEhQVu3br3g2Se/FRQUVOHAUJwbvyUAZ9i+fbvee+899e/fXy+//LJOnjypxMRENWnSRC+++GKd\n+QNrGIb279+vVatW6ddff9WYMWPUtm1bq8dCLREfH6+5c+cqNDT0ok+ZXrp0qeLi4qp3MDdRN/5K\nAKgROTk5mjVrllq0aKFZs2bJZrNp3rx5OnLkiB577LE6cyGsnJwcvfHGG8rLy1Pbtm113XXXaeTI\nkVaPhVqmXbt2mjRpkhYvXqwjR47I09NTUVFR6tChgzp06KDIyEjXpenLy8v1xhtvyMvLS3/5y18s\nnrxuIDAASJK2bdumefPmKTExUWFhYTp27JhmzJihESNG6KGHHrJ6vItiGIbmz5+v3bt3a/To0WrS\npInVI6GWa9SokUaNGiXp1H8/ycnJ2rVrlxYvXqzU1FQZhiG73a7i4mLdddddio+Pt3jiuoPAAKAF\nCxboxIkTmjNnjux2u3bu3Km3335bs2fPrjMHQmZmZmr69Om65ZZbdO+991o9Duogm82mqKgoRUVF\nnfW+OagcAgOo52bOnKnt27dr9uzZys3NdW0Gnj17dp05XfPXX3/Ve++9p8mTJ9fL0wGB2ojAAOq5\n8ePHa+fOnfrkk0+UnZ2thx56qE7do6G0tFRvvvmm5syZU2eCCKgPCAygnrPZbOrUqVOdvaTxq6++\nqtGjRxMXQC1DYAD10MmTJ/XCCy+4Lo7VpUsXDR482OKpKi8lJUWlpaXcfhuohQgMoJ7JysrSpEmT\nNH36dNfxCk8++WSdDIwFCxbo/vvvt3oMAGdht3oAADUnLy9PzzzzjJ577rkKB0MeOHBA5eXlFk5W\neU6nU2lpafXq1thAXUJgAPWEYRhKTExUUlLSGXcJnT59uqZOnWrRZFXz9ddf69prr7V6DADnQGAA\n9cSrr76qP//5z4qIiDjjsY4dOyomJkZr1661YLKq+d///qf+/ftbPQaAcyAwADd35MgRPf3002rW\nrNl5b0s9dOhQffnllzU4WdWlpKSoUaNGstv5EwbUVhzkCbip1NRUvf766woMDNSECRMUGBh4zmWL\ni4v173//u05c/8IwDL300ksaN26c1aMAOA8CA3BDixcv1vbt2/XYY48pNDT0gsu/9dZb+vbbb3Xz\nzTfXwHSX5tVXX9Wf/vSns+7qAVB7EBiAm/n444+Vn5+vxMTEi37OmDFjdN1112nFihXVOFnVFRYW\natOmTfryyy/Vo0cP9e7d2+qRAFwAgQG4kS+++EJFRUV64IEHKvW8vLw8zZ07Vy+99FI1TVY5mzZt\n0meffeY6xsLf31+xsbGaOnWqPD35swXUBfxLBdxEZmamvvvuO82YMaNSz8vJydHf//53JSUlua7s\naZWsrCzNmDFDnTt3VmJiIjEB1GH86wXcxMyZMzVx4sRKPSc9PV2JiYmaNm2awsLCqmmyCysvL9e/\n/vUv7dmzRxMnTlRISIhlswAwB4EBuIHjx4+refPmF/3B7HQ6tWTJEv3www964YUXFBAQUM0Tnp1h\nGPr888+1evVq3XPPPVz2G3AjBAbgBr777jtdffXVF1zO6XTq008/1bp16zR48GBLj7lYt26dFi5c\nqBtvvLHWHPsBwDwEBuAG0tPT5eXldd5lTpw4oenTp2vo0KGWfqDv3r1b77zzjrp3766XXnqJi2UB\nborAANzAqFGj9MQTT2jWrFny8/M74/GCggJNnz5ds2bNkr+/vwUTSsnJyXrttdfUpEkTTZ8+XT4+\nPpbMAaBmEBiAG/Dy8tKECRP0+OOPq0+fPrr66qvVsmVLpaena9u2bVq8eLEmTZpkSVzk5ubqtdde\nkySNGzfujButAXBPBAbgJpo2bao333xT+/bt08qVK3XkyBE1atRIsbGxeu6552r8g724uFjz5s1T\ncnKyHnnkEUVFRdXo6wOwFoEBuBGbzaaYmBjFxMRYNoPT6dRHH32kzZs368EHH1SHDh0smwWAdQgM\nwM3873//03fffafw8HA1btxYTZo0UePGjZWenq6UlBQNGjSo2l575cqV+vzzzzVkyBANHTq02l4H\nQO1HYABuZOXKlTp06JAmT56szMxMpaSkKCUlRWvXrpWPj4/WrFmjgQMHmnrFzsLCQn377bdasWKF\nrrnmGs2ZM0c2m8209QOomwgMwI2sWrVKzz33nGw2myIiIhQREaHY2FhJpy4JvmPHjirHRUZGhvbs\n2aP09HRlZGQoJSVFhYWF8vf3V9++fTV79mwu7Q3Ahb8GgJtwOp3y8vI659aDt99+Ww899FCl1ulw\nODRv3jwdP35ckZGR6tixo5o1a6auXbsqIiLirKfEAoBEYABu4+DBg2rduvU5H+/WrZveeustPfPM\nMxfcilFWVqb58+dr586dGjFihNq3b2/2uADcHIEBuIl9+/apbdu253y8f//+at26tZ566imFhoaq\n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\nRVwHAxeUnJysf//730pLS1Pfvn11ww03yNOz5tu0sLBQEydO1Jw5c84ZMZmZmXrllVcUHR2tESNG\nWDInANQXXAcDlVZaWqovvvhC69atU5MmTTRs2DBFRkZaNk9ycrI++OADGYahzMxMhYeHn3W5sLAw\nTZ06Vdu2bdPYsWP1pz/9SQkJCTU8LQCAwMAZ5s+fr127dummm27SjBkzLL8Y1datW/Xss89q4sSJ\niomJUUBAwAWfExcXpzlz5mjRokUaN26cxowZo+bNm9fAtAAAicDA7xw9elRHjhzR9OnTrR7FpXXr\n1rrrrru0efNmrVq1Svn5+WcsU15errZt2+rqq69WixYtJJ06qPSOO+7QjTfeqH/84x/Kz8/XLbfc\nou7du7uiyel0qry8/KzX0gAAVB2BgQqaNm2q9PR012mitUFgYKBuu+228y5jGIb27dunr776SkeO\nHJHdbtfw4cPVunVr+fv7a/z48XI4HFq2bJmWLVvmep7dbpeHh4eKi4vldDoVHR2tAQMGqG3bttX9\ntgDArXGQJ87w7bffasWKFXrqqafq7AWnioqK9MYbbyg3N1ejR48+5zEbv3fs2DH997//rXC7eMMw\n1K5dOw0aNOiids8AQH1xvoM8CQycVXJysl577TXX2Rje3t5Wj1QlmZmZ+sc//qHLLrtMt99+e5XX\ns337di1ZskRlZWUaP348oQEAOn9gcLMznFWTJk307LPPKiEhQU888YRycnKsHqlKwsLClJiYqOTk\nZK1du7bK64mNjdXkyZM1evRoTZw4UXv27DFxSgBwPwQGzqtTp06aNm2ann76aRUXF1s9TpWNHj1a\nn3zyiUpLSy9pPY0aNdLLL7+sd99916TJAMA9ERi4oNDQUI0bN05PP/10lW+VbjWbzaaHHnpI77zz\nziWvy9PTUxEREUpLSzNhMgBwTwQGLkqLFi304IMP6sknn9TBgwcv+nnl5eU633E+ZigoKFB5efkF\nl+vUqZNSU1NNCYPk5GQFBQVd8noAwF1xmiouWocOHTRp0iQtWrRIx44dk91ul81mU7NmzdS2bVs1\nbtxYJSUlSk5O1oYNG+RwOFzLnDx5UsOHD1fXrl1Nm+f48eN66aWXFBYWptLSUjmdTklSWVmZGjVq\npBEjRpxxMObYsWP19NNP695771W3bt1cd0stKytTZmam0tLS1KJFC1c8/PZ03bKyMu3fv19fffWV\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(\n", " subplot_kw=dict(\n", " projection=cartopy.crs.PlateCarree()\n", " ), \n", " figsize=(13, 8)\n", ")\n", "ax.set_extent([2, 8, 50, 55], cartopy.crs.PlateCarree())\n", "ax.coastlines('10m')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 4.61718773, 52.56825875],\n", " [ 4.59940751, 52.56982636]])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = pathlib.Path('NLD.json')\n", "data = json.load(path.open())\n", "# find plot point\n", "xy_line = np.array(data['coordinates'])\n", "x, y = xy_line[:, 0, 0], xy_line[:, 1, 0]\n", "\n", "x_gt_y = (x.max() - x.min()) > (y.max() - y.min())\n", "if x_gt_y:\n", " 1 + 1\n", " \n", "median = np.median(x)\n", "sort_idx = np.argsort(x)\n", "# np.searchsorted(x, median, sorter=np.sort)\n", "sorted_idx = np.searchsorted(x[sort_idx], median)\n", "idx = sort_idx[sorted_idx]\n", "xy_line[idx]" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.436197954948 0.513651749562\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/baart_f/.virtualenvs/main/lib/python3.5/site-packages/matplotlib/figure.py:1743: UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect.\n", " warnings.warn(\"This figure includes Axes that are not \"\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqcAAAI4CAYAAABX1UCSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8FHXixvFns+mBkEIKoUdq6BaQIgicIKKIIqKop2JB\nQP3pcYpKaCJdsAKnYjm80+OAO8DTQ0RFQMBGlY5ACJAG6X3L/P7IEY2Emk12svm8X699GXZmv/Ms\nd+LDd2a+Y5FkCAAAADABL3cHAAAAAM6gnAIAAMA0KKcAAAAwDcopAAAATINyCgAAANPwPt/GGTNm\nqLCwsKqyAAAAoAaYMmXKObdZdJ6lpCZNmqTJkydXQiQAAADUVBaL5ZzbOK0PAAAA06CcAgAAwDQo\npwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAA\nADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADAN\nyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikA\nAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABM\ng3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IK\nAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA\n06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06Cc\nAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAA\nwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQo\npwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAAADANyikAAABMg3IKAAAA06CcAgAAwDQopwAA\nADANb3cHAAAAQPXkcDg0dOhQtW3bVnfddZdq1aql5cuXKy0tTc8//7xq1659yWMycwoAAIDLYrVa\nNWbMGOXl5Wn27NnKzMzUjz/+KC8vL6Wmpl7WmMycAgAA4LL17dtXTZs2VXx8vOLi4vT3v/+9QuNR\nTgEAAFAhsbGx+uijj1wyFqf1AQAAYBqUUwAAAJgG5RQAAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG\n5RQAAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQAAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQA\nAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQAAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQAAACm\nQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQAAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQAAACmQTkF\nAACAaVBOAQAAYBqUUwAAAJgG5RQAAACmQTkFAACAaVBOAQAAYBqUUwAAAJgG5RQAAACmQTkFAACA\naXi7OwAAAACqH6fTqf379ysxMVHp6emy2WwKDg5W06ZN1apVK/n6+l7WuJRTAACAGiYzM1OHDx9W\nUlKS/P39FRgYqKCgIAUGBpb52cfHp9zPL1y4UElJSTpy5IhSUlIUGhqq0NBQRUREaOvWrcrPz5e3\nt7e6du2qAQMGnHOc8lBOAQAAPFx+fr7mzZsnm80mSQoJCVFsbKyio6NVVFSkrKwsJSUlKS8vT/n5\n+crLy1NGRob27t2r1NRUrV+/vsx4NptNdrtdRUVFWrNmjSQpJydHv/zyS+krNzdXr7/+ulauXKl3\n3333orNSTgEAADzYnj17tGDBAj3//PPav3+/mjVrpkaNGpW7r91u148//qjPPvtMknTnnXcqKCjo\nrP2efPJJFRUVKSEhofS92rVrq2PHjurYsWOF8lJOAQAATOLw4cNavny58vLyLulzhmGobt26GjZs\nmCIjI0vfP3jwoB555BG98847+stf/qLWrVtrz549SkhIUIsWLSRJBQUFysnJUUFBgaxWq6666iq9\n8MIL8vf3P+8x/fz8SsdwJcopAACACezevVsffvihnn32WYWFhZXZlpeXp0OHDunEiROyWq3y9vaW\nj49P6cvb21spKSkaNWqUHn74YQ0YMECS1KxZM02bNk0//vij/u///k9169aVVFJmExISZLVaFRAQ\noKCgIAUEBFT5dy4P5RQAAMAEli1bpkmTJpUpiS+//LKys7MVGBio5s2bq379+jIMQzabTTabTQUF\nBaU/22w23XffferWrVvp5y0Wi66//vqzjmWxWNSkSZMq+FaXjnIKAABQSYqKirRs2TLt379fFoul\n9P06dero/vvvV3h4eOl7LVu21N69e3XllVeWvpedna0XX3yxSjO7G+UUAADUeGlpaVq9erWOHTum\n4uLis7b/tlgahlH63pmff7tt9+7dmjRpktq3b6++ffsqPDxcHTp0kGEYatSokTp06CCr1arBgwdr\n9erVpTccDRo0SPPmzdOqVatKx2vdunVlfN0qYbfbdfr0afn4+Jx1mcL5UE4BAECNlJOToxUrVmjP\nnj2qW7eubr75Zt15553y8/O76DHsdru2b9+ujRs36tSpU5KkgQMHlp4y37hxY+m+hmHo2LFj2rFj\nh5KSkvTWW2+VuRM+MDBQ8fHxrvlyleBM2UxNTVVaWlrp6/Tp0zIMo0xplyQvLy/VrVtXRUVFysjI\nKN12ocsJKKcAAKDGGTZsmDZu3KgXXnhBTz31lCIjI2WxWOR0OnX69GmdOnWqzCstLU0FBQVnjWOx\nWNShQwfdc889ioiIOO8xLRaLGjdurMaNG1fW17okdru99Lv9tnCmp6eXFs3fFk6r1arw8HBFRkYq\nIiJC7dq1U2RkpEJDQ2W1Wi/qmE6ns8zyU+WhnAIAAI9RUFAgf3//Mqfhy/OPf/xDqamp2rNnj5Yt\nW6aUlBRZLBZ5eXkpNDRUdevWVUREhBo1aqQrr7xS4eHhCgwMdGlWwzBUUFCgjIwMORyOc649eqlj\nnjp1SkePHtXRo0eVlJSkjIwMOZ1OSWUvT/D29lZ4eLgiIiIUGRmpDh06KCIiQmFhYfLy8qpwlvJ4\neXmpadOm592HcgoAAEypoKCgzOzlmRnN9PR0ORyOcj/j7++vzMxMpaenKzAwUB07dtRtt92mkJCQ\nMvtZLBZFRUUpKipKvXv3rlDOoqIipaenKyMjQxkZGWV+zsrKKs16phj+9jrVwMBAhYaGlj6nfvTo\n0WrevPk5j2UYhlJTU0vL59GjR5Wfn19mn8jISDVu3FitWrVSnz59FBoaWmllszJQTgEAgNsVFxdr\n48aNWr9+vex2u5xOp4qKimS1WuXl5SUvL6/Sny0WS7lFz2KxqLCwUHXq1FGTJk0UFhZ2SaecL8aZ\n60Y3btyoffv2yTAMBQQEKDw8vPT58vXq1VNcXJxCQ0NVp06diz6+zWbTrFmzVFxcLH9/f8XExCg5\nObnM5QQWi0WRkZFq0qSJ2rVrp5tvvrncJzhVZ5RTAADgVn/5y180atQode/eXT179pSvr698fHxU\nv3790oL521dISIh8fHyqJJvdbtfOnTv17bffKjU1VZLUqFEj9ejRQ3fffbdLZyR9fHxKb4gqKChQ\nUlKSoqOjXX45gdlZJBnn2jhp0iRNnjy56tIAAACYgGEYWrFihTZs2KAePXqoW7duio6Odncsj3G+\na4KZOQUAAPiNhIQEvfbaa+rfv7/mzZvn7jg1DuUUAABAUnp6ut5//33ZbDZNmzbNNM+ar2kopwAA\noEZLTk7WG2+8oaCgIN13331q2LChuyPVaJRTAABQIxmGoSVLlmj37t167rnnVLt2bXdHgiinAADg\nMhmGoeTkZO3YsUO7du1STk5O6TJPhmEoMzNTI0aMUIcOHdwd9SwpKSmaNWuWBg4cqKlTp7o7Dn6D\ncgoAAC7I6XRq165d2rFjhw4fPlz6xKHo6Gh16NBBI0eOVHBw8FmfGTlypMaPH3/B56lXlSNHjujv\nf/+7nE6npkyZwmypCVFOAQDAee3YsUPvvfeeunfvrq5du+ree+8td33P06dP6+uvv9b27dslSVar\nVY0aNVJxcXFVRz7L5s2b9a9//UtNmjTRE088oTp16rg7Es6BcgoAAM7L29tbV111le68886ztm3c\nuFGrV6+Wl5eXQkJC1Lt3b91+++2melzmm2++KT8/P82ePfu862vCHMzz/xwAAGBKcXFxOnr0qNau\nXXvWNpvNpvz8fIWGhurhhx9Wp06dTFVMDcPQ8ePH9cgjj1BMqwlmTgEAwHlZLBZNnDhRixcv1vjx\n4xUVFaX8/HxlZWUpMDBQ4eHh+v7777Vlyxa9/vrrioqKcnfkUhaLRfn5+Tp06JCaNWvm7ji4CDy+\nFAAAXJLk5GQFBQWVuZkoOztbU6dOVVZWlt5++203pjtbUVGRFixYoNTUVLVt21YDBgxQWFiYu2PV\naOebxaacAgBQzc2cOVP5+flyOp0yDEMtWrRQ37591aBBA3dHMxXDMLR7927997//VVZWluLj4+Xv\n7+/uWDXS+cqpeS4KAQAAl+Xmm29WcXGxQkNDNXjwYF155ZX65JNPNH78eHXp0kVr1qxxd0RTsFgs\natu2rZ555hndd999ev/9990dCeXgmlMAAKq5tm3baubMmTp16pQ2bdqknTt3qqioSOnp6Ro3bpyu\nvvpqd0c0nejoaKWlpbk7BspBOQUAwEPUrVtXgwYN0qBBg9wdxdQ2bdqkDz74QDNmzHB3FJSDcgoA\ngJvZ7Xbl5OTIx8dHtWrVcnecau+TTz7RunXrVLt2bRlGya01hmHIy8tLwcHBstlsmj9/vnx8fNyc\nFOWhnAIA4EKGYejkyZPat2+fDhw4oOTkZEkqfd58eT9brVbVrl1bRUVFys3NlST16dNHvXv3ds+X\nqMZyc3P17bffau7cuWdtczgcSkpKUkxMjKnWYkVZlFMAACooLS1NX331lXbu3ClJatiwoVq3bq3B\ngwcrOjr6vHcmG4ahI0eOaNu2bdq9e7csFou8vLx08uTJqorvUdauXavbbrut3G1Wq5UVDKoByikA\nAJdp3759eu+99xQVFaUbbrhBQ4cOPe+MnMPh0P79+7V161YdPHiwdPa0adOm6tSpk2655Rb5+vpW\nVXyPY7fb9eWXX+q1115zdxRUAOUUAIDLMGnSJEVHR2vq1Kny8/M7a3tRUZF+/vlnbdu2TceOHZNU\nMnPXsmVLXXPNNbr77rtltVqrOrZHW7BggUaNGsUp+2qOcgoAqBIbN25UYWGhunfvLn9/f9lsNhUX\nF6uoqEjFxcXn/PlC28/8fGYW8resVqv69u2ra6+91uWFpUGDBmrVqpX8/PyUl5enbdu2adu2baXL\nE/n5+alt27bq16+fGjZsyHPdK9kvv/yigoICxcXFuTsKKohyCgCoVMePH9fcuXN13XXXKTQ0VPPm\nzZPNZpOvr2/py8/P75w/BwUFKSws7IL7llc+CwoK9OWXX2rChAmy2+3q16+f+vbt65Lv1alTJ61d\nu1aS9O9//1v9+/fXsGHDFBkZ6ZLxqwPDMJSdna3U1FTVqVNHdevWddus5XvvvaeJEye65dhwLcop\nAOCyFRcX68SJEzp27JjS09PLvRHlvffe04svvlj6HPbKugPdMAylpqbql19+0aFDh5SQkCC73S5J\n8vb2VlhYmBwOh8uOZ7Va9fPPP6tu3bqaO3euR82MFhQUKDk5WcnJyUpJSVFycrJSU1NLf//OfFfD\nMFSnTh1FREQoOztbaWlpZ81g+/n5KSYmpvRVv359hYaGujSvYRiyWCzlXl6B6odyCgAol9PpVFpa\nmo4dO6bExMTSAvrbEubj46P69evrs88+04033ljuOKmpqSooKCgtp+UpKCjQd999p927dyslJUUW\ni+Wiy95vy1BUVJSuuOIKdevWTXfffXelrmPZqVMnvf/++9VmrUybzabU1NQyhTM5OVlFRUWl+5xZ\n4iogIEDR0dGKjo5WkyZN1KVLF0VERMjb+9JrQ2FhoZKSknTy5Ent3btXa9as0enTp+Xt7a177rlH\nLVq0qPB3y8rKUnh4eIXHgTlQTgEA2rt3r5YvXy6bzVb6nsViUWRkpBo1aqQrrrhCvXv3VkhISJlZ\ns+PHj2vhwoV68skndd1115U79syZMzV+/Hjddddd6tSpk/z9/WUYhnbv3q0vvvhCp06dkr+/v7p1\n66Y77rhDkZGR1WYW0mzFNC8vT3v27NGuXbuUkJBQuvC8YRjy9vZWVFRUaels27atIiMj5e/vX6mZ\n/P391bRpUzVt2rTM+0VFRVqwYIFWrFihsWPHVujmsDMzp/AMFklnX0H+P5MmTdLkyZOrLg0AoEpt\n2bJFy5cvV4sWLXTvvfcqICCgdNuyZct05MgRFRcXl5bWMzNrZ07vNmzYUAMHDlT9+vXPexyHw6F/\n/etfOnjwoIqKiuRwONSmTRv94Q9/UEREROV9QQ9lt9t18OBB7dq1S/v37y/93ycwMFBt2rRRu3bt\n1KhRo2px1/q6deuUlZWlW2+99bLHyMrK0nvvvaenn37ahclQmc73lwlmTgHAgxUUFOjYsWNKSEjQ\n0aNHlZSUJKfTWXoqvE2bNpo5c2a5s1YnT55Uv379FBcXJ29v7wrNTFmtVg0dOvSyP19TGYahEydO\naNeuXfr555+Vk5MjqeT3s3nz5mrXrp0GDx5crddG7dWrl5599tkKlVOLxSKn0+nCVHAnyikAVENJ\nSUnKzc2Vt7e38vLylJCQoISEBKWkpJS5BjMgIECNGjVSkyZNdNNNN6levXpnFdGioiLt3btX2dnZ\nys3NVU5OjrKysnT48GE1a9ZMHTp0qOqvVyVOnTql9PR0FRUVqbCwUEVFRWV+/v0/bTZb6au8Zat+\n62JPMzudTtWuXVsjR45UcHBw6ft79uzRhx9+KG9vbzVo0EDt2rU7ax9PYbFYFBsbq8OHDys2Nvay\nx7jQ/yaoPiinAFCNnDhxQgsXLlR4eLgiIyNlt9sVEBCgxo0b6+qrr76o6zWdTqe2b9+ur7/+Wunp\n6fLz81OrVq0UHBys2rVrKzo6WsHBwXrggQeqxWnhi2UYhnbt2qX//ve/ysrKUmRkpCIiIuTn5yd/\nf//Sf9auXbvMr/38/OTn5ycfH5/Slyt/X06ePKnZs2fL19dX0dHROnjwoFq0aKFJkyZV+vWgZnHP\nPffotdde04QJEy7r85RTz0I5BQCTKigo0Pbt2/X9998rLS1NFotFdevW1bPPPnvRM2hZWVnavHmz\n9u3bp/T0dEklJa1jx4564IEHPP4OZ7vdrg0bNmjdunWy2WylM5AhISHujlYqJiZGL730kgoKCnTq\n1Ck98sgjNe7mnuDg4NKZ68tZDopy6lkopwBgMoZhaOLEifL391fHjh119913X/TC7oWFhdq8ebO+\n/fZbFRYWqk6dOurWrZv++Mc/KiwsrJKTu5dhGFq/fr3WrFlTehe9YRjq3r27xo8fb/rrMgMCAtSw\nYUN3x3CbIUOGaPny5Ro+fPglf5Zy6lkopwBgMsuXL9d1112nfv36XXBfh8NReoo+MzNTfn5+6tat\nm8aOHVvmzntPlp+fr48//lj79u1Tr1699OKLL/LM+mqoU6dO+vjjjy+rnPr4+Cg7O7sSUsEdKKcA\nYDIbN27Uiy++WO42wzB06NAhrV27VidOnJCXl5c6deqkhx56yOVP3TGrwsJCff/999q0aZNyc3Pl\n4+OjoUOH6qGHHnJ3NFRQXFycfv75Z7Vt2/aSPufj46Pg4GCdOHHigsuawfwopwBgMvHx8Zo4caKG\nDh0qq9Uqq9WqAwcOaM+ePZKk5s2b6+abb64xp4BzcnK0efNmfffdd6XXJHbu3Fljxow571OnUP0M\nGzZM06dPv+RyKkmjRo3S7Nmz9dJLL1VCMlQlFuEHABM6fvy49u3bJ7vdLpvNptjYWMXFxdWIG2XS\n09O1ceNGbd26VXa7XbVq1VK3bt3UuXPnGnP3ek322Wef6euvv1aLFi10zz33KDAw8KI/u3jxYh0+\nfFg9e/ZUjx49TH+dcU12vj/LKKcAALdKSkrShg0b9PPPP8swDIWGhqpHjx7q1KmT6R4Piqqzb98+\nLVq0SFdffbXuuuuui/5ccXGxNmzYoA0bNshms8nX11cWi0W+vr7y8fE55z8rsq0m/KXR1SinAABT\nOX36tN566y0VFBQoOjpaPXv2VJs2bTxqXVW4xmeffabNmzfrwQcfVNOmTS+rCDocjtIHKJx5HO+F\n/nkx+xQVFclut8tut0uSgoKCdM0116hz584e+cAEV+LxpQAAU8jOztbChQtVXFysxx57TBEREe6O\nBJO76aab1KlTJ61evVoffPCBJMnPz08DBw5Uhw4dLqqsnrl2u6KXhaxevVrr168vHU8qeaiFl5eX\nvLy81L17dzmdTs2cOVPXXnutBg0aVKHj1VSUUwCoBKmpqVq2bJkSExPPuu7Ny8tLnTt31oABA9yU\nrnIZhqGTJ08qISFBJ0+e1MmTJ3X69OnSdSgfe+wxxcTEuDklqpN69erpwQcfLP11bm6u/vOf/2jJ\nkiUKDg7WoEGD5HQ6tWPHDvXv37/0Lz3Z2dn6+OOPNXDgQDVo0KBCGd5//315eXlp+vTp5W4vLCzU\nypUrtXXrVjVo0EB79+5VamqqHn744QodtybitD4AuEh2drZWrFihPXv2KDIyUkOGDFHjxo2VmZmp\nNWvWaOfOnfL29pbD4ZDFYjnnclHV1d69e/XXv/619HnwsbGxiomJUb169RQWFsZ1eagUWVlZ+uST\nT+Tr66u4uDgtW7ZMTqdTkmSz2ZSbm6vbbrtNffr0uazxDcPQK6+8ombNml30TGhiYqJWrlypTZs2\naeTIkerVq9dlHduTcc0pAFQSp9OpVatWacuWLQoODtbgwYMVFxenr776Sl999ZUkKSQkRH369FGn\nTp08sqA5HA7NnTtX/v7+GjVqFDcxwTReeeUVde/eXZ07d77sMU6fPq3p06dr7ty5LkwGrjkFgErw\n1VdfadWqVRoyZIhmzJghi8WiI0eOaOzYserevbumTp3qkWX0t/Ly8jR+/HiNHDlSrVu3dnccoIwb\nb7xR33zzTYXKaXh4uIKCgpSTk8O6ulWEcgoAl2jPnj1atGiRevbsqVdeeUUWi0X5+fl6/fXXZbVa\n9dJLL9WIR4fu2LFDixYtUnx8vKKiotwdBzhL69at9Y9//KPC4+Tn51NMqxDlFAAuUkpKit58803F\nxMRo1qxZ8vHxkWEYWrp0qb7//ns98cQTatSokbtjVqqMjAytW7dOP/zwg2JiYvTqq6/yHHuYmt1u\n14cffqhbb731spZ3WrRokfr3718JyXAulFMAuIDCwkLNnz9fBQUFGjt2rEJCQiRJu3bt0qJFi3Tb\nbbdpzpw5bk5ZeXJycvTOO+8oPT1dISEhuv766zVo0CBKKaqFadOm6eeff9Ybb7yhnJwcxcTEqFWr\nVmrVqpUaNGhwzrV17Xa75s2bp9jYWN1www1VnLpmo5wCwHkcPXpUc+bM0dixYxUbGyupZBmbOXPm\nqF69epo7d668vT3zj1KHw6G3335bx48f16hRoyq8FA/gLm3btlXbtm0lSadOndK+ffu0Zs0aJSYm\nyjAMWSwW+fj4qHnz5goPD9exY8e0c+dOPfroo4qLi3Nz+prHM/9EBQAXWL16tb799lvNmzdPfn5+\nkkrWL50yZYomTpzo0ddZHj58WPPmzdNjjz1W+h91wBPUrVtXPXr0UI8ePcq8X1RUpEOHDik9PV09\ne/bUiBEj3JQQlFMA+B2n06m5c+cqJiZGU6dOLX3/0KFDev311zVr1izVqlXLjQkrj2EYWrx4sY4f\nP665c+eWlnLA0/n5+alNmzbujgFRTgHgLMOHD1f79u1LF9w+ffq0FixYIH9/f82dO9dj1/F0Op16\n/vnnddNNN+n+++93dxwANRTlFAB+529/+5t++OEHzZ8/Xzk5OfL19dXo0aM9/jnw7777roYMGVKh\nNSEBoKIopwDwO97e3uratau6du3q7ihV5ujRo0pNTaWYAnC78tdPAADUGGeeHT527Fh3RwEAZk4B\nIDs7WxMmTChdv9RisSgyMlKjR492c7KqsW7dOvXr10/+/v7ujgIAlFMANVtmZqbGjx+vqVOnKiws\nrPT9l156SVlZWapTp44b01WNzz//XNOmTXN3DACQRDkFUINlZmbqhRde0LRp0xQaGlr6vmEY2rNn\njwIDA92YrmqkpaUpPDycpz0BMA2uOQVQIzkcDk2cOPGsYiqVnNbv06ePVq5c6aZ0Vedvf/ub7rnn\nHnfHAIBSlFMANdLs2bP12GOPnVVMz3j44YeVmJioXbt2VXGyqmMYhpKTkxUTE+PuKABQinIKoMZZ\nsWKFWrRoccFnZj/xxBN69913ZRhGFSWrWl9//bV69+7t7hgAUAblFECNkZ+fr1dffVWJiYkaMmTI\nBff39vZW69atlZiYWAXpqt6aNWt0ww03uDsGAJTBDVEAPF5RUZHee+89HTt2TI8++qiaNm16SZ/1\n8vK8v8cfOnRIkZGR3AgFwHQopwA8lsPh0OLFi7Vnzx6NGDFCrVu3vujPpqSkaNq0aYqLi/O4azKz\nsrL06quv6pVXXnF3FAA4i+dNBwCAJJvNpmeffVbt2rXTnDlzLqmYStLhw4fl5eWl/fv3a926dZUT\n0g0cDocmTJigKVOmyMfHx91xAOAszJwC8DjFxcUaN26cxowZo2bNml3WGF27dlXXrl0VHx+vq6++\n2sUJq15BQYGWL1+un376SaNGjVJ4eLi7IwFAuSinADyKw+HQs88+q6eeekpNmjSp0FjLli1Tx44d\nFRwc7JrURTQ/AAAgAElEQVRwVcAwDG3YsEG7du1SSkqKLBaLJMnHx0e33HKL7r33XjcnBIDzo5wC\n8CgLFizQiBEjKlxMN23apKNHj+rPf/6za4JVgc8//1yrV69W3759dccddygyMrK0nAJAdUE5BeAx\n9u/fr+LiYrVv375C46xZs0Zbt27VuHHjXJSscuXm5mr69Onq3Lmz5s2bRyEFUK1RTgF4BIfDofnz\n52vu3LkVGmf58uVKTk7Wc+PGqUVEhkKvCNPcuVKPHi4K6kJ2u12LFy/W/v379fTTTys6OtrdkQCg\nwiinADzCpk2bNGDAgMu+Az0rK0sLFy5UTEyMxowZIxUWyrDb9f330uuvm6ucGoahTz75ROvWrdN9\n992nESNGuDsSALgM5RSAR9i0aZNGjRp1yZ/LzMzU22+/rfz8fD366KO/rmmalSX976ml+/dLhiGZ\n4Wz5pk2b9M9//lM333yz5s2b5+44AOBylFMAHiEnJ+eS7qrPzMzUW2+9pYKCgrKl9IzsbMkoGe/I\nEWnbNunKK12Z+NLs27dPixYt0tVXX6158+Z55FOrAECinALwEMHBwdqzZ4/i4uIuuG96erri4+M1\nYcIE1atXr/ydsrMlo7YkKSdHevtt6S9/cWXii3Py5EnNnz9f9evX1/Tp0+Xr61v1IQCgClFOAXiE\nsWPH6qmnntLMmTMVFBR0zv2Ki4s1ceJETZ8+XSEhIeceMDNTMn6dTd2+3ZVpLywrK0vz58+Xl5eX\nxo0bV63WWgWAiqCcAvAIVqtVL7zwgsaNG6cHHnhAHTt2lLd32T/iioqKNGnSJI0dO/b8xVSSUlIk\n/ToLe+KElJsr1apVCeF/l/Gdd95RSkqKRo8efe6ZXQDwUJRTAB6jXr16evHFF7V+/Xp98skncjgc\nslqtMoySO5v8/Px0zz33qGnTphceLDW1zC9zc6WTJ6UWLSojueR0OvWPf/xD27Zt08MPP6yWLVtW\nzoEAwOQopwA8SlhYmAYPHqzBgwdLUmlBvWRpaWV+mZ0tHTtWOeV0zZo1+uyzz3TXXXdp+PDhrj8A\nAFQj3O4JwKNdVjGVpNOny/zS6ZT27XNBoN/YunWrnn76aRUXF+uVV17Rtdde69oDAEA1xMwpAI/j\ndDr1wQcfqKCgQNHR0WVeQUFBys3N1YoVK3T33Xefu7zm5p61sOn+/a7Jd/jwYb311ltq3bq1Xn75\n5csv0ADggSinADyKYRgaO3as7rvvPjVo0EDJyclKTk7Wt99+q+TkZOXl5UmSunXrpnnz5umZZ54p\nf6CiorPe+t1lqJcsLS1Nb775pkJDQzV58mQFBARUbEAA8ECUUwAeZcuWLerZs6eu/N+K+ZGRkWrf\nvv1Z+3344Yfq06fPuQcqp5zm5FxaFqfTqW3btunrr79WZmamgoOD9X//938KCwu7tIEAoAahnALw\nKJ999pni4+PPu4/D4dD27dt13333nXuniyynNptN27dv15YtW3Tq1ClZLJbS1QEMw1DHjh310EMP\nKTQ09JK+BwDUVJRTAB7Hz8/vvNuXL1+uIUOGnH+QC5TTrKwsLVy4ULm5ubrmmmt05513KjIyUpbf\nXacKALg0lFMAHqO4uPiiHu/Zvn17LViwQC1btlR4eHj5O5VTTrOzpdzcfC1a9LZOnz6tUaNGKSYm\nppwPAwAuF+UUgMc4dOiQmjVrdsH9WrVqpalTp2ry5Mm68cYb1bVr17MfD1pOOT11KlfPP/+qnn56\nuGJjY10VGwDwG5RTAB7j1KlTioiIuKh969Spo7lz52rt2rV66623lPO/c/Y+Pj7y9vbWQ4mJKvpd\nQbXbAzViRLzopQBQeSinADxGenq6GjZseNH7e3l5qV+/furXr1/pezabTQ6HQ36LFsmv0E+y/bp/\nQYGXfvlF6tTJlakBAL/FE6IAeIzt27erXbt2FRrDx8dH/haLLDZbudv37KnQ8ACAC6CcAvAYF3tD\n1AVlZUnnKKdHjlR8eADAuVFOAXiEAwcOqEWLFq4ZLDu73BuipJLeCgCoPJRTAB5hyZIlGjhwoGsG\ny86WCgvL3UQ5BYDKRTkFUO3t2LFDdevWveg79S8oK0sqKCh30+nTrjkEAKB8lFMA1ZrD4dCiRYv0\n6KOPum7QlJRzbkpLkzIzXXcoAEBZlFMA1dpbb72lRx55RFar1XWDpqaec1NamrR1q+sOBQAoi3IK\noNpKSEhQZmam2rdv79qBz1NObTbpiy9cezgAwK8opwCqJcMw9Oqrr+rpp592/eAXuLB0717XHxIA\nUIJyCqBaWrp0qW655RYFBAS4fvDc3PNuPs8lqQCACqKcAqh28vLy9NNPP6lPnz6Vc4BzLCN1Rmqq\nZLdXzqEBoKajnAKodtasWaM77rij8g5wjgX4zzh1Stq/v/IODwA1GeUUQLXz448/6qqrrqq8A1xg\n5jQ7W/rmm8o7PADUZJRTANWK3W6XxWKRl1cl/vF1nrv1z1i9uvIODwA1GeUUQLWya9cuderUqfIO\nkJ5espjpBezYUXJ6HwDgWpRTANXK9u3b1bFjx8o7wI8/XtTM6bFj0vTplRcDAGoqyimAauXAgQOK\njY2tvAN8/vlF34r/xRfctQ8ArkY5BVBtpKenKyQkRBaLpfIOcuDARe+6f7/05z9XXhQAqIkopwCq\njWXLllXuElLSJa2wb7NJ778vTZtWiXkAoIahnAKoNg4fPqwrrrii8g6Qn39R15v+Vna29Oqr0sKF\nlZQJAGoYyimAaiEhIUGNGzeu3IPs3HnJ5VQquWv/xRelpUsrIRMA1DCUUwDVwooVK3T77bdX7kE+\n+0wqKLisjyYnl5zeNwwXZwKAGoZyCqBaOHXqlKKioir3IGvXVujjhw9L333noiwAUENRTgFAknbt\nKrn9vgJycqQ33zz7fadT2r69QkMDQI1BOQVgeidPnlS9evUq9yAzZpQ8HaqCduwoKaNn2GzSkCHS\nTTdJu3dXeHgA8HiUUwCm99133+naa6+tvAMUFEg//eSSoX75Rfrqq19/PWyYtGqVlJQkPfhgSVkF\nAJwb5RSA6e3cuVPt2rWrnMEPHZKuv146eNAlwxUUSM8/LxUWSsuWSV9++etM6tat0rhxLjkMAHgs\nb3cHAIALsdvt8vHxcf3AJ05I/fpJR464dNgff5TuvrtkFjU7+9f3HY6S5aZGj5aaNXPpIQHAYzBz\nCsDU7Ha7rFZr5Qz+8MMuL6ZnrFlTco/V7x0/Lj366K9LTtls0ksvSd27S3/6U6VEAYBqhXIKwNR2\n7dql9u3bu37gZcukTZtcP+7/5Oefe9t330l9+pRci3rdddLkySVRliyR9u0rWTQgLk5avrzS4gGA\naXFaH4Cpfffdd7rlllsuvKNhSBs2SB98ICUmSg88IN1zT8mdSMOHl5xT79695K78lBQpPr7sOfcq\nlJ8vrVsnbd4sFRX9+v7Jk9KIEVJmprR3r/T449LHH0t5eVKbNtKsWVJlTSIDgFlQTgG4h2GUrFrf\nsKHk6/vr+8ePS6GhUlCQJOnEiROqX79+yf4JCVLjxpLF8uv+Bw9KL78sff99yc95eSXv791b0uRm\nzfp1kdEdOyQ/P+mLLy64pulmSenFr0u6RVJXl33t3/ptMT1jy5ZfT/knJ/86e7p2bUmZfeEF6cYb\nSwrs1q0lN1w99ZQUHV0pEQGgylkknfNhe5MmTdLkyZOrLg0Az3bqlHT6tBQRId1/f0nbql1b6tBB\n+utfpY8+KnkGqJeXVL++NG6c5n3xhf7kdJacC09MLCmzsbEl+xw/Lh04UDJmecLCzl67NDRUysoq\nuxjp72yW1FdSgaySfCV9qcoqqJfK319q0KCkg6emlvw2bNggdeni7mQAcPEsv51k+B1mTgFUnTVr\npDFjSk6nt2xZUjSlkoIZEiKFh//6XmGhnCNHakxWVkkZ9fMraWWGUXIb/BkNG/76mfI0anTJMdel\npKg4KUmSQ1Kx6tVbp6goc5TTM2rVkqKiSpasqlPH3WkAwHUopwCqzvDhJa+LtGb1atWuXVvdu3ev\nxFBnu37zZvn27avi4mL5+vpq+fLr1dVc3RQAPBblFID55OVJI0cq5OhRXXnbbSU3MlWhrl276ssv\nv9S6det0/fXXqyvNFACqDOUUgPl4eUn9+ilz8WL5uul5n127dqWUAoAbsM4pAPMJCJDz3nu1qVs3\n6bnn3J0GAFCFKKcATOnAgQNq2bKlu2MAAKoY5RSAKW3ZskXXXnutu2MAAKoY5RSAKf3yyy+KjY11\ndwwAQBWjnAIwrfMt0gwA8EyUUwCmk5mZqaD/Pb4UAFCzUE4BmIphGHrppZf04IMPujsKAMANKKcA\nTOWdd97R4MGDFRUV5e4oAAA3oJwCMI39+/crLy9PPXr0cHcUAICbUE4BmMbu3bvVq1cvd8cAALgR\n5RSAaWzbtk3t27d3dwwAgBtRTgGYgtPplMPhkLe3t7ujAADciHIKwBS2bNmia665xt0xAABuRjkF\n4HaGYWjJkiUaNGiQu6MAANyMcgrA7T799FPddNNNslqt7o4CAHAzyikAt7Lb7Vq7dq369+/v7igA\nABOgnAJwq/fee08jRoxwdwwAgElQTgG4TXZ2thISElg+CgBQinIKwG3efPNNjRkzxt0xAAAmQjkF\n4BaJiYmyWq2KiYlxdxQAgIlQTgG4xfz585k1BQCchXIKoMpt3bpVLVq0UK1atdwdBQBgMpRTAFXK\nMAwtXrxY999/v7ujAABMiHIKoEp9+umnGjBgAAvuAwDKRTkFUGXy8vJYcB8AcF6UUwBVwm6364UX\nXtBzzz3n7igAABOjnAKodIZhaMKECXr88ccVHR3t7jgAABOjnAKodHPmzNFtt92m5s2buzsKAMDk\nKKcAKtW7776rdu3aqXPnzu6OAgCoBiinACrNypUr5evrqwEDBrg7CgCgmqCcAqgUGzdu1OHDh3Xf\nffe5OwoAoBqhnAJwuT179ujzzz/XU0895e4oAIBqxtvdAQB4luPHj2vRokWaM2eOLBaLu+MAAKoZ\nyikAl8nMzNSMGTM0d+5cngAFALgsnNYH4BKFhYWKj4/XSy+9JH9/f3fHAQBUU5RTABXmcDhKn/4U\nGhrq7jgAgGqMcgqgQgzD0JQpU/TQQw+pQYMG7o4DAKjmuOYUwGVzOp2aOnWq+vfvrzZt2rg7DgDA\nAzBzCuCyFBcXa9y4cRo8eLC6d+/u7jgAAA9BOQVwyXJycjR27FiNHj1aHTp0cHccAIAH4bQ+gEuS\nmpqqKVOmaPLkyYqIiHB3HACAh6GcArhohw8f1iuvvKJZs2apVq1a7o4DAPBAlFMAF2X79u36+9//\nrrlz58rX19fdcQAAHopyCuCCvv76a23cuFGzZs2SlxeXqgMAKg/lFMB5LV++XElJSZowYYK7owAA\nagCmQACc0zvvvKOioiI9/vjj7o4CAKghmDkFcBbDMDR79mx17NhR/fv3d3ccAEANwswpgDLsdrvG\njx+v3r17U0wBAFWOcgqgVH5+vv785z/rgQceUOfOnd0dBwBQA3FaH4Ak6fjx45oxY4bGjx+vmJgY\nd8cBANRQlFMAWr16tTZs2KCXX35ZAQEB7o4DAKjBOK0P1GB2u13Tp09XRkaGpk2bRjEFALgdM6dA\nDXXixAnNmDFDTzzxhFq2bOnuOAAASKKcAjXS559/rm+++UazZ89WYGCgu+MAAFCKcgrUIHa7XXPm\nzFHjxo01ffp0d8cBAOAslFOghjh58qRmzJihMWPGqFWrVu6OAwBAuSinQA2wZs0arVu3TrNmzeI0\nPgDA1CingAez2+16+eWX1bBhQ07jAwCqBcop4KGSkpI0ffp0jR49Wq1bt3Z3HAAALgrlFPBAX3zx\nhb766itO4wMAqh3KKeBBHA6HXn75ZdWvX18zZsxwdxwAAC4Z5RTwAPn5+frnP/+pHTt26JFHHlFc\nXJy7IwEAcFkop4AJFRYW6uWXX1ZgYKCuuOIKNWvWTLGxsQoICJBhGMrIyNDJkyd14sQJffvtt/Ly\n8tLQoUP1wAMPuDs6AAAVQjkFTMYwDL3wwgsaO3asgoKC9Msvv2j37t1atWqVCgsLZbFYFBoaqpiY\nGMXExOj5559XQECAu2MDAOASlFPAZLKysuTr66v69etLkq666ipdddVVbk4FAEDV8HJ3AABlhYSE\nqHnz5tqyZYu7owAAUOUop4AJjRgxQkuWLJFhGO6OAgBAlaKcAiZksVjUt29fff311+6OAgBAlaKc\nAiY1cOBA/ec//3F3DAAAqhTlFDApi8Wibt26aePGje6OAgBAlaGcAiZ2++2369NPP3V3DAAAqgzl\nFDAxLy8veXuz4hsAoOagnAImlpGRobS0NO7aBwDUGJRTwMSmT5+umTNnymKxuDsKAABVgnIKmJjV\nalVISIi7YwAAUGUop4CJtW3bVi+++KJycnLcHQUAgCpBOQVM7N5779XIkSP13HPPKTEx0d1xAACo\ndJRTwOSioqI0d+5cvfbaa/rxxx/dHQcAgErFGjWAGx09elRbt25Vbm6uatWqpWbNmumKK65QUFBQ\nmf38/f01Z84cTZ06VZJ09dVXuyMuAACVjnIKVLGcnBzt2LFDP/zwg7KysnT77bcrKChIOTk5OnDg\ngD777DPl5ubKMAz16tVLvXv3lo+Pj+x2u1q2bKklS5ZQTgEAHotyClSirKwsbdq0STt37lReXp4k\nqXbt2urQoYOGDx+uqKioMvt37Nix9GeHw6H169dr6tSppUtJ9e/fX8OGDau6LwAAQBWjnAKVYMeO\nHVq6dKn8/f3Vt29fPf7442edqr8Qq9Wq3r17q3fv3pWUEgAA86GcAi62cOFCeXt7Kz4+Xv7+/hf1\nmby8PPn6+srHx6eS0wEAYG6UU8DFOnXqpOTk5AsWU8MwdPToUX300UcqKiqS3W5XaGio7r//fkVG\nRlZRWgAAzIVyCrhYly5dNH78eA0ePFiZmZn69NNPdejQITmdTlksFhmGIYfDIYvFooYNG2rkyJGq\nW7euJCklJUV//etflZOToyeeeEIRERFu/jYAAFQtyingYhaLRU2aNNGkSZNUVFSkP/7xjxo2bJi8\nvS/8r1tUVJSeeeYZpaen64033lBYWJgef/zx0huiAADwdBZJxrk2Tpo0SZMnT666NADK+P7777Vx\n40b96U9/cncUAABc5nyTLjwhCjCxzp07q169evrkk0/cHQUAgCpBOQVM7u6779b69evdHQMAgCrB\nNafAJTIMQxkZGUpJSVFiYqICAwN1xRVXqF69epV2zIYNGyotLY0bpAAAHo9yCvxOUVGRVq9ercOH\nDyszM/Os7RaLRSEhIYqKilLDhg2Vn5+vpUuXKiUlpfSmpwvdwOTr66vY2Fg1b95cnTp1kpfX+U9i\ndOrUSdu2bVO/fv0u/4sBAFANUE6B/zl48KA+/vhjFRcX6+abb1bPnj0VEhJyUXfKX2ppLCgo0JEj\nR7R371599NFH6tq1q4YMGXLOY3Xo0EFvvvkm5RQA4PEop4Ckl156SREREXrqqacUHBxc6ccLCAhQ\nXFyc4uLiNGTIEK1du1bPP/+8Jk6cqMDAwLP2Dw4OVq1atbRy5UrdeuutlZ4PAAB3oZwCkmw2m0aO\nHOm24//hD39QXFycnn32WT355JNq0aLFWfs8+eST+uijjzRhwgRZLJbSSwJatWp1UWuoAgBQHfBf\nNMAkYmJi9Oqrr2rmzJlq1aqV7rjjjrP2GT58uCTJ4XDol19+0bZt27R8+XI5HA4ZhqFGjRpp6NCh\nCgkJqer4AAC4BOUUNZ5hGBf9BCbDMLRo0SIdPHhQfn5+8vLy0jPPPKNatWq5JIu3t7fi4+O1ZMkS\nvfPOO3rkkUfK3c9qtapFixZlZlgNw9CRI0f0xhtvyOFw6P7771fTpk1dkgsAgKpilTT5XBuvv/56\nXX/99VUWBnCXlStXKjY2VuHh4efcJzMzU/Hx8erZs6ceeugh9enTR23atNGkSZNUUFCgqKgoBQQE\nuCRP27ZtderUKb311lvKz8+Xn5+f6tSpc94SbbFYlJubq/DwcAUEBOi5555Tbm6uunTp4pJMAAC4\nypQpU865jceXApLsdrtmz56twsJCBQUFKSQkRAUFBSooKFBhYaEMw1BBQYGee+65swqsYRj64Ycf\ntGHDBmVkZMjLy0tdunTRjTfeKKvVWuFc27Zt065du5SQkCDDMGQYhgYMGKCuXbvKYrHIbrdr/vz5\nSk1NVaNGjdS0aVPVqlVLtWvXVmRkpKKioiqUAQAAVzvvZIsop0AZOTk5ys7OVkBAgAICAkpP318s\nu92ub7/9VqtWrdLAgQPVp08fl+az2+1auXKlvvjiC82fP19jx47Vo48+qri4OJceBwCAynK+cso1\np8Dv1K5dW7Vr177sz3t7e6tXr17q1auXnnnmGfXo0UO+vr4uy+ft7a0hQ4YoMzNTW7duVfPmzSmm\nAACPcfHTQQAu2YMPPqj58+e7fFzDMHTs2DHZ7Xb5+Pi4fHwAANyFcgpUori4OAUEBOhvf/ub7Ha7\nS8bcvn27nnnmGfXu3VtdunTRsWPHXDIuAABmwGl9oJI99thj+v777xUfH6+wsDD17NlTV1555QVP\n9efk5CghIaH0lZSUJMMw1KpVK02fPr3084GBgUpMTFTDhg2r4usAAFCpuCEKqELp6enavHmzfvrp\nJ9lsNlksFgUEBMhqtSovL6/0AnHDMFSrVi01bty49BUVFVXuBeT5+fmaMmWKWrduraFDhyooKKiq\nvxYAAJeEu/UBFzqzrFRGRobS09OVkZEhq9WqqKgo1atX75LKoWEYKi4uls1mU1BQ0AUfBlBcXCyr\n1VruElU///yzVq1apaKiIlksFhnGr/9qh4WFadSoUS69MQsAgMvF3fpAOYqKisoUzDOv9PR0ZWVl\nyel0lha835a9M7OdoaGhCgsLU2hoqAoLC7V582YlJiYqOztbffv21Q033HDBDBaLRX5+fvLz8ztr\nm91u15YtW7Ru3ToVFxdLknx9feV0OuV0Ossd70xGp9Mpq9Wqli1b6rrrrlNeXp7Gjx+vOXPmXNbv\nFQAAVYVyCo+RnZ2tTZs2KT09Xenp6crMzJTdbi9TKn/L19e3TMGMiopSq1atFBYWpjp16lz2AvqG\nYWjVqlUaO3asxo4dq5iYmIv+bEZGhj7//HPt3LlTVqtVXbt21dixYy/ryVN2u1379+/XkiVLlJWV\npezsbNntdnl78689AMC8+K8UqjXDMLRx40b997//VWBgoHr37q2mTZsqLCxMISEhbllmyWKx6NZb\nb1W/fv00fvx43X///erQocMFP7dkyRItXLhQr732moYNG3bBU/wX4u3trTZt2qhNmzbKzMzUU089\npbS0NNWrV69C4wIAUJm45hTV0smTJ/Xxxx8rNTVV1113nW688UZTzgg6nU4988wzGj9+vMLCwi64\n/9q1a/XJJ5/o0UcfVZs2baogIQAAVY9rTuERiouL9emnn2rLli2qV6+e7r33XtM/N95isWjAgAGa\nPHmyXn/99Qvu/4c//EG9evXSO++8o6VLl+qpp55SSEhIFSQFAMAcKKcwvT179mjp0qWy2Wy6+eab\nNXPmzAqf8q5sdrtdixcv1r59+3TNNddc0hkIHx8fjR49WmlpaZozZ45iY2P1wAMPXPY1sAAAVCeU\nU5hWfn6+Jk2apDZt2ujPf/5ztVq/c+bMmWrQoIEee+wxhYaGKjg4+JLHiIiI0LRp0/TTTz/pT3/6\nk+6880517969EtICAGAelFOY1uzZs/X0009f0t3uZvHAAw9o69at2rBhgzIyMpSdnX3O5Z98fHzU\npUsXdevWTYGBgWdtv+qqq3TllVfq448/1ooVK9S/f3/17t2bmVQAgEeinMK0WrdurVOnTlXLctqg\nQQM1aNDgovYtLCzUli1b9Oqrryo/P18BAQHq3r27evbsKS8vL0kl164OHz5cw4YN01dffaX4+Hj5\n+vqedXmDYRiyWCzy9vZWz5491bVrV7esWAAAwOXibn2YVmZmpuLj4zV79uxyZxQ9VX5+vr755ht9\n/vnnGjRokPr06XPOfc+U0d8rKCjQ+vXrtWnTJtlsNtWrV0/NmjVTw4YN1bBhQ9WpU6cyvwIAAOfF\n40tRbSUlJWn69Om6/fbb1bt3b3fHqVKGYWjFihXasGGDHnzwQbVr1+6yx0pOTtaRI0eUmJio48eP\nKysrSw6HQ8HBwRo6dKiaNm3qwuQAAJwf5RTVmmEY+ve//62NGzfq4YcfVlxcnLsjVSm73a4PPvhA\np0+f1rhx41w6dnp6upYuXaoDBw7o0UcfVcuWLV06PgAA5aGcwiPYbDa9/fbb8vLy0qhRo9wdp8p9\n9dVXOnjwoEaOHOnyse12u2bOnKm4uDjdfvvtLh8fAIDfOl859arCHECF+Pj4aMyYMWrcuLEWLFjg\n7jhVrk+fPrLZbNq5c6fLx/b29lb8/7d39zFV1v8fx19wAMEbRBS8o6/aRAlBvMFu1LaaN5lmmssg\nbzJdamoZSctMVxqu0Hmz1aK2Nv9wljfDhjebbHnXUpsJiuBNqRmmE48HBDwIHD2H6/eHv9zXb3h/\n4HyA52NzMDjXtfc58+hz1zmfz1m0SE6nUzt37vT6+QEAuF/EKRqckSNHqk2bNsrKyvL1KPXu7bff\n1po1a2RZd3zB45FMnjxZu3btqpNzAwBwP4hTNEivv/66/vzzT+3Zs8fXo9SrgIAAjRo1Slu3bq2T\n8/v7+yswMFBVVVV1cn4AAO6FOEWDlZqaqoKCAm3YsEEej8fX49SbYcOGae/evXK5XF4/t8vlktPp\nVEhIiNfPDQDA/WATfjRoc+fO1e7du/XJJ5/Iz89P7du3V/fu3RUdHa0uXbrUugF9aWmpDhw4oNzc\nXN24cUP+/v5yuVxKSkpS375962Xuo0ePatOmTbLZbLc22pdu7kzQoUMHDR06VNHR0Xc8PiUlRR98\n8CVwA4UAAA+XSURBVIHS0tIUFhbmtbkyMjI0Z84cr50PAIAHxWp9NBqWZam4uFhnzpzR6dOnVVhY\nKLfbLT8/v1urAj0ej8LCwjRw4ED169dPzZo1u/XzNWvW6Pz585o3b55Xg+9/HTt2TJmZmVq4cGGt\n8Xz+/HllZ2fr1KlTmj59unr06FHreUpLS5Wenq6goCB16tRJUVFRKi4u1uXLl1VZWSnp5mrIGzdu\n6Omnn1ZMTIyOHDmi33//XTabTSEhIQoODlZpaemtq7CxsbFKTk6us/sOAIDEVlLAfXM4HFq9erVi\nYmI0ceJEr39+vd1u1xdffKGVK1fe89wul0vfffed7Ha73nnnHbVv377W21mWpYsXL6qoqEgRERGK\niIi47RO1ampqdPDgQZ0+fVr9+vVTTEyMLMtSVVWVqqqqFBoaysv4AIB6RZwCD+jgwYPavn27LMvS\nk08+qWHDhj1ywFVXVys1NVXLli1Ty5Yt7/u4srIyZWRkyGazafbs2WrVqtUjzQEAgK8Rp2iUysrK\ntHHjRl2+fFkdO3ZUUlKS18Ptn6uOO3fuVFVVlaKjo/XSSy8pIiLigc7j8Xg0f/58paSkKCoq6qFm\nuXDhgr799luFhIQoKSlJ3bt3f6jzWJalr776Sg6HQ7Nnz1bHjh0f6jwAADws4hSNgmVZOn/+vHJy\ncpSXlyc/Pz9NnTpVUVFROnv2rNavX68bN25o/PjxSkhIqJMZTp06pczMTAUHB2vu3LkKCLj3msLS\n0lKlpaVp+vTpeuKJJ2q9zbZt27Rv3z6FhISopqZGktSnTx89//zzatOmzW23LS8v18aNG3X+/HlJ\nUqtWrdSsWTMFBAQoMDBQgYGBtX5/7do1nTx5UuXl5UpKSlLPnj319ddf6+OPP37ERwUAgAdDnKLB\n+ed9lDk5OSooKND169dlWZb+85//KDExUb169VJQUNC/jquurlZmZqaOHj2quLg4vfbaa3XyfsoT\nJ04oIyNDM2fOVHx8vCSpuLhY27Ztk91uV1VV1a3FSK1bt9bkyZPveIXy7Nmz2rRpkz766KNbP3O7\n3crPz9dPP/2ksrIyvf/++4qMjKz1+IqKCt24cePWH7fb/a/v3W63QkJC1LNnz9set08//VRLlizx\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(\n", " subplot_kw=dict(\n", " projection=cartopy.crs.PlateCarree()\n", " ), \n", " figsize=(13, 8)\n", ")\n", "extent = [2, 8, 50, 55]\n", "ax.set_extent(extent, cartopy.crs.PlateCarree())\n", "ax.coastlines('10m')\n", "transect = xy_line[idx]\n", "lon, lat = transect[0, 0], transect[0, 1]\n", "\n", "ax.plot(transect[:, 0], transect[:, 1], 'r-')\n", "# does not show up\n", "# import matplotlib.transforms\n", "# import mpl_toolkits.axisartist.floating_axes\n", "# helper = mpl_toolkits.axisartist.floating_axes.GridHelperCurveLinear(transform, extremes=(0, 10, 0, 10))\n", "# ax1 = mpl_toolkits.axisartist.floating_axes.FloatingSubplot(fig, 111, grid_helper=helper)\n", "\n", "x = (lon - extent[0])/(extent[1] - extent[0])\n", "y = (lat - extent[2])/(extent[3] - extent[2])\n", "print(x, y)\n", "ax1 = fig.add_axes([x, y, 0.1, 0.1])\n", "transform = matplotlib.transforms.Affine2D().rotate(30)\n", "ax1.get_transform()\n", "ax1.set_transform(transform)\n", "ax1.plot(0.0, 0.0, 'k.')\n", "ax1.axis('off')\n", "\n", "x = np.array(data['bins'])[:-1]\n", "freqs = np.array(data['freqs'])\n", "x_erosion = x[x<=0]\n", "y1_erosion = freqs[x<=0]\n", "y0_erosion = np.zeros_like(y1_erosion)\n", "ax1.fill_between(x_erosion, y0_erosion, y1_erosion, color='red')\n", "x_accretion = x[x>=0]\n", "y1_accretion = freqs[x>=0]\n", "y0_accretion = np.zeros_like(y1_accretion)\n", "ax1.fill_between(x_accretion, y0_accretion, y1_accretion, color='blue')\n", "\n", "# ax1.bar(data['bins'][:-1], data['freqs'])\n", "# ax1.bar(data['bins'][:-1], -np.array(data['freqs']))\n", "ax.set_xlim()\n", "ax.set_ylim()\n", "fig.tight_layout()\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "kde = scipy.stats.gaussian_kde(rates[~rates.mask])\n", "x = np.linspace(-20, 20, num=51)\n", "plt.plot(x, kde.evaluate(x))\n", "\n", "x_erosion = x[x<=0]\n", "y1_erosion = kde.evaluate(x_erosion)\n", "y0_erosion = np.zeros_like(y1_erosion)\n", "plt.fill_between(x_erosion, y0_erosion, y1_erosion, color='red')\n", "x_accretion = x[x>=0]\n", "y1_accretion = kde.evaluate(x_accretion)\n", "y0_accretion = np.zeros_like(y1_accretion)\n", "plt.fill_between(x_accretion, y0_accretion, y1_accretion, color='blue')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# separated countries\n", "# - files per country\n", "# - attached countries, update country file per box\n", "# - ignore separated islands for first version\n", "\n", "# missing countries\n", "# - first version, put in unknown countries\n", "# - second version: extend countries manually \n", "\n", "\n", "# store what per country\n", "# - option1: binned frequency + density estimate (min, max)\n", "# - chosen: np.histogram update per file, fixed bins (-20, 20)\n", "\n", "\n", "# skewed distributions\n", "# - option1: 95 percentile\n", "# - chosen: -20, 20 \n", "\n", "\n", "# location for the chart\n", "# - 80% automatic (pick a middle transect, biggest range y or x)\n", "# - 20% manual \n", "\n", "# countries with too long coastlines (only VS, Australia, Russia?)\n", "# - manual\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "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.5.3" } }, "nbformat": 4, "nbformat_minor": 2 }