{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Trajectory Approximation\n", "These methods can be used to simplify trajectories as a preprocessing step before they are fed to labeled region scanning methods. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pyscan\n", "import matplotlib.pyplot as plt\n", "import random\n", "import math\n", "\n", "import statistics\n", "\n", "def plot_points(ax, pts, c):\n", " xs = []\n", " ys = []\n", " for pt in pts:\n", " xs.append(pt[0] )\n", " ys.append(pt[1])\n", " ax.scatter(xs, ys, color=c)\n", "\n", "def plot_points_traj(ax, pts, c):\n", " xs = []\n", " ys = []\n", " for pt in pts:\n", " xs.append(pt[0])\n", " ys.append(pt[1])\n", " ax.plot(xs, ys, color=c)\n", " \n", "def plot_approx(ax, traj_pts, core_set_pts):\n", " ax.set_xlim([-.01, 1.01])\n", " ax.set_ylim([-.01, 1.01])\n", " plot_points_traj(ax, traj_pts, \"g\")\n", " plot_points(ax, core_set_pts, \"b\")\n", " ax.set_axis_off()\n", "\n", "\n", " \n", "\n", "pts = [pyscan.Point(x, y, 1.0) for (x, y) in (\n", " (0.28076897884325597, 0.5709315642759948), \n", " (0.2883670662212526, 0.5731789009659035),\n", " (0.2804742254535915, 0.5708019102361805), \n", " (0.28057247658348744, 0.5704993841433011),\n", " (0.2807034780899998, 0.5714501804351904), \n", " (0.2734656448549006, 0.5746699224236597),\n", " (0.2902993384423915, 0.5749940575231799), \n", " (0.3078862906923401, 0.5769820861334908),\n", " (0.30896705312110206, 0.5969488082632861),\n", " (0.32072443833104086, 0.5964301921040598), \n", " (0.3307133032029929, 0.5930375780625253),\n", " (0.34640073360844237, 0.5890183028286218), \n", " (0.35494858190868855, 0.588802212762275), \n", " (0.3610729023383628, 0.5883916416362222),\n", " (0.36329992794916616, 0.5732869459990769), \n", " (0.37201152813256444, 0.5787108066642039),\n", " (0.37682583349709176, 0.5840266222961576), \n", " (0.3765310801074273, 0.5862307409728461),\n", " (0.37640007860089164, 0.5878730254770267), \n", " (0.3764328289775314, 0.5880675065367327),\n", " (0.37649832973078756, 0.5883700326295813), \n", " (0.37649832973078756, 0.5889750848153402),\n", " (0.3765310801074273, 0.5894504829612848), \n", " (0.3765310801074273, 0.5894504829612848),\n", " (0.3765310801074273, 0.5894504829612848), \n", " (0.3766293312372999, 0.5896017460077398),\n", " (0.3771533372633727, 0.5939019383278819), \n", " (0.3775135914062933, 0.6018324437625461),\n", " (0.3605816466889298, 0.610000648270198), \n", " (0.34266719067270024, 0.6244570737083028),\n", " (0.3384096417108854, 0.6261857942390467),\n", " (0.3402764131787448, 0.6249972988741699), \n", " (0.36012314141611323, 0.6221881280117534),\n", " (0.3730922905613496, 0.638567755040308), \n", " (0.37581057182156274, 0.6664649826047369),\n", " (0.3776773432894454, 0.6949456533483143), \n", " (0.38265540053710156, 0.7206603712427262),\n", " (0.3997510971376172, 0.7241826393240749), \n", " (0.42909543459750465, 0.7243339023704993),\n", " (0.43620226632606823, 0.7361540289992835), \n", " (0.43679177310539713, 0.7557750070229177),\n", " (0.4369882753651657, 0.7778810208094789), \n", " (0.4371520272483178, 0.7831752274347917),\n", " (0.43662802122224503, 0.7839963696868667), \n", " (0.4390187987161772, 0.7933962875726462),\n", " (0.4388222964564087, 0.809970395660907), \n", " (0.4382982904303359, 0.8370032629599792),\n", " (0.4391825505993293, 0.8585690515807041), \n", " (0.4399030588851706, 0.8777146314583937),\n", " (0.4402305626514748, 0.8978758346478641), \n", " (0.44091832056067637, 0.9170862415454762),\n", " (0.43639876858583676, 0.925729844199042), \n", " (0.4386912949498963, 0.9279555718823406),\n", " (0.43878954607976894, 0.9269183395639188), \n", " (0.43875679570315246, 0.9269399485705596),\n", " (0.43875679570315246, 0.9269615575772004), \n", " (0.43872404532651277, 0.9269831665838106),\n", " (0.43872404532651277, 0.9270263845970922), \n", " (0.43872404532651277, 0.9269183395639188),\n", " (0.43878954607976894, 0.9269399485705596), \n", " (0.4388550468330484, 0.9274153467165043),\n", " (0.43675902272875744, 0.9279987898956222), \n", " (0.4359402633130202, 0.9259675432720297),\n", " (0.2562716971245123, 0.37042159171941874), \n", " (0.2562716971245123, 0.4148497093588573))]\n", "\n", "\n", "alpha = 1/20" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Halfplane Compression\n", "### Convex Hull\n", "This method takes the convex hull of the trajectory. Since points internal to the convex hull will not effect halfplane labeled scanning we can do this as a preprocessing step to speed up the scanning without effecting the spatial error." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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QDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAAAANCNKAQAAaEaUAgAA0IwoBQAAoBlRCgAAQDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAAAANCNKAQAAaEaUAgAA0IwoBQAAoBlRCgAAQDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAAAANCNKAQAAaEaUAgAA0IwoBQAAoBlRCgAAQDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAAAANCNKAQAAaEaUAgAA0IwoBQAAoBlRCgAAQDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAAAANCNKAQAAaEaUAgAA0IwoBQAAoBlRCgAAQDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAAAANCNKAQAAaEaUAgAA0IwoBQAAoBlRCgAAQDOiFAAAgGZEKQAAAM2IUgAAAJoRpQAAADQjSgEAAGhGlAIAANCMKAUAAKAZUQoAAEAzohQAAIBmRCkAAADNiFIAAACaEaUAAAA0I0oBAABoRpQCAADQjCgFAACgGVEKAABAM6IUAACAZkQpAAAAzYhSAAAAmhGlAPD/t1/HAgAAAACD/K2HsacsAgA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAABspBQAAYCOlAAAAbKQUAACAjZQCAACwkVIAAAA2UgoAAMBGSgEAANhIKQAAAJsAiZbIJyk/Iq4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(figsize=(16, 12))\n", "core_set_pts = pyscan.hull(pts)\n", "plot_approx(ax, pts, core_set_pts)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Directional Hull\n", "\n", "This method uses an approximation of the convex hull to simplify the trajectory even more. The spatial error is bounded by alpha. In practice this method can reduce the number of points needed significantly over just taking the convex hull, and therefore speed up halplane labeled scanning even more than the previous method.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(figsize=(16, 12))\n", "core_set_pts = pyscan.halfplane_kernel(pts, alpha)\n", "plot_approx(ax, pts, core_set_pts)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### DP Simplification\n", "This is the popular Douglas Peucker trajectory simplification algorithm. It has the same error guarantees as the Directional Hull method, but usually produces a larger number of points per trajectory." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(figsize=(16, 12))\n", "core_set_pts = pyscan.dp_compress(pts, alpha)\n", "plot_approx(ax, pts, core_set_pts)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Disk(or Rectangle) Compression\n", "### Grid Directional Kernel\n", "The grid directional kernel preserves the spatial error with respect to disks of a certain minimum radius. Increasing the minimum radius significantly decreases the number of points needed to approximate the trajectory and approaches the halfplane method." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 3, figsize =(16, 12))\n", "i = 0\n", "for min_r in [1/10, 2/10, 4 / 10]:\n", " chord_l = math.sqrt(4 * alpha * min_r - 2 * alpha * alpha)\n", " core_set_pts = pyscan.grid_direc_kernel(pts, chord_l, alpha)\n", " plot_approx(ax[i], pts, core_set_pts)\n", " ax[i].set_title(\"Grid Directional %f\"%(min_r,))\n", " i += 1\n", "plt.show()\n", "\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lifting Kernel\n", "This lifts the trajectory onto the surface of a paraboloid and then takes a 3d approximate directional kernel in this space. This method currently has issues with stability." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAKvCAYAAACSzWmUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3Xl8nWWd///XlbVNNwotWyEpVWQTBUFtZRTXURH9CaOiEcGqlVVKGGcc4/fr6fGrnRkXCgIKRmBELC6ICyO4gI7gQClFEREBAZOwFEqxtKVps16/P+5z2qRrmpyT+5yT1/PxiIdc9/Y5/NH65nPd1xVijEiSJEmSlIaqtAuQJEmSJI1fhlJJkiRJUmoMpZIkSZKk1BhKJUmSJEmpMZRKkiRJklJjKJUkSZIkpcZQKkmSJElKjaFUkiRJkpQaQ6kkSZIkKTWGUkmSJElSagylkiRJkqTUGEolSZIkSakxlEqSJEmSUmMolSRJkiSlxlAqSZIkSUqNoVSSJEmSlBpDqSRJkiQpNYZSSZIkSVJqDKWSJEmSpNQYSiVJkiRJqTGUSpIkSZJSYyiVJEmSJKXGUCpJkiRJSo2hVJIkSZKUGkOpJEmSJCk1hlJJkiRJUmoMpZIkSZKk1BhKJUmSJEmpMZRKkiRJklJjKJUkSZIkpcZQKkmSJElKjaFUkiRJkpQaQ6kkSZIkKTWGUkmSJElSagylkiRJkqTUGEolSZIkSakxlEqSJEmSUmMolSRJkiSlxlAqSZIkSUqNoVSSJEmSlBpDqSRJkiQpNYZSSZIkSVJqDKWSJEmSpNQYSiVJkiRJqTGUSpIkSZJSYyiVJEmSJKXGUCpJkiRJSo2hVJIkSZKUGkOpJEmSJCk1hlJJkiRJUmoMpZIkSZKk1BhKJUmSJEmpMZRKkiRJklJjKJUkSZIkpcZQKkmSJElKjaFUkiRJkpQaQ6kkSZIkKTWGUkmSJElSagylkiRJkqTUGEolSakLgeYQaA+BgRCIuZ++ELg07dokSVJxhRhj2jVIksaxXPA8Gwg7OOWyGDl3DEuSJEljyE6pJCk1IdBMPpAe+3VYOAcWBXjj/xl82lnpVCdJksaCnVJJUmpCoB1oYspT8M+zhh5ctOXvpxh32EWVJEllribtAiRJ41ojAHOXbBm5/d/gL/+UUjmSJGmsOX1XkpSm56hbD8d8A/rqkpEQ4aljB5+zPo3CJEnS2DCUSpJSkXufdApHXw0T1sHVt8GKj8NxX4SDfj341GtSKlGSJI0B3ymVJKUiBNoJ/U184iWwYR+48g6o3QBnHAN16+Hr98HGvQD6gdNiZGnKJUuSpCKwUypJSksjh/wU9nwM7mxJRnonwfXXwaRn4V0LgAhQDbTlOquSJKnCGEolSWnpZN4SeL4JHjxpy+jTR8Mt/w6H/QiO+EF+tAFYnEKNkiSpyAylkqQxFQLNIdDO/nc30nQ73HUeDGy1GPzyc5PPvR4ePNo4VjVKkqSxYyiVJI2Z3BTcNqCJuRcFuifD7z8SSebpdgCXAf3UbUgu6J4y+PLOsa1WkiSNBfcplSSNpcVAA1OehCO+D3efA917BKAjRmYDhMAd1K/9JjCRnsn567qA1lQqliRJRWWnVJI0lpIpuK+6FMJAMnV38DgQI0tpvD0DQM/kfAd1gavvSpJUmQylkqSx1EntBjj2Cnjw3bBmzpbxwU4+/XYA3vv+E2NktoFUkqTKZSiVJI2lVo6+qoeJa2BZS35se1Nz8/N2149ZZZIkKRW+UypJGjuLwnfZNPUrrDxqTzpfU0vSIW3dTic0v8KRoVSSpApnKJUkjaUTmLBuX/a7tznGqut2cl6+U/rCWBQlSZLS4/RdSdJYugB4Arh+F+fZKZUkaZwwlEqSxkTIhqOANwCXxEzs3eF5gWZ+s+jzACxetzy3t6kkSapQTt+VJI2V80kWNWrb0Qm5ANpGVV8DMUDP5EagLYTcVjGSJKni2CmVJBVVCDSHaY8/Tn/t6fz+o/0sim/fyemLgQbqXoCeyUAAaMiNS5KkCmSnVJJUNJs7n8d8o4GqPvjdp6aw885nIwC1XdDbsO24JEmqOHZKJUnFtJiajQ288uvw0Dvh7wfDzjufAwBU90Bf/bbjkiSp4hhKJUnF1MjLvw0Nz8GylqHj25f8vVTdAwO1245LkqSK41/ykqQiGuhk7kWw8mhoP37wgc4dXJCMV/dAf91wzpckSWXOUCpJKp43fea7zPwL3NlCbtEiSFbgbd3BFa1A11ahdGfnS5KkMmcolSQVz2v/4xX0TnyeP7+vA4hAB7BgR9u75MYXUPfCxlwo3en5kiSp/Ln6riSpKEI2vBR4C7UbPxP76oe9pUuMLA3ZX38EmBgjxxWvQkmSVArslEqSiuV8YCNwxQiurQN6CluOJEkqRYZSSVLBhWzYGzgVuCZm4nMjuEUthlJJksYFQ6kkqRjOAuqBi0Z4vZ1SSZLGCUOpJKmgQjZMAM4GboqZ+OBuXx9o5tlDj+QvJ50YAu0h0Fz4KiVJUqkwlEqSCu0DwN7Akt29MBdA2wgDtbnVd5uANoOpJEmVy1AqSSqYkA0BaAH+BNw6glssBhqo7h28T2lDblySJFUgt4SRJBXSm4AjgY/ETIwjuL4RgNou6Juw7bgkSao4dkolSYXUAqwCrhvh9Z0A1K2H7inbjkuSpIpjKJUkjVoINId97nsSOIHbP1XHonjyCG/VSujroq4LejaH0i6gtSCFSpKkkmMolSSNyubFiV71tf3pq4dlF+zBCBcnipGl7PnoeQB0T4lAB7AgRpYWtGhJklQyQhzRKz+SJCVCoJ2G1U20NMKfmuGn38wf6oiR2bt9v2w4AHgc+HjMxLYClipJkkqQnVJJ0mg1cswVULsRlp0/dHxkpuY+14+uLEmSVA4MpZKk0anu7uRVl8Ej/wirXjr4yEgXJ8q/TGoolSRpHDCUSpJG58SzbmLKSljWMnh0NIsTGUolSRpH3KdUkjRiIRsCRzOPjXs8ySP/2EcyZbcTaB3F4kSGUkmSxhE7pZKk0TgeOIqJz2djrJodI1UxMnukgTQEmrnxim8AcOkDN45kBV9JklRe7JRKkkajBVgNXDvaG23eWqaqtwGAjXvNItlaBreEkSSpctkplSSNSMiGg4F3ApfHTNxYgFsuBhqoX5f81j0FoCE3LkmSKpShVJI0UguBXuCyAt0v2UKmfj0MVEPfhKHjkiSpIhlKJUm7LWTDdGA+cF3MxKcLdNtkC5n6dbBpGhCGjkuSpIpkKJUkjcQCkqm1Swp4z1agi/p10D01PzaarWUkSVIZMJRKknZLyIZa4DzgNzET/1io++YWM1rApFUbc6G0A1jgIkeSJFU2V9+VJO2u9wCzgDMLfeMYWRqyv1gAVMfI6wp9f0mSVHrslEqShi1kQwAuAB4GbirSY6YC64p0b0mSVGIMpZKkYQmBZr51y1PAsfziKzNYFN9flGesaXoZ9zW/IwTac3uXSpKkCub0XUnSLuXCYRuv/FoDG6fDijP2BNpC2PwuaOGeUddVk3untKnQz5AkSaXHTqkkaTgWM/2xBg79Maw4A3onQbL67uKCPgMatlp9t9DPkCRJJcZQKkkajkZe/VWIVbD83KHjhXxGdTfUdEP3tGI9Q5IklRhDqSRp1yaseZyjr4Q/nwLrZw0+0lnAp3RSn1vfaEuntNDPkCRJJcZQKknatZNOv436F+DOlsGjXUBrAZ/y39SvjcDgUFroZ0iSpBLjQkeSpJ0K2VDDIbyO9fs9yMpjJpJMp+0EWgu8yNF8JqwLAGyaBhCBq13kSJKkymanVJK0XSHQHALtfP97PUAjf37fTTEyO0aqcp+FDItbFjmCfKc0ACcW8BmSJKkEGUolSdvYvD0LNDHvosDf58AvvnxmEfcNTRYzqu5JfuuvGzouSZIqlqFUkrQ9SefygGVw4J1w10KINcXcniVZzKivPvktH05d5EiSpIpnKJUkbU/SoZy7JHm/8w/zh44XXivQtblDWtMNLnIkSdK4YCiVJG1PJ9M64PAfwj0LoGfKlvEiyL2fuoAYVgJQv3YVsMBFjiRJqnyGUknS9rQy96I+AJZ/Ij9W1M5ljCxlwby3APDe93/CQCpJ0vjgljCSpG0tCjfSX9vLwyf2sLZxIgXeAmYnunOfdTs9S5IkVQxDqSRpe+ZT3TuRQ38yN0buGsPn5lc4qh/DZ0qSpBQ5fVeSNETIhmpgIXBnzMSxDKSwpVNqKJUkaZwwlEqSNguBZq5fuhKYww3XvLiI+5Ju36UPvBOAn3/l0hBoH/PnS5KkMef0XUkSkAuk0MYrv97A801w/wdmAm0hbF4dt/jPr2m6GIDq3gA0jeXzJUlSOuyUSpLyFrP/igaaboe7zoOBGoAGYPGYPb+/vgHI71M61s+XJEkpMJRKkvIambsEuifD7z86dHysnh+rYaAaqruHjkuSpIplKJUkJaZ1PMkR34fffwy6pw0+0jlGFSTP6asf3Ckdy+dLkqQUGEolSYmTP/R7wkAydXeLLqB1jCpoBbrorx/cKR3L50uSpBQYSiVJhGyYRNPtr2XNnLt5/qAOIAIdwIKxWmQo95yr6a+D6h6AfuBqFzmSJKmyufquJAngdGA6ez3SEiP/m0YBudV/5w+avlsNzA+BOwymkiRVLjulkjTOhWyoAs4H7gbuSLGUxUDDVtN3XX1XkqQKZ6dUkvQO4GCgOWZiTLGOZJXd/rqtFzpy9V1JkiqYnVJJUgvwBHB9ynUkq+z210Lo33ZckiRVJEOpJI1jIRuOAt4AXBIzsTflcpLVdwdqoKovP+bqu5IkVThDqSSNby0kwa8t7UJyixktIMTuXCgd09V/JUlSOkJM9fUhSVJaQjbsRxL8roiZ+Im068kL2XAb0Bcz8Y1p1yJJkorPTqkkjV9nkyx4d3HahWylDxfikyRp3DCUStI4FLJhInAWcGPMxEfSrmcrhlJJksYRQ6kkjSMh0BwC7dx4+QZgL379ufvSrmmwEGjmsTf+A0++cl4ItIdAc9o1SZKk4jKUStI4kQt4bRCbmHtxYOXRcNtnLiiV4Jer4yp6J03MLXTUBFxVKvVJkqTiMJRK0vixGGjgxb+AmX+BO1uAqobceCm4GKinv3bwljD1lN47r5IkqYAMpZI0fjQCMO9CWL8f/PmUoePpmwFArIaq3m3HJUlSRTKUStL40cne98OLfgXLz4X+ui3jJSPC/ivg+dlpFyJJksaIoVSSxo9W5n2lj96JsOKM/FgX0JpiTYOt5oC7YPrf4P73Dx2XJEkVyyX3JWm8WBRuYaAqct+HXmDjXpNIOqStMbI07dJyFnLkd66hr76aB0/Kj/UAC1OsSZIkFZmdUkkaP86iaqCWo771yhipipHZpRJIQ6CZqt7FHPGDah4+IdI9NQIdwPxSqVGSJBWHnVJJGgdCNkwAzgZuipn4YNr1DLZ5q5rZv21g8jNwf3MgN63YQCpJUuWzUypJ40MzsDewJO1CtiPZqubwHyS/PfwOgFLaqkaSJBWRoVSSKlzIhgCcD/wJuDXlcrYn2ZJm457Jb3t0DB2XJEkVzVAqSZXvTcCRwJKYiTHtYrYj2ZJm5SuS37bsUVpCW9VIkqRiMZRKUuW7AFgFXJd2ITvw3wDUbUh+6500dFySJFU0Q6kkVbCQDYcBbwcui5m4Ke16duBEAGq7kt96Jg0dlyRJFc1QKkmVbSHQDVyediE7kbw7Wt2d/NZfP3RckiRVNEOpJFWokA0zgNOAa2Mmrkq7np1I3h2t6k9+G6geOi5JkiqaoVSSKkwINIdAO7f+v1XARG741kNp17QLrUAXIRdKYzXk9ilNryRJkjRWDKWSVEFCoBloo7qniVd9LfDIP8J9py3KjZekGFkKLKDuhecBGKjqABbkxiVJUoULsSR3B5AkjUQItANNvOzbcPJpcO3N8MjbADpiZHaqxe1CyIb/C3wOqI2Z2Jd2PZIkaWzYKZWkytIIEeZdCM8eBo+8ddB4ycu/TNqfahWSJGlMGUolqbJ0Mvu3sN+9cGcLELaMl75qIMaMU3gkSRpPDKWSVFlamfeVfjbMgPtOzY+Vy6JBNYDTdiVJGmdq0i5AklRAi8LdRKq445Nr6Zs4laRD2lomiwZV49RdSZLGHTulklRZFhLo5bgvHxojVTEyu0wCKRhKJUkalwylklQBQqA5NKzupKfhHP50Si+L4hvTrmkEDKWSJI1DhlJJKnOb9yZ9xZUHUtcFv/v0JKCtlPcm3VoINHPPxz7CxulTQ6C9nGqXJEmjYyiVpPK3mKreBl59CTz2Rnjm5QANwOKU6xqWzaF6oHYKA9UATZRZqJYkSSNnKJWk8tfI4dfD1CdhWcvQ8fKwGGgg9EPMb1VaPqFakiSNjqFUksreQCfzLoTVL4G/njD4QDnsTQr58FzTDf11245LkqSKZiiVpHJ33Jf+i1krYNn5EDf/sV4ue5NCPjzXdkHPpG3HJUlSRTOUSlK5e8u/HUlf3QbuO7UTiEAHsKCMtoJpBbqo3QC9m0NpOYVqSZI0CjVpFyBJGrmQDXOAk6jp+c/YPeXTadczEjGyNARgwvNX0tswgSRUt5ZRqJYkSaNgp1SSytt5JHt7Xpp2IaNW21W11fRdSZI0DhhKJalMhWyYBnwU+F7MxCfTrmekNm8JU91bR28DuCWMJEnjiqFUksrXR4HJwJK0CxmlZEuYoe+UuiWMJEnjhKFUkspQyIYaYCFwe8zEe9KuZ5SSrV9qu8h1SoeOS5KkimYolaTydBJJaLsw7UIKINn6pW6DW8JIkjQOGUolqTy1AI8BN6ZdSAG0wkDXVp1St4SRJGmcMJRKUpkJ2TAXmAdcHDOxP+16RitGllK/7hpCzL9T2g9c7ZYwkiSND4ZSSSo/LcBa4Oq0CymEEGimqu80IN8prQbmu/quJEnjg6FUkspIyIYm4J+AtpiJ69Oup0AWc8DyZN7upj3yY66+K0nSOGEolaTy8onc5yWpVlFIez7cyMmnwjMvhb+cNPiIq+9KkjQOhBhj2jVIkoYhZMMU4Ang5piJ70+7nkII2TCN5178LBPX1PKNu+H5gwYf7oiR2SmVJkmSxoidUkkqH/OBqcCStAsZjRBoDoH2UNU3wKNvWsn0x6r5wfc3bRVIXX1XkqRxwlAqSWUgZEM1cD5wZ8zEu9KuZ6Ryixe1AU28uTXwolsncvNX+/jbG68EOoCY+1zg6ruSJI0PhlJJKg/vAg4CLizGzTd3LwMDuc/m7Y2N9hnANUADL78GjvsSLD8b7j6nDjgxRmbHSFXu00AqSdI44TulklQGQjbcRrLwz4tjJvYV9N5bupcNg4a7gQDUDRrrYoQdzCHPOGAZfPh4ePw4+PYvYKAWIMbofyiVJGk8MpRKUokL2XAscDfwzzETC9opDdlQx9fu+xvTH9ufPR+B2i4IEYjb/6zZuJbXXPg1ksA6nB+AwD0L5tNXP4UQ4fDroWcStC2HjXvlS3FRI0mSxilDqSSVqFx3cTEnf7CJQ34a+caKBXH1IVfu8vyko9oJtMbI0pANAdgPOAR4Se4z/88HAdW7LCaG5IcAVf39JO9+Dv9n4x7TIHePrpnwvR/Cs0fk7z7iDqwkSSp/hlJJKkGbp7tOebKB82fD8nPhF0t2GN42nz/90QZmLYcZD8GMv/Rz0K87mbR6JjB50OkbgYdzPw/x02+cyTMvn8FzB0PPlC3hMw5udm42oo5mCLQDTds51A+cZiCVJGn8MpRKUgnaHOLe9Gk47ovw1Ufye3huNxSGQDu1XU38y95QtyEJlM/Phudnb+Kg33yDfABNPp+ImTgw6Nqxfae0APeTJEmVoybtAiRJ29VI7QY49gp48CQG7eHZuMPzG3+XBNIf/Rf8+RTomwBQHyMLd/agGFkakobokKm/ucPbTAceyZfZ0TMMpJIkyVAqSaWpk6O+1cTENXBny9DxHZ0/55Ym+mvhgffkA+nOzh8iFw63FxALFhp38gxJkjSOufy+JJWiqp7PMHdJ5MlXwuOvyY92saWDubVW5vxqgMdfA72ThnO+JElSSTCUSlIp+mz9OvZ6JHD3Watze7J0sLP3LxeFX7LvvYHO454nWfF25+dLkiSVCEOpJJWmFuAJ3v2R/WOkKkZm7yJgvoFA4HWL3z7M8yVJkkqCoVSSSkzIhqOANwCXxEzsHeZlbwbWASuKVpgkSVIRGEolqfS0kLwP2rYb17wZ+J+YiX3FKUmSJKk4DKWSVEJCNuwHfAC4KmbimmFecxAwB7ilmLVJkiQVg6FUkkrL2STbdV28G9e8KfdpKJUkSWXHUCpJJSJkw0TgLODGmImP7MalbwaeAh4sSmGSJElFZCiVpNLxIWAv4MLhXhCyoYqkU3pLzMRYrMIkSZKKxVAqSSUgFy7PB/4A3LYbl74MmIFTdyVJUpmqSbsASRIAbwUOA07bzY7nm3Oftxa+JEmSpOKzUypJKQqB5hBo59G33MQLe/fzH38f7nWXhkAff33bl3j2MFgUW4tcqiRJUlEYSiUpJSHQDLSx9/1NvOhXcNfCajZNvzw3vrPrLgXOobq7mqbb4LE3A5yTG5ckSSorhlJJSs9ioIG5S6B3Iqw4A6AhN74zZwJwwDKo68qH0i3jkiRJZcRQKknpaWTSKnjZd+De02HjXlvGd64agBkPJb+tPHrouCRJUhkxlEpSejo59utQ0w3Lzh86vnP9AEx6Jvltw95DxyVJksqIoVSS0tKwKsMrvwYPnwDPHZIf7QJ2tWjR5QBMfgY27gH99UPHJUmSyoihVJLS8q/7VDN5FSw/5xkgAh3AghhZurPLYuRc4DImPR3ZsA8kHdLLcuOSJEllJcTd2g5PklQIIRsC8EeSMHrUbu5Nmr/HbUCMmXh8oeuTJEkaK3ZKJSkdbwKOBC4aSSDN2Qd4pnAlSZIkjT1DqSSl4wJgFXDdKO5hKJUkSWXPUCpJYyxkw2HA24HLYiZuGuE9JgDTMJRKkqQyZyiVpLG3EOhmdKvl5veBMZRKkqSyZiiVpDEUsmEGcDpwbczEVaO41T65T0OpJEkqa4ZSSRpbZwATgCWjvI+dUkmSVBEMpZI0RkI21APnAr+MmfjnUd7OTqkkSaoINWkXIEnjyCnAvsD8AtzLUCpJkiqCnVJJGgMhGwLQAjwA/GJU9wo0s+KMT9M9BRbFv4RAc0GKlCRJSoGdUkkaG8cDRwEfj5kYR3qTXABto35tAy/sA9AEtIUAMbK0MKVKkiSNHTulkjQ2LgBWA9eO8j6LgQYmPwMb8jN4aciNS5IklR1DqSQVWciGg4ETga/HTNw4yts1AjDpGdiw97bjkiRJZcZQKknFtxDoBb5WgHt1AjD5GXLTd4eOS5IklRlDqSQVUciG6SSr7V4XM/HpAtyylZquLhqeg/X758e6gNYC3FuSJGnMGUolqbg+TvLO55JC3CxGlnLYjzMArJkTgQ5ggYscSZKkchXiyBeBlCTtRMiGWuBvwEMxE99UwPueCNwIzIuZuKxQ95UkSUqDW8JIUvG8B5gFnFng+87JfT5W4PtKkiSNOafvSlIRhGwIJNvAPAzcVODbzwE2AM8W+L6SJEljzk6pJBXHccCxwNkxEwcKfO85wGMx4/sXkiSp/NkplaTiaAHWANcU4d5zcOquJEmqEIZSSSqwkA1zgJOAK2ImbijwvQNJKH20kPeVJElKi6FUkgrvPKAfuLQI994HmIidUkmSVCEMpZJUQCEbpgEfBb4XM/HJIjzClXclSVJFMZRKUmF9DJgMLCnS/V+U+zSUSpKkimAolaQCCIHmUN3bzvONX+bxud0siocU4xnc/qmvEgN8fsMvQ6C50M+QJEkaa24JI0mjlAuHbRz64wb26ISfX1wPtIUAMbK0oM+YsrKBdbOgr6Gx0M+QJElKQ4hucydJoxIC7UATH50Hk1bBJQ9DrAboiJHZBX3G/Ncm9/6v/8kfKtgzJEmS0uD0XUkavUYOWAYHLoNl5+cDaTJeyGcATH8M1szZdlySJKlMGUolafQ6mbsENk2De+cPHS/kM2o2wtSntg6lhXyGJEnSmDOUStJovfjnF3L49XDPAuiZnB/tAloL+JRWpj+2ERgcSgv9DEmSpDFnKJWk0Tr17Y2EOMDdZz0BRKADWFDIBYhiZClzL7oKgDUHFeUZkiRJaXChI0kahZANU4AngJtjJr6/iM95K3AD8CRwVMzErmI9S5IkaSzZKZWk0ZkPTAWWFOsBIRveD9wIPAy81kAqSZIqiZ1SSRqhkA3VwF+BlTETjyvSM84CLgNuB94VM3FtMZ4jSZKUlpq0C5CkMvYu4CDgXwt945ANAfg/wOdIuqSnxEzcWOjnSJIkpc1QKkkj10Ky4NCPC3nTkA1VJNOBzwOuAT4WM7G3kM+QJEkqFb5TKkm7IQSaQ6A9zLp7AHgtD73z9piJfQW7fzbUAt8iCaQXAfMNpJIkqZIZSiVpmEKgGWgDmph7UaB7CtxwzXtD4NkQGAiB9tw5I7t/NjQAPwJOBT4DXBAzcaAw1UuSJJUmQ6kkDd9ioIHjPwcvWwr162HCunpgBhCAJqBtZ8F0c6d1qxAbsmEP4BfACcCZMRMXx4wr0UmSpMrn6ruSNEwhMAAEPrkPTF617Ql/fg+sOxA2Tl/DGz97DvBU7ufJmIldgzqtDYOu6uLAOz7JR487EzgMODVm4veL/mUkSZJKhKFUkoYpBNqp3dDEBQfCk6+EVS+FeUsgDOvP0bWsfkkDaxtrWT8L1u+f/GyYCW/+VB/TO3qAk2Im/rLIX0OSJKmkGEolaZhCoJlXXXI1J5xXx5W/g8fzW5NGOPI6eMu/wNSn4OETunjJTe8AqoFZwP7ALB44+VymPglTnoLJK6E6tz7Sxukwcc28mInLUvlikiRJKTKUStIwhWyoYtPUJ1kzZ0+uuKcWqp4DpgJ1ANSth+M/18u8C6uoGugCFgGX5FfPDYF2kvdOIQxAw7Mw9UlYN+vx+MI+jSl8JUmSpNS50JEkDd87mLBuX/a79/QYq6piZCYwn2Sv0kjPlA5+9aUPUzVwOPA74CvAH0M2vDl3fSvQBUCsgg37wMpXdLFhn39L4btIkiSVBDulkjR7C6iLAAAdG0lEQVRMIRt+DRwMzNnV3qEhGwJwIsleo3OAG4B/ZlH8JHAmydTefuDyGDm3qIVLkiSVMEOpJA1DyIajgD8An4qZ+MXduG4C8M9AKwPVtdzWCr/7dC19E/OndAELYmRpwYuWJEkqA07flaThaQE2kGzpMmwxEzfFTPwCcCgPn9jL6/9fLeccDof+CIiQbA/zncF7lkqSJI0ndkolaRdCNuxH8t7oFTETPzHi+wQGmP2bwNvPg33uh0ffAjd/FVYfmj/FrqkkSRp37JRK0q6dDdQAF4/yPp20vwGu+APcfDHMWg5nHQlvvQCmPwpJ13TxaIuVJEkqJ3ZKJWknQjZMBB4Hfhcz8d2julcyPbeNJHzCpFXwxs/AK66EEOGJV8N9zZETFu4XM/GZURcvSZJUBgylkrQTIRs+DlwBvD5m4m9Hfb8kmC4mv18pwNTH4aXfhZd9B/b9I8AAcAuwFPhRzMR1o32uJElSqTKUStJ2hEAzoX8xZx/ZxEB1D5ffOz8OVBfsXc9tuqaJLl52zSJOPn0a0AwcBGwCbiQJqDfHTOwuVA2SJEmlwFAqSVvZHBhffHMDp54AN3wb7ju14IsQDeqaNgKdQGv+/rl9TueShNNTgJnA88D1wFI+37U/fRO/sL1rJUmSyomhVJK2EgLtQBMf+kfY+364qB366wA6YmT2mNeTDTXAm4APAicBk1m/X+RPHwjcOx9WvRRcuVeSJJUpQ6kkbSUEBtj7/sDZR8KtX4DbW/OHYozprloesqGBG77VzuE3zOTgm2CgBr6wAQiQUmiWJEkaDbeEkVQRQqA5BNpDYCD32TyKczuZuwR6J8KKM4aOpyxmYhf3nTaD7/4Ylp8LsYpcIIVkKq8kSVJZMZRKKnu5UHk1xCYmPROY+FwTtS9cHWo3fnAH57aRrH4bcp/fCYFnN4fTWcv/g5d9B+49HTbulb+0C2jd+n4pScJx/VrYtMe245IkSWWkJu0CJKkALgbqOOYb8M4z82N1wLUhy9UkK9gmPwsP2o/uKTX0ToKnjoX246HjddA1cwbQFgJwWuubqemGZefn77UaWFhC72v+N3AOE57fOpT+d0r1SJIkjZihVFIlmJH870PQOwF+9UWo2QS1G+ENmS8DE4CJwASeePWHqd0IE9bA0VfCqy9J7rDqCGh/fQNPHXM5c26dwsMnwHOH5O/fsO0jU3UKwHZC6SnAuWkUJEmSNFIudCSp7IVA8gfZu0+H2f8DF3VsPhbjlhcuc+e2k0zZheoe2H8FNP02ua7xf6Fuw5aTV5wBK4+Gp4+CVUd0xp7JTUX+KsOy+fueeRSsPRCuu3Hzsa2/ryRJUqkzlEoqeyHwLDCD5hNhylNwxe/zh1bHyMytzs2/U7pt97O6B/5vffLPf30bHHgnTFib/D5QBVUDDwL3Dv6JmfjMVvfe7r6jOzqeO7TDa3bwfSNhAFonw4oz4RcXbj5mKJUkSeXG6buSKsFC4ComPldP1+aFibpz40PEyNKQxLaLyU/7zZv9m03ABH58Fdw7H4iwRwfsey8csGwt//CfDwHzgPfnLwnZ8DRwLx2v7eGlZ76Vp19Rz/NNMFDbxEBVWwhV+WduHYabgKtIFluqGzTWFkJS506+73qmPzaF2o3w7OGDx1fv4t+TJElSybFTKqkihEAzC+d8iydfVcP13+1geB3HoZ3LhbOfZ/Izs/mPNbX0TxjcSe0CFuTvF7JhOvBy4KjNP/01L6e6b9uH9NdAdd9GuqdMoL820F8HvZOgewr0TIGeyck/rzgT2t+Qv2qH+43mar6KI75Xz3vfD9+8E56YC9AHnF5CizFJkiQNi6FUUsUI2fAc8N2YieeM4NrDgAeADIviI+zulNqaTQPMfDCw770w+Wmo6oWqPqjuhdf++5dZtvCTye89UPdC7md98jnzL9D5D3Dtz/O3izFuf8uuze/EvvpiePv58OWV8MK+AOtjZOrufm9JkqS0OX1XUkUI2VANTAeeG+EtzieZ8nt5jKyC3ew49k/o5Omjmnj6qK2PdMRbFv9LCLyX/AJLW3vXR+GQnwKRZDbvTvcbbQRgw97Jbw2r86F0Sgg02ymVJEnlZrv/JV6SytAeJIlut0NpyIYZwGnAt2Mmrhrh81tJpvkO1sWWxYy2d7wb6GHlMTBpNUzr3Pqa7UkCa3euKTrzgcHHFu9+2ZIkSekylEqqFPkVjkbSKT2DZC/Ti0b68FyHcgHQQdLy7GDQe6g7OP4RYD5Pv2wlAAf+77ODr8kLgeYQaA+BAWASh/0Q3nsKrN8v/z5pXuNI65ckSUqL75RKqgghG+YBdwAnxEy8eTeuqwfagftiJr61SOXtqoYJwHrgSzETh3RJh6zaGwbgDZ+F130BHp8L37sBXthv8Ok7XCBJkiSpVNkplVTW8l1Elv70fwG4+aJjd/MWpwD7Ahfu6sRiiZm4Cbgf2F7ti4EGpj4O7///kkD6+4/Cf/0mbhVIdzXtV5IkqSQZSiUVzOBpprnP5uEcG87x7T5v0qrTmdbxTfb7fRMH3pHsPvrXEz49nGsBQjYEoIVk1d1f7s53LYIVwDG5mrbY595GTvoQLJwDL/45/OxS+Gkb9E+AHUwVliRJKieuviupIIZMM000AW2DItZWxwbaQm13oGZTFf11F1LfP4PQDxPWQsOzTUx++qpw0g9fy1HfehSYCeyd+9zy869MHlJE7wRYv/9Eku7icALa8ST7jH48ZlJ+l+H+91Xx0u/vyUWP9odFA5288bPX8bovHMNZBLonw/JPwLKFsHbzAr6dTtWVJEmVwHdKJRXE5v0zX3IjvO38ZH/OZF/OAUI/hIEqqvqTsao+qOrfndv3AM8Cq3Kfyc+tn1/Ihr0DXTNhw0xY86L89ig73OdzSM3Z8FNgHtAYM3Hjbn7lggmBZvZffiUff/UE7lkAs+6Cfe+D3onP0/76n/PD77yLTdMbBl3ShZ1RSZJUIQylkgoitzJsYL974IRz4cBlWw4OVEHH8bDyaBiogVgNs5bDnFuH3uTnS6B7SrIHZ9dM2DAjsvDgPYD12+tkbg7C29rlgj8hGw4GHgI+HzPxs7v3bQsrBNqp7m7i01OhpgdWHQF3fBL+9IGO2Fc/O9eFXkyyum4n0GoglSRJlcJQKqkgtgmIU5+Aw26AI77Xy4F31hJ28WfNvafBj7+19ehOw+V2pgzDMLuIIRsuJdmipSlm4tM7L664Ngf6Q34K/XXwyFtJtlwdXsdXkiSpnBlKJRXETgJiF5OemUFLE9R0bzmy+hBYfs4L/OEjk+mdtL1bDi9cjqCLGLJhT+Bx4AcxEz+8q+9WbKPp+EqSJJU7FzqSVBAxsjS3qNGQgAhcy4Z94AsbYM4t8OjmrUAjcAbbBlmA1cDC4UxRzZ2zu1NZF+SeuWQ3ryuWVrYf6N3iRZIkVTw7pZKKalddwLF+XzJkQy3wN+ChmIlvKtZzdpfvjUqSpPHKTqmkYttpF3CEnc7ReC8wCzhzDJ+5Syn8e5AkSSoJLqAhqahyYWsB0EEyZbeDlLYzCdkQgBbgYeCmsX6+JEmStmWnVFLRlVAX8DjgWODsmIkDaRcjSZIkO6WSxpcLgDXANWkXIkmSpIShVNK4ELJhDvBu4PKYiRvSrkeSJEkJQ6mk8eI8oB+4LO1CJEmStIVbwkiqeCEbpgFPAD+JmXhq2vVIkiRpCzulksaDjwGTgSVpFyJJkqSh7JRKqmghG2qAR4H2mInHp12PJEmShnJLGEmV7iSgEViYdiGSJEnaltN3JVW6C0g6pTemXYgkSZK2ZSiVVJFCoDnMvm0lMJdffnE6i+IpadckSZKkbTl9V1LFCYFmoI1XXtbApmmw4qw9gbYQIEaWpl2fJEmStrBTKqkSLWZaRwOHXw/3LICeyQANwOKU65IkSdJWDKWSKlEjr74ECLD8E0PHJUmSVFIMpZIqT/3ax3lFGzzwHlg7JId2plWSJEmSts9QKqnyvPvD/8OEdXBny+DRLqA1pYokSZK0AyHGmHYNklQwIRuqgb+yft9evrKynmTKbifQ6iJHkiRJpcfVdyVVmncBBzHl6ffGyPVpFyNJkqSdc/qupEpzAdAB/DjtQiRJkrRrhlJJFSNkw7HAPwAXx0zsS7seSZIk7ZqhVFIlaQHWA1emXYgkSZKGx1AqqSKEbDgAeB9wZczEdWnXI0mSpOExlEqqFOeS/Jn21bQLkSRJ0vAZSiWVtRBoDvXrO9g4/VM8dOImFsV5adckSZKk4XNLGEllKwSagTZe/u0GJq6B3/1bA9AWArgnqSRJUnkIMca0a5CkEQmBdsJAE+ceChunwzeXAQGgI0Zmp1udJEmShsPpu5LKWSMH/wz2+issayEXSJNxSZIklQVDqaSylJu6C/OWwNoD4IF/Gny4M5WiJEmStNsMpZLK1WL2vTdw0G/grvNgoDY/HoHWFOuSJEnSbjCUSipXjcxdAj2T4PcLhhxwkSNJkqTyYSiVVJ6mPv4kR14Hf5gPm/YYfMSpu5IkSWXEUCqpPJ38oRVU9cFdCwePduHUXUmSpLLiPqWSyk7IhonM5rX8/UX38PcXzyBZbbcTaHXqriRJUnkxlEoqRx8C9mLPR/8pRn6bdjGSJEkaOafvSiorIRuqgBbgD8BtKZcjSZKkUbJTKqncvBU4FPhQzMSYdjGSJEkaHTulkspNC7AS+H7ahUiSJGn0DKWSykbIhiOBtwCXxkzsSbseSZIkjZ6hVFI5OR/YCFyRdiGSJEkqDEOppLIQsmFv4IPAt2ImPpd2PZIkSSoMQ6mkcnEWUA9clHYhkiRJKpwQXbxSUokL2TAB6ASWx0w8Me16JEmSVDh2SiWVtBBo5meXPQHM5NqfHRsCzWnXJEmSpMKxUyqpZCUBdKCNs17eQKyCy+8FQhewIEaWpl2fJEmSRs9OqaRStpg5tzawz/2wrAUIAA3A4nTLkiRJUqEYSiWVskbmLYEX9oE/fWDouCRJkiqCoVRS6dr7vpUcfDPcfTb01w8+0plWSZIkSSosQ6mk0nXS6Q/SVw8rzhw82gW0plSRJEmSCsxQKqkkhWyYwX73vobVh/6GDXt3ABHowEWOJEmSKkpN2gVI0g6cAUxg3z9+Ikb+nHYxkiRJKg63hJFUckI21APtwH0xE9+acjmSJEkqIjulkkrRKcC+wIdTrkOSJElF5julkkpKyIYAtAAPAL9MuRxJkiQVmZ1SSaXm9cBRwMdjxvcLJEmSKp2dUkmlpgVYDVybdiGSJEkqPkOppJIRsuElwInA12Mmbky7HkmSJBWfoVRSKVkI9AJfS7sQSZIkjQ1DqaSSELJhT5LVdpfGTHw65XIkSZI0RgylklIVAs0h0M6v/n010MBP2h5KuyZJkiSNnRBd3FJSSkKgGWijqreB8w+C1YfANbd2AQtiZGna9UmSJKn47JRKStNioIEjfgBTn4Q7LwBoyI1LkiRpHLBTKik1ITAAMbDgVVC/Hi57AGIVQIzR/2gmSZI0Hvh/+iSlqZPG/4VZK2DZwnwgTcYlSZI0LhhKJaWpldd8uZ+uPeGPp+XHuoDWFGuSJEnSGKpJuwBJ49iisIxIFcta1tI7aSpJh7TVRY4kSZLGDzulktJ0HoF+5i05IkaqYmS2gVSSJGl8caEjSakI2TANeAL4SczEU9OuR5IkSemwUyopLR8DJgNL0i5EkiRJ6bFTKmnMhWyoAR4F2mMmHp92PZIkSUqPCx1JSsPJQCOwMO1CJEmSlC6n70pKQwtJp/TGtAuRJElSuuyUShpTIRvmAXOB82Im9qddjyRJktJlp1TSmAiB5hBo58/vvYNNUyNL/vZC2jVJkiQpfYZSSUUXAs1AG9M6mjjsh3DPGYG1sy/NjUuSJGkcM5RKGgsXAw28+hIgwF2fAGgAFqdalSRJklJnKJVUVLlu6Azq1sMr2uCB98C6A/OHG1MsTZIkSSXAUCqp2JJu6NFXwYR1cOcFg491plKRJEmSSoahVFKxNRL6Ye7F0PkaePJVg4+1plWUJEmSSoOhVFKxdXLIT2H632BZy+Dx1TGyNK2iJEmSVBoMpZKKrZXXfHmANbPhwXfnx7qAhemVJEmSpFJRk3YBkircovAwUMUtX1jDQM0eJO+RttollSRJEkCIMaZdg6QKFrLhO8A7gQNiJq5Lux5JkiSVFqfvSiqakA0HAO8DvmkglSRJ0vYYSiUV07kkf858Ne1CJEmSVJqcviupKEI2TAYeB26NmfietOuRJElSabJTKqlYTgf2AJakXYgkSZJKl6FUUsGFbKgi2fJlOXBHyuVIkiSphLkljKRieAdwMPCBmPEdAUmSJO2YnVJJxXAB8ATww7QLkSRJUmkzlEoqqJANRwGvB74aM7E35XIkSZJU4gylkgoiBJpDoJ17T/sDPQ2RSx9Yk3ZNkiRJKn2+Uypp1EKgGWhj8soGjrwOVpwRWH3YxSHQFSNL065PkiRJpctOqaRCWAw08KrLoKoP7loI0JAblyRJknbIUCppiPw03BAYyH02D+OyRmo2wrGXw0Pvgr+/eMu4JEmStBOGUkmbbZ6GC01AyH22DSOYdvLyb0PDc3Bny9BxSZIkaScMpZIGS6bhHvMNOOGc/Niup+FW9XyGeRdGnnoFdLwuP9oFtBarUEmSJFUGQ6mkwZLptrOWw6E/2XZ8Rz5b/3dmPBRYcdZqCBHoABa4yJEkSZJ2xVAqabAdTbfd1TTcFmAl71owK0aqYmS2gVSSJEnDYSiVNFgrybTbwXY6DTdkw5HAW4BLYib2FLE2SZIkVSBDqaTNct3NBdRseiE3NJxpuOcDG4Eril2fJEmSKk9N2gVIKi0xsjRkv/NG4G0xMntn54Zs2Af4IHB1zMS/j0V9kiRJqix2SiWNxllAPXBR2oVIkiSpPBlKJY1IyIYJwNnAz2ImPpR2PZIkSSpPhlJJI9UMzASWpF2IJEmSypehVNJuC9kQgAuA+4Bfp1yOJEmSypgLHUkaiTcDRwDzYybGtIuRJElS+bJTKmmIEGjmvg+ewrpZs0KgPQSaBx8LgXb++vZfsmHmAP+5eiDNWiVJklT+7JRK2iwXQNvom9CQG2qC/7+9u2fNqw4DOHwfXzEggrYOIm7qoKAgiKObCn4FRYRifUOdBAdLFmdB0UqdBP0KbroWCkInFxedFOuitRasHIeGkBbb1Br4ycN1LUnufx64p8CPc3LOnFiW3V85MYe+3Zr7v5z5evuG+eOuj5dlLuzzHlMAALgiUQrs9d7MbF0229qZX/z+ifdnLtw6c+rlvWeiFACA6yJKgb3uu+p868zMI5/NnH5u5tzh/T4DAAD78j+lwF4/XGX+wzz2yczN52dOvnktnwEAgH2JUmCvd2bm3GWzczPzztz2y7vz+AfrfPfUzM8PXXoGAADXSZQCu3YeWHRkbjp/dmf0/cwcWdf5Yt4+NHP7T8uceuWnmVkvOQMAgOu0rF4xCFxm2V4+nZmn12PrvTs/LzPzzczcMjMPezcpAAAHxYOOgGvx5Mw8OjNHBCkAAAfJ7bvAtXhrZs7MzOf1IgAAbBZRClzVsr08MDPPzszH67H1j3ofAAA2iygF9vPGzPw5Mx/ViwAAsHlEKXBFy/Zy58y8MDNfrMfWH+N1AADYQKIUuJojM7M1M+/XiwAAsJlEKXAlN8/M6zPz1XpsPV0vAwDAZvJKGOBK7t75+lK6BQAAG82VUuASyzIfzjcvvjgzM2cenNn+85l4JQAANpgoBXYty3w4M6/OLMvMzJx8Y2a96dWdOQAAHDhRCux1dGZmzt8x8/vhmdPPXzoHAIADtqzrWu8A/E8sy1z8g3DL2Zlbf5357Z7ds3WdpdoLAIDNJUqBXcsyF2bmxn84+mtdPRgNAICD5/ZdYK/j/3IOAAD/iSsfwK51ndd2HnF0dC5eMf1rZo6v67xW7gUAwOZy+y4AAAAZt+8CAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZEQpAAAAGVEKAABARpQCAACQEaUAAABkRCkAAAAZUQoAAEBGlAIAAJARpQAAAGREKQAAABlRCgAAQEaUAgAAkBGlAAAAZP4Gy76fBg8QdUoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(figsize=(16, 12))\n", "core_set_pts = pyscan.lifting_kernel(pts, alpha)\n", "plot_approx(ax, pts, core_set_pts)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Gridding Methods\n", "These methods grid the trajectory in various ways using a 1 / alpha x 1 / alpha grid. They tend to use\n", "far more points then the previous methods.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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oEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACgSpgCAABQJUwBAACoEqYAAABUCVMAAACqhCkAAABVwhQAAIAqYQoAAECVMAUAAKBKmAIAAFAlTAEAAKgSpgAAAFQJUwAAAKqEKQAAAFXCFAAAgCphCgAAQJUwBQAAoEqYAgAAUCVMAQAAqBKmAAAAVAlTAAAAqoQpAAAAVcIUAACAKmEKAABAlTAFAACg6r+/pNbhivzBXQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(1, 2, figsize=(16, 12))\n", "core_set_pts = pyscan.grid_trajectory(pts, alpha)\n", "plot_approx(ax[0], pts, core_set_pts)\n", "core_set_pts = pyscan.grid_kernel(pts, alpha)\n", "plot_approx(ax[1], pts, core_set_pts)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Even Simplification\n", "Just takes points evenly along the length of the trajectory. This is a nice general method which can be used as a basis for other methods." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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KQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANlIKAADARkoBAADYSCkAAAAbKQUAAGAjpQAAAGykFAAAgI2UAgAAsJFSAAAANgG+aq+usmRNZgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f, ax = plt.subplots(figsize=(16, 12))\n", "core_set_pts = pyscan.even_sample_error(pts, alpha, False)\n", "plot_approx(ax, pts, core_set_pts)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }