diff --git a/docs/benchmarks/lotka_volterra/internal.ipynb b/docs/benchmarks/lotka_volterra/internal.ipynb index 38b638eb..7beafe98 100644 --- a/docs/benchmarks/lotka_volterra/internal.ipynb +++ b/docs/benchmarks/lotka_volterra/internal.ipynb @@ -16,14 +16,16 @@ "id": "03689ed5", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:14.532523Z", - "iopub.status.busy": "2023-03-13T13:26:14.531317Z", - "iopub.status.idle": "2023-03-13T13:26:16.298406Z", - "shell.execute_reply": "2023-03-13T13:26:16.297647Z" + "iopub.execute_input": "2023-03-16T10:09:55.876649Z", + "iopub.status.busy": "2023-03-16T10:09:55.875887Z", + "iopub.status.idle": "2023-03-16T10:09:57.032849Z", + "shell.execute_reply": "2023-03-16T10:09:57.032205Z" } }, "outputs": [], "source": [ + "import functools\n", + "\n", "import jax\n", "import jax.experimental.ode\n", "import jax.numpy as jnp\n", @@ -43,37 +45,13 @@ "id": "05275c86", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:16.301327Z", - "iopub.status.busy": "2023-03-13T13:26:16.300932Z", - "iopub.status.idle": "2023-03-13T13:26:16.326869Z", - "shell.execute_reply": "2023-03-13T13:26:16.326094Z" + "iopub.execute_input": "2023-03-16T10:09:57.035695Z", + "iopub.status.busy": "2023-03-16T10:09:57.035428Z", + "iopub.status.idle": "2023-03-16T10:09:57.049652Z", + "shell.execute_reply": "2023-03-16T10:09:57.049111Z" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "ProbDiffEq version:\n", - "\t0.1.2.dev4+dirty\n", - "Diffrax version:\n", - "\t0.3.1\n", - "SciPy version:\n", - "\t1.10.1\n", - "\n", - "Most recent ProbDiffEq commit:\n", - "\tb'180af9\\n'\n", - "\n", - "jax: 0.4.4\n", - "jaxlib: 0.4.4\n", - "numpy: 1.24.2\n", - "python: 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]\n", - "jax.devices (1 total, 1 local): [CpuDevice(id=0)]\n", - "process_count: 1\n" - ] - } - ], + "outputs": [], "source": [ "# x64 precision\n", "config.update(\"jax_enable_x64\", True)\n", @@ -106,10 +84,10 @@ "id": "4068577c", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:16.329708Z", - "iopub.status.busy": "2023-03-13T13:26:16.329298Z", - "iopub.status.idle": "2023-03-13T13:26:17.205100Z", - "shell.execute_reply": "2023-03-13T13:26:17.204488Z" + "iopub.execute_input": "2023-03-16T10:09:57.052033Z", + "iopub.status.busy": "2023-03-16T10:09:57.051829Z", + "iopub.status.idle": "2023-03-16T10:09:57.586580Z", + "shell.execute_reply": "2023-03-16T10:09:57.585991Z" } }, "outputs": [], @@ -158,24 +136,13 @@ "id": "43e6bbb4", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:17.207480Z", - "iopub.status.busy": "2023-03-13T13:26:17.207194Z", - "iopub.status.idle": "2023-03-13T13:26:18.136506Z", - "shell.execute_reply": "2023-03-13T13:26:18.135612Z" + "iopub.execute_input": "2023-03-16T10:09:57.589069Z", + "iopub.status.busy": "2023-03-16T10:09:57.588832Z", + "iopub.status.idle": "2023-03-16T10:09:58.500651Z", + "shell.execute_reply": "2023-03-16T10:09:58.500024Z" } }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAABxCAYAAAD1T/bBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAABJ0AAASdAHeZh94AABOY0lEQVR4nO29eXxUx53o+61zutUtqbUgIZBAiEUChEDsq9mxMZuN93iJY8fO4pfJ5E0yeZP78pJPJnnJzMvNncnNvRMnmYwTb7EdxyveMDZgNrOvQkjsICEQq9ZW76fq/XEkIWEWbX26Eef7+fQH6O5TVYeqrvqd3yqUUgobGxsbGxsbG5tO4bC6w9TUVHJzc63u1sbGxsbGxsamx6iqqrJeiMrNzaWsrMzqbm1sbGxsbGxseoyioiK0WA/CxsbGxsbGxuZmxHJNVDygAn5k6R7UyaOI7Fy0gkJE9oBYD8umB5FKcexshB1HQhgSxuQ5KRrkxOUUXW5TKYWqOI7cux2R7EHk5CJGFCESXD04cptY0+iXbCgLcq7OIK+vg8KBDnL7dm+rVI0NyC3rIRKG1HS0wtGIvv17aMQ28YBUij3HwxyoDJOSKMjpozNleAK61o09R0rk7m1w8RzoOmJgHmLUWIToeps2PYuw2rG8qKgopuY8WboH472/QTjU7n1t0gy0JfchdD1GI7PpKeqaJL/9qJGKC0a79zM8Gv/XvSlkpXZ+jlVjPcabf0FVHm//Qd9+OB56EtEvuztDtokDlFK8t8PPx3sCRNosHQE8Pi+JOUXuLrUpt25ArlsFoeDlD3QH2oIlaDPmIIRtELjZOX4uwsvrmqi61H7PGT3IyTfvTCbJ1fk5VjUXMd59DXXqZLv3xdDh6MseQGRmdWfINj1AUVHRrSVEyRNHMP7yX5CcjD5/MWLkaNTZM8hNa1AnjiKGFKB/6UlEYlJMxmfTfaprDH7zQSM1Xsm8MS7mFLlwOwXbj4RYsd1PRorGD+5NISOl44KUioQxXvgd6nQlYsJU9JkLQEpk+X7zcHQ40B94HG3k6CjemU00kUrx2gYf6w4Eyc3UWTrRTWGuk4oLEV7d4ONCg+T+6YksmZjYqXaN7ZuQK9+BPpnody5HDBiEOl+NsfIdqLmIKCxGf+gJhGYLUjcrx86G+Z/vNyIlzC92s6DYRSgMn+wLsKk8SHa6xj/dm0pqUsfnWDXUEfn9v0EggDZ9Ntq02WAYGJ9/htqzDdyJOJ76e/vhLcbcUkKUunCWyJ/+A8BcfP1zLn9mGMhVK5A7Pkfkj0B/7Bv2pnYTUuuV/PyNepoCiifmJzOzsL2Z7fPyIC981kR2usZPHk7Dqd9YJa6UwljxV9S+nWizbke/fWm7z2XlCYzXX4BwCMdT30bk2JGnNyN/Wd/E+gNBRuU6+PaSlHZm37omyW/eb+R0jcH37k6haJCzQ22qM6eI/Pk/IDUdxze/h3BfFsBUKIix4nVU2T60qbPRl9zb07dkYwEnzkX49XsNKAX/cHcKw3Murw2lFJ/sDfDmFj+T8xN4ZpGnQ20qJTFe/iPqxBH0h55EKxrb7nN5uAzj9efBk4Lj6e8g0vr06D3ZdJxbxrFcKYXx0TsQCqI//FQ7AQpA6Dr60vsRE6ahjh1Grl0Zo5HadJWIofjjJ14a/YpvLPR8QYACmDnKxT1TEzlbJ/lsf6BD7aoDe1H7diKGj0JbsPgLn2t5Q9EfeQqkQeSvz6O8Dd2+Fxtr2XIo2CpAfWdpyhf85tKTNb6zzEOCA17b2ETEuPFzpwoFibz5MgCOh55oJ0ABiAQX+n2PIQYPQ27fiLFtY8/dkI0lNAUkf1jlRSr4zrL2AhSAEIJFExIZP9TJzmMh9leErtFSe+S2TagTR9AmTv+CAAWgjShCv/dRaKgn8spzqHC4R+7HpmvcGkLU8cOmE/m4yWhDC675PX3p/YiBecjP1yIPllo4Qpvu8vZWP0fPRlg4zs3kgoRrfm/ReDeZKRof7grgDcjrtqmkxFi3ChJc6Pc+ek3fFW3QEPS7HoKGOox3XsPOX3vzcLbW4JX1TaQnC76x0IPTcXXtZGaKzpKJpgC+puTGArjcsRlqL6Hdvuya2knhcKA//BRk9EV++j7qfHW37sXGOpRSvLzeR41X8sisZEYOvLZ28tHZybid8MoGH4Hw9fcG5W1ArvkQMvqiLVp+ze9pxRPR5i+BC2eRaz7q8n3YdJ9eL0QppcxFpuvo8xZd97vC4UD/0pPgTsT48C1UwG/RKG26w5HqMJ/uC5Cf7eD+6df3WXE6BPdNT8QXVHyw4/rzq0r3wKULaNPnIJKSr/tdbfwUxPippsC+d0en78HGegypeG61l5ABX7/DQ0ri9bfDRePdZKVqvL/TT4Pv2gK4ioTNSLyUNLQpM6/bpkhMQr//yyClad6TxnW/bxMfbD4UYtexEBOHOZk16toPbWAGtNw7LYlLjZL1pdcXwOW2TRCJoN9x1w2jfrVZCxCDhiC3bUCeONrpe7DpGXq/EFW+H1VdhTb5tg7ZjkVqOvqdd4O3Abn6QwtGaNMdIobi5XU+HDo8tSAZRwf8nKYWJDC0n866A0Hqmq5+GCppYKz/BFxutOlzOjQWfdFy8KRifPIeqtE268U760qDVFwwWDTefV1NQgtOh+DeaYkEw7CpPHjN78k926GpEe22eQjHjVMjaAPz0G6bhzpzCvn5Z526BxvrafRL/va5j/RkwRPzkjuUbmDOaBcpiYLPSoNIeXVtlAoGkDs3Q2YWogNBKkLTTLOeM8H02wx3zFxo07P0eiFKbttohhPPvr3D14jxUxFDCpC7tiCvDGm3iStW7Q1QXWuwbFIi/dM7FnHX4qtgSNh88OqHoSorgZqLphaqg9Gawp2Ivux+CPgxPn63o7dgEwPqmiQrtvvJTNG4a3LHI+4mDksgLUmw/sDVD0NlGKYglJSMNnFah9vV5i2Cvv2RGz5F1dV0+Dob63l7qx9fUPGlmUkkuzt2hDp1wdzRLi41SvadvLoPk9yzHQJ+9BlzOxzYJDL6oi1YAvW1yE1rO3wPNj1Hrxai1KULqMrjiKJiRHJKh68TQqDf9SDoOsbKd1Hq+r4zNrHhUqPBhzv9ZKdrLJrQuRw+44Y4SUsSbCwPIq/iwyT3bANNR5t6fXPMlWiFxWbqjLJ9yApbAI9X3tjswx9SPDIrqVMJWB26YHaRixqvpKTii4ehOlQK9bVo0+Z0KgmrcDjNCL1IBGP1Bx2+zsZajp+LsKk8SOFAB5Pzr2/Gu5K5o93oGlf1qVPSQG7dAMkexLjJnWpXmzITsvojN39mC+AxoFcLUXLPNgC0CR1/ImxBZGaZuTnOnkbt29XTQ7PpAd7d5idswCOzkjuUrqAtDl0ws9DFxQZJ+alIu89UfS3q+FHEyNGIpI6FJbdFX3g3aDpy1QpbAI9DKi5E2H4kRHGek/FDO3cQAswpcqMJ0xx4JbJkFwiBNmFqp9vVho0wBfADtgAejyil+OumJnQNHpvdMTNeW9KTNSbnJ3DoTISqi1fsOcePmML35NsQjo6l0GhB6Dr64ntNAfyT9zp1rU336bVClJIGct9OSM9ADMnvUhva7DsgKRlj7Ueo0LV9IGysp+J8hK2HQ4zJczI6r3ObTguzilwIYENZ+ydDuW8XoNDGT+lSu6YAPgtVXYXat7NLbdhEj3e3+RFwwyCEa9HHozF+qJMDp8Kcr7/sCK58XtSRcsSwEYiU1C613SKAG7YAHneUVIQ5cc5gTpGLnIyuVbaYX2xqJzcfau+/JPfvBkAbO6lL7WrDRiAKi1Hl+5GVJ7rUhk3X6L1C1JFy8DaiTZja5bIKwp1o+io0NiC3bOjhEdp0FaUUb2z2IQQ8MKNrByFAVqpO0SAne0+EafTL1rblvh2QnILIH9nltrU5CyExCeOzj1ERO49LvHC0OkxpZZjJBQndqoc3u8g8DHccuXwYytK9IGWXD0JoFsCnzoTqKlTZ/i63Y9OzSKV4d5sfpw5LJ3V9zxnW30FmisaOo5fdCFQoiCrfb9bFy+jb5bb125eCEMi1H9lpViyk1wpRsmQXILqsTWhBmzTdzOOyZR3K7+uZwdl0iwOnwhw6E+G2kQnkZnavMOz0EQlIBXtOmIehOnXSdCgfO7FbdRSFOxFt1u3QUI/ctbVbY7TpGZRSvLPNjxCwfGrXD0KAwoFOklyCnccuC1GqZBc4ExCFY7rVtjbrdkhwYaz7GCVtbVQ8sOtoiKpLBvOL3aQnd/3YFEIwpSCBuiazQDqAOlwG4RCieGK3xij69kOMm4KqOI46frhbbdl0nF4pRKlwGHXkICJvKCI1vVttCa05v1QwgNy8rkfGZ9N1VPMToUOD5VO6dxACjB3iRNdgV/NhqEr3AKB10rnzamhTZkJKKnLjatscHAeUV0U43Cx8Z3cwkvNaOHTBhKFOqi4ZnK0zzCCW05WIorGdcii/GiLZY/pjXjxvCmY2McWQZmFqtxMWdzKA5WpMGW764e04au45cv9uEBramPHdblufuxB0Hbl2pa2NsojeKUQdO2RK9qOKe6Q9MWY89MtGbtuIamrskTZtukZJRZiKCwazR7s6VUT4WiS5NIpynRw6HaHJb5iZ6jP6Qr+cG198A4TTiTZ7ITR5kds/73Z7Nl3HFL596BqdSmlwPVoy4+86GkKW7QPMTNI9gXbbPDPp7/pPUEbkht+3iR5bD4c4Wye5Y5z7hglZO8KgTJ3+6Rq7joYwvF7U0YOI/BGdiiC/FiI9A23Sbagzp1B21Q1L6JVClDxo+hJo3VSrtyCEhj5vMYRDdi6OGCKVYsX2Zr+EiT1zEAJMyk/AkHBkz0lorEcbOabTkTfXQps4FdIzkJ+vtTPgx5B9J8OcOG86BfdN7b7wDe1NeurQAXC5uxzEciXCnYg2cz7U1SB3b+uRNm06T8RQvL/DT5JLsHBc97VQcNmk1+BXVO8oNf3oisb1SNuAmRPRmYDx2UrbHGwB7YSoYDDI008/TV5eHqmpqUyfPp0tW7a0fv7LX/6SrKwsMjIy+MEPfhCX6kJlGOaGlpOLSM/osXZF4RjIyUXu2IxqqO+xdm06zp7jYU5dNJg3pnt+CVcybqgTTUBgvyl8i1E9I3wDCN1hqtgDfjMPjI3ltAjfCY7uOQVfSYtJr/F8nWnKG16I0Lvno9cWbeosSE5BblhtZ6OOEZvKg1xqlCye4CbJ1XN7TosWM1x+ABCIEUU91rbwpJjm4AvnUM1RfzbRo92qiEQiDBkyhE2bNlFXV8d3v/td7r77brxeLx999BHPPvssW7dupaysjJUrV/LnP/85VuO+JurkUQj40Qp7xpTXghACff5iMCLIjat7tG2bGyOb/RISHD3jl9AWj1ujcKCDARfKUckeRO7gHm1fjJ0EmVnILetRvqYebdvmxuxscQruYeEbTC1mcegIANrInhO+AUSCy9QqeBtsc3AMCEUUH+7yk5IoWFDcs3vOgD46/VMkWRePQu5gRHLn89Fdj1Zz8LpVtjk4yrTbUZKTk/nJT35CXl4emqbxyCOPkJCQwKFDh3j55Zd55plnyM/PJzs7m+9///u89NJLsRr3NSlb3Sx595Apry2ioNAs+Lh7G6r2Uo+3b3NtdhwLcabGYEGxm9SknrdCz8hqIMe4SE1OUZdTYlyL1uCEUBD5uW0OtpJ2TsETe/YgBBg50Mn40GEMoSEKCnu8fW3SDEjrY5qDg9cvXmvTs6wrDVDXpFg6MbFTWe07ghCCBSlVuFQIb96oHm0bzMLW2m3N5uA923u8fZvLXPe0OHLkCDU1NRQUFFBWVsbYsWNbPysuLubAgQPXbfzZZ5+lqKio3au2trZnRn4NZHIq5c6hVImu59u4FkIItPmLQRoYGz7t8fZtro4hTb8Et5NOl3fpKKP9hwDY5xoRlfbF6HHQPwe5/XOU1y5ObBVbD4U41+wU7OlgnbPO4DSCjAyf5LBzMEGt59emcDjQ5ywEvw+5dWOPt29zdQJhxcrdAfoka8wd3b1oy2tRHDQ1mCUJw6PSvjZtFiR5THOwnasualxzV/H7/Tz++OP88Ic/JC0tDa/XS2rq5Sy8qampeL3e6zb+7W9/m7KysnavPn369Nzor0LC/Dv5j/TH2H+VulY9gTZ0OGJIAWrfTtTF81Hpw6Y92w5H9yAESKw8REg4WdOQe9Vaet2lNTghEkZutLVRVhA2FO/v7Fmn4CtRxw6jK4N9CSMor4rOniPGTYY+mXauOgtZsy+AN6C4a7Ibp6NntVBgRoumny7ngt6HrRfTe7x9aDYHz5wPjXauumhy1RMpHA7z0EMPUVBQwE9+8hMAPB4PDQ2Xn6AbGhrweHrWjtsTFGQ7cDuhtDJ6kre2YDEohbF+VdT6sDGJGIoPon0QBvyoyhNc6juM2oBOxXnjxhd1ATFyNGLAIOSuzaj66GpkbWBTWXScgtsij5QBUJownP1R2nOErqPPvdPMVbdlfVT6sLlMU0Cyam+ArFSN2wqjo4Xi7GlorOds1kiOnTdaKyb0NNqU28CTity4xg5OiBJf2FmklHzlK19BCMGLL77YGupdVFTE/v2XyxCUlpYyevRo60baQRy6YFSuk+PnIjQForQwBw1FDB+FKt2LOncmKn3YmGw5FORCg2ThuOgdhOr4EVAS5wjTN2F/RXQ2m1ZzsGEgN66JSh82JsGw6RScGgWn4BaUUqijh6Bvf5yZfSitCEctYlkUT4S+/cxcdb7rWwBsuscn+wL4Q4q7pyTi6GRh844ijx4EwFlYhFJEzXIinAlmcEJTI3KHHZwQDb5wKj3zzDNUV1fzxhtv4HBcDtd9/PHH+c///E+OHz/OuXPn+PWvf80TTzxh6WA7SvFgJ0qZ5UGihT5vEQDGOlsbFS3ChuKDnQGSXYI7xkbnIASQR8oByJpYRJJLUBKlDQ1A5I80gxP22MEJ0WRdaYB6n2LppJ53Cm7l3BnwNqAVFFKc56S2SXK6JkpaTE1rE5zwWVT6sIEGn2TNvgA5fTSmNWcWjwbq6EFwJjB4gukPFVXLycTpkJqO/PwzOzghCrQToioqKnjuuefYvn07ffv2xePx4PF42LhxI8uWLeNb3/oWU6dOpbCwkEWLFvH000/HatzXZXSeufijJd0DiAGDEKOKUQdLkWdORa2fW5lN5UFqvJJFE9y4E6JzEJrahIPQtz+OjExGD3JSccGg3hcdLaYQAm3BEpASY/0nUenjVscfUny8J0CGR2NOlJyCAeQRU5sghhdSPNiCPadorB2cEGU+3hMgGIF7piahaVHacwJ+1KkKxLDhpKYmMDhLp+xUGCmjpMV0ONDn3AG+JuT2TVHp41amnRA1ePBglFL4/X68Xm/ra/bs2QD88Ic/5OLFi9TW1vKrX/2qx7I69zQZHo2BGToHToWj4iTcgqmNEsjPPo5aH7cqwbDiw51+0pKiZ44B2mkTwNRiApRG8TDUhhQghhagSnbZwQlRYHVbp+AomWMA1DFTmyDyhjF8gIMER3Q1CmZwwiI7OCFK1Holn5UGyOurM2GYM2r9qOOHQUlEvrnnjMlz0hRUnIiSLyaAGN9cOWHzOrtyQg/TK8u+gHkYNvoVlReiuDD75SCKx6OOHkRWHo9aP7cin1lhjuGyKU8Mv7yhCaAkSn5RLWjz7eCEaNAUkHy6L0C/NI0ZI6OnhTKDEU4ihhYgHA6czb6YR6sj+ILRK7UhRo5B5OTawQlR4KNdfiIG3DM1ES2KCoIWDaZWMBIw9xyA0sro7TlmcIJdOSEa9FohqmVhRlO9DqDPXQRCQ679OC7L4NyM+IKSlbsDZKZozC6K3kEIl30TRN4wAFISNYb2N9XrESN682kHJ0SHj/eYTsHLo+gUDJeDEUTB5USJY/KcSAXlVdHLEG0HJ0SHCw0GG8uD5Pd3tGqjo4FSytRgZmYh+mQCMLS/gySX4EAUtZhgV06IFr1WiMrPdpCYIKIq3QOIzCzEuMmoimOoE0ei2tetwqf7AviCZnRMVM0xfh/q1EnEsOGINkEUxYMTCIThSHV0yyXYwQk9S71PsnZ/gIEZOlOi6BQMlzWY2vDLWcpbDt9oRXe2IAoKEbmD7eCEHuSDnX4MCfdOT4yum8r5amhsQGsjfOuaqcU8GcVUB9BcOWHunWZwwuZ1UevnVqPXClFmqgMHJ85Fd2ECpppU05Gf2dqo7tLgk3y6N0B2usb0EdE9CE3fBNVOmwAwdrA1WkwxYBCi0AxOUHZwQrd5f4efUCT65hgzGKEcsvq3K3KemaKT00entDJ6qQ6gbeUEaVdO6AFO10TYcihE4UAHhQOjp4WCL7oPtFCc50QR3YhyADFmPGRlI7dvQjU1RrWvW4VeK0SBqVFQQFm0F2Z6BtrEaaiqClTzj8Sma6zc4ycYgXunJaFHKTqmhZZcLdoVG9qgvjrpySLqGgW4HJxg2MEJ3eJsrcHGsiAF2Q7GD43uQcjZ0+BtbKdNaKF4sJN6n+LUxej5YgKIocMRQ/KbKyeci2pfvZ23t/hRCu6fnhT1vtSRZveBwfnt3h/d7H4SdZOe0NDnL4JwCLlhdVT7ulXo1UKUVX5RANqcO8DhwPhsJUpFV/PVW6nxStaVBsnLim50DIBS0tzQsrIRae1LEQkhKM5L4Gyd5Hx9lA/D/jmIMc3BCSeORrWv3szbW31IBQ/eFmVzDG1TG3xRiLJqzzFTZSw1gxNWfxjVvnozh06HKakIM6UggaH9HTe+oBtcy30AID1ZIzcz+hHlAKKw2DQH79yMunQhqn3dCvRqIardwoxSDo4WREoa2tRZcPYMat/OqPbVW3l3m4+IAfdG2RwDwNkz0NTYmtrgSootMukB6AuWgK5jfPKeLYB3gaPVYfacCDNxmJP87ChrocA05SW4EHlDvvDZ8BwHriiXnWpBGzQEUTQOdegA8qQtgHcWqRRvbPaha3DftMSo96eOHQIl0a4ifIMpgEc7ohyaBfA77zbNwbYA3m16tRAF5mHoDShORnlhAmiz74CkZIw1K1GhYNT7601UnDf9EopyHa1P89Hksm/C1Te0UYOcOLTopzoAEH0y0abOhrOnUft2Rb2/3oRSije3+NEE3GeFOcbvQ1VVIIaNQOhf1Fy0lJ06FsWyU23R71gGmo7xyfu2AN5Jdh4NUXHBYH6xi6w0Per9tbgPiGs8uF1OdWCFAD4UMWos6uB+ZIWdnqc79HohqnVhWnEYuhPR5i0Cb4NdmqETKKX46+c+hIAvzUyyJImrOnrwmtoEALdTMGKAg8OnIwTC0Q8W0ObcAYlJGGs/sgXwTrDnRJhjZyPMKXKRnR79g9DUJqgv+NG1pTjPLDsVbV9MaBHAZ0F1FWr/nqj311sIG4q3t/pJTBAsm2SBFqrFfaB/zhfcB1rIz3bgtkiLCS0CuIb89H07IKob9Hoh6nKqA2sWpjZpOvTtb2aGbaizpM+bnd3HwxytNg/CgZnR9UuAG2sTWigenEBEwsEqCw7DFgG8sQG5ZX3U++sNRAzF21t9uBxw95ToH4TQRoN5FafyFlr9oqzac1oE8DUfocLW9Hmzs640yKVGydJJbjzu6B+D6kwV+LxXDUZooUWLedwiLabI6Is2eSbqdCXqwN6o99db6fVClK4JigZFPwdHC0LT0e+8GyJhjDUfRb2/m51wRPHmFh+JCYJ7plpzELZqE66hVm/BSr8oAG3SDDMZ3uefoRrrLenzZmb9gSDn6iR3TkgkNcmCg1BJU4PZfwAiNe2a38tI0c2yU5XRdxIGEIlJaHMWQkOdnY26AzQFJB/s9JPh0bg9miWl2qBu4D7QwhgLtZgA2tw7wOU2BfBIdPPi9VZ6vRAFbXJwWPVkOHwUIn8kqmSXXZz4BqwuCXCxQbJskpuURGuWY6tvwnVMMgD903X6pWnsr4hu3p8WhK6jL7wbwiGMtSuj3t/NTL1PsmK7eRAuGm/RQXimCnxN13QMbsuYPCcNfsUpC3wxAbQpt0FGX+SmNSivnf/neryzzY8vqLhveiJOhzX1X9WRcnAnIgYNvu73RlusxRRJHtOXt67GFsC7yC0hRFm9MAFTGyUEctUK2958DRp8ko92+clK1Vgw1qKDsK1vQmr6Db8/drCT2iZJ1SVrDkMxosgsTrx3J/J0pSV93oy8udmHP6R4eFZSVGsrtkVdI1Hi1WjRYpZYpMUUugP9jrsgFMT49H1L+rwZOXEuwoYDQUYMcDAtylntW1DeRtSZU4j8kQjt+n57mc1azP0V0Y8ob0GbNssUwDd8iqqrsaTP3sQtIUSlJ2vk9W1Wr1u0MEW/HLSJ01GVJ1D7dljS583GW1t9BMLw4IykqJZ3aYuqPt3sm3DjgxBMvyiw8DAUAn3xvaAJjA/eRElrhLebicNnwmw9HGJMnpMJ0U6s2YZWbULu9bUJYPpiJrkE+05GP6ClBVE4BlFQaGrA7ZxjX0BKxSsbmtA0eGyONQEs0JwSAzqkwQQYN9SMKD9+zhrzmnA40Zfeb2rAP37Xkj57E7eEEAUwZrCTpqB1CxNAu30pJKeY4cdNXsv6vRkorwqz+WCIokGOqCfWbEtHfRNaGDHAzPtjlV8UNAvgM+bB2dPIbZss6/dmIGIoXt3gw6HDo7MtPAg7oU0A00l4TJ6TigsGNV5rUg8IIczD0OHE+PBN28flCtaXBam4YHDHODcDM6IfwNKCmZxVXDO1wZWMH2I+uO09ad2eo+WPNJP+HjqAPFRqWb+9gVtGiGpZmHuOW3gYJiahL74H/D6MT96zrN94JxRRvLyuiQQHPD432bKDEEAdLgOXG5E7pEPfd+iCouaIGa8FETMtaHMXQnqGWY+xvtayfuOdtfsDnK4xWDzBTT8Lcvu0oI4dAjquTQBay8+UWKmN6pNprp1LF5Cfr7Ws33inwSd5Z6vpQ3fXZGsCWACUYaCOHUIMHIRI9nTomsH9dNKSBPtOWLduAPQ77zGdzFe+a6dZ6QS3jBA1pJ9On2SNPSdClvooidHjEcNHmSr25o34VueDHX4uNEiWT0kkK9XCg7C+1tQmjByN0Dveb/HgBJSyLn8LgHAmoC97wFSxf/S27VcH1DVJ3tvhp2+qxpKJ1h2EQPPTuUAUjOzwNWPyEtA12HvC2rQD2oy5kNUfuXGNXdajmTe3XPahc1vkQwegTp2EYKDDmm8ATQjGDjHLTp2rs86cL1JS0RYsgfpa5Hq7sHVHuWWEKCEE44c5udAgOV1j4cJsUbE7EzA+fAsVtvbpIt6ouhhh1d4AeVk6d4yzxpm8BVm+HwCtsLhT11md6qAFraDQVLEfLkMdvLVV7EqZ/izBMDwyK4kEi6KqAFQoiDpyEDF4KCI5pcPXJSYIRg50cPB0GH/Iwgc33YF+14NgRMw95xYXwA+eDrPlkPU+dEDr71YbUdSp68YNMcdppU8dgDb5NkROLnLretT5akv7vlm5ZYQogAlDrTfpAYj0DLT5i6H20i0t4UupeHFdEwp4Yl4yumbdQQigDu4Hh7NT2gRoDkzI0imtDGNYFJjQgr6oRcX+DioYsLTveGLH0RB7T5iFYscNsSaqqgV19BBEwohRYzt97fihCRjSuvQqLWh5wxATpqJOHEGV3LqlhAJhxQtrTdeBxyz0oQMzEliW74P0DMge2KlrCwc6SXDE4KzSNLS7HgSpMN77mx3Y0gFuKSFqxAAzYmavxbZmaA4jzclFblmHqq6yvP94YO3+ICfPGywc62ZwlnWOndDsGFxxAjG8EOHs/CE8drATn8WBCQDCk4p2x13QWI+xaoWlfccLDT7Jaxt9pCQKHp0d/fp4VyLLSwDQRnVOgwm0Cny7jlm/5+h33GUGtqx855atnvD2Fh+XGiUPzEiypD5eW9TpU9BQj1Y0rtPCm8spKB6cwNGzEWotCkxoQRswCG3GXNTpSuTn6yzt+2bklhKidE0wboiTyosGFxuslbCFpuNY/iVAEHn71VuuPMOZGoO3t/rIStVYblFm8raoQwcA1WlTXgtjB8fuMNQmTUMMG4Hasx156IDl/ccSpRQvr2/CG1A8OjvJsoSsrf1HwqjDZYiBeR3KK3YlGR6NgmwHJRUhghbUYGyLSEpGv/shCAYw3nv9ljPrlVeF+azUzAk1b4zL8v7VgX0AiKLOazABphTEcM9ZsNgsX7ZuFeqcbda7HreUEAUwKd9cmDuOWr8wRfZAsz7axXPINR9a3n+siBiKP632EpHw9O3JliVHbIssLwFNR3TSN6GFIf10slI1dh4NWZZrrAUhNPR7HgZ3Isb7f7ul0mVsLA+y90SYqcMTmFIQg4Pw2GEIBbtkymthyvAEQhHr/VsAtJGjEeOnoI4dRu7cbHn/scIbkPx5jReXE56cn4xmoRkPTOFflpdAWh/EgEFdamNMnhOXA3YctT5STjic6Pc+AkoRefsVVOTWeujvDLecEDV6kJNkl2DrYWuj9FrQZs5HDBqC3LaxtfxIb2fFdj+VFw2WTnRTkGOtYyeA8jagjh9GFIxEuLumBRNCMG1EAvU+xaEz1uffEanpZoBCkxdjxV9vCa3C2TqD1zf5yPBofHmO9WY8AFlmahO0LmoTACbnJyAEbD8Sm6ASffG9ZrqMVe/dEloFpRQvfdZEXZPisdnJlqbCaB3DmVNQX4tWNLbLflgupxmld/ycwaVG632TtIF5ZrqM89XITz+wvP+bhVtOiHLogskFCZypMSwr5dEWoWno9z1mOgu/82qvLzRbWhni4z0BhvTTLc3P0ha5f49ZcHjspG61M7VZE7LtcGxyqGjFExHjJqOOlPf6OlehiOKPn3gJR+BrdyST5LJ+q1LBAKp8PyJ3MKJPZpfbSU3SKBzooLQyTJOFucZaEC43+gOPg5JE3ny510cIrz8QZE9zEMKMkdYGIbSg9u8BQBSN61Y7LSa9nTGwnABos+9ADB6G3L7plnMl6Cjtdqbf//73TJw4EafTyU9/+tN2X3zhhRfIzc0lNTWVp556ilDo5v0hTh9hLsyth2NzD6JPJvryh8HXhPHWK702AqLGK/nT6iaSXIJv3unBYVFplyuRJbvMBJsjRnernZwMnUF9dXYfDxM2YqMJ0pfeD5lZyNUfIqsqYjIGK3h9k49TFw3unpLIiAHWay8BVHkJhEOIcZO73daUAheGhD0W54xqQcsdjDZ/CVw816vzjp08H+H1TT76pmo8PtfaaLwWlBFB7t8FmVmIgXndamtMnhO3M3ZazNaHfncixruvoWovxWQc8Uw7ISonJ4ef/vSnPPDAA+2+tH//fr73ve/xzjvvcOrUKU6dOsXPf/5zSwfak+RnO8hM0dh+JGi5f0sLWtFYtCkzURXHkGs+iskYoknEMDUJ3oDiq/OTLU2q2RZ1/iycPY0oGotwdv8wnjY8AX9IWZ4zqgWR4MLx4BNmbb03XkQ1NcZkHNFky6EgG8qCFOU6WDbJ2lxibZH7doLuQBs9vtttTRzmxKGZ9xYrtJnzzNp6e3cgd22N2TiiRVNA8odVXhDwfyzyxER7CaAOl4OvCW38lG4LcU6HYMpwF5UXDSouxKaMj0jrYwpSAT+RN16y/aOuoN0qu/fee1m+fDnp6entvvTqq6/ywAMPMGXKFNLS0vjxj3/MSy+9ZOU4exQhBNOGJ1DXpDh4Onb1pbQ7lyNyByM3r0OW7onZOHoapRSvbvRx7GyEO8e7mTAsNip1AFmyEwCtB7QJAFOGuxACNpXF7jAU2QPQ73oIGuox3ngZZfQeTebJ8xFeXtdEerLga3d40CzOJdaCqqtBnTxmZrdP7L4/VrJbY8KwBA6fiXC2NjbzJYSGfv+XTf+ole/0Kk2mIRV//NTLpUbJo7OTLE+h0ha5dzsI0WN7zuxRphvBpvIYCuAjitDmLITqKjuB6xV0SFQvKytj7NjLjpXFxcVUVlbi9V4/SujZZ5+lqKio3au2Nj7qgM1sXpjrD8QugaFwONC/9CR4UjBWvN5r8ketPxBkY7Mm4f7psfGDArNuldy3y4yQyRvaI21meDTGDnZSWhmOibNnC9q4yWhTZ5mazI/f7RWbWl2T5NmVpmbt20tSSE2Kncum3GcmqOypgxBgzmhzz9kYSwE8MQnHw18FTcN4/fleU5fxzc0+yk5FmF3kahU6YoHyNpjZ7fNHIlLSeqTNIf10BmbobDtsfZqMtmhz77ysyezlPpmdoUO7lNfrJTU1tfXfLX+/kRD17W9/m7KysnavPn36dGO4PUe/NJ3Rg5zsPRG2rMr61RApaehf+qoZSvrqn276Ta20MsRrG818UN+802N5VvK2qPIS8DagTZqBED13IM8d7UIBG2J4GEKzJnNoAXLnZuS2jTEdS3cJhhW/W9lIXZPiyfnJDOkXO02CMgzk7i3gSUHkdy67/fUYOcBBvzSNzYeCMfOpAzPVin7fo+BtJPLan276TPgbygKsLgkyPMdheVbyK5H7doGSaOOn9FibQghmF7nwhxS7j8fOF1lomhmg0Lc/8pP3kYfLYjaWeKJDJ4vH46GhoaH13y1/93g6VpU6Xpk3xoVUsLEstpuINmiImZPD22AKUjfpplZ5McIfVnlJTBD8n8tSSHbHNvhTbt9k+rRMmtaj7Y7Oc5KZorGpLEgkloehrqM/9CT07Ydc9R7yJq2vZ0jTf+7EeYOlk9xMGxE7TQI0lwdqqEebPLNThapvhBCCOUUuvAHF3hgehgBa0Tiz2Oy5aow3b16T8L6TIV5ZbzqSf2tx7IJXAJQ0kDs+h+QUxMgxPdr29BEJOPTYP7gJdyKOR5+GxESMN19Gnq6M6XjigQ6dckVFRezfv7/136WlpeTl5d30QtTYwU4yPBobY3wYAmhjJqAtWArnqzFe+/NNl9H8fL3B//6gEcOAv1viIbtPbBzJW1DVVahTJxHFExBJPbtONSGYO9pFg1+xN0bRVi2IxCQcj30dkpLNTe3ksZiOp7MopXh1g4+SijAzRiZwbwyy2V+J3LYRdB1t8vQeb3vGSBe6BmtKgjE3wWqzbkeMn4o6erA5o3nsNPJd4fi5CH/8xEuSS/APd6VYns3+SlT5fjM31JSZCEfPalKT3RpTChI4Wh2xvPTUlYiMvuiPfg2Uwnj1OdTF8zEdT6xpt+oikQiBQADDMNr9/bHHHuOtt95i165d1NfX8y//8i888cQTsRpzj6Fp5mFY71MxSa3/hfHMWtDq52K8+dJN83RY45X8+r1GGvyKry/0xCwkvS3G9k0A6FNmRqX9mYUunDp8vMcf88NQ9MnE8fg3QNcxXvuTmejvJkApxRub/a2ReE/MS46pKQZAnjnVLHxPRCSn9Hj7qUkaM0a6OHYuwpHqGB+GQqDf/SBi5GhUyS7kx+/FfC13lMqLEf7XB6b/3HeWpZCdHuOHNqWQW9aDw4E2eUZU+lg03oxUXbXHH5X2O4M2aAj6Q0+A30/kL39E1dXEekgxo50Q9Ytf/ILExESee+45/uVf/oXExERefvlliouL+fWvf83y5cvJzc1lwIAB/PjHP47VmHuUuaNduJzw4S5/zNIdtCCEQFt8j5lQ8XAZxtuvxL0gVdck+Z/vNXCpUfLkvOTWsjqxRNXXovbvRgwa0uWSCzciNUljVpGLigsGB07FXmsocnLNp0NpEHn5P+M+SEEpxXs7/Hy6L0BBtoO/W5ISU1NMC3LLegD0aXOi1seiCW4EsHJ37M32QtPRH/gKYnA+cvtG5Kfvx70gdbomwv98r5FQRPHtJSkM6x87/7kWVNVJ1OlKtLGTEcnRsdAMzHRQPNjJnuNhztXF/lzQRhSZ5ajq64i8+Pub3p+3q7QTon7605+ilGr3+upXvwrAV7/6VU6fPk1jYyMvvPACLlds/RZ6imS3xoJiN9W1Mi60UUJo6Mu/hCgahyrbh/HWX+JWkKrxSv7Huw2crZM8MiupNeIx1siNa8AwzJDcKLJovBtdgw93xf4wBNCG5KM//BSEw0Re+kPcClJKKd7Z6ueDnQEGZ+l8Z5knJvUUvzCu82dRpXsRw0YgsgdErZ/sdJ2J+QmUVoapvBhbbRSAcDrRH/saIm8ocst65KcfxK0gVXkxwr+vaMQfUvwfizwUDYq91hua9xxAmx494Rtg8QQ3Cvhkb5zsOeMmm0Wu62pMQeoW1EjdcmVfrsbCcW5cDvhgVwAZB5uH+XT4ZcSY8ajyEtNEE2fO5ufrDf7t3QbO10sem5PE7WNjlxSxLaquBrlnm6mF6sHIqquRmaIzY6SLo9URDp2OvTYKQCsoRH+kWZB68ffIivjykZJK8frnPlbuCZDf38E/Lk+JWVLEKzHWfQwo0+E6yiydaP5ePtwZe9MMmElc9ce+btb13LIO44M3UTK+fKSOn2sWoIKKby32MG5I7LXeALLiGOpIOWLMBERW/6j2NTzHwbD+Op8fDHK+Pj4errWJ08y8dbU1RJ7/7S3nIxUfu1eMSUnUmFfs5kyNwY4Y1Si6EqHp6Pc9hpgwDXXsEJEXno2bOnsV5yP88u0GLjZKnpiXxPwx8SFAARgbPgUp0eYtssS/ZslEN5qAt7f64kIAh2ZB6svfMB0///JH5MH9N77IAsKG4rlPm1hTEmTEAAffvTt+BCh55pRZJ2/kaLRuluroCHlZDsYNcbL7eJij1fEhgAuXG/3xbyLyR6B2bzWj9uKkzt6+kyH+fUUDEUPxnWUpcSNAKaWQqz8ETUOfvzjq/QkhuH96EoaEt7fGhwAOoE2ajn7/Y9DYSOT53yIrj8d6SJYRHztYHLBovJskl+DNzT4CMUxo1hah6eh3P2TWvDp7hshz/xt1PrZV2HcdC/E/3m3AH1J8a5GH2UXxI0Cp6irU3h2IwcMQQ4db0me/NJ35Y1wcP2ew9VB8HDgA2tACHE9+CxLcGK+/iLFxdUxNNI1+yW/eb2TH0RAThzn57l0puBNib8KDloPwA0Cgz4++FqqFh25LQtfgr5viRwAXCS70R76GGG1qwSPPPxtTXxelFJ+VBnh2pZcEh+Afl6fEjQkPQB0qRVVVoE2cjsjoa0mfIwc6GT/Uya5jIY6djQ8BHMwC6S1acOPFP5iZ228BbCGqmZREjXunJVLXpOJGxQ7NETRz7jBrF3kbifz5t8hjhywfh5SKt7f6+MMqLwlOczOLZTmXK1FSYnzwJiDQF99naZTX3VMS8bgFb2/1EQjFx2EIIAYMwvGNf4D+2ci1K03NQsj6PDMnzkX4+d8aOHwmwu3FLp6504PTER8CFIDavxt14ihi/GRE/xzL+u2frjO/2AxO2BajYuhXQzgc6A98GW3unVBdReS//hfy1EnLxxGKKJ5f28SrG3z0TdH4v+9PJT87jgSoUBBj1XvgTECbG13/yyt5YHoSmoDXP/fFPCCqLdqIIhxPfwdSUjFWvI7xyfsxMQtb+cBoC1FtmFvkIq+vzqf7AlTXxIe9uQVt7CT0x78JgPGX/8JY8xFKWjPGpoDkf3/oZeXuAEP76fz4oTSG58TPZgYgd21FnTmFNm12VJ2Cr0ayW+O+aYnU+xQrtvss7ftGiPQMHE9/B1E0FlW2j8iff2up8+eGsgC/eqcBb0Dy1IJkHpmdHLN6eFdD+bwYq1ZAkgd94d2W93/XJFMAf2OzjwZf/PggCaGhz1tkhrGHghgv/g65Z5tlh9OFeoNfvt3AlkMhivOc/OjBVPrHOI3Blcg1K6GuBu32pQhP6o0v6EGy+5gC+IlzBqtL4stfVmQPwPH1f7jsX/fXP6N8TZb0LZXik71+/uNDr2XaXVuIaoOmCR6bk4yU8Nwab0xLM1wNbWgBjmf+ETEgF7lpDcYLv4u6qv1odZhfvNnAgVNhZo9y8U/3pZLhia9lo2ovIdd8CKlpaPPujMkYZo1ykd/fweqSIGVxkPKgLSLBhf7gE2jzF8O5M0T+89fIkl1RPRADYcULa728vM5HWrKpRbitMD6iN9tirHoPfE3oi+9BJCVb3n+yW+OxOUk0+hUvrWuKu6g4rWgcjqf/HpJTMN77G8ZbL6P80X1Q2HcyxC/ebKDqosE9UxP5+2WemFc/uBJ56gRy+ybEoCFoUcpFdyPum5ZEvzSNd7b5qY5RUetrITwp6E98y0zXc6ScyO//LeoWlEa/5Lcfenljs58LDQYNPmt+S0JZ/KstKiqirCy+a+68s83HR7sC3DHWxcOzrN9Yb4QyIsjVHyG3rgd3IvpdDyGKxvaoCSsUUby7zc/qfQF0HR6ZlcTc0fHj/9SCikQwnv8t6swp9C9/A62gMGZjudBg8P++Xo/LKfjnh9NinkH5asgj5RgrXoemRkTRWPRlD/R4RvfyqjAvftbEpUbJ6EFOvr4wGU+cHYIAcs82jPf+hhg+Cv3Rr8U00edzn3rZdiTEE/OS4srPsAXV5DUj9g7uh5RU9OUP9/hvrSkg+esmH1sPh0h2Cb6+MJkxefHjMtCC8jUR+a/fQGM9jme+H/WIvOtxtDrMr95pZHA/nR/cl4ozDnKttUUphSrZhfHR2xAKok2djXbHMoSz5ywZSil2HA3x100+Gv2K2woTeHR2Mm4L0qYUFRXZQtTVMKTi395t5OjZCH+32BNXvj9tkYfLMN59Dfw+8yBYej8iPaPb7R47G+b5tU2cq5MM66/z1QUecmJcxuVaGCvfQW7fhDbrdvTbl8Z6OGw9FORPa5ooGuTgO0vjI4HklSifF+PDt1BlJZCcgn6XmbW6u0KEP6R4c7OPDWVBXA54YEYSc8e40GKchfxqqOoqIn/+D0hOwfHN7/a4INlZfEHJz15voNEv+f49qeRnxz6B5JUopVD7dmKsfMc8ECffZpqy3N0v1bPrWIhXNzTR4FcU5zl5fG4SGSnxt+coKTFe+S/U8cNoyx5Ej1J28s7w9lYfK3cHuK0wga/Oj33W/6uhai9hvPMq6tRJyOqPvuxBtMHDut1ujVfyyvomSirCeNyCR2cnMXW4dRpvW4i6DpcaDX7xRgOhiOJ7d6dQEGc+QC0obyPGp++jSnaBw4k29060GXO7VDi13idZsd3PpvIgugb3Tk1k4Th3XPmwtMXYugG5agVicD76E88gtPjYdF9a18TGsiAzCxN4Ml43NaVQpXvMJ8SAH5E/En3RckRWdqfbkkqx/UiIt7f4qW2SFA508MT8ZLJS42M+rkTV1xJ5/lnwNqA/9feWpDToCCfPR/gf7zbgcgr+nwdS6Ruv/391NRjv/hVVccz0JVuwBDFhKkLrvLbxfL3Bm5t97DkRJtkleHhWEtNHJMTtb0Z+8h5y6wbExOk47n4o1kMCzKCf337kZX9lmAdnJLJoQuzrT14NJSXy88+Q61eBYSDGTEBfeBciNb3TbUUMxfoDQd7d5iMQhmnDE3h4VpLl2n9biLoBJ85F+LcVDTh0wQ/uS2FgRvw9HbYgjx/G+PAtqLkImVno8xYhRo9DiBsvqmBY8em+AB/v9hOMwIgBDh6fk0xORnxu4gBy7w6MFX+Fvv1wPPXtmGsS2hIxFM+u9FJaGWbpRDf3TkuMy0MBQDXWm0EK+3aC0NAmzzBzbHXQP+jg6TBvbPZRecEgySW4f3oic4pc8Xu/3gZTgKq5iH7vo2jjJsd6SO3YczzE7z/20i9d4x+Xx5//YQtKSdS+XRhrPgRvI2QPQF98L9rg/A5d3+iXfLDTz/oDQQwJk/KdPDY7mdSkeL1fhVy7ErlpDWLQENPfp4eLDHcHf0jx/73VQHWtweNz49P1ogVVcxFj1QrU4TIzsnH27WjT5yCcN7b4KKXYeSzEu9v8nK+XZHg0Hp+bRPHg2FiLbCGqA5RWhvjtR17cTsHfL/XErUYKQEXCpqS/eR2EgtA/B33+YsSIq5tqgmHF5oNBVu4OUNsk6Z+u8eCMJMYNccbtIQhg7PgcufIdSE3H8fTfd+lJJtoEwop/X9HAyfMG84tdPDIrKS7NWi3I05XIj99FVVWAy402dZYZ6XiNOmAnzkV4f6ef/RVhHBrML3azbJI77hyA26Lqaoi88hxcPIe29P6oFafuLp+VBnh1g4/MFI1/XJ5Cv7T4fZhRwQBy42rk1g2mdmHYcLTZC81cbVdZ776gZO3+IKv2+AmEYUg/nQdnJDFyYBzvq0oi135sClAD88yEpD1gwuxpahoN/m1FIxcazDJc8VJF4lrII+UYH79rPvgne9BmzEObchsi4YvmOKUU5VUR3t7qo+KCgdsJiyYkcsc4tyW+T9fCFqI6SGlliD987EUqeOr2ZKYUxF+UUVuUz2sKU9s/h0gYcnLRp81GjB6PcDjwBiSf7Q+ydn8Ab0DhcQvumpzI3NGuuPThaUFJA7n6Q7NIbEZfHF/+hmUJ7rqCP6R4dmUjh05HmDjMyVcXeEiMkwSTV6PVxLdulbmxOZxok6ab5uG0Pkil2F8R5pO9AQ6fMWu+TSlI4L7piXFrumtBnjqB8dcXwNeEtmg5epRrnHWXTeVBXlrXhMct+OadHgrjWMiAZu3Cuo9RpXtBKTNqbfYdiIKRCKFxscFgTUmAjeVBgmHIStW4f3oSk/Lj+4FNhYKm6bK8BDFgEPpXnolLAaqFuibJv68w65nOG+Pi4ZlJ8b2nGxHkzi3Izz+DxnpITEKbPgdtykxEYhIRw3Qa/3RfgFMXDXQN5o9xsXRSYlwE7thCVCc4cS7Cf3zUSKNfMXuUi4dnJcVF0dTrobwNyI1rkXu2QTiE4U6mvN8k3giM44JKJTNF487xbmYWuuL/Xmoumo6JVRWmOv2Rp+LKhHctwhHFn9c0sfNYiKxUjW8s9DA0DqrOXw8lpVmzcdMaOHsGJTQuZY/kUzGOz0NDEbrGtBEJ3DneHdcmbmgWvDetRa7/FHQd/f7H0AqLYz2sDrH7eIg/r/ESisDdkxNZMtEd1wciNP9ON601zcPSIJSaSUn6BN7yjaZeeBiYoXPneDdThyfE/b3I05Wmy8CFc4jR49DveaRDJqdY0+iX/OcqL4fORMjv7+CrtyeTHWc5tq5ERSKofTswNq2FuhqU7qA6ezTvR8axz8jF5RTMHOVi4Th3XPkK2kJUJ6lrkjy/xktZVYQMj8aDtyUyOT8+nSBbqGk02HWgntCubUys2UlfWYdE4O0/lLQpk9CLxiISk2I9zGuiwiHklg3ITWsgHEKbPhft9iUIR3w/mbdFKcW60iB/+9yHocykrvdMS4zLsP8WwobiQEWIym0HGHJyCyNDx9EAvysVffwUkiaMh345cb32ZcVx5KoVqOoqyMrGcf+XLU/E2l3O1hn84WMvp2sMBmTofHlOEiMGxPfar6412LP3PK69nzOhcR8pyoeBhm/wKNKmTkYrGHlVk028oPw+5IbVyG0bTD/B+YvRZs6P67V+JYZUvLPVz6q9ARw6LJtkBgnF88NyIKTYfdRPzbbd5FfvpCB8CoAmTxauSZNxF49DZGbFeJTtsYWoLiCV4rP9QVZs9+MPKYb201k8IZHxQ51xEcWmlOLURYO9J8PsOxGi8qKZhM3jFkwb7mCB+wQZx3ehjpSDYYCmI/JHIIYXmZtbn8wY34GJCgaQe7Yjt6yDhnrI6It+14NoFtXEiwZVlyK8ssHH0eoIiQmCeWNc3DHWHTfOtI1+yf6KMCUVIUorwwTDIIBRgxzMG+RjdM1exL4d0FBnXtAnE61wDKKwGJGbFxfRkUopVOVx5OZ1puOqppm+FvMWxZUjcGcIRxQr9wRYudtPxICiXAdLJyUyYoAjLg52QyqOnY1QctJcO9W1Zub1DI/GbcM1ZjuOkXpwO+r4YfMChxNRUIg2qtg098WJRlk1NSJ3bDb9u4IB03x3z8OIftaVAuppjlSHeXmdj+pag5REweIJbmYXuePGreBSo0FJRZj9FWEOVoUJG+DQYOwQJ/P611FwdheU7IRAcym2/jloo8aijSiC7AEdCpyKJrYQ1Q0a/ZL3d/jZWB4kYkBmimnimDo8gQF9dMs2N6kUZ2oMjpyJcPhMhCPVYeqbM7UmuwTFg51MGJbA2MHOdupzFfCjDu5Hlu5BHT8KqrnkREZftPyRiEFDELmDIT3DsntR0kBVnEDu340q2wfBACR5zOiNKbch9JvzEGyLUortR0N8sMPP2TqJrsG4IU5mjHQxKtdp6ZNig09ytDrCkbNhjpyJUHnRQClTcBqW7WDcECfTRrjaRYgpKVEVx1Dl+5GHSk0BFyDBZToTD85HDMlHZA+wdL5UfS3ywF5kyW44dwbANMEsWBrXfnOd4Xy9wXvb/Ww/GkIpyOmjMbPQxcRhCWRZ6HweMRQVFwyOVoc5etbcd3xBc89JSxKMHZzA1BEJjBjgaBdMoeprkQdLUeX7UZXHoeXo6ZeDNqQAMTTf3HeSUyy7FxUJo44dQpbuRZWXmA+WfTLNgJwx42N+SPcEEUOxoSzIyt1+6poUCQ6YOtzFlAJzjqwyqyqlqPGae07LujnTXF5N16Agx8GUggQm5ye0C1BRkQjqxBFkWQnqUCm0ZMxPTEIMKUAMLUDLGwZZ/Sx/kLOFqB6gwSdZuz/A5weD1DWZ/5UZHo2iQU7ysx0MztLpl6Z3+3CUStHgU1xoMDhTY1B10aDqkkHVpQiB5iojAhiYqVOY62D8kAQKchzoHdCOqYAfdfwI8tgh1LFD0LaUTJIHMXAQol+OmZm3bz9EZlaPOFcqbyPq3BnU2TOo05WoE0cuP3FkD0CfMhMxdtJNZbrrKFIq9pwIs/5AgINVERTg1M0K7QXZDoZlO8jpo5OWJLotxAbCikuNBmdrJVWXIs3rxuBiw+VabR63YMQAB2OHJFCc5+yQdkwphaquQh06gDp5FFVVCS31HHUdsrIR2QNNgSqrv6nlTEvv9kanpAG1NWbfVRXI44fhwjnzQ5cbbewktKmzEH37daufeOVcncFnpQG2HgrR1Cy8DMjQGTnAQX6Og4EZOv3T9G4XeZZSUedTnKszOH3J4HSNwemaCKcvGYTMuAI0AXlZOsV5TsYOSSAvS+9QFKpqakQdOoA8cQR14hg0NV7+MCUNkTMQkZOL6JdtrpuMvghX96PNlN+HOnsadeYU6uQxVMVxCJvFn8XgfLSpMxEjx3Qpz168E44oth4OsaEswMnz5u80yWX+7kcOcJLbVyenj05qYvf3HH9IcaHeXDNnasw/T12MtJ6RYArco/OcjB2cwKhcB0muDuw50jDn7fhh1Imjpqm+RYRxOM29JifXXD/FE6N+dthCVA8ipeLQmQh7T5imkPP17YuJpicL+qXpZKZoJCUIEl0Ct1PgcgoU5jqQ0hSWmoIKX8D80xuQ1HgllxolkSvKIyW5BIMydYb0czBigIOCnI4txOuhlILaS6iqCvN1uhJ19szlw7EFd6K52aWkQkqq6VeV4IKEBPNPoZnXSGn+GQxCkxfV1AjeRrMIrrfNxokwhbWCQrTR47qU9PFm5VKjwe7jYUpOhjhSHcFos3RcDuiXrpOVquFxayS6hLl+EgRCNK8bZf7pDyl8QWmun6CitklS0yjxBtr/xDVhFjDN66szfICD4dlOsvto3d44VTiEOnUSVXHcFHDOnobGhvZf0jRI64NITYOkZERiMiQlg8ttCl6aBroDUBAKmak6QiGzXltdjblu6usua04BPKmI/BGmabGgsFcK3VcjbCgOVIZb95z6NrXCBJCZqtE/TSc1SZDkEiS5zL1H1wFF674TipjrxRdU+EOKep+539Q1yXZrESAl0dxz8nOcDM9xMLS/o9sh5kopuHgeefIY6kwlqvo0XDhr7h1tSUpGpPWBZI/592QPuJPAoZtrRtMRmkCFw+baCYcgGEA11KHqaqGuxtRut6DriNwhiBFFaEVje6Taw83C6ZoIe4+H2XcyRMUFA9lmi0hyCXLSddI9gmSXRrJb4HGLL5SUCRvmevEHFb6QotGvqPWa55U/1H7PcWjmnpOf7aAg2xT2+6b0wJ7j95n7TVWFuedUV5maKocDxw//NeqaKVuIiiK1XsnxcxFOXYxwoUFyrs7gfP0XF9eNcDuhj0enb4pG31SNzBSNnD46uX0d9Enu/hNDR1BGBGouoS6eQ104j7p0HhrqUI0Npjmn+UmuQwhharfS0k3H5OwB5qv/gLgOHbaKcERx8kKEivMG5+oNztUZnKszN6bOoAlITzbXS8urX5re+rRpVY2tVm3jpQumcF57CVVbA94G8Pkwj/IO4nKb5uU+GYj0TPNpc8AgyMyKC9+gWKKU4mKD5Ni5CGdrDc7WSc7WGpyvNwh3sjZtskuQmaKRkaKR4dHIStUZmKkzMEO3zH9PRSJwvhp18Tyq5iKq9pK5furrwOeFSKTjjWkapKabQlJ6H1OrnpNrPrTdBNF20SYQUhw/Z5rWqmvN19k6g0Z/584qh25aYfp4zHXTN0VjQIapGc1K0ywxGyqloL4WVXvJEv9ZW4iyGKUUwbCpMQiETOk9GFYIYR56mgaaMJ8ak13mn/EeBqyUMrUFAT+EgqgW7YFSzTekmU+IzgTweCAxuUvlIW51IoYiEG7WFjQ/+YG5bkTzy+1sWTsaLidxL1goKc114/OigkFTY2nIy1rPBBeiRbPpTgSXO+7vKd5QShGK0KydlPiCqlXr0PI/meAQJLtN7WZiwk2y54RD0OSFgN9cR0bE9GeSEpxOc79JcJmvZI+953QBKc19xhtQNAW+aAnRNUh0CRITTA3nzbDn9DRFRUXc/J66NxFCCNwJ4I6TyIieQAhhagia/RV6z53FFw5d4NEFnvhOQtwphKaZprykZHvdRAkhzMPN5RRxW0KmswghLgtI2HtOtNA004xn7jm9z0esp+gdvyobGxsbGxsbG4ux3JyXmppKbm5uVPuora2lT58+Ue3DpmvYcxOf2PMSv9hzE7/YcxOfWDUvVVVV1gtRVnAr+13FO/bcxCf2vMQv9tzEL/bcxCdWzottzrOxsbGxsbGx6QK2EGVjY2NjY2Nj0wVsIcrGxsbGxsbGpgv0SiHq29/+dqyHYHMN7LmJT+x5iV/suYlf7LmJT6ycl17pWG5jY2NjY2NjE216pSbKxsbGxsbGxiba2EKUjY2NjY2NjU0XsIUoGxsbGxsbG5suYAtRNjY2NjY2NjZdwBaibGxsbGxsbGy6gC1E2djY2NjY2Nh0gV4lRF24cIFly5aRnJzMyJEjWbNmTayHdMvy+9//nokTJ+J0OvnpT3/a7rMXXniB3NxcUlNTeeqppwiFQrEZ5C1IMBjk6aefJi8vj9TUVKZPn86WLVtaP//lL39JVlYWGRkZ/OAHP8DOgGId3/zmN8nJySE1NZXi4mLef//91s/seYkPtmzZgqZp/OIXv2h9z56b2DJv3jzcbjcejwePx8OSJUtaP7NkblQv4qGHHlJPP/20ampqUitWrFAZGRnq0qVLsR7WLck777yjVqxYoR5++GH1z//8z63vl5SUqPT0dLV9+3ZVV1enbr/9dvXjH/84dgO9xfB6vepnP/uZqqioUIZhqNdee01lZmaqxsZG9eGHH6rc3Fx19OhRVV1drcaMGaOee+65WA/5lqG8vFwFAgGllFLbt29Xqamp6uLFi/a8xAmGYahp06apqVOnqp///OdKKWXPTRwwd+5c9fLLL3/hfavmptdoorxeL++++y4/+9nPSEpKYvny5RQXF7NixYpYD+2W5N5772X58uWkp6e3e//VV1/lgQceYMqUKaSlpfHjH/+Yl156KTaDvAVJTk7mJz/5CXl5eWiaxiOPPEJCQgKHDh3i5Zdf5plnniE/P5/s7Gy+//3v23NjIYWFhbhcLgCEEIRCIU6fPm3PS5zwxz/+kWnTpjFq1KjW9+y5iV+smpteI0QdOXIEj8dDbm5u63vFxcUcOHAghqOyuZKysjLGjh3b+u/i4mIqKyvxer0xHNWty5EjR6ipqaGgoOCqc2P/fqzl7/7u70hMTGTKlCksWLCA4uJie17igEuXLvGb3/yGn/3sZ+3et+cmPvje975HVlYWCxcupKSkBLBubnqNEOX1eklNTW33Xmpqqn04xxlXzlPL3+15sh6/38/jjz/OD3/4Q9LS0q46N/a8WMvvfvc7vF4vq1ev5s4770QIYc9LHPCjH/2I7373u1/QrNtzE3t+9atfceLECSorK1m4cCFLliyhsbHRsrnpNUKUx+OhoaGh3XsNDQ14PJ4Yjcjmalw5Ty1/t+fJWsLhMA899BAFBQX85Cc/Aa4+N/a8WI+u69x+++2sXr2ajz76yJ6XGLNnzx527NjBN77xjS98Zs9N7Jk6dSoej4fExER+8IMfkJKSwtatWy2bm14jRA0fPhyv18vp06db3ystLWX06NExHJXNlRQVFbF///7Wf5eWlpKXl2dvPBYipeQrX/kKQghefPFFhBDA1efG/v3EjkgkwtGjR+15iTHr16/n0KFDDBw4kOzsbF5//XX++3//7zz11FP23MQhmqahlLJubnrcVT2GPPjgg+prX/ua8vl86v3337ej82JIOBxWfr9fff3rX1c/+tGPlN/vV5FIRJWUlKg+ffqonTt3qrq6OrVw4UI7Os9ivv71r6s5c+Yov9/f7v0PPvhADRo0SB07dkydPXtWjR071o40soi6ujr1yiuvqMbGRhUOh9Xf/vY35XK51J49e+x5iTFNTU2qurq69fWlL31J/bf/9t9UbW2tPTcxpra2Vn3yyScqEAioYDCofv3rX6v+/fururo6y+amVwlR58+fV0uWLFGJiYlq+PDh6tNPP431kG5Z/vmf/1kB7V7PP/+8Ukqp559/Xg0YMEB5PB715JNPtoZ120SfkydPKkC53W6VnJzc+tqwYYNSSql//dd/VZmZmSo9PV390z/9k5JSxnjEtwb19fVq3rx5Ki0tTaWmpqqJEyeqt956q/Vze17ihyeffLI1xYFS9tzEkvPnz6tJkyYpj8ej+vTpo+bPn6927drV+rkVcyOUsjOD2djY2NjY2Nh0ll7jE2VjY2NjY2NjYyW2EGVjY2NjY2Nj0wVsIcrGxsbGxsbGpgv8/74qXmBPgJlsAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Plot the solution\n", "fig, ax = plt.subplots(figsize=(5, 1))\n", @@ -198,10 +165,10 @@ "id": "a85faf26", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:18.138848Z", - "iopub.status.busy": "2023-03-13T13:26:18.138666Z", - "iopub.status.idle": "2023-03-13T13:26:18.143453Z", - "shell.execute_reply": "2023-03-13T13:26:18.142642Z" + "iopub.execute_input": "2023-03-16T10:09:58.502894Z", + "iopub.status.busy": "2023-03-16T10:09:58.502694Z", + "iopub.status.idle": "2023-03-16T10:09:58.507275Z", + "shell.execute_reply": "2023-03-16T10:09:58.506633Z" } }, "outputs": [], @@ -241,30 +208,30 @@ "id": "26b599d9", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:18.146012Z", - "iopub.status.busy": "2023-03-13T13:26:18.145759Z", - "iopub.status.idle": "2023-03-13T13:26:18.844285Z", - "shell.execute_reply": "2023-03-13T13:26:18.843592Z" + "iopub.execute_input": "2023-03-16T10:09:58.510341Z", + "iopub.status.busy": "2023-03-16T10:09:58.509916Z", + "iopub.status.idle": "2023-03-16T10:09:59.273819Z", + "shell.execute_reply": "2023-03-16T10:09:59.273260Z" } }, "outputs": [], "source": [ - "def cubature_to_slr1(cubature, *, ode_shape):\n", + "def cubature_to_slr1(cubature_rule_fn, *, ode_shape):\n", " return recipes.DenseSLR1.from_params(\n", " ode_shape=ode_shape,\n", - " cubature=cubature,\n", + " cubature_rule_fn=cubature_rule_fn,\n", " )\n", "\n", "\n", "# Different linearisation styles\n", "ode_shape = u0.shape\n", "ts1 = recipes.DenseTS1.from_params(ode_shape=ode_shape)\n", - "sci = cubature.ThirdOrderSpherical.from_params(input_shape=ode_shape)\n", - "ut = cubature.UnscentedTransform.from_params(input_shape=ode_shape, r=1.0)\n", - "gh = cubature.GaussHermite.from_params(input_shape=ode_shape, degree=3)\n", - "slr1_sci = cubature_to_slr1(sci, ode_shape=ode_shape)\n", - "slr1_ut = cubature_to_slr1(ut, ode_shape=ode_shape)\n", - "slr1_gh = cubature_to_slr1(gh, ode_shape=ode_shape)\n", + "sci_fn = cubature.ThirdOrderSpherical.from_params\n", + "ut_fn = functools.partial(cubature.UnscentedTransform.from_params, r=1.0)\n", + "gh_fn = functools.partial(cubature.GaussHermite.from_params, degree=3)\n", + "slr1_sci = cubature_to_slr1(sci_fn, ode_shape=ode_shape)\n", + "slr1_ut = cubature_to_slr1(ut_fn, ode_shape=ode_shape)\n", + "slr1_gh = cubature_to_slr1(gh_fn, ode_shape=ode_shape)\n", "\n", "\n", "# Methods\n", @@ -282,84 +249,13 @@ "id": "a67349a6", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:18.846688Z", - "iopub.status.busy": "2023-03-13T13:26:18.846431Z", - "iopub.status.idle": "2023-03-13T13:26:26.315915Z", - "shell.execute_reply": "2023-03-13T13:26:26.315309Z" + "iopub.execute_input": "2023-03-16T10:09:59.276437Z", + "iopub.status.busy": "2023-03-16T10:09:59.276031Z", + "iopub.status.idle": "2023-03-16T10:10:07.194435Z", + "shell.execute_reply": "2023-03-16T10:10:07.193830Z" } }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e69e43c020b445ff8345228ac793e141", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/4 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(5, 3))\n", "fig, ax = workprecision.plot(\n", @@ -420,10 +305,10 @@ "id": "80a655fb", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:27.165904Z", - "iopub.status.busy": "2023-03-13T13:26:27.165692Z", - "iopub.status.idle": "2023-03-13T13:26:27.236704Z", - "shell.execute_reply": "2023-03-13T13:26:27.235998Z" + "iopub.execute_input": "2023-03-16T10:10:07.938583Z", + "iopub.status.busy": "2023-03-16T10:10:07.938320Z", + "iopub.status.idle": "2023-03-16T10:10:08.018450Z", + "shell.execute_reply": "2023-03-16T10:10:08.017780Z" } }, "outputs": [], @@ -447,70 +332,13 @@ "id": "095e6e88", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:27.239246Z", - "iopub.status.busy": "2023-03-13T13:26:27.239022Z", - "iopub.status.idle": "2023-03-13T13:26:30.814629Z", - "shell.execute_reply": "2023-03-13T13:26:30.813929Z" + "iopub.execute_input": "2023-03-16T10:10:08.020981Z", + "iopub.status.busy": "2023-03-16T10:10:08.020692Z", + "iopub.status.idle": "2023-03-16T10:10:11.839682Z", + "shell.execute_reply": "2023-03-16T10:10:11.838689Z" } }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1881c2517f07439497a14ec6bc6b2f37", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/3 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(5, 3))\n", "fig, ax = workprecision.plot(\n", @@ -570,10 +387,10 @@ "id": "2fbdcf3c", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:31.464914Z", - "iopub.status.busy": "2023-03-13T13:26:31.464701Z", - "iopub.status.idle": "2023-03-13T13:26:31.478661Z", - "shell.execute_reply": "2023-03-13T13:26:31.477919Z" + "iopub.execute_input": "2023-03-16T10:10:13.097565Z", + "iopub.status.busy": "2023-03-16T10:10:13.097115Z", + "iopub.status.idle": "2023-03-16T10:10:13.115990Z", + "shell.execute_reply": "2023-03-16T10:10:13.115209Z" } }, "outputs": [], @@ -595,70 +412,13 @@ "id": "6a9d2a09", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:31.481278Z", - "iopub.status.busy": "2023-03-13T13:26:31.481011Z", - "iopub.status.idle": "2023-03-13T13:26:35.868849Z", - "shell.execute_reply": "2023-03-13T13:26:35.868244Z" + "iopub.execute_input": "2023-03-16T10:10:13.119600Z", + "iopub.status.busy": "2023-03-16T10:10:13.118993Z", + "iopub.status.idle": "2023-03-16T10:10:18.557819Z", + "shell.execute_reply": "2023-03-16T10:10:18.557268Z" } }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "22598556485f432f90e7fc1059487844", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/3 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(5, 3))\n", "fig, ax = workprecision.plot(\n", @@ -730,10 +479,10 @@ "id": "953111c6", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:36.539181Z", - "iopub.status.busy": "2023-03-13T13:26:36.538920Z", - "iopub.status.idle": "2023-03-13T13:26:37.681505Z", - "shell.execute_reply": "2023-03-13T13:26:37.680834Z" + "iopub.execute_input": "2023-03-16T10:10:19.792778Z", + "iopub.status.busy": "2023-03-16T10:10:19.792493Z", + "iopub.status.idle": "2023-03-16T10:10:21.619390Z", + "shell.execute_reply": "2023-03-16T10:10:21.618619Z" } }, "outputs": [], @@ -769,112 +518,13 @@ "id": "340fc41c", "metadata": { "execution": { - "iopub.execute_input": "2023-03-13T13:26:37.684148Z", - "iopub.status.busy": "2023-03-13T13:26:37.683879Z", - "iopub.status.idle": "2023-03-13T13:26:50.546839Z", - "shell.execute_reply": "2023-03-13T13:26:50.546212Z" + "iopub.execute_input": "2023-03-16T10:10:21.622891Z", + "iopub.status.busy": "2023-03-16T10:10:21.622533Z", + "iopub.status.idle": "2023-03-16T10:10:38.218835Z", + "shell.execute_reply": "2023-03-16T10:10:38.218202Z" } }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e2e0dff56c4c4af3924d42922126b0cc", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/6 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(figsize=(5, 3))\n", "fig, ax = workprecision.plot(\n", @@ -951,7 +590,31 @@ "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { - "01d464d0d72e4b97bb8fd6d4786b1fe6": { + "021be61fbf5c458fb91d0cd8d39b3a35": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_186244a04fe34016b08c3099a649701b", + "IPY_MODEL_a0d517aaefd24a238a558ad3fdbdf46b", + "IPY_MODEL_9240c7c2213a47cfaa1c3bea47d128c6" + ], + "layout": "IPY_MODEL_66cbd67063e94bef9d9671df091fe36e", + "tabbable": null, + "tooltip": null + } + }, + "031e22b3413c45c98921677c0478e3f0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -969,30 +632,31 @@ "text_color": null } }, - "0483bcc6cebf46a8ad348204d36ad78a": { + "032b5ec80e4b4c3abcf6b031ba2da343": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_b60fde97e6cf49dbaba2b38ac2f65262", - "placeholder": "​", - "style": "IPY_MODEL_2f99e68af5d94ffe9e057ca84336cbb0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_346cf42fef8e46a8801f219cbad4c9bb", + "IPY_MODEL_c4eb1a2f813b451aa5c6026bfb032b75", + "IPY_MODEL_f7e975bb7a4c417ebd5f12865f23a23e" + ], + "layout": "IPY_MODEL_c132b68280ab4ecea0aaf003350da447", "tabbable": null, - "tooltip": null, - "value": " 5/5 [00:01<00:00, 3.49it/s]" + "tooltip": null } }, - "0738cc7592634ec4aa57d3b6e72574e1": { + "03db5090ad4e49c886af8d5ee2c648a8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1041,35 +705,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "0801737948ce468d9362dbd38ed8d24a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_d237ad501e40474ea661279b8512c16f", - "IPY_MODEL_4daced2e600747b2a197900797f43049", - "IPY_MODEL_0483bcc6cebf46a8ad348204d36ad78a" - ], - "layout": "IPY_MODEL_4ae61972c44f443ebef6e32f123881ef", - "tabbable": null, - "tooltip": null - } - }, - "0953187485ba41bdac974596296638ab": { + "03e58e27bf3f499bb17ddab3797e122d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1122,99 +762,7 @@ "width": null } }, - "0a29a49a142547f5bf1896c28d37501e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_f7992584aa5740ab8b6f70fa82f366cb", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_63d2a5b9ab3e41e3a002f263b7c78c28", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "0da170ebd4c74441b7575b3e869cf58b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_72d9f512eb084dc895aaddc155f8b070", - "max": 3.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_edca1bae57274fdab7d04b081d029b80", - "tabbable": null, - "tooltip": null, - "value": 3.0 - } - }, - "11a478be6c334811865d6939afff9ccd": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "13eefd4facbc4482ba89d4f21605702b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_b14dc077ef034f73bd846aa9b84966bc", - "IPY_MODEL_38d14575c77b4ebdaea739d7b4dffa56", - "IPY_MODEL_2461303e149a4198bc937d0d35f692ab" - ], - "layout": "IPY_MODEL_1ca3a4e5401445b9a6a027831ec9e6a9", - "tabbable": null, - "tooltip": null - } - }, - "145a6b6381044bf085780ee71b6fa790": { + "05c387a36b604e2baf3317dca0fb88f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1267,43 +815,30 @@ "width": null } }, - "14fd904c01ea4fddb07db01253837cb3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "1741407a73124e2899090068e5dff8bb": { + "0670564ad93b4e02860ee7702801d88c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "HTMLModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "HTMLModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c4b0d02d35454a5b9e8e6f531177c207", + "placeholder": "​", + "style": "IPY_MODEL_ff7344fa6b2e4d12a92afba3166dc1bd", + "tabbable": null, + "tooltip": null, + "value": " 5/5 [00:02<00:00, 2.57it/s]" } }, - "1755c7df7858433588721deab908cb33": { + "08a4d9b93e8b461d853a1412b976479c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1356,73 +891,7 @@ "width": null } }, - "17adf509823147ab934c33722369a09a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_95f646f2a14e4ee5aba9c0d987af87a5", - "IPY_MODEL_3ac245d6e73940f1964fa4944565da02", - "IPY_MODEL_a85e133e9281464a803ea00f8e717b4b" - ], - "layout": "IPY_MODEL_fa02ab4d2206459eb773a41a7c65c2d5", - "tabbable": null, - "tooltip": null - } - }, - "1881c2517f07439497a14ec6bc6b2f37": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_9fd1f2b9b69f4c8897399811aa49a45d", - "IPY_MODEL_ef4ef604540f4556a99db29cbbdd256c", - "IPY_MODEL_2009469a301045ef83d47c0267fcc7a2" - ], - "layout": "IPY_MODEL_f1e8cd7a9481416eb97ef7dee7654a73", - "tabbable": null, - "tooltip": null - } - }, - "18bb030144fb4a088190f68544d716c8": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "1ac4955da4d74de1943527fe22b22053": { + "0942239c43b64eb6a6baa215fe2bb83b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1475,7 +944,7 @@ "width": null } }, - "1c952df45ed74e1e9e07ffb4d8a93b37": { + "0c72b6b46d7b40b0a63e05c8907ab2f2": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1528,7 +997,7 @@ "width": null } }, - "1ca3a4e5401445b9a6a027831ec9e6a9": { + "1142236a2d1f443aa0ebabf709141848": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1577,11 +1046,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "1db2e2371d5946f89a1ba3ae3d8d93f0": { + "11c32e026a744655bd6985befe560bf4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", @@ -1597,7 +1066,7 @@ "description_width": "" } }, - "2009469a301045ef83d47c0267fcc7a2": { + "11fd3894b76744bd8dae0f7933382c68": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -1612,15 +1081,68 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_be2fba0b39d943c98a14004708fe0a77", + "layout": "IPY_MODEL_6a0ba26d3d364ece992905905c10fadc", "placeholder": "​", - "style": "IPY_MODEL_b7474f9739294ee3830481c3d4c6f580", + "style": "IPY_MODEL_8c34f41cc272482abd5e422ece032fe4", "tabbable": null, "tooltip": null, - "value": " 3/3 [00:03<00:00, 1.21s/it]" + "value": "100%" + } + }, + "135d6e49e3914168a3de06e4c06940ab": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null } }, - "222b8eb462b4410e8c9d305b82205c07": { + "17d990a5afd04a7eb3d1f8fd0840553a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -1638,7 +1160,7 @@ "text_color": null } }, - "22598556485f432f90e7fc1059487844": { + "1825b1b5de424f7e9787f1816bed5a44": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", @@ -1653,16 +1175,121 @@ "_view_name": "HBoxView", "box_style": "", "children": [ - "IPY_MODEL_66407d8358684f6f9c776b187057bfa7", - "IPY_MODEL_0da170ebd4c74441b7575b3e869cf58b", - "IPY_MODEL_a0edc7f5cb954354bd96837b010d1afc" + "IPY_MODEL_8ef5d7a4894841299a63f155b78d68ca", + "IPY_MODEL_5bc51e1c54144279a6bf9f9e69c078cf", + "IPY_MODEL_5ac8cf95c04e4287a55dccc07776d714" ], - "layout": "IPY_MODEL_1755c7df7858433588721deab908cb33", + "layout": "IPY_MODEL_fe74d8845f684e288189b2d07c5ba1cc", "tabbable": null, "tooltip": null } }, - "2326e44804fc48b8ba5997dc12bcbfec": { + "186244a04fe34016b08c3099a649701b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ccea54de85fb427c9b93734c61050873", + "placeholder": "​", + "style": "IPY_MODEL_cc68b409f8184b7e860cf131cf8c0c2f", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "1a668ba20f0e4a05b71d7f782764e6f3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_5cf9b49ee4fa4d5e971884fb478402e1", + "placeholder": "​", + "style": "IPY_MODEL_1f6e0f4e5a2c4c9bbef19629cb3853f8", + "tabbable": null, + "tooltip": null, + "value": " 3/3 [00:05<00:00, 1.81s/it]" + } + }, + "1ac737a5ae3943bd8ff8f8a02c17b569": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0c72b6b46d7b40b0a63e05c8907ab2f2", + "placeholder": "​", + "style": "IPY_MODEL_031e22b3413c45c98921677c0478e3f0", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "1b08ac1ea3c347af879758bf69feb4ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1c162a5e05e4416e85f1227486b46f03": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1dce255f1d7d441c922b6a244d4e8542": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1711,11 +1338,45 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "23bf4da944b94473a643071325d7fee8": { + "1f6e0f4e5a2c4c9bbef19629cb3853f8": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "1fe2034c8375448ba0c17fd13a535203": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "20bc6dc8c9b34240bfa646e0bb0a792d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1764,11 +1425,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "23d35dc6853148b98dd764cd12a3e1ef": { + "21e51321b5fe4c1abc6896995eab8d5a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1821,64 +1482,73 @@ "width": null } }, - "2440d896328446ab9d28daeecef9613d": { + "21e56ae5ed2948f694765cca940973c1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "FloatProgressModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "FloatProgressModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_b521e5dfacbd43b1952723534485e96f", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f4d9a12e6dce46b7af045f4cc3484dab", + "tabbable": null, + "tooltip": null, + "value": 5 } }, - "2461303e149a4198bc937d0d35f692ab": { + "22f2b3bed09f453c9be2a5fc21cb4f8c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "ProgressStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "ProgressStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_f014391bb51c4d3a87004bf9336b7ad8", - "placeholder": "​", - "style": "IPY_MODEL_6755e9f51a3d418dad579adcd162fabe", - "tabbable": null, - "tooltip": null, - "value": " 5/5 [00:01<00:00, 4.70it/s]" + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "260d9ed03ab04dfbb2580b26fa901187": { + "2cf66c926b494a7da442d2e3e8fcf3cc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "HBoxModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "HBoxModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c32cf94683bd440799d4630b6555215e", + "IPY_MODEL_a9d7f1a63025412c911081fe36b380ae", + "IPY_MODEL_b685c088983749ea891a31de34ab48ff" + ], + "layout": "IPY_MODEL_f4a354582d994b71aab54e99fb43a7cc", + "tabbable": null, + "tooltip": null } }, - "27bd5384434c4d44be98a8a19d870c4d": { + "2dae08aec0984ff98d65d5960c49dceb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -1931,31 +1601,7 @@ "width": null } }, - "2a66639925614e979da9ec51362db807": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_508be18866ac4369a3b55e990efdef60", - "IPY_MODEL_ec673c61c9a144f0888dd31a3dcf1357", - "IPY_MODEL_5c73d2ea95794714a7961137e1578a74" - ], - "layout": "IPY_MODEL_7b44e5a9e2d54e69bb4c5402c479491c", - "tabbable": null, - "tooltip": null - } - }, - "2b1f1c0821af43d1b7a15daf8a79ea94": { + "2e6017f7ed68444dab1cecd280cc4a36": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2008,86 +1654,54 @@ "width": null } }, - "2cd551f6163d473bb4c248938b23d6e1": { - "model_module": "@jupyter-widgets/base", + "2e91df3c19e34367b53a5e0b97caa24c": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "HBoxModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "HBoxModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aed1c25709bc4f528c6126592019f2cf", + "IPY_MODEL_21e56ae5ed2948f694765cca940973c1", + "IPY_MODEL_304b896d49a94f2c92ce0911a10f657b" + ], + "layout": "IPY_MODEL_20bc6dc8c9b34240bfa646e0bb0a792d", + "tabbable": null, + "tooltip": null } }, - "2de1abc1f98a4375bfbddeb975cd9b46": { + "304b896d49a94f2c92ce0911a10f657b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "success", + "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_0953187485ba41bdac974596296638ab", - "max": 6.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_47466da1ccf2477c83cdb5aed9a4b0a9", + "layout": "IPY_MODEL_af073c308c7d4b05ab2872ed825aa2fd", + "placeholder": "​", + "style": "IPY_MODEL_f9971cb5fd564bc3ada05149501a7997", "tabbable": null, "tooltip": null, - "value": 6.0 + "value": " 5/5 [00:01<00:00, 3.42it/s]" } }, - "2e26186db7a24252b10c2d48e2ca07d2": { + "30d50c36e15740e9bef23aa2af19a004": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -2102,33 +1716,31 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_a58cec2bae65470c8facf10cc5fed0cd", + "layout": "IPY_MODEL_4927044feed9440fb6a7d039dccb4353", "placeholder": "​", - "style": "IPY_MODEL_96a5c5f5d79b43fca6a49642bc061dd9", + "style": "IPY_MODEL_17d990a5afd04a7eb3d1f8fd0840553a", "tabbable": null, "tooltip": null, - "value": " 5/5 [00:01<00:00, 3.53it/s]" + "value": "100%" } }, - "2f99e68af5d94ffe9e057ca84336cbb0": { + "316b0eea93f0418eaa985fa985d95c0b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "bar_color": null, + "description_width": "" } }, - "313a6c212eea4bdf8c27934c12085ceb": { + "31c160aa4b0c48d18a137ba9c05129dc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2181,31 +1793,30 @@ "width": null } }, - "35456c7bb98e4d39bf8abf8b7a9a1e77": { + "346cf42fef8e46a8801f219cbad4c9bb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_6a8835d83a3b4873a31493eafac831cc", - "IPY_MODEL_5e3c864fd5ce463ea5a05d236f63fdf0", - "IPY_MODEL_943fb57c8551474a982b9d63ce2a9330" - ], - "layout": "IPY_MODEL_e891fa0655ab4698a6d56124d960ac9a", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_431ebb2654984d2db985fd40d9005463", + "placeholder": "​", + "style": "IPY_MODEL_76d98c9549204cb7b18adee9cb842d00", "tabbable": null, - "tooltip": null + "tooltip": null, + "value": "100%" } }, - "354a01a71121432e8f5059da9fd841e9": { + "34e52001f8b84a25ad9a8a1cccc24a32": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2258,186 +1869,7 @@ "width": null } }, - "35b972dbaf674d6a8af91f65bcb1ec7a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "38d14575c77b4ebdaea739d7b4dffa56": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_af910e58f8c24cb59336584d4a79bd78", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_729f6afe57af4e69b47d5ca7299b9c75", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "3ac245d6e73940f1964fa4944565da02": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_fe24d1ca63544a339edd185797a962d0", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_5e41daf888bf4cbea9b2303bc90ccb29", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "3af00629fd9c4399ac72a59e9676f1f5": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "3b08444235da4a7f8b958c54996ee6af": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_313a6c212eea4bdf8c27934c12085ceb", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_11a478be6c334811865d6939afff9ccd", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "3b66751ed83b42ef99ac3915e721053b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "3c8349b53efc4e43aeb62be9a55e49d9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_8d01306b9fd24be49f0df87526f144d8", - "placeholder": "​", - "style": "IPY_MODEL_3af00629fd9c4399ac72a59e9676f1f5", - "tabbable": null, - "tooltip": null, - "value": " 1/5 [00:00<00:03, 1.09it/s]" - } - }, - "3dfb9867304d4ced8c9837d676ca574c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_8745ae0bf0bf4d259e0def0cc97f6eaa", - "IPY_MODEL_9c0626380bd84e61b3a725876a3ce270", - "IPY_MODEL_2e26186db7a24252b10c2d48e2ca07d2" - ], - "layout": "IPY_MODEL_fbcaa1eb43b94ce29e89e4f7339105c6", - "tabbable": null, - "tooltip": null - } - }, - "4237c14be99548678225693cfc23dd92": { + "360d668a5aec43a7b4297941284f5a93": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2490,39 +1922,16 @@ "width": null } }, - "42697848e9534451a249d2f1ef466bd7": { - "model_module": "@jupyter-widgets/controls", + "3a3a74939d4347749a9eb57ab0ecdd94": { + "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "LayoutModel", "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", + "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "LayoutModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_e1d8299f978d4121b4c900b989079e9e", - "placeholder": "​", - "style": "IPY_MODEL_222b8eb462b4410e8c9d305b82205c07", - "tabbable": null, - "tooltip": null, - "value": "100%" - } - }, - "43c11990551a4e38aae10d61551c27cc": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, @@ -2566,30 +1975,7 @@ "width": null } }, - "45a2191bbd894883990baf6f6a2c12cb": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_1c952df45ed74e1e9e07ffb4d8a93b37", - "placeholder": "​", - "style": "IPY_MODEL_b13828b396c34a58a6d771e28600f7bd", - "tabbable": null, - "tooltip": null, - "value": " 5/5 [00:01<00:00, 4.29it/s]" - } - }, - "465ff4bc4bae42d897afa129fcf8cf02": { + "3ad22c723c4e4768859ad3b09afdf7e5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -2607,46 +1993,60 @@ "text_color": null } }, - "47466da1ccf2477c83cdb5aed9a4b0a9": { - "model_module": "@jupyter-widgets/controls", + "3cde991af2a64871a2936571777a67fe": { + "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "LayoutModel", "state": { - "_model_module": "@jupyter-widgets/controls", + "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "4922f96f55c34b4caeb44d213e83f37a": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_4a43ca333907427cbdc99587f85287d8", - "placeholder": "​", - "style": "IPY_MODEL_ecd27d8283d948229de50f5fdd0f6440", - "tabbable": null, - "tooltip": null, - "value": " 1/5 [00:01<00:04, 1.12s/it]" + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null } }, - "4a43ca333907427cbdc99587f85287d8": { + "3ee4e344b6704a4da4521021021ff273": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2699,41 +2099,41 @@ "width": null } }, - "4ae0ac5bcc654220bdba12c865609df3": { + "3f1c2a2b99244f919e9b03f678a6684a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "bar_color": null, + "description_width": "" } }, - "4ae23e1530b7465e8178129062858f22": { + "3faa65a39dfc4548ba9994d74e5bc7ca": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "4ae61972c44f443ebef6e32f123881ef": { + "41e9ce27054b496f84d492a04f28235a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2782,37 +2182,29 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "4b1082045e19453e851dc14a9197eb38": { + "428434323c464295af4f1c6756957882": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_5b78a70b474b4c8b863e94d8f46c7f3d", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_557c413588f042ce8c37438061d4da47", - "tabbable": null, - "tooltip": null, - "value": 5.0 + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "4bdef2be609348df87e5ec085172be4e": { + "431ebb2654984d2db985fd40d9005463": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2865,49 +2257,7 @@ "width": null } }, - "4daced2e600747b2a197900797f43049": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_64233569d7d14b89b1549e1ef19bb2dc", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_7c0d436dcbed4562a784b920c7255186", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "4e8e59b212f2460598ecdd856ab3916d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "508be18866ac4369a3b55e990efdef60": { + "431fb361ebb24ea7839455c79585a2c4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -2922,15 +2272,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_5b43a22dd22944aba6173e07fd8c9102", + "layout": "IPY_MODEL_929f6f1df0934a318d1333cac910c54a", "placeholder": "​", - "style": "IPY_MODEL_d4d74c2a17c14025a0a5a94f27d0e55d", + "style": "IPY_MODEL_97a65421230e4e05b930b30a2ec08d37", "tabbable": null, "tooltip": null, - "value": " 20%" + "value": " 5/5 [00:01<00:00, 3.40it/s]" } }, - "522a78218aee4db1b5edead18b1b3851": { + "441c82d70cf942d181793a0d88e8b833": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -2979,60 +2329,35 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "52f1e02607c74cd7a92cfaeac273136d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_84881a6c33184458ae096bc2c42c56ef", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_db060f2678d548d8b8e91e264aa37d6f", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "53f7b01248f74c5281627e0c6d4aea0b": { + "4495aa13f8f14dcabd6e1ac235572ae2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_d7f72bf4cb6e4bd2ad44ec0d7fd7fd16", - "placeholder": "​", - "style": "IPY_MODEL_fefea9d60b7745af9c9edca46b51816d", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_605bb4dd30614841896a90b3a60a3a6e", + "IPY_MODEL_6cf589c191534b6a83f39cb1ef39becc", + "IPY_MODEL_0670564ad93b4e02860ee7702801d88c" + ], + "layout": "IPY_MODEL_c932a21eeb094b71a4bd6b8cbf72d7a7", "tabbable": null, - "tooltip": null, - "value": "100%" + "tooltip": null } }, - "5403d65215604e40aaeaca4f72d3fb48": { + "46663d933b7240b3ae7281f5800262cf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -3047,15 +2372,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_b0950cd9148649e7bdcb9c4ecbcb143e", + "layout": "IPY_MODEL_67068b9aa27a48fca78ef35650357b91", "placeholder": "​", - "style": "IPY_MODEL_c04fe23853d04583ac8e5ae17ef2c4d9", + "style": "IPY_MODEL_93bac2bc4a204e53805cb8a874e6ed97", "tabbable": null, "tooltip": null, "value": " 80%" } }, - "545d8fa386f54a0aa28348a5cc30a776": { + "47030eab20484a1ca3e3802d1dbc5757": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -3108,7 +2433,31 @@ "width": null } }, - "552024cb59584c28807363b7775424dd": { + "4717f9f0f2ef425e89839381939cc526": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_660ee54970ad4643a629c5bc8c51263a", + "IPY_MODEL_fa072e0371024e52a4515fa0d15a8af3", + "IPY_MODEL_90cf1f9f57a0425980bac17b65ced22b" + ], + "layout": "IPY_MODEL_68c64eefbfd64089a11158f9c9ece72a", + "tabbable": null, + "tooltip": null + } + }, + "4927044feed9440fb6a7d039dccb4353": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -3161,74 +2510,14 @@ "width": null } }, - "557c413588f042ce8c37438061d4da47": { - "model_module": "@jupyter-widgets/controls", + "494145eea9ef455aa75955d0cd5aa101": { + "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "LayoutModel", "state": { - "_model_module": "@jupyter-widgets/controls", + "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "57e4b52ab75943e3a32ea63eb9f29931": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_8d1cfa14d5fe4c76a4eb9771d88be2c9", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_6f4a3de6522f47378e50462e65c2a0b4", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "59e508a4d5aa4e3b9fd5ac5be5d86ca4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "5b43a22dd22944aba6173e07fd8c9102": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", @@ -3270,64 +2559,66 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "5b78a70b474b4c8b863e94d8f46c7f3d": { - "model_module": "@jupyter-widgets/base", + "4a7bc4fa77834be6ba26afcc47d8e2e8": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "ProgressStyleModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4b62f46f48d04caf860624314b3589ee": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f47344d9d27e4f49bbb81fed8fca6a2a", + "placeholder": "​", + "style": "IPY_MODEL_ec6294a77c9e466fa9f299ea176de32b", + "tabbable": null, + "tooltip": null, + "value": " 1/5 [00:01<00:04, 1.07s/it]" + } + }, + "4ef7b4a69584482bae1e5fdde8bfc1c3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "5bacefe5f1074f86924d31ec3cfc4e61": { + "4f299596cec24d54b16e64af1c5698b3": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -3376,11 +2667,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "5c73d2ea95794714a7961137e1578a74": { + "4fc17baa74d04cc6b1377a65f36d968d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -3395,255 +2686,178 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_e1fc5584f0a940c2b1178b658b9b71ae", + "layout": "IPY_MODEL_6aff7cae3fdd4fbdb2ac20f6818e0cbb", "placeholder": "​", - "style": "IPY_MODEL_da85fca94e8b40d8accef232b1fd4d62", + "style": "IPY_MODEL_3ad22c723c4e4768859ad3b09afdf7e5", "tabbable": null, "tooltip": null, - "value": " 1/5 [00:01<00:05, 1.39s/it]" + "value": " 20%" } }, - "5e3c864fd5ce463ea5a05d236f63fdf0": { + "4fe4f238c4b143bea1f0b8e05957478e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "506ae56674ef49f98dcba910602c078d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", + "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_354a01a71121432e8f5059da9fd841e9", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_dd22e8388b1943fb8aeef68cc6fa7aac", + "layout": "IPY_MODEL_779492fe9f294a3db02ee1fb3cd1eb22", + "placeholder": "​", + "style": "IPY_MODEL_a1609a978831484786276055d84ddd7d", "tabbable": null, "tooltip": null, - "value": 5.0 + "value": " 5/5 [00:01<00:00, 4.49it/s]" } }, - "5e41daf888bf4cbea9b2303bc90ccb29": { + "53504bc4820d41a79fdec4ac8d6942a8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "HTMLModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "HTMLModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a9b19f8aa503461c986a5235d781b858", + "placeholder": "​", + "style": "IPY_MODEL_d1aad32a001147a289d44ae79bf385b5", + "tabbable": null, + "tooltip": null, + "value": " 1/5 [00:01<00:07, 1.81s/it]" } }, - "5f1a8bae8b684cc0b8006c83809bba7e": { - "model_module": "@jupyter-widgets/base", + "55198e27d543494393a0828bd3fc9d92": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "HTMLStyleModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "6166a72dff3847cf83994a1f49347efe": { - "model_module": "@jupyter-widgets/base", + "57b5be983133497fa7b24f477a172932": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "ProgressStyleModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "6245490f604a44f2ae237cd77579a79a": { - "model_module": "@jupyter-widgets/base", + "59abef335e5d46c5b90e4f9db75a9f8b": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "HTMLStyleModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "63445e13c73541cf85308732c855e27e": { + "5a0e90e371b54359877fc940a4101609": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_552024cb59584c28807363b7775424dd", - "placeholder": "​", - "style": "IPY_MODEL_35b972dbaf674d6a8af91f65bcb1ec7a", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5dd3de70b87c423e82810beeefde0625", + "IPY_MODEL_ff1c5451dbb944f6857f918ed66864a0", + "IPY_MODEL_506ae56674ef49f98dcba910602c078d" + ], + "layout": "IPY_MODEL_a95c1171dfcf45d7988d3e29a846c47a", "tabbable": null, - "tooltip": null, - "value": " 4/5 [00:01<00:00, 3.06it/s]" + "tooltip": null } }, - "63d2a5b9ab3e41e3a002f263b7c78c28": { + "5ac8cf95c04e4287a55dccc07776d714": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "HTMLModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "HTMLModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_7a1448873b964a6aabbbc06e3d87ac01", + "placeholder": "​", + "style": "IPY_MODEL_e39a403ea1df46f084879673c9e59d11", + "tabbable": null, + "tooltip": null, + "value": " 4/4 [00:07<00:00, 2.02s/it]" } }, - "64233569d7d14b89b1549e1ef19bb2dc": { + "5b853ec10c8c40b498a2ef90adbbfb30": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -3696,7 +2910,33 @@ "width": null } }, - "661bdc12429d42828ebbbf1ab08fd8cb": { + "5bc51e1c54144279a6bf9f9e69c078cf": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_af652b1dff274ec19931a0c08ea7481d", + "max": 4, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_3f1c2a2b99244f919e9b03f678a6684a", + "tabbable": null, + "tooltip": null, + "value": 4 + } + }, + "5cf9b49ee4fa4d5e971884fb478402e1": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -3749,7 +2989,7 @@ "width": null } }, - "66407d8358684f6f9c776b187057bfa7": { + "5dd3de70b87c423e82810beeefde0625": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -3764,15 +3004,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_a0cb9dd056a5437da1d59d3782b53856", + "layout": "IPY_MODEL_65caa071e98f45629a8d7a7c7adf4fca", "placeholder": "​", - "style": "IPY_MODEL_c73391264ef7453883da521e477383c0", + "style": "IPY_MODEL_a7bdd31340c445389586fc47c4bbcbd7", "tabbable": null, "tooltip": null, "value": "100%" } }, - "6755e9f51a3d418dad579adcd162fabe": { + "5e6eaed644604d5490a1edb044a24824": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -3790,7 +3030,46 @@ "text_color": null } }, - "69b9401b7dda4f3ea3fcc4a134698dbd": { + "605bb4dd30614841896a90b3a60a3a6e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_0942239c43b64eb6a6baa215fe2bb83b", + "placeholder": "​", + "style": "IPY_MODEL_1c162a5e05e4416e85f1227486b46f03", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "60719e9e74d54bab8174eea825378042": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "60b2995b42fb418daf44c3972575e20e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", @@ -3803,20 +3082,43 @@ "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", - "bar_style": "", + "bar_style": "success", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_ccd0223b06b542a7845ed5ee2da91c37", - "max": 5.0, - "min": 0.0, + "layout": "IPY_MODEL_41e9ce27054b496f84d492a04f28235a", + "max": 3, + "min": 0, "orientation": "horizontal", - "style": "IPY_MODEL_4ae23e1530b7465e8178129062858f22", + "style": "IPY_MODEL_fed5a53a9ade4ce6a482ca9ad0ef5192", + "tabbable": null, + "tooltip": null, + "value": 3 + } + }, + "616f2f1ded604cc1bf76a8a04cf41b42": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_d84a8dd0479a42eda8beca43a4b3bf11", + "placeholder": "​", + "style": "IPY_MODEL_3faa65a39dfc4548ba9994d74e5bc7ca", "tabbable": null, "tooltip": null, - "value": 5.0 + "value": "100%" } }, - "6a8835d83a3b4873a31493eafac831cc": { + "623c0fae2aef41308392f0b901d7ef2b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -3831,15 +3133,59 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_fb40054a3fe14c63892759cdec0207a3", + "layout": "IPY_MODEL_e4841c841fbf4f4db57e10f3febf2506", "placeholder": "​", - "style": "IPY_MODEL_8d16c44e7bdb4a0e9cd73719dbea9dce", + "style": "IPY_MODEL_63eaf42ff68b4d2c924b02c1054a04c7", "tabbable": null, "tooltip": null, "value": "100%" } }, - "6d68ac6ec1b54a8ab0e450c187c95ba6": { + "63e16031d3474c128e88ee825b3b71af": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_bf9f5012db4b4d468205ec5e5ac35f9d", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_60719e9e74d54bab8174eea825378042", + "tabbable": null, + "tooltip": null, + "value": 5 + } + }, + "63eaf42ff68b4d2c924b02c1054a04c7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6576d470dbef47a99922bbf7615bd03e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -3857,7 +3203,136 @@ "text_color": null } }, - "6e451dc33e9247bb904bd6b2701f00ad": { + "65caa071e98f45629a8d7a7c7adf4fca": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "660ee54970ad4643a629c5bc8c51263a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ae77fb0dc3734124a581430b6134a7b2", + "placeholder": "​", + "style": "IPY_MODEL_ab5c7baa9ea94f519294475cfcd71104", + "tabbable": null, + "tooltip": null, + "value": " 20%" + } + }, + "669ec2ec1041499f93643cd757c584dc": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "66cbd67063e94bef9d9671df091fe36e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -3906,61 +3381,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "6e75002ce2c348ea90a7b622d1bdc68f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "6eff1b1361504170b0013fea053fb29f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "6f4a3de6522f47378e50462e65c2a0b4": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "6fa955ba83a54982981ea653c433f2ef": { + "67068b9aa27a48fca78ef35650357b91": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4013,41 +3438,33 @@ "width": null } }, - "6ffaf9de07234f64af94c458498f985c": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "729f6afe57af4e69b47d5ca7299b9c75": { + "67929bbacbe741bc95bf61b0dccfab7c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "FloatProgressModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "FloatProgressModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_47030eab20484a1ca3e3802d1dbc5757", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_aa3b7e60e1ba459daa1d9aef26b19282", + "tabbable": null, + "tooltip": null, + "value": 5 } }, - "72d9f512eb084dc895aaddc155f8b070": { + "68c64eefbfd64089a11158f9c9ece72a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4096,11 +3513,29 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "72e68f7a778240f897c14a89bf70d8e6": { + "693dc1f9578b4ba18714b20d2c966216": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "6a0ba26d3d364ece992905905c10fadc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4149,35 +3584,55 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "77931a719a464d75b14ae56136c63d63": { + "6a65135ba3ff46f3b679c3f5169f869a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_d0c0164b870d43219889967e7520ca07", - "IPY_MODEL_3b08444235da4a7f8b958c54996ee6af", - "IPY_MODEL_b2e1662350dd4f15ab1792abfb02cb13" - ], - "layout": "IPY_MODEL_0738cc7592634ec4aa57d3b6e72574e1", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_6ea02d8974164a438b8d71c49f73221e", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ff0ecf4be1d349df9bb72681a42f2fb7", "tabbable": null, - "tooltip": null + "tooltip": null, + "value": 5 + } + }, + "6ac7541a15b64fd4a0a761fbc4e1ca5f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "7b44e5a9e2d54e69bb4c5402c479491c": { + "6aff7cae3fdd4fbdb2ac20f6818e0cbb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4226,43 +3681,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "7c02ea2d6719480a83150e1b058db79b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "7c0d436dcbed4562a784b920c7255186": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "7c465cd97a2c4ba8a53e41d9b0d7459d": { + "6b9789b12e3d4c6dbe2e475754ec3448": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", @@ -4277,80 +3700,113 @@ "_view_name": "HBoxView", "box_style": "", "children": [ - "IPY_MODEL_da5e6afefa8948ae945314e7efa0a566", - "IPY_MODEL_52f1e02607c74cd7a92cfaeac273136d", - "IPY_MODEL_ec00446e3f9a47b4b657502a2a08a2b5" + "IPY_MODEL_b0375992fbe446fc865be26f66425215", + "IPY_MODEL_717d061d1e644edbbdf89562951a204f", + "IPY_MODEL_a3d44809aed340a4a39ec2907f57b763" ], - "layout": "IPY_MODEL_bf7d4d6560384870b0aa23d08fb4bcc6", + "layout": "IPY_MODEL_6cfe221cf1054e66b21ba7ce31e38fce", "tabbable": null, "tooltip": null } }, - "7ca39bb57b184386b8090093d262fae0": { + "6c96ce6a0f7246ae9010bf6047e03177": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_be6556c13f86498d99c9790cb7b0f39c", - "placeholder": "​", - "style": "IPY_MODEL_01d464d0d72e4b97bb8fd6d4786b1fe6", - "tabbable": null, - "tooltip": null, - "value": "100%" + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "7ca7fa7b268a46bb8fabab6f67f7c068": { + "6cf589c191534b6a83f39cb1ef39becc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", + "_view_name": "ProgressView", + "bar_style": "", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_de1a7b83072647f890eba83c56500a28", - "placeholder": "​", - "style": "IPY_MODEL_d3c84aa8820f495390e75c135a209529", + "layout": "IPY_MODEL_135d6e49e3914168a3de06e4c06940ab", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_11c32e026a744655bd6985befe560bf4", "tabbable": null, "tooltip": null, - "value": " 5/5 [00:03<00:00, 1.91it/s]" + "value": 5 } }, - "7ce8172ecdf84d158fc078ad63f36c46": { - "model_module": "@jupyter-widgets/controls", + "6cfe221cf1054e66b21ba7ce31e38fce": { + "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "LayoutModel", "state": { - "_model_module": "@jupyter-widgets/controls", + "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null } }, - "7d746e2291b34902853d1bca30d5a27d": { + "6ea02d8974164a438b8d71c49f73221e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4403,46 +3859,51 @@ "width": null } }, - "7dc84ef32a82442fb48612e4875ed62b": { + "717d061d1e644edbbdf89562951a204f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", + "_view_name": "ProgressView", + "bar_style": "", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_43c11990551a4e38aae10d61551c27cc", - "placeholder": "​", - "style": "IPY_MODEL_fe98347c0b1f4e0b9847e11c57ff18a2", + "layout": "IPY_MODEL_5b853ec10c8c40b498a2ef90adbbfb30", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_22f2b3bed09f453c9be2a5fc21cb4f8c", "tabbable": null, "tooltip": null, - "value": "100%" + "value": 5 } }, - "83a7cedd324d4967ba873e9d956f5842": { + "71bb4d2468cd4b8eb999cd1a6bd33474": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "84881a6c33184458ae096bc2c42c56ef": { + "754a2032f347433591c1d0575edebdfb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4491,37 +3952,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "85f162b58ea4428fa1fc83d2146eb30f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_2b1f1c0821af43d1b7a15daf8a79ea94", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_4e8e59b212f2460598ecdd856ab3916d", - "tabbable": null, - "tooltip": null, - "value": 5.0 - } - }, - "86d5b445402b4efcab23c93edbc59570": { + "76d98c9549204cb7b18adee9cb842d00": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -4539,53 +3974,7 @@ "text_color": null } }, - "8745ae0bf0bf4d259e0def0cc97f6eaa": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_e8f3bec708e54b478997e355136655cb", - "placeholder": "​", - "style": "IPY_MODEL_260d9ed03ab04dfbb2580b26fa901187", - "tabbable": null, - "tooltip": null, - "value": "100%" - } - }, - "87f314df2bbb4334b5decd7fb86e66b7": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_27bd5384434c4d44be98a8a19d870c4d", - "placeholder": "​", - "style": "IPY_MODEL_a31f79b6d0d24401994c3660c7d2db6b", - "tabbable": null, - "tooltip": null, - "value": " 20%" - } - }, - "8bc6709601ce4a0c9ab09aa6b97e26d2": { + "779492fe9f294a3db02ee1fb3cd1eb22": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4634,11 +4023,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "8d01306b9fd24be49f0df87526f144d8": { + "77bec9c27a5b4e87ad9eb5644e5d28b4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4691,25 +4080,60 @@ "width": null } }, - "8d16c44e7bdb4a0e9cd73719dbea9dce": { - "model_module": "@jupyter-widgets/controls", + "7a1448873b964a6aabbbc06e3d87ac01": { + "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "LayoutModel", "state": { - "_model_module": "@jupyter-widgets/controls", + "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null } }, - "8d1cfa14d5fe4c76a4eb9771d88be2c9": { + "7cdd04fbbb9949069568362506c6d121": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4762,7 +4186,79 @@ "width": null } }, - "8d7a0cb119f84ef985dc6960354fe9df": { + "7f3eea27e2934801800f90440d1d1f7e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_34e52001f8b84a25ad9a8a1cccc24a32", + "max": 6, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ec7b9543feff436fa928ff46af67ef41", + "tabbable": null, + "tooltip": null, + "value": 6 + } + }, + "7fd6dae11d6246e8949ebf1e644bf324": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ccc44ea6a5a843aa81663cff7f9ab0a8", + "placeholder": "​", + "style": "IPY_MODEL_693dc1f9578b4ba18714b20d2c966216", + "tabbable": null, + "tooltip": null, + "value": " 4/5 [00:01<00:00, 3.04it/s]" + } + }, + "84d3455780f247a7924630ca32204ed5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_03e58e27bf3f499bb17ddab3797e122d", + "placeholder": "​", + "style": "IPY_MODEL_1b08ac1ea3c347af879758bf69feb4ff", + "tabbable": null, + "tooltip": null, + "value": " 5/5 [00:01<00:00, 5.50it/s]" + } + }, + "86da987ea86a46b6aca9d73b89e9d02e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4815,7 +4311,23 @@ "width": null } }, - "8f941db4400246f2a3961b44b5dacfec": { + "884b723ed8a943e8bdd9ded683539d24": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "887d12875c204be18141853f9ae3b1f6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -4833,7 +4345,60 @@ "text_color": null } }, - "92ba33f4f42e42ce9d601be5710117e4": { + "8a43d138dbd24dc6b69804edb1a7ea06": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8b0090ce45f0455aa607fef6c7313d91": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4886,30 +4451,25 @@ "width": null } }, - "9400e967127b4f58b0b81fcf1f992265": { + "8c34f41cc272482abd5e422ece032fe4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_e7373fc234864ec2b42548ac4852100d", - "placeholder": "​", - "style": "IPY_MODEL_cc7fe5f2b6064b218b4febc970f57ce9", - "tabbable": null, - "tooltip": null, - "value": " 6/6 [00:12<00:00, 2.74s/it]" + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "94312ff3238c4c3c9f0d29d8993fa507": { + "8cbe71c2850b4cf0a3ad2b1d61d56ba8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -4962,7 +4522,7 @@ "width": null } }, - "943fb57c8551474a982b9d63ce2a9330": { + "8ef5d7a4894841299a63f155b78d68ca": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -4977,38 +4537,41 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_6e451dc33e9247bb904bd6b2701f00ad", + "layout": "IPY_MODEL_b124ea5530104086ae67f31c2f9df586", "placeholder": "​", - "style": "IPY_MODEL_6e75002ce2c348ea90a7b622d1bdc68f", + "style": "IPY_MODEL_b4c6a6ba35e147ca82702aa4cc7e911a", "tabbable": null, "tooltip": null, - "value": " 5/5 [00:00<00:00, 6.98it/s]" + "value": "100%" } }, - "95c3c2288fef439da0dd9b6eb79231b9": { + "905c15fdda20456c9b13ec6113bf155b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", + "_view_name": "ProgressView", + "bar_style": "", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_d8ca79377dcc4c3eb47173432cb6bfb2", - "placeholder": "​", - "style": "IPY_MODEL_14fd904c01ea4fddb07db01253837cb3", + "layout": "IPY_MODEL_03db5090ad4e49c886af8d5ee2c648a8", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_1fe2034c8375448ba0c17fd13a535203", "tabbable": null, "tooltip": null, - "value": " 80%" + "value": 5 } }, - "95f646f2a14e4ee5aba9c0d987af87a5": { + "90cf1f9f57a0425980bac17b65ced22b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -5023,59 +4586,62 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_8d7a0cb119f84ef985dc6960354fe9df", + "layout": "IPY_MODEL_c14f72835a7a4c519f34d0c47ad03eef", "placeholder": "​", - "style": "IPY_MODEL_c8c61fa48c2a45b98841c83ccd8b7fc3", + "style": "IPY_MODEL_b00606c8452a4b6eb2227a5b8450569d", "tabbable": null, "tooltip": null, - "value": "100%" + "value": " 1/5 [00:01<00:07, 1.90s/it]" } }, - "96a5c5f5d79b43fca6a49642bc061dd9": { + "916e245dafc044e19e0acd985094e96a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "HBoxModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "HBoxModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1ac737a5ae3943bd8ff8f8a02c17b569", + "IPY_MODEL_93b2e3b257b74d5c94362b6edaa69db0", + "IPY_MODEL_431fb361ebb24ea7839455c79585a2c4" + ], + "layout": "IPY_MODEL_4f299596cec24d54b16e64af1c5698b3", + "tabbable": null, + "tooltip": null } }, - "9714aabb818643609c5fd78067ce456c": { + "9240c7c2213a47cfaa1c3bea47d128c6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", + "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_23d35dc6853148b98dd764cd12a3e1ef", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_2440d896328446ab9d28daeecef9613d", + "layout": "IPY_MODEL_8a43d138dbd24dc6b69804edb1a7ea06", + "placeholder": "​", + "style": "IPY_MODEL_6576d470dbef47a99922bbf7615bd03e", "tabbable": null, "tooltip": null, - "value": 5.0 + "value": " 5/5 [00:04<00:00, 1.35it/s]" } }, - "9963814e06994c7f9b21303440ea68f4": { + "929f6f1df0934a318d1333cac910c54a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -5128,60 +4694,51 @@ "width": null } }, - "9986f31f088b4a12b268ee85426ed5dc": { - "model_module": "@jupyter-widgets/base", + "93b2e3b257b74d5c94362b6edaa69db0": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "FloatProgressModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_8cbe71c2850b4cf0a3ad2b1d61d56ba8", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d69d66f0e7ec4b91916369491bc21091", + "tabbable": null, + "tooltip": null, + "value": 5 + } + }, + "93bac2bc4a204e53805cb8a874e6ed97": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "9b1a8cc1e5494b51bf144db60ee4bcdc": { + "940ac23737094dadb3bdccc76adaf071": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -5234,80 +4791,66 @@ "width": null } }, - "9c0626380bd84e61b3a725876a3ce270": { + "942b949a4a3f4cc8af494c02d55bea26": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", + "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_9b1a8cc1e5494b51bf144db60ee4bcdc", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_f76d9bc23d9b4aacb7e7349b83d511bb", + "layout": "IPY_MODEL_21e51321b5fe4c1abc6896995eab8d5a", + "placeholder": "​", + "style": "IPY_MODEL_d5fcf6b7785749e3a0af6c6ee88af68d", "tabbable": null, "tooltip": null, - "value": 5.0 + "value": " 5/5 [00:02<00:00, 2.84it/s]" } }, - "9dccdd1c49934689aaff1a09f1cb9b01": { + "94df9c1148a542fda1d2ff0428173b37": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_7dc84ef32a82442fb48612e4875ed62b", - "IPY_MODEL_0a29a49a142547f5bf1896c28d37501e", - "IPY_MODEL_d1a5541ff9e94defb57dbd223a341f8c" - ], - "layout": "IPY_MODEL_bd3d5e7a1f76483089ba60536fce72fa", - "tabbable": null, - "tooltip": null + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "9fd1f2b9b69f4c8897399811aa49a45d": { + "97a65421230e4e05b930b30a2ec08d37": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_d34479c9101e422180e44c25c74346db", - "placeholder": "​", - "style": "IPY_MODEL_59e508a4d5aa4e3b9fd5ac5be5d86ca4", - "tabbable": null, - "tooltip": null, - "value": "100%" + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "a008b768cde44d7186a06656ebadef28": { + "9d3e73c7faf342838f30785fc5dcc39e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -5325,83 +4868,57 @@ "text_color": null } }, - "a03bc06244664297953da657fcea2d87": { + "9ea9904d3eed42408de0dc362d881596": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_ccc5652bbfe642ffb341e1f0177e2713", - "placeholder": "​", - "style": "IPY_MODEL_cceb4a7a545e42b88cec4888aeaea95e", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_46663d933b7240b3ae7281f5800262cf", + "IPY_MODEL_63e16031d3474c128e88ee825b3b71af", + "IPY_MODEL_7fd6dae11d6246e8949ebf1e644bf324" + ], + "layout": "IPY_MODEL_494145eea9ef455aa75955d0cd5aa101", "tabbable": null, - "tooltip": null, - "value": " 1/5 [00:01<00:04, 1.01s/it]" + "tooltip": null } }, - "a0cb9dd056a5437da1d59d3782b53856": { - "model_module": "@jupyter-widgets/base", + "9f1c3a910506434a9df6c9c65a2ebd07": { + "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "LayoutModel", + "model_name": "FloatProgressModel", "state": { - "_model_module": "@jupyter-widgets/base", + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", + "_model_name": "FloatProgressModel", "_view_count": null, - "_view_module": "@jupyter-widgets/base", + "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_669ec2ec1041499f93643cd757c584dc", + "max": 3, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_316b0eea93f0418eaa985fa985d95c0b", + "tabbable": null, + "tooltip": null, + "value": 3 } }, - "a0edc7f5cb954354bd96837b010d1afc": { + "a083704e71104392afe3e40137860353": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -5416,33 +4933,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_145a6b6381044bf085780ee71b6fa790", + "layout": "IPY_MODEL_f35ab9a353c24a3fa8385a7ca1fc30af", "placeholder": "​", - "style": "IPY_MODEL_e76d86296a0a46189112c9ad2d81a9b7", + "style": "IPY_MODEL_887d12875c204be18141853f9ae3b1f6", "tabbable": null, "tooltip": null, - "value": " 3/3 [00:04<00:00, 1.56s/it]" - } - }, - "a31f79b6d0d24401994c3660c7d2db6b": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "value": " 20%" } }, - "a350d0d0c58645fc9ebf0e87f77e281b": { + "a0d517aaefd24a238a558ad3fdbdf46b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", @@ -5458,94 +4957,35 @@ "bar_style": "", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_23bf4da944b94473a643071325d7fee8", - "max": 5.0, - "min": 0.0, + "layout": "IPY_MODEL_31c160aa4b0c48d18a137ba9c05129dc", + "max": 5, + "min": 0, "orientation": "horizontal", - "style": "IPY_MODEL_7c02ea2d6719480a83150e1b058db79b", + "style": "IPY_MODEL_ce683c6a45a24b9288f43a6434a265ab", "tabbable": null, "tooltip": null, - "value": 5.0 - } - }, - "a58cec2bae65470c8facf10cc5fed0cd": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null + "value": 5 } }, - "a5962a4db14d40c8ab2ccfd0b78bdf89": { + "a1609a978831484786276055d84ddd7d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c94854d0d7a14e6b829d6fed8eeba291", - "IPY_MODEL_69b9401b7dda4f3ea3fcc4a134698dbd", - "IPY_MODEL_3c8349b53efc4e43aeb62be9a55e49d9" - ], - "layout": "IPY_MODEL_d2a11796789842eb95c19865d74f27da", - "tabbable": null, - "tooltip": null + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "a85e133e9281464a803ea00f8e717b4b": { + "a3d44809aed340a4a39ec2907f57b763": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -5560,15 +5000,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_4237c14be99548678225693cfc23dd92", + "layout": "IPY_MODEL_2dae08aec0984ff98d65d5960c49dceb", "placeholder": "​", - "style": "IPY_MODEL_a008b768cde44d7186a06656ebadef28", + "style": "IPY_MODEL_d91dc65118a443d4b054009757ce2709", "tabbable": null, "tooltip": null, - "value": " 5/5 [00:04<00:00, 1.62it/s]" + "value": " 5/5 [00:01<00:00, 4.29it/s]" } }, - "af910e58f8c24cb59336584d4a79bd78": { + "a3fce0ef542e412ca623ad9fa34d3323": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -5621,7 +5061,7 @@ "width": null } }, - "b05388ff254e4f08ad1020891dae8bb0": { + "a43fbbfeea99420f946092892ba23cd6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", @@ -5636,69 +5076,16 @@ "_view_name": "HBoxView", "box_style": "", "children": [ - "IPY_MODEL_7ca39bb57b184386b8090093d262fae0", - "IPY_MODEL_9714aabb818643609c5fd78067ce456c", - "IPY_MODEL_45a2191bbd894883990baf6f6a2c12cb" + "IPY_MODEL_a083704e71104392afe3e40137860353", + "IPY_MODEL_de946534defe4c7381488d034b6a0927", + "IPY_MODEL_4b62f46f48d04caf860624314b3589ee" ], - "layout": "IPY_MODEL_72e68f7a778240f897c14a89bf70d8e6", + "layout": "IPY_MODEL_b79400dd7e134580959e51c76dfeda52", "tabbable": null, "tooltip": null } }, - "b0950cd9148649e7bdcb9c4ecbcb143e": { - "model_module": "@jupyter-widgets/base", - "model_module_version": "2.0.0", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "2.0.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border_bottom": null, - "border_left": null, - "border_right": null, - "border_top": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "b13828b396c34a58a6d771e28600f7bd": { + "a775fc3457564bc89b840097a0773872": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -5716,54 +5103,25 @@ "text_color": null } }, - "b14dc077ef034f73bd846aa9b84966bc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_9963814e06994c7f9b21303440ea68f4", - "placeholder": "​", - "style": "IPY_MODEL_18bb030144fb4a088190f68544d716c8", - "tabbable": null, - "tooltip": null, - "value": "100%" - } - }, - "b158f83b59d34b67a7742cfc96ebbcb7": { + "a7bdd31340c445389586fc47c4bbcbd7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_42697848e9534451a249d2f1ef466bd7", - "IPY_MODEL_dd5061eae3c74cb68d77cb811ea45072", - "IPY_MODEL_7ca7fa7b268a46bb8fabab6f67f7c068" - ], - "layout": "IPY_MODEL_2cd551f6163d473bb4c248938b23d6e1", - "tabbable": null, - "tooltip": null + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "b257e40b92b04468a205ae30b6d2fb5f": { + "a93e9d31859046839ead10e88039b9d1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", @@ -5776,43 +5134,20 @@ "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", - "bar_style": "success", + "bar_style": "", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_9986f31f088b4a12b268ee85426ed5dc", - "max": 4.0, - "min": 0.0, + "layout": "IPY_MODEL_db69858cb0fb4e9eb1ab2018db9d9cc1", + "max": 5, + "min": 0, "orientation": "horizontal", - "style": "IPY_MODEL_1db2e2371d5946f89a1ba3ae3d8d93f0", - "tabbable": null, - "tooltip": null, - "value": 4.0 - } - }, - "b2e1662350dd4f15ab1792abfb02cb13": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_6166a72dff3847cf83994a1f49347efe", - "placeholder": "​", - "style": "IPY_MODEL_465ff4bc4bae42d897afa129fcf8cf02", + "style": "IPY_MODEL_c76d3d60264145f1a59a40eea2a15683", "tabbable": null, "tooltip": null, - "value": " 5/5 [00:01<00:00, 4.21it/s]" + "value": 5 } }, - "b5142c7aab6b43a29374d174b40d7f0a": { + "a95c1171dfcf45d7988d3e29a846c47a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -5861,11 +5196,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "b60fde97e6cf49dbaba2b38ac2f65262": { + "a9b19f8aa503461c986a5235d781b858": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -5918,31 +5253,49 @@ "width": null } }, - "b6879961d2114080b66399b9c5c98d7d": { + "a9d7f1a63025412c911081fe36b380ae": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HBoxModel", + "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", + "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_95c3c2288fef439da0dd9b6eb79231b9", - "IPY_MODEL_57e4b52ab75943e3a32ea63eb9f29931", - "IPY_MODEL_dc876032ec414eafb75f8f51f441234c" - ], - "layout": "IPY_MODEL_d363ea35ac204c328a44b71b105901e7", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_c0500df5b1e1404a975c5f3e36f6d785", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4ef7b4a69584482bae1e5fdde8bfc1c3", "tabbable": null, - "tooltip": null + "tooltip": null, + "value": 5 + } + }, + "aa3b7e60e1ba459daa1d9aef26b19282": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "b7474f9739294ee3830481c3d4c6f580": { + "ab5c7baa9ea94f519294475cfcd71104": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -5960,7 +5313,60 @@ "text_color": null } }, - "b95de1e665c84fe6a42aaefc9ed7d6af": { + "ae77fb0dc3734124a581430b6134a7b2": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "aed1c25709bc4f528c6126592019f2cf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -5975,15 +5381,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_d514b94e76794445925224488ae33b03", + "layout": "IPY_MODEL_77bec9c27a5b4e87ad9eb5644e5d28b4", "placeholder": "​", - "style": "IPY_MODEL_d2f12333185e46dc9f66bd17d94aa4aa", + "style": "IPY_MODEL_428434323c464295af4f1c6756957882", "tabbable": null, "tooltip": null, - "value": " 20%" + "value": "100%" } }, - "bd3d5e7a1f76483089ba60536fce72fa": { + "af073c308c7d4b05ab2872ed825aa2fd": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6032,11 +5438,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "be2fba0b39d943c98a14004708fe0a77": { + "af652b1dff274ec19931a0c08ea7481d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6089,7 +5495,72 @@ "width": null } }, - "be6556c13f86498d99c9790cb7b0f39c": { + "b00606c8452a4b6eb2227a5b8450569d": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "b0375992fbe446fc865be26f66425215": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ca1402c10ca34091be63df66e5f6a9fd", + "placeholder": "​", + "style": "IPY_MODEL_94df9c1148a542fda1d2ff0428173b37", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "b0980ea963694ca38026d06b70a16794": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_623c0fae2aef41308392f0b901d7ef2b", + "IPY_MODEL_7f3eea27e2934801800f90440d1d1f7e", + "IPY_MODEL_c4a540a4dd8d4006b68d75c890db2804" + ], + "layout": "IPY_MODEL_bfd6354d12644cdf802b22d60c51d192", + "tabbable": null, + "tooltip": null + } + }, + "b124ea5530104086ae67f31c2f9df586": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6142,7 +5613,30 @@ "width": null } }, - "bf7d4d6560384870b0aa23d08fb4bcc6": { + "b1947997a7f242eeae2c0b2cebcc36da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_08a4d9b93e8b461d853a1412b976479c", + "placeholder": "​", + "style": "IPY_MODEL_6c96ce6a0f7246ae9010bf6047e03177", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "b1efe123e0f844eebe8e1a23e7ca3d94": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6195,100 +5689,7 @@ "width": null } }, - "c04fe23853d04583ac8e5ae17ef2c4d9": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "c71dc2b5e5d54e1c8c44e9af7712eb27": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c73391264ef7453883da521e477383c0": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "c8c61fa48c2a45b98841c83ccd8b7fc3": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "c94854d0d7a14e6b829d6fed8eeba291": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_fb87d48e3ca24dca80fb9f6f45e8f5a0", - "placeholder": "​", - "style": "IPY_MODEL_7ce8172ecdf84d158fc078ad63f36c46", - "tabbable": null, - "tooltip": null, - "value": " 20%" - } - }, - "cc7fe5f2b6064b218b4febc970f57ce9": { + "b4c6a6ba35e147ca82702aa4cc7e911a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -6306,7 +5707,7 @@ "text_color": null } }, - "ccc5652bbfe642ffb341e1f0177e2713": { + "b521e5dfacbd43b1952723534485e96f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6359,7 +5760,53 @@ "width": null } }, - "ccd0223b06b542a7845ed5ee2da91c37": { + "b60bb436847c4191bf1380fce37f6544": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_e12cca4f312644d7afbf74699eb672d1", + "placeholder": "​", + "style": "IPY_MODEL_55198e27d543494393a0828bd3fc9d92", + "tabbable": null, + "tooltip": null, + "value": " 1/5 [00:01<00:04, 1.12s/it]" + } + }, + "b685c088983749ea891a31de34ab48ff": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_940ac23737094dadb3bdccc76adaf071", + "placeholder": "​", + "style": "IPY_MODEL_a775fc3457564bc89b840097a0773872", + "tabbable": null, + "tooltip": null, + "value": " 5/5 [00:01<00:00, 3.48it/s]" + } + }, + "b79400dd7e134580959e51c76dfeda52": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6408,98 +5855,67 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "cceb4a7a545e42b88cec4888aeaea95e": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "d0c0164b870d43219889967e7520ca07": { + "b8ac9db9bca6460ba78ee68a834a59ec": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "ProgressStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "ProgressStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_94312ff3238c4c3c9f0d29d8993fa507", - "placeholder": "​", - "style": "IPY_MODEL_da01a37b4ab04507b02e350d768ca263", - "tabbable": null, - "tooltip": null, - "value": "100%" + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "d1a5541ff9e94defb57dbd223a341f8c": { + "b9b36f26efa0466f9896c3b30d3934e5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "ProgressStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "ProgressStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_4bdef2be609348df87e5ec085172be4e", - "placeholder": "​", - "style": "IPY_MODEL_6d68ac6ec1b54a8ab0e450c187c95ba6", - "tabbable": null, - "tooltip": null, - "value": " 5/5 [00:01<00:00, 5.09it/s]" + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "d237ad501e40474ea661279b8512c16f": { + "bd4548c0009f460d946f1b22c0edf2ff": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_6fa955ba83a54982981ea653c433f2ef", - "placeholder": "​", - "style": "IPY_MODEL_1741407a73124e2899090068e5dff8bb", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_30d50c36e15740e9bef23aa2af19a004", + "IPY_MODEL_9f1c3a910506434a9df6c9c65a2ebd07", + "IPY_MODEL_1a668ba20f0e4a05b71d7f782764e6f3" + ], + "layout": "IPY_MODEL_3cde991af2a64871a2936571777a67fe", "tabbable": null, - "tooltip": null, - "value": "100%" + "tooltip": null } }, - "d2a11796789842eb95c19865d74f27da": { + "bf9f5012db4b4d468205ec5e5ac35f9d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6548,29 +5964,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "d2f12333185e46dc9f66bd17d94aa4aa": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "d34479c9101e422180e44c25c74346db": { + "bfd6354d12644cdf802b22d60c51d192": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6623,7 +6021,7 @@ "width": null } }, - "d363ea35ac204c328a44b71b105901e7": { + "c0500df5b1e1404a975c5f3e36f6d785": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6672,47 +6070,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "d3c84aa8820f495390e75c135a209529": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "d4d74c2a17c14025a0a5a94f27d0e55d": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "d514b94e76794445925224488ae33b03": { + "c132b68280ab4ecea0aaf003350da447": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6761,11 +6123,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "d7f72bf4cb6e4bd2ad44ec0d7fd7fd16": { + "c14f72835a7a4c519f34d0c47ad03eef": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6818,7 +6180,7 @@ "width": null } }, - "d83f75f1135c4ba3b0bfb3393d2ef861": { + "c32cf94683bd440799d4630b6555215e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -6833,15 +6195,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_b5142c7aab6b43a29374d174b40d7f0a", + "layout": "IPY_MODEL_2e6017f7ed68444dab1cecd280cc4a36", "placeholder": "​", - "style": "IPY_MODEL_8f941db4400246f2a3961b44b5dacfec", + "style": "IPY_MODEL_e257923f4507406383a8d21b23ecb836", "tabbable": null, "tooltip": null, - "value": " 4/4 [00:07<00:00, 1.86s/it]" + "value": "100%" } }, - "d8ca79377dcc4c3eb47173432cb6bfb2": { + "c387e3fe07af4044aa7d4b0879b6314f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -6890,86 +6252,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "da01a37b4ab04507b02e350d768ca263": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "da5e6afefa8948ae945314e7efa0a566": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_7d746e2291b34902853d1bca30d5a27d", - "placeholder": "​", - "style": "IPY_MODEL_4ae0ac5bcc654220bdba12c865609df3", - "tabbable": null, - "tooltip": null, - "value": "100%" - } - }, - "da85fca94e8b40d8accef232b1fd4d62": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null - } - }, - "db060f2678d548d8b8e91e264aa37d6f": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "dc876032ec414eafb75f8f51f441234c": { + "c4a540a4dd8d4006b68d75c890db2804": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -6984,57 +6271,15 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_545d8fa386f54a0aa28348a5cc30a776", + "layout": "IPY_MODEL_7cdd04fbbb9949069568362506c6d121", "placeholder": "​", - "style": "IPY_MODEL_6ffaf9de07234f64af94c458498f985c", - "tabbable": null, - "tooltip": null, - "value": " 4/5 [00:01<00:00, 3.06it/s]" - } - }, - "dd22e8388b1943fb8aeef68cc6fa7aac": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "2.0.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "dd5061eae3c74cb68d77cb811ea45072": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_92ba33f4f42e42ce9d601be5710117e4", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_c71dc2b5e5d54e1c8c44e9af7712eb27", + "style": "IPY_MODEL_59abef335e5d46c5b90e4f9db75a9f8b", "tabbable": null, "tooltip": null, - "value": 5.0 + "value": " 6/6 [00:16<00:00, 3.43s/it]" } }, - "de1a7b83072647f890eba83c56500a28": { + "c4b0d02d35454a5b9e8e6f531177c207": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7087,7 +6332,33 @@ "width": null } }, - "e1a6bd5d52a243d79e1f78df6a098f39": { + "c4eb1a2f813b451aa5c6026bfb032b75": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_441c82d70cf942d181793a0d88e8b833", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_57b5be983133497fa7b24f477a172932", + "tabbable": null, + "tooltip": null, + "value": 5 + } + }, + "c6533f38e82746e1a11c702803fcf292": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", @@ -7102,16 +6373,16 @@ "_view_name": "HBoxView", "box_style": "", "children": [ - "IPY_MODEL_87f314df2bbb4334b5decd7fb86e66b7", - "IPY_MODEL_85f162b58ea4428fa1fc83d2146eb30f", - "IPY_MODEL_4922f96f55c34b4caeb44d213e83f37a" + "IPY_MODEL_b1947997a7f242eeae2c0b2cebcc36da", + "IPY_MODEL_67929bbacbe741bc95bf61b0dccfab7c", + "IPY_MODEL_84d3455780f247a7924630ca32204ed5" ], - "layout": "IPY_MODEL_f0d33b6ca56445e2a535277cfe381c21", + "layout": "IPY_MODEL_c387e3fe07af4044aa7d4b0879b6314f", "tabbable": null, "tooltip": null } }, - "e1d8299f978d4121b4c900b989079e9e": { + "c679ccbb359449e4862323f7b9d9e154": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7160,11 +6431,51 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "e1fc5584f0a940c2b1178b658b9b71ae": { + "c728bca63065402cbfa608565a7b86a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_11fd3894b76744bd8dae0f7933382c68", + "IPY_MODEL_905c15fdda20456c9b13ec6113bf155b", + "IPY_MODEL_e6488b164a7945b4bb8d5b0fc21ac870" + ], + "layout": "IPY_MODEL_754a2032f347433591c1d0575edebdfb", + "tabbable": null, + "tooltip": null + } + }, + "c76d3d60264145f1a59a40eea2a15683": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c932a21eeb094b71a4bd6b8cbf72d7a7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7213,83 +6524,11 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "e2e0dff56c4c4af3924d42922126b0cc": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_53f7b01248f74c5281627e0c6d4aea0b", - "IPY_MODEL_2de1abc1f98a4375bfbddeb975cd9b46", - "IPY_MODEL_9400e967127b4f58b0b81fcf1f992265" - ], - "layout": "IPY_MODEL_6245490f604a44f2ae237cd77579a79a", - "tabbable": null, - "tooltip": null - } - }, - "e37d1bce79d8439eaa32ab775d741d46": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_5403d65215604e40aaeaca4f72d3fb48", - "IPY_MODEL_a350d0d0c58645fc9ebf0e87f77e281b", - "IPY_MODEL_63445e13c73541cf85308732c855e27e" - ], - "layout": "IPY_MODEL_8bc6709601ce4a0c9ab09aa6b97e26d2", - "tabbable": null, - "tooltip": null - } - }, - "e69e43c020b445ff8345228ac793e141": { - "model_module": "@jupyter-widgets/controls", - "model_module_version": "2.0.0", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "2.0.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "2.0.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_ea0b117713de4c48ad0c9fe8aed8886f", - "IPY_MODEL_b257e40b92b04468a205ae30b6d2fb5f", - "IPY_MODEL_d83f75f1135c4ba3b0bfb3393d2ef861" - ], - "layout": "IPY_MODEL_5f1a8bae8b684cc0b8006c83809bba7e", - "tabbable": null, - "tooltip": null - } - }, - "e7373fc234864ec2b42548ac4852100d": { + "ca1402c10ca34091be63df66e5f6a9fd": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7342,7 +6581,7 @@ "width": null } }, - "e7382ccf68494085bd975b0044221c9d": { + "ca5f0c60d1f3445b958f21b281b58d9b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", @@ -7357,16 +6596,16 @@ "_view_name": "HBoxView", "box_style": "", "children": [ - "IPY_MODEL_b95de1e665c84fe6a42aaefc9ed7d6af", - "IPY_MODEL_4b1082045e19453e851dc14a9197eb38", - "IPY_MODEL_a03bc06244664297953da657fcea2d87" + "IPY_MODEL_f771037823d94e07a0e0d5e4c59e3972", + "IPY_MODEL_6a65135ba3ff46f3b679c3f5169f869a", + "IPY_MODEL_942b949a4a3f4cc8af494c02d55bea26" ], - "layout": "IPY_MODEL_522a78218aee4db1b5edead18b1b3851", + "layout": "IPY_MODEL_c679ccbb359449e4862323f7b9d9e154", "tabbable": null, "tooltip": null } }, - "e76d86296a0a46189112c9ad2d81a9b7": { + "cc68b409f8184b7e860cf131cf8c0c2f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -7384,7 +6623,7 @@ "text_color": null } }, - "e891fa0655ab4698a6d56124d960ac9a": { + "ccc44ea6a5a843aa81663cff7f9ab0a8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7433,11 +6672,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "e8f3bec708e54b478997e355136655cb": { + "ccea54de85fb427c9b93734c61050873": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7490,7 +6729,7 @@ "width": null } }, - "ea0b117713de4c48ad0c9fe8aed8886f": { + "cdfa4375bc5446dc8da487ce42ebee5f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", @@ -7505,64 +6744,49 @@ "_view_name": "HTMLView", "description": "", "description_allow_html": false, - "layout": "IPY_MODEL_1ac4955da4d74de1943527fe22b22053", + "layout": "IPY_MODEL_05c387a36b604e2baf3317dca0fb88f7", "placeholder": "​", - "style": "IPY_MODEL_3b66751ed83b42ef99ac3915e721053b", + "style": "IPY_MODEL_5e6eaed644604d5490a1edb044a24824", "tabbable": null, "tooltip": null, - "value": "100%" + "value": " 20%" } }, - "ec00446e3f9a47b4b657502a2a08a2b5": { + "ce683c6a45a24b9288f43a6434a265ab": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLModel", + "model_name": "ProgressStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLModel", + "_model_name": "ProgressStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "HTMLView", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_2326e44804fc48b8ba5997dc12bcbfec", - "placeholder": "​", - "style": "IPY_MODEL_86d5b445402b4efcab23c93edbc59570", - "tabbable": null, - "tooltip": null, - "value": " 5/5 [00:01<00:00, 3.55it/s]" + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" } }, - "ec673c61c9a144f0888dd31a3dcf1357": { + "d1aad32a001147a289d44ae79bf385b5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HTMLStyleModel", "state": { - "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HTMLStyleModel", "_view_count": null, - "_view_module": "@jupyter-widgets/controls", + "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_5bacefe5f1074f86924d31ec3cfc4e61", - "max": 5.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_83a7cedd324d4967ba873e9d956f5842", - "tabbable": null, - "tooltip": null, - "value": 5.0 + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "ecd27d8283d948229de50f5fdd0f6440": { + "d5fcf6b7785749e3a0af6c6ee88af68d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -7580,7 +6804,7 @@ "text_color": null } }, - "edca1bae57274fdab7d04b081d029b80": { + "d69d66f0e7ec4b91916369491bc21091": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", @@ -7596,33 +6820,55 @@ "description_width": "" } }, - "ef4ef604540f4556a99db29cbbdd256c": { + "d74cf99dcbce49c3893648afb0be9fdb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "FloatProgressModel", + "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "FloatProgressModel", + "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "", - "description_allow_html": false, - "layout": "IPY_MODEL_661bdc12429d42828ebbbf1ab08fd8cb", - "max": 3.0, - "min": 0.0, - "orientation": "horizontal", - "style": "IPY_MODEL_6eff1b1361504170b0013fea053fb29f", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_4fc17baa74d04cc6b1377a65f36d968d", + "IPY_MODEL_a93e9d31859046839ead10e88039b9d1", + "IPY_MODEL_b60bb436847c4191bf1380fce37f6544" + ], + "layout": "IPY_MODEL_b1efe123e0f844eebe8e1a23e7ca3d94", "tabbable": null, - "tooltip": null, - "value": 3.0 + "tooltip": null + } + }, + "d7e80db4f52040a8a1e038b3b9df9f79": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_616f2f1ded604cc1bf76a8a04cf41b42", + "IPY_MODEL_60b2995b42fb418daf44c3972575e20e", + "IPY_MODEL_e5b98c7cd7ca46078f38680e0aafc98a" + ], + "layout": "IPY_MODEL_8b0090ce45f0455aa607fef6c7313d91", + "tabbable": null, + "tooltip": null } }, - "f014391bb51c4d3a87004bf9336b7ad8": { + "d84a8dd0479a42eda8beca43a4b3bf11": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7675,7 +6921,25 @@ "width": null } }, - "f0d33b6ca56445e2a535277cfe381c21": { + "d91dc65118a443d4b054009757ce2709": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "db1b88c76d8b4cce9d66124040766015": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7724,11 +6988,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "f1e8cd7a9481416eb97ef7dee7654a73": { + "db69858cb0fb4e9eb1ab2018db9d9cc1": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7781,23 +7045,122 @@ "width": null } }, - "f76d9bc23d9b4aacb7e7349b83d511bb": { + "de946534defe4c7381488d034b6a0927": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "ProgressStyleModel", + "model_name": "FloatProgressModel", "state": { + "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "ProgressStyleModel", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_db1b88c76d8b4cce9d66124040766015", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_884b723ed8a943e8bdd9ded683539d24", + "tabbable": null, + "tooltip": null, + "value": 5 + } + }, + "e12cca4f312644d7afbf74699eb672d1": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e257923f4507406383a8d21b23ecb836": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", - "bar_color": null, - "description_width": "" + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "e39a403ea1df46f084879673c9e59d11": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null } }, - "f7992584aa5740ab8b6f70fa82f366cb": { + "e4841c841fbf4f4db57e10f3febf2506": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7850,7 +7213,111 @@ "width": null } }, - "fa02ab4d2206459eb773a41a7c65c2d5": { + "e5b98c7cd7ca46078f38680e0aafc98a": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3ee4e344b6704a4da4521021021ff273", + "placeholder": "​", + "style": "IPY_MODEL_9d3e73c7faf342838f30785fc5dcc39e", + "tabbable": null, + "tooltip": null, + "value": " 3/3 [00:03<00:00, 1.31s/it]" + } + }, + "e6488b164a7945b4bb8d5b0fc21ac870": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_a3fce0ef542e412ca623ad9fa34d3323", + "placeholder": "​", + "style": "IPY_MODEL_6ac7541a15b64fd4a0a761fbc4e1ca5f", + "tabbable": null, + "tooltip": null, + "value": " 5/5 [00:01<00:00, 3.57it/s]" + } + }, + "ec6294a77c9e466fa9f299ea176de32b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "ec7b9543feff436fa928ff46af67ef41": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ed8e6e3665b94fb7aae3fc24b8c8be80": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_cdfa4375bc5446dc8da487ce42ebee5f", + "IPY_MODEL_ffad7f8243b24dba95ab50fc6c295c3f", + "IPY_MODEL_53504bc4820d41a79fdec4ac8d6942a8" + ], + "layout": "IPY_MODEL_1dce255f1d7d441c922b6a244d4e8542", + "tabbable": null, + "tooltip": null + } + }, + "f35ab9a353c24a3fa8385a7ca1fc30af": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7899,11 +7366,11 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "fb40054a3fe14c63892759cdec0207a3": { + "f47344d9d27e4f49bbb81fed8fca6a2a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -7956,7 +7423,7 @@ "width": null } }, - "fb87d48e3ca24dca80fb9f6f45e8f5a0": { + "f4a354582d994b71aab54e99fb43a7cc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -8005,11 +7472,91 @@ "padding": null, "right": null, "top": null, - "visibility": null, + "visibility": "hidden", "width": null } }, - "fbcaa1eb43b94ce29e89e4f7339105c6": { + "f4d9a12e6dce46b7af045f4cc3484dab": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "f771037823d94e07a0e0d5e4c59e3972": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_1142236a2d1f443aa0ebabf709141848", + "placeholder": "​", + "style": "IPY_MODEL_4fe4f238c4b143bea1f0b8e05957478e", + "tabbable": null, + "tooltip": null, + "value": "100%" + } + }, + "f7e975bb7a4c417ebd5f12865f23a23e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_360d668a5aec43a7b4297941284f5a93", + "placeholder": "​", + "style": "IPY_MODEL_71bb4d2468cd4b8eb999cd1a6bd33474", + "tabbable": null, + "tooltip": null, + "value": " 5/5 [00:04<00:00, 1.64it/s]" + } + }, + "f9971cb5fd564bc3ada05149501a7997": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "f9e5ff997ffc465b92bb51c152caeffc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -8058,11 +7605,37 @@ "padding": null, "right": null, "top": null, - "visibility": "hidden", + "visibility": null, "width": null } }, - "fe24d1ca63544a339edd185797a962d0": { + "fa072e0371024e52a4515fa0d15a8af3": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_3a3a74939d4347749a9eb57ab0ecdd94", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b9b36f26efa0466f9896c3b30d3934e5", + "tabbable": null, + "tooltip": null, + "value": 5 + } + }, + "fe74d8845f684e288189b2d07c5ba1cc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", @@ -8115,25 +7688,65 @@ "width": null } }, - "fe98347c0b1f4e0b9847e11c57ff18a2": { + "fed5a53a9ade4ce6a482ca9ad0ef5192": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", - "model_name": "HTMLStyleModel", + "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", - "_model_name": "HTMLStyleModel", + "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", - "background": null, - "description_width": "", - "font_size": null, - "text_color": null + "bar_color": null, + "description_width": "" + } + }, + "ff0ecf4be1d349df9bb72681a42f2fb7": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ff1c5451dbb944f6857f918ed66864a0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_f9e5ff997ffc465b92bb51c152caeffc", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b8ac9db9bca6460ba78ee68a834a59ec", + "tabbable": null, + "tooltip": null, + "value": 5 } }, - "fefea9d60b7745af9c9edca46b51816d": { + "ff7344fa6b2e4d12a92afba3166dc1bd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", @@ -8150,6 +7763,32 @@ "font_size": null, "text_color": null } + }, + "ffad7f8243b24dba95ab50fc6c295c3f": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_86da987ea86a46b6aca9d73b89e9d02e", + "max": 5, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4a7bc4fa77834be6ba26afcc47d8e2e8", + "tabbable": null, + "tooltip": null, + "value": 5 + } } }, "version_major": 2, diff --git a/docs/benchmarks/lotka_volterra/internal.md b/docs/benchmarks/lotka_volterra/internal.md index b08ca1f0..8e1db323 100644 --- a/docs/benchmarks/lotka_volterra/internal.md +++ b/docs/benchmarks/lotka_volterra/internal.md @@ -18,6 +18,8 @@ jupyter: Let's find the fastest solver of the Lotka-Volterra problem, a standard benchmark problem. It is low-dimensional, not stiff, and generally poses no major problems for any numerical solver. ```python +import functools + import jax import jax.experimental.ode import jax.numpy as jnp @@ -126,22 +128,22 @@ def solver_to_method(solver): Should we linearize with a Taylor-approximation or by moment matching? ```python -def cubature_to_slr1(cubature, *, ode_shape): +def cubature_to_slr1(cubature_rule_fn, *, ode_shape): return recipes.DenseSLR1.from_params( ode_shape=ode_shape, - cubature=cubature, + cubature_rule_fn=cubature_rule_fn, ) # Different linearisation styles ode_shape = u0.shape ts1 = recipes.DenseTS1.from_params(ode_shape=ode_shape) -sci = cubature.ThirdOrderSpherical.from_params(input_shape=ode_shape) -ut = cubature.UnscentedTransform.from_params(input_shape=ode_shape, r=1.0) -gh = cubature.GaussHermite.from_params(input_shape=ode_shape, degree=3) -slr1_sci = cubature_to_slr1(sci, ode_shape=ode_shape) -slr1_ut = cubature_to_slr1(ut, ode_shape=ode_shape) -slr1_gh = cubature_to_slr1(gh, ode_shape=ode_shape) +sci_fn = cubature.ThirdOrderSpherical.from_params +ut_fn = functools.partial(cubature.UnscentedTransform.from_params, r=1.0) +gh_fn = functools.partial(cubature.GaussHermite.from_params, degree=3) +slr1_sci = cubature_to_slr1(sci_fn, ode_shape=ode_shape) +slr1_ut = cubature_to_slr1(ut_fn, ode_shape=ode_shape) +slr1_gh = cubature_to_slr1(gh_fn, ode_shape=ode_shape) # Methods diff --git a/probdiffeq/implementations/_scalar.py b/probdiffeq/implementations/_scalar.py index 7ba36dd9..2744e22a 100644 --- a/probdiffeq/implementations/_scalar.py +++ b/probdiffeq/implementations/_scalar.py @@ -184,30 +184,30 @@ def complete_correction(self, extrapolated, cache): @jax.tree_util.register_pytree_node_class class StatisticalFirstOrder(_collections.AbstractCorrection): - def __init__(self, ode_order, cubature): + def __init__(self, ode_order, cubature_rule): if ode_order > 1: raise ValueError super().__init__(ode_order=ode_order) - self.cubature = cubature + self.cubature_rule = cubature_rule @classmethod def from_params(cls, ode_order): sci_fn = cubature_module.ThirdOrderSpherical.from_params - cubature = sci_fn(input_shape=()) - return cls(ode_order=ode_order, cubature=cubature) + cubature_rule = sci_fn(input_shape=()) + return cls(ode_order=ode_order, cubature_rule=cubature_rule) def tree_flatten(self): # todo: should this call super().tree_flatten()? - children = (self.cubature,) + children = (self.cubature_rule,) aux = (self.ode_order,) return children, aux @classmethod def tree_unflatten(cls, aux, children): - (cubature,) = children + (cubature_rule,) = children (ode_order,) = aux - return cls(ode_order=ode_order, cubature=cubature) + return cls(ode_order=ode_order, cubature_rule=cubature_rule) def begin_correction(self, x: Normal, /, vector_field, t, p): raise NotImplementedError @@ -261,18 +261,18 @@ def transform_sigma_points(self, rv: Normal): # Multiply and shift the unit-points m_marg1_x = rv.mean[0] - sigma_points_centered = self.cubature.points * r_marg1_x[None] + sigma_points_centered = self.cubature_rule.points * r_marg1_x[None] sigma_points = m_marg1_x[None] + sigma_points_centered # Scale the shifted points with square-root weights - _w = self.cubature.weights_sqrtm + _w = self.cubature_rule.weights_sqrtm sigma_points_centered_normed = sigma_points_centered * _w return sigma_points, sigma_points_centered, sigma_points_centered_normed def center(self, fx): - fx_mean = self.cubature.weights_sqrtm**2 @ fx + fx_mean = self.cubature_rule.weights_sqrtm**2 @ fx fx_centered = fx - fx_mean[None] - fx_centered_normed = fx_centered * self.cubature.weights_sqrtm + fx_centered_normed = fx_centered * self.cubature_rule.weights_sqrtm return fx_mean, fx_centered, fx_centered_normed def linearization_matrices( @@ -284,7 +284,7 @@ def linearization_matrices( # It seems to be different to Section VI.B in # https://arxiv.org/pdf/2207.00426.pdf, # because the implementation below avoids sqrt-down-dates - # pts_centered_normed = pts_centered * self.cubature.weights_sqrtm[:, None] + # pts_centered_normed = pts_centered * self.cubature_rule.weights_sqrtm[:, None] _, (std_noi_mat, linop_mat) = _sqrtm.revert_conditional_noisefree( R_X_F=pts_centered_normed[:, None], R_X=fx_centered_normed[:, None] ) diff --git a/probdiffeq/implementations/blockdiag/corr.py b/probdiffeq/implementations/blockdiag/corr.py index 4ab2334e..558de62f 100644 --- a/probdiffeq/implementations/blockdiag/corr.py +++ b/probdiffeq/implementations/blockdiag/corr.py @@ -23,36 +23,42 @@ class BlockDiagStatisticalFirstOrder(_collections.AbstractCorrection): """ - def __init__(self, ode_shape, ode_order, cubature): + def __init__(self, ode_shape, ode_order, cubature_rule): if ode_order > 1: raise ValueError super().__init__(ode_order=ode_order) self.ode_shape = ode_shape - self._mm = _scalar.StatisticalFirstOrder(ode_order=ode_order, cubature=cubature) + self._mm = _scalar.StatisticalFirstOrder( + ode_order=ode_order, cubature_rule=cubature_rule + ) @property - def cubature(self): - return self._mm.cubature + def cubature_rule(self): + return self._mm.cubature_rule def tree_flatten(self): # todo: should this call super().tree_flatten()? - children = (self.cubature,) + children = (self.cubature_rule,) aux = self.ode_order, self.ode_shape return children, aux @classmethod def tree_unflatten(cls, aux, children): - (cubature,) = children + (cubature_rule,) = children ode_order, ode_shape = aux - return cls(ode_order=ode_order, ode_shape=ode_shape, cubature=cubature) + return cls( + ode_order=ode_order, ode_shape=ode_shape, cubature_rule=cubature_rule + ) @classmethod def from_params(cls, ode_shape, ode_order): cubature_fn = cubature_module.ThirdOrderSpherical.from_params_blockdiag - cubature = cubature_fn(input_shape=ode_shape) - return cls(ode_shape=ode_shape, ode_order=ode_order, cubature=cubature) + cubature_rule = cubature_fn(input_shape=ode_shape) + return cls( + ode_shape=ode_shape, ode_order=ode_order, cubature_rule=cubature_rule + ) def begin_correction(self, extrapolated, /, vector_field, t, p): # Vmap relevant functions diff --git a/probdiffeq/implementations/dense/corr.py b/probdiffeq/implementations/dense/corr.py index 2c32886b..402505e5 100644 --- a/probdiffeq/implementations/dense/corr.py +++ b/probdiffeq/implementations/dense/corr.py @@ -246,12 +246,14 @@ def __init__(self, ode_shape, ode_order, linearise_fn): self.e1_vect = functools.partial(select_vect, i=self.ode_order) @classmethod - def from_params(cls, ode_shape, ode_order, cubature=None): - if cubature is None: - make_rule_fn = cubature_module.ThirdOrderSpherical.from_params - cubature = make_rule_fn(input_shape=ode_shape) - - linearise_fn = functools.partial(linearise_slr0, cubature_rule=cubature) + def from_params( + cls, + ode_shape, + ode_order, + cubature_rule_fn=cubature_module.ThirdOrderSpherical.from_params, + ): + cubature_rule = cubature_rule_fn(input_shape=ode_shape) + linearise_fn = functools.partial(linearise_slr0, cubature_rule=cubature_rule) return cls(ode_shape=ode_shape, ode_order=ode_order, linearise_fn=linearise_fn) def tree_flatten(self): @@ -352,12 +354,14 @@ def __init__(self, ode_shape, ode_order, linearise_fn): self.e1_vect = functools.partial(select_vect, i=self.ode_order) @classmethod - def from_params(cls, ode_shape, ode_order, cubature=None): - if cubature is None: - make_rule_fn = cubature_module.ThirdOrderSpherical.from_params - cubature = make_rule_fn(input_shape=ode_shape) - - linearise_fn = functools.partial(linearise_slr1, cubature_rule=cubature) + def from_params( + cls, + ode_shape, + ode_order, + cubature_rule_fn=cubature_module.ThirdOrderSpherical.from_params, + ): + cubature_rule = cubature_rule_fn(input_shape=ode_shape) + linearise_fn = functools.partial(linearise_slr1, cubature_rule=cubature_rule) return cls(ode_shape=ode_shape, ode_order=ode_order, linearise_fn=linearise_fn) def tree_flatten(self): diff --git a/probdiffeq/implementations/recipes.py b/probdiffeq/implementations/recipes.py index 176cc5b5..d788e9d3 100644 --- a/probdiffeq/implementations/recipes.py +++ b/probdiffeq/implementations/recipes.py @@ -4,6 +4,7 @@ import jax +from probdiffeq import cubature from probdiffeq.implementations import _collections from probdiffeq.implementations.blockdiag import corr as blockdiag_corr from probdiffeq.implementations.blockdiag import extra as blockdiag_extra @@ -40,6 +41,11 @@ def tree_unflatten(cls, _aux, children): correction, extrapolation = children return cls(correction=correction, extrapolation=extrapolation) + def __repr__(self): + name = self.__class__.__name__ + n = self.extrapolation.num_derivatives + return f"<{name} with num_derivatives={n}>" + @jax.tree_util.register_pytree_node_class class IsoTS0(AbstractImplementation[iso_corr.IsoTaylorZerothOrder, iso_extra.IsoIBM]): @@ -68,14 +74,16 @@ class BlockDiagSLR1( """ @classmethod - def from_params(cls, *, ode_shape, cubature=None, ode_order=1, num_derivatives=4): - if cubature is None: + def from_params( + cls, *, ode_shape, cubature_rule=None, ode_order=1, num_derivatives=4 + ): + if cubature_rule is None: correction = blockdiag_corr.BlockDiagStatisticalFirstOrder.from_params( ode_shape=ode_shape, ode_order=ode_order ) else: correction = blockdiag_corr.BlockDiagStatisticalFirstOrder( - ode_shape=ode_shape, ode_order=ode_order, cubature=cubature + ode_shape=ode_shape, ode_order=ode_order, cubature_rule=cubature_rule ) extrapolation = blockdiag_extra.BlockDiagIBM.from_params( ode_shape=ode_shape, num_derivatives=num_derivatives @@ -133,9 +141,16 @@ class DenseSLR1( AbstractImplementation[dense_corr.DenseStatisticalFirstOrder, dense_extra.DenseIBM] ): @classmethod - def from_params(cls, *, ode_shape, cubature=None, ode_order=1, num_derivatives=4): + def from_params( + cls, + *, + ode_shape, + cubature_rule_fn=cubature.ThirdOrderSpherical.from_params, + ode_order=1, + num_derivatives=4, + ): correction = dense_corr.DenseStatisticalFirstOrder.from_params( - ode_shape=ode_shape, ode_order=ode_order, cubature=cubature + ode_shape=ode_shape, ode_order=ode_order, cubature_rule_fn=cubature_rule_fn ) extrapolation = dense_extra.DenseIBM.from_params( ode_shape=ode_shape, num_derivatives=num_derivatives @@ -159,9 +174,16 @@ class DenseSLR0( """ @classmethod - def from_params(cls, *, ode_shape, cubature=None, ode_order=1, num_derivatives=4): + def from_params( + cls, + *, + ode_shape, + cubature_rule_fn=cubature.ThirdOrderSpherical.from_params, + ode_order=1, + num_derivatives=4, + ): correction = dense_corr.DenseStatisticalZerothOrder.from_params( - ode_shape=ode_shape, ode_order=ode_order, cubature=cubature + ode_shape=ode_shape, ode_order=ode_order, cubature_rule_fn=cubature_rule_fn ) extrapolation = dense_extra.DenseIBM.from_params( ode_shape=ode_shape, num_derivatives=num_derivatives diff --git a/probdiffeq/solvers.py b/probdiffeq/solvers.py index 3534c8f3..ddf77ad4 100644 --- a/probdiffeq/solvers.py +++ b/probdiffeq/solvers.py @@ -231,6 +231,13 @@ def __init__(self, strategy, *, output_scale_sqrtm): # todo: overwrite init_fn()? self._output_scale_sqrtm = output_scale_sqrtm + def __repr__(self): + name = self.__class__.__name__ + args = ( + f"strategy={self.strategy}, output_scale_sqrtm={self._output_scale_sqrtm}" + ) + return f"{name}({args})" + def step_fn(self, *, state, vector_field, dt, parameters): # Pre-error-estimate steps linearisation_pt, cache_ext = self.strategy.begin_extrapolation( diff --git a/probdiffeq/taylor.py b/probdiffeq/taylor.py index 14cc858e..a815e9f4 100644 --- a/probdiffeq/taylor.py +++ b/probdiffeq/taylor.py @@ -253,6 +253,8 @@ def jet_embedded(*c, degree): fx, jvp_fn = jax.linearize(jet_embedded_deg, *taylor_coefficients) # Compute the next set of coefficients. + # todo: can we jax.fori_loop() this loop? + # the running variable (cs_padded) should have constant size cs = [(fx[deg - 1] / deg)] for k in range(deg, min(2 * deg, num)): # The Jacobian of the embedded jet is block-banded, diff --git a/probdiffeq/test_util.py b/probdiffeq/test_util.py new file mode 100644 index 00000000..5955f644 --- /dev/null +++ b/probdiffeq/test_util.py @@ -0,0 +1,49 @@ +"""Test utilities.""" + +from probdiffeq import solvers +from probdiffeq.implementations import recipes +from probdiffeq.strategies import filters + + +def generate_solver( + *, + solver_factory=solvers.MLESolver, + strategy_factory=filters.Filter, + impl_factory=recipes.IsoTS0.from_params, + **impl_factory_kwargs, +): + """Generate a solver. + + Examples + -------- + >>> from jax.config import config + >>> config.update("jax_platform_name", "cpu") + + >>> from probdiffeq import solvers + >>> from probdiffeq.implementations import recipes + >>> from probdiffeq.strategies import smoothers + + >>> print(generate_solver()) + MLESolver(strategy=Filter(implementation=)) + + >>> print(generate_solver(num_derivatives=1)) + MLESolver(strategy=Filter(implementation=)) + + >>> print(generate_solver(solver_factory=solvers.DynamicSolver)) + DynamicSolver(strategy=Filter(implementation=)) + + >>> impl_fcty = recipes.DenseTS1.from_params + >>> strat_fcty = smoothers.Smoother + >>> print(generate_solver(strategy_factory=strat_fcty, impl_factory=impl_fcty, ode_shape=(1,))) # noqa: E501 + MLESolver(strategy=Smoother(implementation=)) + """ + impl = impl_factory(**impl_factory_kwargs) + strat = strategy_factory(impl) + + # I am not too happy with the need for this distinction below... + + if solver_factory in [solvers.MLESolver, solvers.DynamicSolver]: + return solver_factory(strat) + + scale_sqrtm = impl.extrapolation.init_output_scale_sqrtm() + return solver_factory(strat, output_scale_sqrtm=scale_sqrtm) diff --git a/tests/conftest.py b/tests/conftest.py index 0d512569..9eca7485 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,46 +1,13 @@ """Test configurations.""" import dataclasses +import functools +from typing import Callable import jax import jax.experimental.ode import jax.numpy as jnp import pytest_cases -import pytest_cases.filters - -from probdiffeq import solution_routines, taylor - -# Set some test filters - -# todo: remove those. - - -def is_filter(cf): - (case_tags,) = pytest_cases.filters.get_case_tags(cf) - return case_tags.strategy == "filter" - - -def is_smoother(cf): - (case_tags,) = pytest_cases.filters.get_case_tags(cf) - return case_tags.strategy == "smoother" - - -def is_fixedpoint(cf): - (case_tags,) = pytest_cases.filters.get_case_tags(cf) - return case_tags.strategy == "fixedpoint" - - -def can_simulate_terminal_values(cf): - return is_filter(cf) | is_fixedpoint(cf) | is_smoother(cf) - - -def can_solve_and_save_at(cf): - return is_filter(cf) | is_fixedpoint(cf) - - -def can_solve(cf): - return is_filter(cf) | is_smoother(cf) - # Solver configurations (for example, tolerances.) # My attempt at bundling up all those magic save_at grids, tolerances, etc. @@ -50,8 +17,8 @@ def can_solve(cf): class SolverConfiguration: atol_solve: float rtol_solve: float - grid_for_fixed_grid: jax.Array - grid_for_save_at: jax.Array + grid_for_fixed_grid_fn: Callable[[float, float], jax.Array] + grid_for_save_at_fn: Callable[[float, float], jax.Array] @property def atol_assert(self): @@ -63,110 +30,12 @@ def rtol_assert(self): @pytest_cases.fixture(scope="session", name="solver_config") -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def fixture_solver_config(ode_problem): - grid = jnp.linspace(ode_problem.t0, ode_problem.t1, endpoint=True, num=10) - save_at = jnp.linspace(ode_problem.t0, ode_problem.t1, endpoint=True, num=5) +def fixture_solver_config(): + grid_fn = functools.partial(jnp.linspace, endpoint=True, num=10) + save_at_fn = functools.partial(jnp.linspace, endpoint=True, num=5) return SolverConfiguration( atol_solve=1e-5, rtol_solve=1e-3, - grid_for_fixed_grid=grid, - grid_for_save_at=save_at, - ) - - -# Terminal value fixtures - - -@pytest_cases.fixture(scope="session", name="reference_terminal_values") -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def fixture_reference_terminal_values(ode_problem): - return ode_problem.t1, ode_problem.solution(ode_problem.t1) - - -@pytest_cases.fixture(scope="session", name="solution_terminal_values") -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -@pytest_cases.parametrize_with_cases( - "solver", cases=".solver_cases", filter=can_simulate_terminal_values -) -def fixture_solution_terminal_values(ode_problem, solver_config, solver): - solution = solution_routines.simulate_terminal_values( - ode_problem.vector_field, - ode_problem.initial_values, - t0=ode_problem.t0, - t1=ode_problem.t1, - parameters=ode_problem.args, - solver=solver, - atol=solver_config.atol_solve, - rtol=solver_config.rtol_solve, - taylor_fn=taylor.taylor_mode_fn, - ) - return solution, solver - - -# Checkpoint fixtures - - -@pytest_cases.fixture(scope="session", name="reference_checkpoints") -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def fixture_reference_save_at(ode_problem, solver_config): - xs = solver_config.grid_for_save_at - return xs, jax.vmap(ode_problem.solution)(xs) - - -@pytest_cases.fixture(scope="session", name="solution_save_at") -@pytest_cases.parametrize_with_cases( - "solver", cases=".solver_cases", filter=can_solve_and_save_at -) -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def fixture_solution_save_at(ode_problem, solver_config, solver): - solution = solution_routines.solve_and_save_at( - ode_problem.vector_field, - ode_problem.initial_values, - save_at=solver_config.grid_for_save_at, - parameters=ode_problem.args, - solver=solver, - atol=solver_config.atol_solve, - rtol=solver_config.rtol_solve, - taylor_fn=taylor.taylor_mode_fn, - ) - return solution, solver - - -# Solve() fixtures - - -@pytest_cases.fixture(scope="session", name="solution_solve") -@pytest_cases.parametrize_with_cases("solver", cases=".solver_cases", filter=can_solve) -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def fixture_solution_solve_with_python_while_loop(ode_problem, solver_config, solver): - solution = solution_routines.solve_with_python_while_loop( - ode_problem.vector_field, - ode_problem.initial_values, - t0=ode_problem.t0, - t1=ode_problem.t1, - parameters=ode_problem.args, - solver=solver, - atol=solver_config.atol_solve, - rtol=solver_config.rtol_solve, - taylor_fn=taylor.taylor_mode_fn, - ) - return solution, solver - - -# Solve_fixed_grid() fixtures - - -@pytest_cases.fixture(scope="session", name="solution_fixed_grid") -@pytest_cases.parametrize_with_cases("solver", cases=".solver_cases", filter=can_solve) -@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def fixture_solution_fixed_grid(ode_problem, solver, solver_config): - solution = solution_routines.solve_fixed_grid( - ode_problem.vector_field, - ode_problem.initial_values, - grid=solver_config.grid_for_fixed_grid, - parameters=ode_problem.args, - solver=solver, - taylor_fn=taylor.taylor_mode_fn, + grid_for_fixed_grid_fn=grid_fn, + grid_for_save_at_fn=save_at_fn, ) - return solution, solver diff --git a/tests/impl_cases.py b/tests/impl_cases.py new file mode 100644 index 00000000..ab27e182 --- /dev/null +++ b/tests/impl_cases.py @@ -0,0 +1,109 @@ +"""Test cases for implementations.""" + +import pytest_cases + +from probdiffeq import cubature +from probdiffeq.implementations import recipes + + +@pytest_cases.case(id="IsoTS0") +def case_ts0_iso(): + def impl_factory(*, num_derivatives, ode_shape): + return recipes.IsoTS0.from_params(num_derivatives=num_derivatives) + + return impl_factory + + +@pytest_cases.case(id="BlockDiagTS0") +def case_ts0_blockdiag(): + return recipes.BlockDiagTS0.from_params + + +@pytest_cases.case(id="DenseTS1") +def case_ts1_dense(): + return recipes.DenseTS1.from_params + + +@pytest_cases.case(id="DenseTS0") +def case_ts0_dense(): + return recipes.DenseTS0.from_params + + +@pytest_cases.case(id="DenseSLR1(Default)") +def case_slr1_dense_default(): + def impl_factory(**kwargs): + return recipes.DenseSLR1.from_params(**kwargs) + + return impl_factory + + +@pytest_cases.case(id="DenseSLR1(ThirdOrderSpherical)") +def case_slr1_dense_sci(): + def impl_factory(**kwargs): + cube_fn = cubature.ThirdOrderSpherical.from_params + return recipes.DenseSLR1.from_params(cubature_rule_fn=cube_fn, **kwargs) + + return impl_factory + + +@pytest_cases.case(id="DenseSLR1(UnscentedTransform)") +def case_slr1_dense_ut(): + def impl_factory(**kwargs): + cube_fn = cubature.UnscentedTransform.from_params + return recipes.DenseSLR1.from_params(cubature_rule_fn=cube_fn, **kwargs) + + return impl_factory + + +@pytest_cases.case(id="DenseSLR1(GaussHermite)") +def case_slr1_dense_gh(): + def impl_factory(**kwargs): + cube_fn = cubature.GaussHermite.from_params + return recipes.DenseSLR1.from_params(cubature_rule_fn=cube_fn, **kwargs) + + return impl_factory + + +# todo: parametrize with different cubature rules +@pytest_cases.case(id="DenseSLR0(Default)") +def case_slr0_dense_default(): + def impl_factory(**kwargs): + return recipes.DenseSLR0.from_params(**kwargs) + + return impl_factory + + +@pytest_cases.case(id="DenseSLR0(ThirdOrderSpherical)") +def case_slr0_dense_sci(): + def impl_factory(**kwargs): + cube_fn = cubature.ThirdOrderSpherical.from_params + return recipes.DenseSLR0.from_params(cubature_rule_fn=cube_fn, **kwargs) + + return impl_factory + + +@pytest_cases.case(id="DenseSLR0(UnscentedTransform)") +def case_slr0_dense_ut(): + def impl_factory(**kwargs): + cube_fn = cubature.UnscentedTransform.from_params + return recipes.DenseSLR0.from_params(cubature_rule_fn=cube_fn, **kwargs) + + return impl_factory + + +@pytest_cases.case(id="DenseSLR0(GaussHermite)") +def case_slr0_dense_gh(): + def impl_factory(**kwargs): + cube_fn = cubature.GaussHermite.from_params + return recipes.DenseSLR0.from_params(cubature_rule_fn=cube_fn, **kwargs) + + return impl_factory + + +# todo: parametrize with different cubature rules +@pytest_cases.case(id="BlockDiagSLR1") +def case_slr1_blockdiag(): + def impl_factory(**kwargs): + return recipes.BlockDiagSLR1.from_params(**kwargs) + + return impl_factory diff --git a/tests/problem_cases.py b/tests/problem_cases.py index 75e63411..08e5e316 100644 --- a/tests/problem_cases.py +++ b/tests/problem_cases.py @@ -2,7 +2,7 @@ import dataclasses -from typing import Callable, Literal, Tuple +from typing import Callable, Tuple import diffeqzoo.ivps import diffrax @@ -11,19 +11,6 @@ import pytest_cases.filters -@dataclasses.dataclass -class Tag: - """Tags for ODE problem classes. - - These tags are used to match compatible solvers and ODEs. - Solvers have a similar set of tags. - """ - - shape: Literal[(2,)] # todo: scalar problems - order: Literal[1] # todo: second-order problems - stiff: Literal[True, False] - - # todo: Remove "args" field to ensure that the reference solution # always matches the problem. Otherwise, it might get hard to debug... @dataclasses.dataclass @@ -41,7 +28,7 @@ class ODEProblem: solution: Callable -@pytest_cases.case(tags=(Tag(shape=(2,), order=1, stiff=False),)) +@pytest_cases.case(id="LotkaVolterra") def case_lotka_volterra(): f, u0, (t0, _), f_args = diffeqzoo.ivps.lotka_volterra() t1 = 2.0 # Short time-intervals are sufficient for a unit test. diff --git a/tests/solver_cases.py b/tests/solver_cases.py index 5a97a11d..7cefdb89 100644 --- a/tests/solver_cases.py +++ b/tests/solver_cases.py @@ -1,145 +1,26 @@ -"""Solver test cases.""" -import dataclasses -from typing import Literal +"""Test cases for implementations.""" import pytest_cases -from probdiffeq import cubature, solvers -from probdiffeq.implementations import recipes -from probdiffeq.strategies import filters, smoothers +from probdiffeq import solvers -@dataclasses.dataclass -class Tag: - """Tags for IVP solvers. +@pytest_cases.case(id="MLESolver") +def case_mle(): + def factory(strategy, output_scale_sqrtm): + return solvers.MLESolver(strategy) - These tags are used to match compatible solvers and ODEs. - ODEs have a similar set of tags. - """ + return factory - strategy: Literal["filter", "smoother", "fixedpoint"] - linearisation_order: Literal["zeroth", "first"] - ode_shape: Literal[(2,)] # todo: scalar problems - ode_order: Literal[1] # todo: second-order problems +@pytest_cases.case(id="DynamicSolver") +def case_dynamic(): + def factory(strategy, output_scale_sqrtm): + return solvers.DynamicSolver(strategy) -@pytest_cases.case(tags=(Tag("filter", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_mle_filter_ts0_iso(): - strategy = filters.Filter(recipes.IsoTS0.from_params()) - return solvers.MLESolver(strategy=strategy) + return factory -@pytest_cases.case(tags=(Tag("smoother", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_dynamic_smoother_ts0_iso(): - implementation = recipes.IsoTS0.from_params() - strategy = smoothers.Smoother(implementation=implementation) - return solvers.DynamicSolver(strategy) - - -@pytest_cases.case(tags=(Tag("fixedpoint", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_fixedpoint_ts0_iso(): - implementation = recipes.IsoTS0.from_params() - strategy = smoothers.FixedPointSmoother(implementation=implementation) - return solvers.CalibrationFreeSolver(strategy=strategy, output_scale_sqrtm=100.0) - - -@pytest_cases.case(tags=(Tag("filter", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_ts0_blockdiag(): - implementation = recipes.BlockDiagTS0.from_params(ode_shape=(2,), num_derivatives=3) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("smoother", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_mle_smoother_ts0_blockdiag(): - implementation = recipes.BlockDiagTS0.from_params(ode_shape=(2,)) - strategy = smoothers.Smoother(implementation=implementation) - return solvers.MLESolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("fixedpoint", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_mle_fixedpoint_ts0_blockdiag(): - implementation = recipes.BlockDiagTS0.from_params(ode_shape=(2,)) - strategy = smoothers.FixedPointSmoother(implementation=implementation) - return solvers.MLESolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "first", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_ts1_dense(): - implementation = recipes.DenseTS1.from_params(ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "first", ode_shape=(2,), ode_order=1),)) -def case_mle_filter_slr1_dense(): - implementation = recipes.DenseSLR1.from_params(ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.MLESolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "first", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_slr1_dense_ut(): - cube = cubature.UnscentedTransform.from_params(input_shape=(2,)) - implementation = recipes.DenseSLR1.from_params(cubature=cube, ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "first", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_slr1_ut_blockdiag(): - cube = cubature.UnscentedTransform.from_params_blockdiag(input_shape=(2,)) - implementation = recipes.BlockDiagSLR1.from_params(cubature=cube, ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "first", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_slr1_blockdiag(): - implementation = recipes.BlockDiagSLR1.from_params(ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "first", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_slr1_dense_gh(): - cube = cubature.GaussHermite.from_params(input_shape=(2,)) - implementation = recipes.DenseSLR1.from_params(cubature=cube, ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_slr0_dense(): - implementation = recipes.DenseSLR0.from_params(ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("filter", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_dynamic_filter_slr0_dense_gh(): - cube = cubature.GaussHermite.from_params(input_shape=(2,)) - implementation = recipes.DenseSLR0.from_params(cubature=cube, ode_shape=(2,)) - strategy = filters.Filter(implementation=implementation) - return solvers.DynamicSolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("smoother", "first", ode_shape=(2,), ode_order=1),)) -def case_mle_smoother_ts1_dense(): - implementation = recipes.DenseTS1.from_params(ode_shape=(2,)) - strategy = smoothers.Smoother(implementation=implementation) - return solvers.MLESolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("fixedpoint", "first", ode_shape=(2,), ode_order=1),)) -def case_mle_fixedpoint_ts1_dense(): - implementation = recipes.DenseTS1.from_params(ode_shape=(2,)) - strategy = smoothers.FixedPointSmoother(implementation=implementation) - return solvers.MLESolver(strategy=strategy) - - -@pytest_cases.case(tags=(Tag("fixedpoint", "zeroth", ode_shape=(2,), ode_order=1),)) -def case_mle_fixedpoint_ts0_dense(): - implementation = recipes.DenseTS0.from_params(ode_shape=(2,)) - strategy = smoothers.FixedPointSmoother(implementation=implementation) - return solvers.MLESolver(strategy=strategy) +@pytest_cases.case(id="CalibrationFreeSolver") +def case_calibration_free(): + return solvers.CalibrationFreeSolver diff --git a/tests/test_dense_output.py b/tests/test_dense_output.py index 1bd2df25..f8dfafd4 100644 --- a/tests/test_dense_output.py +++ b/tests/test_dense_output.py @@ -1,15 +1,74 @@ """Tests for IVP solvers.""" import jax import jax.numpy as jnp +import pytest import pytest_cases import pytest_cases.filters -from probdiffeq import dense_output +from probdiffeq import dense_output, solution_routines, test_util from probdiffeq.strategies import filters, smoothers -def test_offgrid_marginals_filter(solution_solve): - solution, solver = solution_solve +@pytest_cases.fixture(scope="session", name="solution_native_python_while_loop") +@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") +def fixture_solution_native_python_while_loop(ode_problem): + solver = test_util.generate_solver(num_derivatives=1) + solution = solution_routines.solve_with_python_while_loop( + ode_problem.vector_field, + ode_problem.initial_values, + t0=ode_problem.t0, + t1=ode_problem.t1, + parameters=ode_problem.args, + solver=solver, + atol=1e-1, + rtol=1e-2, + ) + return solution, solver + + +def test_solution_is_iterable(solution_native_python_while_loop): + solution, _ = solution_native_python_while_loop + assert isinstance(solution[0], type(solution)) + assert len(solution) == len(solution.t) + + +def test_getitem_raises_error_for_nonbatched_solutions( + solution_native_python_while_loop, +): + """__getitem__ only works for batched solutions.""" + solution, _ = solution_native_python_while_loop + with pytest.raises(ValueError): + _ = solution[0][0] + with pytest.raises(ValueError): + _ = solution[0, 0] + + +def test_loop_over_solution_is_possible(solution_native_python_while_loop): + solution, _ = solution_native_python_while_loop + + i = 0 + for i, sol in zip(range(2 * len(solution)), solution): + assert isinstance(sol, type(solution)) + + assert i == len(solution) - 1 + + +# Maybe this test should be in a different test suite, but it does not really matter... +def test_marginal_nth_derivative_of_solution(solution_native_python_while_loop): + solution, _ = solution_native_python_while_loop + + # Assert that the marginals have the same shape as the qoi. + for i in (0, 1): + derivatives = solution.marginals.marginal_nth_derivative(i) + assert derivatives.mean.shape == solution.u.shape + + # if the requested derivative is not in the state-space model, raise a ValueError + with pytest.raises(ValueError): + solution.marginals.marginal_nth_derivative(100) + + +def test_offgrid_marginals_filter(solution_native_python_while_loop): + solution, solver = solution_native_python_while_loop t0, t1 = solution.t[0], solution.t[-1] # todo: this is hacky. But the tests get faster? @@ -41,8 +100,8 @@ def test_offgrid_marginals_filter(solution_solve): assert not jnp.allclose(u[0], solution.u[1], atol=1e-3, rtol=1e-3) -def test_offgrid_marginals_smoother(solution_solve): - solution, solver = solution_solve +def test_offgrid_marginals_smoother(solution_native_python_while_loop): + solution, solver = solution_native_python_while_loop t0, t1 = solution.t[0], solution.t[-1] # todo: this is hacky. But the tests get faster? @@ -74,23 +133,37 @@ def test_offgrid_marginals_smoother(solution_solve): assert jnp.allclose(u[-1], solution.u[-1], atol=1e-3, rtol=1e-3) +@pytest_cases.fixture(scope="session", name="solution_save_at") +@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") +def fixture_solution_save_at(ode_problem): + solver = test_util.generate_solver(strategy_factory=smoothers.FixedPointSmoother) + + save_at = jnp.linspace(ode_problem.t0, ode_problem.t1, endpoint=True, num=4) + solution = solution_routines.solve_and_save_at( + ode_problem.vector_field, + ode_problem.initial_values, + save_at=save_at, + parameters=ode_problem.args, + solver=solver, + atol=1e-1, + rtol=1e-2, + ) + return solution, solver + + @pytest_cases.parametrize("shape", [(), (2,), (2, 2)], ids=["()", "(n,)", "(n,n)"]) def test_grid_samples(solution_save_at, shape): solution, solver = solution_save_at - # todo: this is hacky. But the tests get faster? - if isinstance(solver.strategy, smoothers.FixedPointSmoother): - key = jax.random.PRNGKey(seed=15) - u, samples = dense_output.sample( - key, solution=solution, solver=solver, shape=shape - ) - assert u.shape == shape + solution.u.shape - assert samples.shape == shape + solution.marginals.hidden_state.sample_shape + key = jax.random.PRNGKey(seed=15) + u, samples = dense_output.sample(key, solution=solution, solver=solver, shape=shape) + assert u.shape == shape + solution.u.shape + assert samples.shape == shape + solution.marginals.hidden_state.sample_shape - # Todo: test values of the samples by checking a chi2 statistic - # in terms of the joint posterior. But this requires a joint_posterior() - # method, which is only future work I guess. So far we use the eye-test - # in the notebooks, which looks good. + # Todo: test values of the samples by checking a chi2 statistic + # in terms of the joint posterior. But this requires a joint_posterior() + # method, which is only future work I guess. So far we use the eye-test + # in the notebooks, which looks good. def test_negative_marginal_log_likelihood(solution_save_at): diff --git a/tests/test_edges.py b/tests/test_misc.py similarity index 61% rename from tests/test_edges.py rename to tests/test_misc.py index dc62578d..20e6e990 100644 --- a/tests/test_edges.py +++ b/tests/test_misc.py @@ -1,16 +1,17 @@ -"""Tests for specific edge cases. +"""Tests for miscellaneous edge cases. Place all tests that have no better place here. """ - import pytest import pytest_cases +from probdiffeq import test_util + -@pytest_cases.parametrize_with_cases("solver", cases=".solver_cases") @pytest_cases.parametrize("incr", [1, -1]) -def test_incorrect_number_of_taylor_coefficients_init(solver, incr): - n = solver.strategy.implementation.extrapolation.num_derivatives +@pytest_cases.parametrize("n", [2]) +def test_incorrect_number_of_taylor_coefficients_init(incr, n): + solver = test_util.generate_solver(num_derivatives=n) tcoeffs_wrong_length = [None] * (n + 1 + incr) # 'None' bc. values irrelevant init_fn = solver.strategy.implementation.extrapolation.init_hidden_state diff --git a/tests/test_simulate_terminal_values.py b/tests/test_simulate_terminal_values.py index 03a17065..157e40e8 100644 --- a/tests/test_simulate_terminal_values.py +++ b/tests/test_simulate_terminal_values.py @@ -1,17 +1,57 @@ """Tests for solving IVPs for the terminal value.""" import jax.numpy as jnp +import pytest_cases +from probdiffeq import solution_routines, taylor, test_util +from probdiffeq.strategies import filters, smoothers -def test_terminal_values_simulated_correctly( - reference_terminal_values, solution_terminal_values, solver_config + +@pytest_cases.fixture(scope="session", name="solution_terminal_values") +@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") +@pytest_cases.parametrize_with_cases("impl_fn", cases=".impl_cases") +@pytest_cases.parametrize_with_cases("solver_fn", cases=".solver_cases") +@pytest_cases.parametrize( + "strat_fn", [filters.Filter, smoothers.Smoother, smoothers.FixedPointSmoother] +) +def fixture_solution_terminal_values( + ode_problem, solver_fn, impl_fn, strat_fn, solver_config ): - t_ref, u_ref = reference_terminal_values - solution, _ = solution_terminal_values + ode_shape = ode_problem.initial_values[0].shape + solver = test_util.generate_solver( + solver_factory=solver_fn, + strategy_factory=strat_fn, + impl_factory=impl_fn, + ode_shape=ode_shape, + num_derivatives=4, + ) + solution = solution_routines.simulate_terminal_values( + ode_problem.vector_field, + ode_problem.initial_values, + t0=ode_problem.t0, + t1=ode_problem.t1, + parameters=ode_problem.args, + solver=solver, + atol=solver_config.atol_solve, + rtol=solver_config.rtol_solve, + taylor_fn=taylor.taylor_mode_fn, + ) + return (solution.t, solution.u), ( + ode_problem.t1, + ode_problem.solution(ode_problem.t1), + ) + - assert solution.t == t_ref +def test_terminal_values_correct(solution_terminal_values, solver_config): + (t, u), (t_ref, u_ref) = solution_terminal_values + assert jnp.allclose( + t, + t_ref, + atol=solver_config.atol_assert, + rtol=solver_config.rtol_assert, + ) assert jnp.allclose( - solution.u, + u, u_ref, atol=solver_config.atol_assert, rtol=solver_config.rtol_assert, diff --git a/tests/test_solve_and_save_at.py b/tests/test_solve_and_save_at.py index bf383e95..3022bb59 100644 --- a/tests/test_solve_and_save_at.py +++ b/tests/test_solve_and_save_at.py @@ -1,23 +1,48 @@ """Tests for solving IVPs for checkpoints.""" - +import jax import jax.numpy as jnp import pytest import pytest_cases -from probdiffeq import solution_routines, solvers -from probdiffeq.implementations import recipes -from probdiffeq.strategies import smoothers +from probdiffeq import solution_routines, taylor, test_util +from probdiffeq.strategies import filters, smoothers + +@pytest_cases.fixture(scope="session", name="solution_save_at") +@pytest_cases.parametrize_with_cases("impl_fn", cases=".impl_cases") +@pytest_cases.parametrize_with_cases("solver_fn", cases=".solver_cases") +@pytest_cases.parametrize("strat_fn", [filters.Filter, smoothers.FixedPointSmoother]) +@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") +def fixture_solution_save_at(ode_problem, solver_fn, impl_fn, strat_fn, solver_config): + ode_shape = ode_problem.initial_values[0].shape + solver = test_util.generate_solver( + solver_factory=solver_fn, + strategy_factory=strat_fn, + impl_factory=impl_fn, + ode_shape=ode_shape, + num_derivatives=4, + ) + + t0, t1 = ode_problem.t0, ode_problem.t1 + save_at = solver_config.grid_for_save_at_fn(t0, t1) + + solution = solution_routines.solve_and_save_at( + ode_problem.vector_field, + ode_problem.initial_values, + save_at=save_at, + parameters=ode_problem.args, + solver=solver, + atol=solver_config.atol_solve, + rtol=solver_config.rtol_solve, + taylor_fn=taylor.taylor_mode_fn, + ) + return solution.u, jax.vmap(ode_problem.solution)(solution.t) -def test_save_at_solved_correctly( - reference_checkpoints, solution_save_at, solver_config -): - t_ref, u_ref = reference_checkpoints - solution, _ = solution_save_at - assert jnp.allclose(solution.t, t_ref) +def test_solution_correct(solution_save_at, solver_config): + u, u_ref = solution_save_at assert jnp.allclose( - solution.u, + u, u_ref, atol=solver_config.atol_assert, rtol=solver_config.rtol_assert, @@ -28,7 +53,7 @@ def test_save_at_solved_correctly( def test_smoother_warning(ode_problem): """A non-fixed-point smoother is not usable in save-at-simulation.""" ts = jnp.linspace(ode_problem.t0, ode_problem.t1, num=3) - solver = solvers.DynamicSolver(smoothers.Smoother(recipes.IsoTS0.from_params())) + solver = test_util.generate_solver(strategy_factory=smoothers.Smoother) # todo: does this compute the full solve? We only want to catch a warning! with pytest.warns(): diff --git a/tests/test_solve_fixed_grid.py b/tests/test_solve_fixed_grid.py index d31a8d76..7685d189 100644 --- a/tests/test_solve_fixed_grid.py +++ b/tests/test_solve_fixed_grid.py @@ -3,68 +3,94 @@ import jax import jax.numpy as jnp +import jax.test_util import pytest_cases -from probdiffeq import solution_routines, solvers +from probdiffeq import solution_routines, test_util from probdiffeq.implementations import recipes from probdiffeq.strategies import filters, smoothers -def test_solve_fixed_grid_computes_terminal_values_correctly( - reference_terminal_values, solution_fixed_grid, solver_config -): - t_ref, u_ref = reference_terminal_values - solution, _ = solution_fixed_grid - - assert jnp.allclose(solution.t[-1], t_ref) - assert jnp.allclose( - solution.u[-1], - u_ref, - atol=solver_config.atol_assert, - rtol=solver_config.rtol_assert, - ) - - -@pytest_cases.parametrize("strategy", [smoothers.Smoother, filters.Filter]) +@pytest_cases.fixture(scope="session", name="solution_fixed_grid") @pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") -def test_solve_fixed_grid_differentiable(ode_problem, solver_config, strategy): - # Low order because it traces & differentiates faster - filter_or_smoother = strategy( - implementation=recipes.IsoTS0.from_params(num_derivatives=1) - ) - solver = solvers.CalibrationFreeSolver( - strategy=filter_or_smoother, output_scale_sqrtm=1.0 - ) - - fn = functools.partial( - _parameter_to_solution, - solver=solver, - fixed_grid=solver_config.grid_for_fixed_grid, - vf=ode_problem.vector_field, - parameters=ode_problem.args, +@pytest_cases.parametrize_with_cases("impl_fn", cases=".impl_cases") +@pytest_cases.parametrize_with_cases("solver_fn", cases=".solver_cases") +@pytest_cases.parametrize("strat_fn", [filters.Filter, smoothers.Smoother]) +def fixture_solution_fixed_grid( + ode_problem, solver_fn, impl_fn, strat_fn, solver_config +): + ode_shape = ode_problem.initial_values[0].shape + solver = test_util.generate_solver( + solver_factory=solver_fn, + strategy_factory=strat_fn, + impl_factory=impl_fn, + ode_shape=ode_shape, + num_derivatives=4, ) - fx = fn(ode_problem.initial_values[0]) - dfx_fwd = jax.jit(jax.jacfwd(fn, argnums=0))(ode_problem.initial_values[0]) - dfx_rev = jax.jit(jax.jacrev(fn, argnums=0))(ode_problem.initial_values[0]) - - out_shape = _tree_shape(fx) - in_shape = _tree_shape(ode_problem.initial_values[0]) - assert _tree_all_tree_map(jnp.allclose, dfx_fwd, dfx_rev) - assert _tree_shape(dfx_fwd) == out_shape + in_shape - + t0, t1 = ode_problem.t0, ode_problem.t1 + grid = solver_config.grid_for_fixed_grid_fn(t0, t1) -def _parameter_to_solution(u0, parameters, vf, solver, fixed_grid): solution = solution_routines.solve_fixed_grid( - vf, (u0,), grid=fixed_grid, parameters=parameters, solver=solver + ode_problem.vector_field, + ode_problem.initial_values, + grid=grid, + parameters=ode_problem.args, + solver=solver, ) - return solution.u + return (solution.t, solution.u), (grid, jax.vmap(ode_problem.solution)(grid)) -def _tree_shape(tree): - return jax.tree_util.tree_map(jnp.shape, tree) +def test_terminal_values_correct(solution_fixed_grid, solver_config): + (t, u), (t_ref, u_ref) = solution_fixed_grid + atol, rtol = solver_config.atol_assert, solver_config.rtol_assert + assert jnp.allclose(t[-1], t_ref[-1], atol=atol, rtol=rtol) + assert jnp.allclose(u[-1], u_ref[-1], atol=atol, rtol=rtol) -def _tree_all_tree_map(fn, *tree): - tree_of_bools = jax.tree_util.tree_map(fn, *tree) - return jax.tree_util.tree_all(tree_of_bools) +# todo: all solver implementations +@pytest_cases.fixture(scope="session", name="parameter_to_solution") +@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") +@pytest_cases.parametrize("impl_fn", [recipes.BlockDiagTS0.from_params]) +@pytest_cases.parametrize_with_cases("solver_fn", cases=".solver_cases") +@pytest_cases.parametrize("strat_fn", [filters.Filter, smoothers.Smoother]) +def fixture_parameter_to_solution( + ode_problem, solver_config, impl_fn, solver_fn, strat_fn +): + """Parameter-to-solution map. To be differentiated.""" + + def fn(u0): + ode_shape = ode_problem.initial_values[0].shape + solver = test_util.generate_solver( + solver_factory=solver_fn, + strategy_factory=strat_fn, + impl_factory=impl_fn, + ode_shape=ode_shape, + num_derivatives=1, # Low order traces more quickly + ) + + t0, t1 = ode_problem.t0, ode_problem.t1 + grid = solver_config.grid_for_fixed_grid_fn(t0, t1) + + solution = solution_routines.solve_fixed_grid( + ode_problem.vector_field, + u0, + grid=grid, + parameters=ode_problem.args, + solver=solver, + ) + return solution.u + + return fn, ode_problem.initial_values + + +def test_jvp(parameter_to_solution): + fn, primals = parameter_to_solution + jvp = functools.partial(jax.jvp, fn) + jax.test_util.check_jvp(fn, jvp, (primals,)) + + +def test_vjp(parameter_to_solution): + fn, primals = parameter_to_solution + vjp = functools.partial(jax.vjp, fn) + jax.test_util.check_vjp(fn, vjp, (primals,)) diff --git a/tests/test_solve_with_python_while_loop.py b/tests/test_solve_with_python_while_loop.py index 906f6630..f63dd42f 100644 --- a/tests/test_solve_with_python_while_loop.py +++ b/tests/test_solve_with_python_while_loop.py @@ -1,59 +1,47 @@ """Tests for solving IVPs on adaptive grids.""" +import jax import jax.numpy as jnp -import pytest +import pytest_cases +from probdiffeq import solution_routines, taylor, test_util +from probdiffeq.strategies import filters, smoothers -def test_solve_computes_correct_terminal_value( - reference_terminal_values, solution_solve, solver_config + +@pytest_cases.fixture(scope="session", name="solution_solve") +@pytest_cases.parametrize_with_cases("ode_problem", cases=".problem_cases") +@pytest_cases.parametrize_with_cases("impl_fn", cases=".impl_cases") +@pytest_cases.parametrize_with_cases("solver_fn", cases=".solver_cases") +@pytest_cases.parametrize("strat_fn", [filters.Filter, smoothers.Smoother]) +def fixture_solution_solve_with_python_while_loop( + ode_problem, solver_fn, impl_fn, strat_fn, solver_config ): - t_ref, u_ref = reference_terminal_values - solution, _ = solution_solve + solver = test_util.generate_solver( + solver_factory=solver_fn, + strategy_factory=strat_fn, + impl_factory=impl_fn, + ode_shape=(2,), + num_derivatives=4, + ) + solution = solution_routines.solve_with_python_while_loop( + ode_problem.vector_field, + ode_problem.initial_values, + t0=ode_problem.t0, + t1=ode_problem.t1, + parameters=ode_problem.args, + solver=solver, + atol=solver_config.atol_solve, + rtol=solver_config.rtol_solve, + taylor_fn=taylor.taylor_mode_fn, + ) + + return solution.u, jax.vmap(ode_problem.solution)(solution.t) + - assert jnp.allclose(solution.t[-1], t_ref) +def test_solve_computes_correct_terminal_value(solution_solve, solver_config): + u, u_ref = solution_solve assert jnp.allclose( - solution.u[-1], + u, u_ref, atol=solver_config.atol_assert, rtol=solver_config.rtol_assert, ) - - -def test_solution_is_iterable(solution_solve): - solution, _ = solution_solve - - assert isinstance(solution[0], type(solution)) - assert len(solution) == len(solution.t) - - -def test_getitem_raises_error_for_nonbatched_solutions(solution_solve): - solution, _ = solution_solve - - # __getitem__ only works for batched solutions. - with pytest.raises(ValueError): - _ = solution[0][0] - with pytest.raises(ValueError): - _ = solution[0, 0] - - -def test_loop_over_solution_is_possible(solution_solve): - solution, _ = solution_solve - - i = 0 - for i, sol in zip(range(2 * len(solution)), solution): - assert isinstance(sol, type(solution)) - - assert i == len(solution) - 1 - - -# Maybe this test should be in a different test suite, but it does not really matter... -def test_marginal_nth_derivative_of_solution(solution_solve): - solution, _ = solution_solve - - # Assert that the marginals have the same shape as the qoi. - for i in (0, 1): - derivatives = solution.marginals.marginal_nth_derivative(i) - assert derivatives.mean.shape == solution.u.shape - - # if the requested derivative is not in the state-space model, raise a ValueError - with pytest.raises(ValueError): - solution.marginals.marginal_nth_derivative(100)