Skip to content

Instantly share code, notes, and snippets.

@amb
Created February 25, 2024 12:07
Show Gist options
  • Save amb/71538a3fd43fa92b041fabaa5b00cf7d to your computer and use it in GitHub Desktop.
Save amb/71538a3fd43fa92b041fabaa5b00cf7d to your computer and use it in GitHub Desktop.
Optimal transport rough approximation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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XHP/cQQQPxHtRTidTk2dOlXr168PPxYMBrV+/XpVVFR0+ZqKiopOz5ekdevWXfL5AAAgvUS8TVNVVaV58+Zp2rRpmj59upYvXy6fz6f58+dLkubOnauBAwdq2bJlkqT77rtPN998sx5//HHdfvvtevbZZ7V582Y9/fTT0f2TAACApBRxGJkzZ45qa2u1ZMkS1dTUaPLkyVq7dm24SfXQoUOy288tuFx//fV65pln9I1vfENf+9rXNGrUKL3wwgvdnjECAABSG+PgAQBATHT385vzqwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMCoiMfBmxAaEuv1eg1XAgAAuiv0uX2lYe9JEUYaGhokSeXl5YYrAQAAkWpoaFB+fv4lfz8p7qYJBoM6duyYcnNzZbPZovZ9vV6vysvLdfjwYe68iSF+zvHDzzo++DnHBz/n+Ijlz9myLDU0NKisrKzTJboXSoqVEbvdrkGDBsXs++fl5fEXPQ74OccPP+v44OccH/yc4yNWP+fLrYiE0MAKAACMIowAAACj0jqMuFwuLV26VC6Xy3QpKY2fc/zws44Pfs7xwc85PhLh55wUDawAACB1pfXKCAAAMI8wAgAAjCKMAAAAowgjAADAqLQOIytWrNDQoUPldrs1Y8YMbdq0yXRJKWXZsmW69tprlZubq+LiYt1xxx3auXOn6bJS3ne/+13ZbDbdf//9pktJOUePHtXnP/95FRYWKisrSxMmTNDmzZtNl5VyAoGAFi9erGHDhikrK0sjRozQww8/fMX7TXB5r732mmbPnq2ysjLZbDa98MILnX7fsiwtWbJEAwYMUFZWliorK7V79+641Ja2YWTNmjWqqqrS0qVLtXXrVk2aNEmzZs3SiRMnTJeWMl599VUtWLBAb731ltatW6fW1lbdcsst8vl8pktLWe+8845+8pOfaOLEiaZLSTmnT5/WzJkzlZmZqT/96U/atm2bHn/8cfXt29d0aSnnscce01NPPaUf/ehH2r59ux577DF973vf05NPPmm6tKTm8/k0adIkrVixosvf/973vqcf/vCHWrlypd5++23l5ORo1qxZam5ujn1xVpqaPn26tWDBgvCvA4GAVVZWZi1btsxgVantxIkTliTr1VdfNV1KSmpoaLBGjRplrVu3zrr55put++67z3RJKeXBBx+0brjhBtNlpIXbb7/d+sIXvtDpsX/4h3+w7rrrLkMVpR5J1vPPPx/+dTAYtEpLS63vf//74cfOnDljuVwu69e//nXM60nLlRG/368tW7aosrIy/JjdbldlZaU2btxosLLUVl9fL0nq16+f4UpS04IFC3T77bd3+nuN6Pn973+vadOm6TOf+YyKi4s1ZcoUrVq1ynRZKen666/X+vXrtWvXLknSu+++qzfeeEO33nqr4cpS1/79+1VTU9Ppvx/5+fmaMWNGXD4Xk+KivGirq6tTIBBQSUlJp8dLSkq0Y8cOQ1WltmAwqPvvv18zZ87U+PHjTZeTcp599llt3bpV77zzjulSUta+ffv01FNPqaqqSl/72tf0zjvv6Ktf/aqcTqfmzZtnuryU8tBDD8nr9WrMmDFyOBwKBAJ65JFHdNddd5kuLWXV1NRIUpefi6Hfi6W0DCOIvwULFuiDDz7QG2+8YbqUlHP48GHdd999Wrdundxut+lyUlYwGNS0adP06KOPSpKmTJmiDz74QCtXriSMRNlvfvMb/epXv9IzzzyjcePGqbq6Wvfff7/Kysr4WaeotNymKSoqksPhkMfj6fS4x+NRaWmpoapS18KFC/XHP/5Rr7zyigYNGmS6nJSzZcsWnThxQtdcc40yMjKUkZGhV199VT/84Q+VkZGhQCBgusSUMGDAAI0dO7bTY1dffbUOHTpkqKLU9W//9m966KGH9I//+I+aMGGC7r77bj3wwANatmyZ6dJSVuizz9TnYlqGEafTqalTp2r9+vXhx4LBoNavX6+KigqDlaUWy7K0cOFCPf/88/rrX/+qYcOGmS4pJX3sYx/T+++/r+rq6vDXtGnTdNddd6m6uloOh8N0iSlh5syZFx1N37Vrl4YMGWKootTV1NQku73zx5PD4VAwGDRUUeobNmyYSktLO30uer1evf3223H5XEzbbZqqqirNmzdP06ZN0/Tp07V8+XL5fD7Nnz/fdGkpY8GCBXrmmWf0u9/9Trm5ueF9x/z8fGVlZRmuLnXk5uZe1IeTk5OjwsJC+nOi6IEHHtD111+vRx99VJ/97Ge1adMmPf3003r66adNl5ZyZs+erUceeUSDBw/WuHHj9Le//U1PPPGEvvCFL5guLak1NjZqz5494V/v379f1dXV6tevnwYPHqz7779f3/nOdzRq1CgNGzZMixcvVllZme64447YFxfz8zoJ7Mknn7QGDx5sOZ1Oa/r06dZbb71luqSUIqnLr//8z/80XVrK42hvbPzhD3+wxo8fb7lcLmvMmDHW008/bbqklOT1eq377rvPGjx4sOV2u63hw4dbX//6162WlhbTpSW1V155pcv/Js+bN8+yrPbjvYsXL7ZKSkosl8tlfexjH7N27twZl9pslsVIOwAAYE5a9owAAIDEQRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABg1P8PkZlMLD9MyKoAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# plot gaussian\n",
"x = np.linspace(0, 10, 30)\n",
"y = np.exp(-(x-2.5)**2)\n",
"# wider gaussian\n",
"# y2 = np.exp(-(x-2.5)**2*0.1)\n",
"plt.plot(x, y)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 380,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"int32\n"
]
},
{
"data": {
"image/png": "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er1677337OMnTpxQbm6uunXrpi5duigrK0s1NTUB56iurlZmZqYiIyMVGxuryZMn6/Tp0wE169ev18033yyn06levXqpqKio6VcIAADanKACTI8ePTRnzhxVVFRox44duuuuu3TPPfdo7969kqRJkybp3Xff1ZtvvqkNGzboq6++0n333We/v6GhQZmZmTp58qQ2b96s119/XUVFRZo+fbpds3//fmVmZurOO+9UZWWlJk6cqEceeUSrV68O0SUDAADTBfUU0siRIwNez549W4sWLdKWLVvUo0cPvfLKKyouLtZdd90lSXrttdfUp08fbdmyRYMGDdKaNWu0b98+rV27Vm63W/3799esWbM0depUFRQUyOFwaPHixUpKStK8efMkSX369NGmTZs0f/58ZWRkhOiyAQCAyZo8B6ahoUFLly7VsWPH5PV6VVFRoVOnTik9Pd2u6d27t3r27Kny8nJJUnl5ufr16ye3223XZGRkyO/326M45eXlAec4U3PmHBdTX18vv98fsAEAIOlvj4ufvcF4QQeY3bt3q0uXLnI6ncrJydHy5cuVnJwsn88nh8Oh6OjogHq32y2fzydJ8vl8AeHlzPEzxy5V4/f7dfz48Yu2q7CwUFFRUfaWkJAQ7KUBAABDBB1gbrjhBlVWVmrr1q169NFHlZ2drX379jVH24KSn5+vuro6eztw4EBLNwkAADSToFfidTgc6tWrlyQpNTVV27dv14IFC/STn/xEJ0+e1OHDhwNGYWpqauTxeCRJHo9H27ZtCzjfmaeUzq4598mlmpoauVwude7c+aLtcjqdcjqdwV4OAAAw0HdeB6axsVH19fVKTU1Vp06dVFZWZh+rqqpSdXW1vF6vJMnr9Wr37t2qra21a0pLS+VyuZScnGzXnH2OMzVnzgEAABDUCEx+fr5GjBihnj176siRIyouLtb69eu1evVqRUVFaezYscrLy1NMTIxcLpcee+wxeb1eDRo0SJI0bNgwJScna/To0Zo7d658Pp+mTZum3Nxce/QkJydHL7zwgqZMmaKHH35Y69at07Jly7RixYrQXz0AADBSUAGmtrZWY8aM0cGDBxUVFaWUlBStXr1aP/zhDyVJ8+fPV4cOHZSVlaX6+nplZGToxRdftN8fHh6ukpISPfroo/J6vbrqqquUnZ2tmTNn2jVJSUlasWKFJk2apAUL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hx5St27d1LlzZ/Xr1087duywj1uWpenTpysuLk6dO3dWenq6PvnkkxZssZkaGhr0q1/9SklJSercubOuu+46zZo1K+B7dOjr4G3cuFEjR45UfHy8wsLC9Pbbbwccv5w+PXTokEaNGiWXy6Xo6GiNHTtWR48eDV0jv/s3F7U/S5cutRwOh/Xqq69ae/futcaNG2dFR0dbNTU1Ld00Y2VkZFivvfaatWfPHquystK6++67rZ49e1pHjx61a3JycqyEhASrrKzM2rFjhzVo0CDrBz/4QQu22mzbtm2zrrnmGislJcV6/PHH7f3083d36NAhKzEx0frpT39qbd261fr888+t1atXW59++qldM2fOHCsqKsp6++23rY8++sj60Y9+ZCUlJVnHjx9vwZabZ/bs2Va3bt2skpISa//+/dabb75pdenSxVqwYIFdQ18Hb+XKldYvf/lL66233rIkWcuXLw84fjl9Onz4cOumm26ytmzZYn3wwQdWr169rAceeCBkbSTANMGtt95q5ebm2q8bGhqs+Ph4q7CwsAVb1bbU1tZakqwNGzZYlmVZhw8ftjp16mS9+eabds3HH39sSbLKy8tbqpnGOnLkiHX99ddbpaWl1j/+4z/aAYZ+Do2pU6dat99++0WPNzY2Wh6Px3r66aftfYcPH7acTqf1hz/84Uo0sc3IzMy0Hn744YB99913nzVq1CjLsujrUDg3wFxOn+7bt8+SZG3fvt2uee+996ywsDDryy+/DEm7uIUUpJMnT6qiokLp6en2vg4dOig9PV3l5eUt2LK2pa6uTpIUExMjSaqoqNCpU6cC+r13797q2bMn/d4Eubm5yszMDOhPiX4OlXfeeUcDBw7UP//zPys2NlYDBgzQf/zHf9jH9+/fL5/PF9DPUVFRSktLo5+D9IMf/EBlZWX685//LEn66KOPtGnTJo0YMUISfd0cLqdPy8vLFR0drYEDB9o16enp6tChg7Zu3RqSdrTalXhbq//93/9VQ0PDeSsCu91u/elPf2qhVrUtjY2Nmjhxom677Tb17dtXkuTz+eRwOM77gk632y2fz9cCrTTX0qVL9V//9V/avn37ecfo59D4/PPPtWjRIuXl5ekXv/iFtm/frn/913+Vw+FQdna23ZcX+j1CPwfniSeekN/vV+/evRUeHq6GhgbNnj1bo0aNkiT6uhlcTp/6fD7FxsYGHO/YsaNiYmJC1u8EGLQ6ubm52rNnjzZt2tTSTWlzDhw4oMcff1ylpaWKiIho6ea0WY2NjRo4cKCeeuopSdKAAQO0Z88eLV68WNnZ2S3curZl2bJlWrJkiYqLi3XjjTeqsrJSEydOVHx8PH3dxnELKUjdu3dXeHj4eU9l1NTUyOPxtFCr2o4JEyaopKRE77//vnr06GHv93g8OnnypA4fPhxQT78Hp6KiQrW1tbr55pvVsWNHdezYURs2bNBzzz2njh07yu12088hEBcXp+Tk5IB9ffr0UXV1tSTZfcnvke9u8uTJeuKJJ3T//ferX79+Gj16tCZNmqTCwkJJ9HVzuJw+9Xg8qq2tDTh++vRpHTp0KGT9ToAJksPhUGpqqsrKyux9jY2NKisrk9frbcGWmc2yLE2YMEHLly/XunXrlJSUFHA8NTVVnTp1Cuj3qqoqVVdX0+9BGDp0qHbv3q3Kykp7GzhwoEaNGmX/TD9/d7fddtt5ywD8+c9/VmJioiQpKSlJHo8noJ/9fr+2bt1KPwfpm2++UYcOgX+VhYeHq7GxURJ93Rwup0+9Xq8OHz6siooKu2bdunVqbGxUWlpaaBoSkqnA7czSpUstp9NpFRUVWfv27bPGjx9vRUdHWz6fr6WbZqxHH33UioqKstavX28dPHjQ3r755hu7Jicnx+rZs6e1bt06a8eOHZbX67W8Xm8LtrptOPspJMuin0Nh27ZtVseOHa3Zs2dbn3zyibVkyRIrMjLS+v3vf2/XzJkzx4qOjrb++Mc/Wrt27bLuueceHu1tguzsbOsf/uEf7Meo33rrLat79+7WlClT7Br6OnhHjhyxdu7cae3cudOSZD3zzDPWzp07rf/+7/+2LOvy+nT48OHWgAEDrK1bt1qbNm2yrr/+eh6jbg2ef/55q2fPnpbD4bBuvfVWa8uWLS3dJKNJuuD22muv2TXHjx+3/uVf/sW6+uqrrcjISOvHP/6xdfDgwZZrdBtxboChn0Pj3Xfftfr27Ws5nU6rd+/e1ksvvRRwvLGx0frVr35lud1uy+l0WkOHDrWqqqpaqLXm8vv91uOPP2717NnTioiIsK699lrrl7/8pVVfX2/X0NfBe//99y/4Ozk7O9uyrMvr06+//tp64IEHrC5dulgul8v62c9+Zh05ciRkbQyzrLOWKwQAADAAc2AAAIBxCDAAAMA4BBgAAGAcAgwAADAOAQYAABiHAAMAAIxDgAEAAMYhwAAAAOMQYAAAgHEIMAAAwDgEGAAAYBwCDAAAMM7/AcPbytk4UZMHAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# buck1 = np.array([20, 15, 10, 5, 0, 0, 0, 0, 0, 0])\n",
"# buck2 = np.array([0, 0, 0, 0, 0, 0, 5, 10, 15, 20])\n",
"\n",
"# buck1 = np.array([0, 5, 3, 0, 0, 0, 0, 0, 0, 0])\n",
"# buck2 = np.array([0, 0, 0, 0, 0, 0, 0, 3, 5, 0])\n",
"\n",
"resolution = 100\n",
"height = 1000\n",
"\n",
"x = np.linspace(0, 10, resolution)\n",
"# buck1 = (np.exp(-(x-2.5)**2) * height).astype(int)\n",
"buck1 = (np.sin(x * 2) * height + height).astype(int)\n",
"buck2 = (np.exp(-((x - 7.5) ** 2) * 0.35) * height).astype(int)\n",
"\n",
"\n",
"def norm_buck(buck1, buck2):\n",
" b1sum = buck1.sum()\n",
" b2sum = buck2.sum()\n",
" if b1sum == b2sum:\n",
" return\n",
" for i in range(len(buck2)):\n",
" nval = int(buck2[i] * b1sum / b2sum)\n",
" buck2[i] = nval\n",
" b2sum = buck2.sum()\n",
" for i in range(len(buck2)):\n",
" if b2sum == b1sum:\n",
" break\n",
" assert b2sum < b1sum\n",
" if buck2[i] > 0:\n",
" buck2[i] += 1\n",
" b2sum += 1\n",
" return buck2\n",
"\n",
"\n",
"buck2 = norm_buck(buck1, buck2)\n",
"\n",
"\n",
"def to_deltas(buck):\n",
" deltas = np.zeros(len(buck), dtype=buck.dtype)\n",
" for i in range(1, len(buck)):\n",
" deltas[i] = buck[i] - buck[i - 1]\n",
" return deltas\n",
"\n",
"\n",
"def from_deltas(deltas, start=0):\n",
" buck = np.zeros(len(deltas), dtype=deltas.dtype)\n",
" buck[0] = start\n",
" for i in range(1, len(deltas)):\n",
" buck[i] = buck[i - 1] + deltas[i]\n",
" return buck\n",
"\n",
"\n",
"assert np.all(from_deltas(to_deltas(buck1), buck1[0]) == buck1)\n",
"\n",
"print(buck1.dtype)\n",
"plt.bar(range(len(buck1)), buck1)\n",
"plt.bar(range(len(buck2)), buck2)\n",
"plt.show()\n",
"\n",
"plt.plot(x, to_deltas(buck1))\n",
"plt.plot(x, to_deltas(buck2))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 444,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total distance: 929769\n",
"Total buckets: 103324\n"
]
},
{
"data": {
"image/png": "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ALN8+XLl5OToueee05///Gf17t1bGRkZqqysbOqmAQCAJtZsLyG99NJLGjdunJ588klJ0qJFi1RQUKA333xT06ZNa+LWhQaGQgEApmqWAaa2tlYlJSXKzc21t4WHhys9PV3FxcWXfU1NTY1qamrs9erqakmSz+dr3MYarL7mG791n8/nt+3idWou3Xaxxqxp6HlcTnPu1+ZWczmN/ed8sebUHy255nIa8ufV1OfR2L9frtf541qWdfVCqxn66quvLEnW9u3b/bZPnjzZuueeey77mueee86SxMLCwsLCwhICy5EjR66aFZrlCExD5ObmKicnx16vr6/X8ePH1b59e4WFhQX9/Xw+nxITE3XkyBG5XK6gHx//RF/fGPTzjUE/3zj09Y0R7H62LEsnTpxQQkLCVeuaZYDp0KGDIiIiVFFR4be9oqJCbrf7sq9xOp1yOp1+22JiYhqriTaXy8U/jBuEvr4x6Ocbg36+cejrGyOY/RwdHf2tNc3yLiSHw6HU1FQVFRXZ2+rr61VUVCSPx9OELQMAAM1BsxyBkaScnByNHj1affv21T333KPf/e53OnXqlH1XEgAAaLmabYD5yU9+or/97W+aMWOGvF6v7rzzTq1bt07x8fFN3TRJ/7hk9dxzz11y2QrBR1/fGPTzjUE/3zj09Y3RVP0cZlnfdp8SAABA89Is58AAAABcDQEGAAAYhwADAACMQ4ABAADGIcA00IIFC9SlSxdFRUUpLS1Nu3btauomGS0vL09333232rVrp7i4OD366KMqKyvzqzlz5oyysrLUvn17tW3bVsOGDbvkyw4RmDlz5igsLEwTJ060t9HPwfHVV1/piSeeUPv27dW6dWv17NlTe/bssfdblqUZM2aoY8eOat26tdLT0/Xpp582YYvNVFdXp1/84hdKTk5W69atddttt2n27Nl+z9GhrwO3detWPfzww0pISFBYWJhWr17tt/9a+vT48eMaMWKEXC6XYmJiNHbsWJ08eTJ4jbz+Jxe1PMuWLbMcDof15ptvWgcPHrTGjRtnxcTEWBUVFU3dNGNlZGRYixcvtg4cOGCVlpZaDz30kNW5c2fr5MmTds2ECROsxMREq6ioyNqzZ4/Vr18/63vf+14Tttpsu3btsrp06WL16tXLevbZZ+3t9PP1O378uJWUlGT99Kc/tXbu3Gl98cUX1vr1663PPvvMrpkzZ44VHR1trV692vroo4+sH/7wh1ZycrJ1+vTpJmy5eZ5//nmrffv21po1a6zDhw9bK1eutNq2bWvNnz/frqGvA7d27Vrr5z//ufX2229bkqxVq1b57b+WPh08eLDVu3dva8eOHdYHH3xgde3a1XrssceC1kYCTAPcc889VlZWlr1eV1dnJSQkWHl5eU3YqtBSWVlpSbK2bNliWZZlVVVVWa1atbJWrlxp13z88ceWJKu4uLipmmmsEydOWN/5zneswsJC6/vf/74dYOjn4Jg6dap13333XXF/fX295Xa7rRdeeMHeVlVVZTmdTut//ud/bkQTQ0ZmZqY1ZswYv21Dhw61RowYYVkWfR0MFweYa+nTQ4cOWZKs3bt32zXvvfeeFRYWZn311VdBaReXkAJUW1urkpISpaen29vCw8OVnp6u4uLiJmxZaKmurpYkxcbGSpJKSkp09uxZv37v1q2bOnfuTL83QFZWljIzM/36U6Kfg+Wdd95R37599W//9m+Ki4tTnz599N///d/2/sOHD8vr9fr1c3R0tNLS0ujnAH3ve99TUVGR/vKXv0iSPvroI23btk1DhgyRRF83hmvp0+LiYsXExKhv3752TXp6usLDw7Vz586gtKPZfhNvc/V///d/qquru+QbgePj4/XJJ580UatCS319vSZOnKh7771XPXr0kCR5vV45HI5LHtAZHx8vr9fbBK0017Jly/TnP/9Zu3fvvmQf/RwcX3zxhRYuXKicnBz913/9l3bv3q3/+I//kMPh0OjRo+2+vNzvEfo5MNOmTZPP51O3bt0UERGhuro6Pf/88xoxYoQk0deN4Fr61Ov1Ki4uzm9/ZGSkYmNjg9bvBBg0O1lZWTpw4IC2bdvW1E0JOUeOHNGzzz6rwsJCRUVFNXVzQlZ9fb369u2rX//615KkPn366MCBA1q0aJFGjx7dxK0LLStWrNCSJUu0dOlS3XHHHSotLdXEiROVkJBAX4c4LiEFqEOHDoqIiLjkroyKigq53e4malXoyM7O1po1a/T++++rU6dO9na3263a2lpVVVX51dPvgSkpKVFlZaXuuusuRUZGKjIyUlu2bNHLL7+syMhIxcfH089B0LFjR6WkpPht6969u8rLyyXJ7kt+j1y/yZMna9q0aRo+fLh69uypkSNHatKkScrLy5NEXzeGa+lTt9utyspKv/3nzp3T8ePHg9bvBJgAORwOpaamqqioyN5WX1+voqIieTyeJmyZ2SzLUnZ2tlatWqVNmzYpOTnZb39qaqpatWrl1+9lZWUqLy+n3wMwcOBA7d+/X6WlpfbSt29fjRgxwv6Zfr5+99577yVfA/CXv/xFSUlJkqTk5GS53W6/fvb5fNq5cyf9HKBvvvlG4eH+H2URERGqr6+XRF83hmvpU4/Ho6qqKpWUlNg1mzZtUn19vdLS0oLTkKBMBW5hli1bZjmdTis/P986dOiQNX78eCsmJsbyer1N3TRjPf3001Z0dLS1efNm69ixY/byzTff2DUTJkywOnfubG3atMnas2eP5fF4LI/H04StDg0X3oVkWfRzMOzatcuKjIy0nn/+eevTTz+1lixZYrVp08b64x//aNfMmTPHiomJsf70pz9Z+/btsx555BFu7W2A0aNHW//yL/9i30b99ttvWx06dLCmTJli19DXgTtx4oS1d+9ea+/evZYk66WXXrL27t1r/e///q9lWdfWp4MHD7b69Olj7dy509q2bZv1ne98h9uom4NXXnnF6ty5s+VwOKx77rnH2rFjR1M3yWiSLrssXrzYrjl9+rT17//+79bNN99stWnTxvrRj35kHTt2rOkaHSIuDjD0c3C8++67Vo8ePSyn02l169bNeu211/z219fXW7/4xS+s+Ph4y+l0WgMHDrTKysqaqLXm8vl81rPPPmt17tzZioqKsm699Vbr5z//uVVTU2PX0NeBe//99y/7O3n06NGWZV1bn3799dfWY489ZrVt29ZyuVzWk08+aZ04cSJobQyzrAu+rhAAAMAAzIEBAADGIcAAAADjEGAAAIBxCDAAAMA4BBgAAGAcAgwAADAOAQYAABiHAAMAAIxDgAEAAMYhwAAAAOMQYAAAgHEIMAAAwDj/D3/Dyi0lfR27AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def avg_dist(buck1, buck2, interp=50):\n",
" assert buck1.shape == buck2.shape\n",
" assert buck1.dtype == buck2.dtype\n",
"\n",
" buck3 = np.zeros(buck1.shape, dtype=buck1.dtype)\n",
"\n",
" b1sum = buck1.sum()\n",
" b2sum = buck2.sum()\n",
"\n",
" if b1sum != b2sum:\n",
" buck2 = norm_buck(buck1, buck2)\n",
"\n",
" b1_count = 0\n",
" b2_count = 0\n",
" b2loc = 0\n",
" b1loc = 0\n",
" dist = 0\n",
" total_distance = 0\n",
" steps = 1\n",
" for i in range(b1sum):\n",
" # find empty spot in b2\n",
" while buck2[b2loc] == 0:\n",
" b2loc += 1\n",
" b2_count = 0\n",
"\n",
" # find empty spot in b1\n",
" while buck1[b1loc] == 0:\n",
" b1loc += 1\n",
" b1_count = 0\n",
"\n",
" dist = b2loc - b1loc\n",
" dist = (dist * interp) // 100\n",
" total_distance += dist\n",
" buck3[b1loc + dist] += 1\n",
"\n",
" # TODO: you can take more than just 1 step\n",
" # just test how many steps needed for the next bucket change\n",
" # steps = min(buck1[b1loc] - b1_count, buck2[b2loc] - b2_count)\n",
"\n",
" b2_count += 1\n",
" if b2_count == buck2[b2loc]:\n",
" b2loc += 1\n",
" b2_count = 0\n",
"\n",
" b1_count += 1\n",
" if b1_count == buck1[b1loc]:\n",
" b1loc += 1\n",
" b1_count = 0\n",
"\n",
" # buck3 = from_deltas(buck3 - offset, ((start1 * (100 - interp) + start2 * interp) // 100))\n",
" print(\"Total distance:\", total_distance)\n",
" return buck3\n",
"\n",
"\n",
"buck3 = avg_dist(buck1, buck2, 35)\n",
"print(\"Total buckets:\", buck3.sum())\n",
"plt.bar(range(len(buck3)), buck3)\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.11.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment