{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# `MinDriver` steps\n", "\n", "In this tutorial, we show how we can save individual steps during minimisation as well as how we can analyse them. We are going to minimise a simple system object. For details on how to define a system object, please have a look at other tutorials." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import discretisedfield as df\n", "import micromagneticmodel as mm\n", "\n", "import oommfc as mc\n", "\n", "region = df.Region(p1=(-50e-9, -50e-9, 0), p2=(50e-9, 50e-9, 10e-9))\n", "mesh = df.Mesh(region=region, cell=(5e-9, 5e-9, 5e-9))\n", "\n", "system = mm.System(name=\"mindriver_steps\")\n", "\n", "system.energy = mm.Zeeman(H=(0, 0, 1e5))\n", "system.m = df.Field(mesh, nvdim=3, value=(1, 0, 0), norm=1.1e6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now have a system object and we can minimise it using `MinDriver`. By default, `MinDriver` saves only the data of the last step in the relexation. However, if we want to save all individual steps in between, we have to pass `output_step=True` to the `drive` method." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running OOMMF (ExeOOMMFRunner)[2025-02-02T14:32:11]... (0.5 s)\n" ] } ], "source": [ "md = mc.MinDriver()\n", "md.drive(system, output_step=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we have a look at the table, we can see that multiple steps are saved:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
max_mxHxmEdelta_Ebracket_countline_min_countconjugate_cycle_countcycle_countcycle_sub_countenergy_calc_countE_zeemaniterationstage_iterationstagemxmymz
01.000000e+050.000000e+000.000000e+000.00.01.01.00.01.00.000000e+000.00.00.01.000000e+000.00.000000
19.999996e+04-1.206285e-20-1.206285e-201.00.01.01.00.02.0-1.206285e-201.01.00.09.999996e-010.00.000873
29.848078e+04-2.400340e-18-2.388277e-182.00.01.01.00.03.0-2.400340e-182.02.00.09.848078e-010.00.173648
39.396926e+04-4.727747e-18-2.327407e-183.00.02.02.00.04.0-4.727747e-183.03.00.09.396926e-010.00.342020
48.660254e+04-6.911504e-18-2.183757e-184.00.03.03.00.05.0-6.911504e-184.04.00.08.660254e-010.00.500000
57.660444e+04-8.885258e-18-1.973754e-185.00.04.04.00.06.0-8.885258e-185.05.00.07.660444e-010.00.642788
66.427876e+04-1.058904e-17-1.703780e-186.00.05.05.00.07.0-1.058904e-176.06.00.06.427876e-010.00.766044
75.000000e+04-1.197108e-17-1.382038e-187.00.06.06.00.08.0-1.197108e-177.07.00.05.000000e-010.00.866025
83.464669e+04-1.296684e-17-9.957653e-198.00.07.07.00.09.0-1.296684e-178.08.00.03.464669e-010.00.938062
93.420201e+04-1.298938e-17-2.253721e-209.00.07.07.00.010.0-1.298938e-179.09.00.03.420201e-010.00.939693
101.981052e+04-1.354905e-17-5.596679e-1910.00.08.08.00.011.0-1.354905e-1710.010.00.01.981052e-010.00.980181
111.736482e+04-1.361301e-17-6.395896e-2011.00.08.08.00.012.0-1.361301e-1711.011.00.01.736482e-010.00.984808
126.305027e+03-1.379550e-17-1.824996e-1912.00.09.09.00.013.0-1.379550e-1712.012.00.06.305027e-020.00.998010
133.143399e-11-1.382301e-17-2.750291e-2013.00.09.09.00.014.0-1.382301e-1713.013.00.03.143399e-160.01.000000
\n", "
" ], "text/plain": [ " max_mxHxm E delta_E bracket_count line_min_count \\\n", "0 1.000000e+05 0.000000e+00 0.000000e+00 0.0 0.0 \n", "1 9.999996e+04 -1.206285e-20 -1.206285e-20 1.0 0.0 \n", "2 9.848078e+04 -2.400340e-18 -2.388277e-18 2.0 0.0 \n", "3 9.396926e+04 -4.727747e-18 -2.327407e-18 3.0 0.0 \n", "4 8.660254e+04 -6.911504e-18 -2.183757e-18 4.0 0.0 \n", "5 7.660444e+04 -8.885258e-18 -1.973754e-18 5.0 0.0 \n", "6 6.427876e+04 -1.058904e-17 -1.703780e-18 6.0 0.0 \n", "7 5.000000e+04 -1.197108e-17 -1.382038e-18 7.0 0.0 \n", "8 3.464669e+04 -1.296684e-17 -9.957653e-19 8.0 0.0 \n", "9 3.420201e+04 -1.298938e-17 -2.253721e-20 9.0 0.0 \n", "10 1.981052e+04 -1.354905e-17 -5.596679e-19 10.0 0.0 \n", "11 1.736482e+04 -1.361301e-17 -6.395896e-20 11.0 0.0 \n", "12 6.305027e+03 -1.379550e-17 -1.824996e-19 12.0 0.0 \n", "13 3.143399e-11 -1.382301e-17 -2.750291e-20 13.0 0.0 \n", "\n", " conjugate_cycle_count cycle_count cycle_sub_count energy_calc_count \\\n", "0 1.0 1.0 0.0 1.0 \n", "1 1.0 1.0 0.0 2.0 \n", "2 1.0 1.0 0.0 3.0 \n", "3 2.0 2.0 0.0 4.0 \n", "4 3.0 3.0 0.0 5.0 \n", "5 4.0 4.0 0.0 6.0 \n", "6 5.0 5.0 0.0 7.0 \n", "7 6.0 6.0 0.0 8.0 \n", "8 7.0 7.0 0.0 9.0 \n", "9 7.0 7.0 0.0 10.0 \n", "10 8.0 8.0 0.0 11.0 \n", "11 8.0 8.0 0.0 12.0 \n", "12 9.0 9.0 0.0 13.0 \n", "13 9.0 9.0 0.0 14.0 \n", "\n", " E_zeeman iteration stage_iteration stage mx my \\\n", "0 0.000000e+00 0.0 0.0 0.0 1.000000e+00 0.0 \n", "1 -1.206285e-20 1.0 1.0 0.0 9.999996e-01 0.0 \n", "2 -2.400340e-18 2.0 2.0 0.0 9.848078e-01 0.0 \n", "3 -4.727747e-18 3.0 3.0 0.0 9.396926e-01 0.0 \n", "4 -6.911504e-18 4.0 4.0 0.0 8.660254e-01 0.0 \n", "5 -8.885258e-18 5.0 5.0 0.0 7.660444e-01 0.0 \n", "6 -1.058904e-17 6.0 6.0 0.0 6.427876e-01 0.0 \n", "7 -1.197108e-17 7.0 7.0 0.0 5.000000e-01 0.0 \n", "8 -1.296684e-17 8.0 8.0 0.0 3.464669e-01 0.0 \n", "9 -1.298938e-17 9.0 9.0 0.0 3.420201e-01 0.0 \n", "10 -1.354905e-17 10.0 10.0 0.0 1.981052e-01 0.0 \n", "11 -1.361301e-17 11.0 11.0 0.0 1.736482e-01 0.0 \n", "12 -1.379550e-17 12.0 12.0 0.0 6.305027e-02 0.0 \n", "13 -1.382301e-17 13.0 13.0 0.0 3.143399e-16 0.0 \n", "\n", " mz \n", "0 0.000000 \n", "1 0.000873 \n", "2 0.173648 \n", "3 0.342020 \n", "4 0.500000 \n", "5 0.642788 \n", "6 0.766044 \n", "7 0.866025 \n", "8 0.938062 \n", "9 0.939693 \n", "10 0.980181 \n", "11 0.984808 \n", "12 0.998010 \n", "13 1.000000 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "system.table.data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using all the utility of the `Table` object, we can analyse the data. For instance, we can plot the energy." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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s2bNYs2aNTWaR0R8h8qwiEgN2bRpk1veNz8/v0rbuStPZdntdqZMmUJcXFyZ0zMefvhhAgICePXVV01KJyK1ncqwiIib/Pqc4aSkJD744AMA+vXrR1JSEocOHSpZd82aNdx999107dqVtm3b0rt3b5566in27t1b6j2nTp1KUlISixcv5oUXXqBz58489thjJa+npKTw1FNP0bdvX9q3b8/ll1/OqFGjWLBgQan3uVCeC50znJuby5QpUxg6dCgdOnSgY8eOXHfddbz99tsUFBSUWnf06NEkJSVRVFTE22+/zYABA2jXrh19+/blpZde4syZM6XW/+qrrzh06BCjRo3C39+/1GtRUVEMHjyYHTt2sGHDhkpMX0SkYvzMDiAi4gsmT57M1KlTSU1N5bnnniMqKoq6desC8Mknn/DnP/+ZpKQkHnjgASIiIti1axcfffQRixcvZs6cObRs2bLU+y1YsIC0tDSefPJJGjRoAMDu3bu59dZbAbj99ttp0qQJp06dYu7cuTz11FPk5OQwduzYcvOcOHGiTHa73c748ePZsmULgwYNYsKECeTm5rJs2TImT57M2rVref/997FYio+v2Gw2AP7yl7+we/du7rjjDoKCgvjss8/48MMPyczM5PXXXy95/2XLlgHQq1ev886ud+/eLFiwgBUrVtClS5cq/28gInI+KsMiIjVg0KBBzJo1CyguffHx8QBkZWXx4osv0qZNGz766CP8/P7313K/fv249dZbefXVV3n//fdLvd/GjRtZsmQJISEhJct27drF5ZdfzvDhwxk2bFip97nmmmuYMWNGSRm+UJ7zmTVrFlu2bGHs2LE8++yzJcvHjh3LI488wqJFi/jyyy+57rrrADAMA4ADBw4wc+ZMrFYrAEOGDKFHjx4sXryYwsJCbDYbTqeTNWvWEB4eTrt27c67/+7du2MYBt999x1PPPFEeWMWEak0nSYhImKiJUuWkJeXx4ABA8jNzSU7O7vkv+bNm9OkSRPWrl1Lbm5uqe369u1bqghDccF99913GTZsGC6XizNnzpCdnU1ISAihoaEcPny4ShkXLVoEwG233VZquWEY3HLLLQAsXbq0zHZ33HFHSREGCAwMJCEhgcLCQjIzM4HifwxkZ2fTqFGjkiPLvxUZGUlERAQHDhyoUn4RkfLoyLCIiIlSUlIAeOONN3jjjTcuuF5aWlrJXRYAGjZsWGYdl8vF7NmzmTdvHrt27aKoqKhaMqampuLv719q/+ckJCQAlDm3GaBJkyZllgUGBgJQWFgIUFKKz50yciF169YlNTWVvLw8goKCKpVfRKQ8KsMiIiY6d8T3oYceKvd2ZnFxcaV+HxoaWmadN998k2nTptGoUSP+9Kc/0bBhw5Ly+cADD5S5cK0yGevUqVNy+sOv1alTB4C8vLwyr/32YrjzOXdbt98e5f6tc3/e7OxslWERqVYqwyIiJjpXAiMiIujWrVuV36ewsJAPPvgAm83GzJkzy5TnSzlKHBwczOnTp0vO8/21c2U+ODi4Su8dFhYGcNGifq40n1tfRKS66JxhERETJSYmAvDzzz+f9/Xz3d3hfLKyssjNzaVJkyZlivCmTZuqfC9igBYtWuByudi9e3eZ15KTk4H/nS5RWedOj7jYnzMzM5M6deroqLCIVDuVYRGRGnLuYrJf35e3X79+BAUFsXjxYvbt21dq/d27d9OnTx/+7//+76LvXbduXWw2G+np6djt9pLlOTk5vPzyyyVHoH9dis+X53yGDBkCwMyZM8u8Nnv2bAAGDx580YznExERQXh4OAcOHMDpdJ53naysLE6ePEnjxo2rtA8RkfKoDIuI1JBzF729+uqr/Pvf/yY1NZWIiAieeeYZioqKGDNmDNOnT+ezzz7jjTfeYMyYMfj7+zNmzJiLvrfVamXw4MGcPHmShx9+mAULFvDuu+8yYsQIrrrqKjp27AgUn1e8cePGC+Y5n9GjR9O5c2fmzZvH448/zoIFC5g3bx4TJkxg+fLlDB48mH79+lVpJhaLhR49enDq1Cm2bt163nV++OEHXC4XV199dZX2ISJSHp0zLCJSQ+655x527NjBjz/+SGpqasl9dW+88Ubq16/Pe++9x7///W9ycnKIjo6mT58+3HPPPRU+BeHZZ58lKCiIFStW8OOPP9K4cWPuvvtubr75ZtatW8eePXuYPXs2gYGBdOrU6bx56tWrV+Z9bTYb7733Hu+99x5ffvklixcvxmq10qxZMyZOnFihsl6ePn368PXXX7Nq1Srat29f5vVVq1aVrCciUt0Ml8vlMjuEiIj4roKCAvr27Yufnx/ffvttqbtQZGZmcs0115CQkMCnn35qYkoRqa10moSIiJgqICCAP/zhDxw7dowPP/yw1GtvvfUW+fn5PPXUUyalE5HaTmVYRERMd9NNN9G7d2+mTp1a8gCP9evXM2fOHG677bZLuu2ciEh5dJqEiIh4hOzsbG699VYMw+Cdd97h5ptvplmzZrz77rsVeoCHiEhVqAyLiIiIiM/SaRIiIiIi4rNUhkVERETEZ6kMi4iIiIjPUhkWEREREZ+lMiwiIiIiPktlWERERER8lsqwiIiIiPgslWERERER8Vn/H9n9TXQYZ8AhAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "system.table.mpl(y=[\"E\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By fecault, iteration is showed on the $x$-axis. We can change that by passing `x` variable. For example:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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GTNmqKioSI899piee+45RUREaObMmdq0aZPbz4P7tbQXK1as0A033KCQkBD9/e9/15w5cxQeHq4bb7xRH330kQc/A7jj68lms+n+++8XI9u9o6U9dLlcuummm7R06VLdddddeumll3TGGWdo9uzZeuuttzz4Gfi3lvbv73//u+6//34NHjxY//jHP/TUU0+pZ8+euvfee/XCCy948DOAJC1cuFBXXHGFysvLm33Od999p5kzZyo0NFTPPvusnnjiCZWWlurqq69WVlZWG1Z7Aga84r777jMGDRpkFBYW1m+rqakxzj//fOO6665z+3lwv5b2YvLkycbFF19s2Gy2+m1VVVXGsGHDjCuvvLItS8aPuOPr6cknnzRGjRplXHrppcbVV1/dRpWiKS3t4XvvvWekpqYa33zzTf02l8tlXHPNNcb999/fliXjOC3t35AhQ4zp06c32OZyuYwLLrjAuOiii9qqXJzAunXrjDPOOMN48803jblz5xqpqanG7t27T3ne1VdfbZx//vlGTU1N/bbCwkLjzDPPNH7/+9+3ZcmNcGXYCwzD0GeffaZRo0YpPj6+fntwcLDGjh2r9evXq6SkxG3nwf1a08Obb75Zf/rTnxQUFFS/PTQ0VN27d1dOTo5H6od7vp527typl156Sb/97W8VHh7e1iXjR1rTw6VLl2rgwIEaPHhw/TaLxaJXX31Vf/7zn9u8drSufyEhIQoJCWmwzWKxKCwsTGFhYW1aNxqKjY3V4sWLdfnllzf7nKNHj2rjxo268MILFRwcXL89Pj5eo0aN0vLlyz36f9sIw16Qk5OjkpIS9enTp9G+vn37yul0ateuXW47D+7X0l5YLBaNHz9eI0aMaLDdbrfrwIEDSklJabOa0VBrv55cLpf++Mc/6uyzz9bUqVPbsFI0pTU9/N///qchQ4a0dYk4idb0b+bMmVq/fr3+85//qLy8XGVlZVqwYIF27dql66+/vo0rx/FSU1OVkZFxWufs3r1bLpdLffv2bbSvb9++Onr0qHJzc91V4ikFeuydUC8/P1+SGvxLuE7dtoKCAredB/dzdy+eeeYZHT16VFdddZV7CsQptbaHixYt0vbt2/X++++3TYE4pZb2sLS0VKWlpUpKStK8efP05ptvKjc3V0lJSbrssst00003KSAgoG2LR6u+Bn/xi18oLCxMf/7zn3X/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "system.table.mpl(x=\"mx\", y=[\"E\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `micromagneticdata` analysis\n", "\n", "Similar to all other drivers, we can use `micromagneticdata` package to analyse the data. We start by creationg the data object:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import micromagneticdata as md\n", "\n", "data = md.Data(name=system.name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can have a look at all drives we did so far:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
drive_numberdatetimedrivertnn_threadsadapterstart_timeadapter_versionoutput_stepend_timeelapsed_timesuccess
002023-01-1617:35:54MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
112023-01-1617:35:58TimeDriver2.000000e-09200.04.0NaNNaNNaNNaNNaNNaNNaN
222023-01-1617:37:00MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
332023-01-1617:37:04TimeDriver2.000000e-09200.04.0NaNNaNNaNNaNNaNNaNNaN
442023-01-1617:37:28MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
552023-01-1617:38:02MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
662023-01-1617:38:06TimeDriver2.000000e-09200.04.0NaNNaNNaNNaNNaNNaNNaN
772023-10-1016:55:09MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
882023-10-1016:55:13TimeDriver2.000000e-09200.04.0NaNNaNNaNNaNNaNNaNNaN
992023-10-1812:37:23MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
10102023-10-1812:39:38MinDriverNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
11112023-10-1812:39:56TimeDriver2.000000e-09200.04.0NaNNaNNaNNaNNaNNaNNaN
12122024-07-1416:10:32MinDriverNaNNaNNaNoommfcNaNNaNNaNNaNNaNNaN
13132024-07-1416:10:37TimeDriver2.000000e-09200.04.0oommfcNaNNaNNaNNaNNaNNaN
14142025-02-0214:11:40MinDriverNaNNaNNaNoommfc2025-02-02T14:11:400.64.1True2025-02-02T14:11:4100:00:01True
15152025-02-0214:11:46TimeDriver2.000000e-09200.04.0oommfc2025-02-02T14:11:460.64.1NaNNaNNaNNaN
16162025-02-0214:14:09MinDriverNaNNaNNaNoommfc2025-02-02T14:14:090.64.1True2025-02-02T14:14:1000:00:01True
17172025-02-0214:14:14TimeDriver2.000000e-09200.04.0oommfc2025-02-02T14:14:140.64.1NaN2025-02-02T14:14:1500:00:02True
18182025-02-0214:32:10MinDriverNaNNaNNaNoommfc2025-02-02T14:32:100.65.0True2025-02-02T14:32:1100:00:01True
\n", "
" ], "text/plain": [ " drive_number date time driver t n \\\n", "0 0 2023-01-16 17:35:54 MinDriver NaN NaN \n", "1 1 2023-01-16 17:35:58 TimeDriver 2.000000e-09 200.0 \n", "2 2 2023-01-16 17:37:00 MinDriver NaN NaN \n", "3 3 2023-01-16 17:37:04 TimeDriver 2.000000e-09 200.0 \n", "4 4 2023-01-16 17:37:28 MinDriver NaN NaN \n", "5 5 2023-01-16 17:38:02 MinDriver NaN NaN \n", "6 6 2023-01-16 17:38:06 TimeDriver 2.000000e-09 200.0 \n", "7 7 2023-10-10 16:55:09 MinDriver NaN NaN \n", "8 8 2023-10-10 16:55:13 TimeDriver 2.000000e-09 200.0 \n", "9 9 2023-10-18 12:37:23 MinDriver NaN NaN \n", "10 10 2023-10-18 12:39:38 MinDriver NaN NaN \n", "11 11 2023-10-18 12:39:56 TimeDriver 2.000000e-09 200.0 \n", "12 12 2024-07-14 16:10:32 MinDriver NaN NaN \n", "13 13 2024-07-14 16:10:37 TimeDriver 2.000000e-09 200.0 \n", "14 14 2025-02-02 14:11:40 MinDriver NaN NaN \n", "15 15 2025-02-02 14:11:46 TimeDriver 2.000000e-09 200.0 \n", "16 16 2025-02-02 14:14:09 MinDriver NaN NaN \n", "17 17 2025-02-02 14:14:14 TimeDriver 2.000000e-09 200.0 \n", "18 18 2025-02-02 14:32:10 MinDriver NaN NaN \n", "\n", " n_threads adapter start_time adapter_version output_step \\\n", "0 NaN NaN NaN NaN NaN \n", "1 4.0 NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN NaN \n", "3 4.0 NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN NaN \n", "5 NaN NaN NaN NaN NaN \n", "6 4.0 NaN NaN NaN NaN \n", "7 NaN NaN NaN NaN NaN \n", "8 4.0 NaN NaN NaN NaN \n", "9 NaN NaN NaN NaN NaN \n", "10 NaN NaN NaN NaN NaN \n", "11 4.0 NaN NaN NaN NaN \n", "12 NaN oommfc NaN NaN NaN \n", "13 4.0 oommfc NaN NaN NaN \n", "14 NaN oommfc 2025-02-02T14:11:40 0.64.1 True \n", "15 4.0 oommfc 2025-02-02T14:11:46 0.64.1 NaN \n", "16 NaN oommfc 2025-02-02T14:14:09 0.64.1 True \n", "17 4.0 oommfc 2025-02-02T14:14:14 0.64.1 NaN \n", "18 NaN oommfc 2025-02-02T14:32:10 0.65.0 True \n", "\n", " end_time elapsed_time success \n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN \n", "5 NaN NaN NaN \n", "6 NaN NaN NaN \n", "7 NaN NaN NaN \n", "8 NaN NaN NaN \n", "9 NaN NaN NaN \n", "10 NaN NaN NaN \n", "11 NaN NaN NaN \n", "12 NaN NaN NaN \n", "13 NaN NaN NaN \n", "14 2025-02-02T14:11:41 00:00:01 True \n", "15 NaN NaN NaN \n", "16 2025-02-02T14:14:10 00:00:01 True \n", "17 2025-02-02T14:14:15 00:00:02 True \n", "18 2025-02-02T14:32:11 00:00:01 True " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.info" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is only one drive and we can get it by passing `0` (ot `-1`) as an index:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "drive = data[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now plot the magnetisation at individual iterations, by indexing it again with the step number and do all usual operations allowed by `discretisedfield.Field` object." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Field\n", "" ], "text/plain": [ "Field(Mesh(Region(pmin=[-5e-08, -5e-08, 0.0], pmax=[5e-08, 5e-08, 1e-08], dims=['x', 'y', 'z'], units=['m', 'm', 'm']), n=[20, 20, 2]), nvdim=3, vdims: (x, y, z), unit=A/m)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drive[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number of steps in the drive is:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "drive.n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us now create an interactive plot. For details on how to create custom interactive plots, please have a look at other tutorials." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "nbval-ignore-output" ] }, "outputs": [ { "data": { "application/javascript": [ "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " var force = true;\n", " var py_version = '3.4.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", " var reloading = false;\n", " var Bokeh = root.Bokeh;\n", "\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) {\n", " if (callback != null)\n", " callback();\n", " });\n", " } finally {\n", " delete root._bokeh_onload_callbacks;\n", " }\n", " console.debug(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", " if (js_modules == null) js_modules = [];\n", " if (js_exports == null) js_exports = {};\n", "\n", " root._bokeh_onload_callbacks.push(callback);\n", "\n", " if (root._bokeh_is_loading > 0) {\n", " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " if (!reloading) {\n", " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " }\n", "\n", " function on_load() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", " run_callbacks()\n", " }\n", " }\n", " window._bokeh_on_load = on_load\n", "\n", " function on_error() {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " var skip = [];\n", " if (window.requirejs) {\n", " window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n", " root._bokeh_is_loading = css_urls.length + 0;\n", " } else {\n", " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", " }\n", "\n", " var existing_stylesheets = []\n", " var links = document.getElementsByTagName('link')\n", " for (var i = 0; i < links.length; i++) {\n", " var link = links[i]\n", " if (link.href != null) {\n", "\texisting_stylesheets.push(link.href)\n", " }\n", " }\n", " for (var i = 0; i < css_urls.length; i++) {\n", " var url = css_urls[i];\n", " if (existing_stylesheets.indexOf(url) !== -1) {\n", "\ton_load()\n", "\tcontinue;\n", " }\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error;\n", " element.rel = \"stylesheet\";\n", " element.type = \"text/css\";\n", " element.href = url;\n", " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", " document.body.appendChild(element);\n", " } var existing_scripts = []\n", " var scripts = document.getElementsByTagName('script')\n", " for (var i = 0; i < scripts.length; i++) {\n", " var script = scripts[i]\n", " if (script.src != null) {\n", "\texisting_scripts.push(script.src)\n", " }\n", " }\n", " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", "\tif (!window.requirejs) {\n", "\t on_load();\n", "\t}\n", "\tcontinue;\n", " }\n", " var element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error;\n", " element.async = false;\n", " element.src = url;\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " for (var i = 0; i < js_modules.length; i++) {\n", " var url = js_modules[i];\n", " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", "\tif (!window.requirejs) {\n", "\t on_load();\n", "\t}\n", "\tcontinue;\n", " }\n", " var element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error;\n", " element.async = false;\n", " element.src = url;\n", " element.type = \"module\";\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " for (const name in js_exports) {\n", " var url = js_exports[name];\n", " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", "\tif (!window.requirejs) {\n", "\t on_load();\n", "\t}\n", "\tcontinue;\n", " }\n", " var element = document.createElement('script');\n", " element.onerror = on_error;\n", " element.async = false;\n", " element.type = \"module\";\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " element.textContent = `\n", " import ${name} from \"${url}\"\n", " window.${name} = ${name}\n", " window._bokeh_on_load()\n", " `\n", " document.head.appendChild(element);\n", " }\n", " if (!js_urls.length && !js_modules.length) {\n", " on_load()\n", " }\n", " };\n", "\n", " function inject_raw_css(css) {\n", " const element = document.createElement(\"style\");\n", " element.appendChild(document.createTextNode(css));\n", " document.body.appendChild(element);\n", " }\n", "\n", " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.3.min.js\", \"https://cdn.holoviz.org/panel/1.4.5/dist/panel.min.js\"];\n", " var js_modules = [];\n", " var js_exports = {};\n", " var css_urls = [];\n", " var inline_js = [ function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {} // ensure no trailing comma for IE\n", " ];\n", "\n", " function run_inline_js() {\n", " if ((root.Bokeh !== undefined) || (force === true)) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", "\ttry {\n", " inline_js[i].call(root, root.Bokeh);\n", "\t} catch(e) {\n", "\t if (!reloading) {\n", "\t throw e;\n", "\t }\n", "\t}\n", " }\n", " // Cache old bokeh versions\n", " if (Bokeh != undefined && !reloading) {\n", "\tvar NewBokeh = root.Bokeh;\n", "\tif (Bokeh.versions === undefined) {\n", "\t Bokeh.versions = new Map();\n", "\t}\n", "\tif (NewBokeh.version !== Bokeh.version) {\n", "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", "\t}\n", "\troot.Bokeh = Bokeh;\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " }\n", " root._bokeh_is_initializing = false\n", " }\n", "\n", " function load_or_wait() {\n", " // Implement a backoff loop that tries to ensure we do not load multiple\n", " // versions of Bokeh and its dependencies at the same time.\n", " // In recent versions we use the root._bokeh_is_initializing flag\n", " // to determine whether there is an ongoing attempt to initialize\n", " // bokeh, however for backward compatibility we also try to ensure\n", " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", " // before older versions are fully initialized.\n", " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", " root._bokeh_is_initializing = false;\n", " root._bokeh_onload_callbacks = undefined;\n", " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", " load_or_wait();\n", " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", " setTimeout(load_or_wait, 100);\n", " } else {\n", " root._bokeh_is_initializing = true\n", " root._bokeh_onload_callbacks = []\n", " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", " if (!reloading && !bokeh_loaded) {\n", "\troot.Bokeh = undefined;\n", " }\n", " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", "\trun_inline_js();\n", " });\n", " }\n", " }\n", " // Give older versions of the autoload script a head-start to ensure\n", " // they initialize before we start loading newer version.\n", " setTimeout(load_or_wait, 100)\n", "}(window));" ], "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.4.3'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n root._bokeh_is_loading = css_urls.length + 0;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.4.3.min.js\", \"https://cdn.holoviz.org/panel/1.4.5/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", "}\n", "\n", "\n", " function JupyterCommManager() {\n", " }\n", "\n", " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", " comm_manager.register_target(comm_id, function(comm) {\n", " comm.on_msg(msg_handler);\n", " });\n", " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", " comm.onMsg = msg_handler;\n", " });\n", " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", " var messages = comm.messages[Symbol.asyncIterator]();\n", " function processIteratorResult(result) {\n", " var message = result.value;\n", " console.log(message)\n", " var content = {data: message.data, comm_id};\n", " var buffers = []\n", " for (var buffer of message.buffers || []) {\n", " buffers.push(new DataView(buffer))\n", " }\n", " var metadata = message.metadata || {};\n", " var msg = {content, buffers, metadata}\n", " msg_handler(msg);\n", " return messages.next().then(processIteratorResult);\n", " }\n", " return messages.next().then(processIteratorResult);\n", " })\n", " }\n", " }\n", "\n", " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", " if (comm_id in window.PyViz.comms) {\n", " return window.PyViz.comms[comm_id];\n", " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", " if (msg_handler) {\n", " comm.on_msg(msg_handler);\n", " }\n", " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", " comm.open();\n", " if (msg_handler) {\n", " comm.onMsg = msg_handler;\n", " }\n", " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", " comm_promise.then((comm) => {\n", " window.PyViz.comms[comm_id] = comm;\n", " if (msg_handler) {\n", " var messages = comm.messages[Symbol.asyncIterator]();\n", " function processIteratorResult(result) {\n", " var message = result.value;\n", " var content = {data: message.data};\n", " var metadata = message.metadata || {comm_id};\n", " var msg = {content, metadata}\n", " msg_handler(msg);\n", " return messages.next().then(processIteratorResult);\n", " }\n", " return messages.next().then(processIteratorResult);\n", " }\n", " }) \n", " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", " return comm_promise.then((comm) => {\n", " comm.send(data, metadata, buffers, disposeOnDone);\n", " });\n", " };\n", " var comm = {\n", " send: sendClosure\n", " };\n", " }\n", " window.PyViz.comms[comm_id] = comm;\n", " return comm;\n", " }\n", " window.PyViz.comm_manager = new JupyterCommManager();\n", " \n", "\n", "\n", "var JS_MIME_TYPE = 'application/javascript';\n", "var HTML_MIME_TYPE = 'text/html';\n", "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", "var CLASS_NAME = 'output';\n", "\n", "/**\n", " * Render data to the DOM node\n", " */\n", "function render(props, node) {\n", " var div = document.createElement(\"div\");\n", " var script = document.createElement(\"script\");\n", " node.appendChild(div);\n", " node.appendChild(script);\n", "}\n", "\n", "/**\n", " * Handle when a new output is added\n", " */\n", "function handle_add_output(event, handle) {\n", " var output_area = handle.output_area;\n", " var output = handle.output;\n", " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", " return\n", " }\n", " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", " if (id !== undefined) {\n", " var nchildren = toinsert.length;\n", " var html_node = toinsert[nchildren-1].children[0];\n", " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", " var scripts = [];\n", " var nodelist = html_node.querySelectorAll(\"script\");\n", " for (var i in nodelist) {\n", " if (nodelist.hasOwnProperty(i)) {\n", " scripts.push(nodelist[i])\n", " }\n", " }\n", "\n", " scripts.forEach( function (oldScript) {\n", " var newScript = document.createElement(\"script\");\n", " var attrs = [];\n", " var nodemap = oldScript.attributes;\n", " for (var j in nodemap) {\n", " if (nodemap.hasOwnProperty(j)) {\n", " attrs.push(nodemap[j])\n", " }\n", " }\n", " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", " oldScript.parentNode.replaceChild(newScript, oldScript);\n", " });\n", " if (JS_MIME_TYPE in output.data) {\n", " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", " }\n", " output_area._hv_plot_id = id;\n", " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", " window.PyViz.plot_index[id] = Bokeh.index[id];\n", " } else {\n", " window.PyViz.plot_index[id] = null;\n", " }\n", " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " var bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " var script_attrs = bk_div.children[0].attributes;\n", " for (var i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", "}\n", "\n", "/**\n", " * Handle when an output is cleared or removed\n", " */\n", "function handle_clear_output(event, handle) {\n", " var id = handle.cell.output_area._hv_plot_id;\n", " var server_id = handle.cell.output_area._bokeh_server_id;\n", " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", " if (server_id !== null) {\n", " comm.send({event_type: 'server_delete', 'id': server_id});\n", " return;\n", " } else if (comm !== null) {\n", " comm.send({event_type: 'delete', 'id': id});\n", " }\n", " delete PyViz.plot_index[id];\n", " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", " var doc = window.Bokeh.index[id].model.document\n", " doc.clear();\n", " const i = window.Bokeh.documents.indexOf(doc);\n", " if (i > -1) {\n", " window.Bokeh.documents.splice(i, 1);\n", " }\n", " }\n", "}\n", "\n", "/**\n", " * Handle kernel restart event\n", " */\n", "function handle_kernel_cleanup(event, handle) {\n", " delete PyViz.comms[\"hv-extension-comm\"];\n", " window.PyViz.plot_index = {}\n", "}\n", "\n", "/**\n", " * Handle update_display_data messages\n", " */\n", "function handle_update_output(event, handle) {\n", " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", " handle_add_output(event, handle)\n", "}\n", "\n", "function register_renderer(events, OutputArea) {\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " var toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[0]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " events.on('output_added.OutputArea', handle_add_output);\n", " events.on('output_updated.OutputArea', handle_update_output);\n", " events.on('clear_output.CodeCell', handle_clear_output);\n", " events.on('delete.Cell', handle_clear_output);\n", " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", "\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " safe: true,\n", " index: 0\n", " });\n", "}\n", "\n", "if (window.Jupyter !== undefined) {\n", " try {\n", " var events = require('base/js/events');\n", " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " } catch(err) {\n", " }\n", "}\n" ], "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "
\n", "
\n", "" ] }, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "p1002" } }, "output_type": "display_data" }, { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", "
\n", "
\n", "" ], "text/plain": [ ":DynamicMap [iteration]\n", " :Overlay\n", " .Image.I :Image [x,z] (field)\n", " .VectorField.I :VectorField [x,z] (angle,mag)" ] }, "execution_count": 11, "metadata": { "application/vnd.holoviews_exec.v0+json": { "id": "p1004" } }, "output_type": "execute_result" } ], "source": [ "drive.register_callback(lambda f: f.sel(\"y\")).hv(kdims=[\"x\", \"z\"]).opts(frame_width=800)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.5" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "450b8cc4a5fb4b788b1c8c901cf93abc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "5a2cad65fee747e3a6cfebeff2e18d2b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "71f51c70826d428d8e07e73234b8b213": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_c37c4af837a74af49d38eef3691a26be", "outputs": [ { "data": { "image/png": "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hx9+iMOHD+Ojjz7yatletviJiIgkbu7cuYiNjUVubi6CgoIAAG+99RYSEhLw5ptvelUXEz8REUkSu/qv2b17N/79738LZvMHBwfj+eefR15enld1saufiIikiV39DiaTCUql0qm8qqrKad3+G2GLn4iIJErm563puPvuu7Fs2TJBkr969SoyMjLQp08fr+pqlMR/+PBhwfaHer0e48aNwx133IGBAwdi7dq1jXFaREREkvTyyy9j//79GDBgACorKzF+/HgMHDgQv/76K1588UWv6rqpXf02mw3r16/H3LlzERAQ4Ch/9dVXodFosGvXLpw4cQLPPPMMYmNjkZiYeDNPj4iIpIRd/Q7t27fHpk2bsHnzZhw7dgxKpRIxMTFITU11TPbzlNeJ/+rVq5DJZE7bAnri/fffx5dffon09HQsW7YMAFBRUYHt27fj66+/RlBQEHr27ImUlBRs3LiRiZ+IqDlj4hdQq9UYPny43/XcMPGXl5dj7dq12LlzJw4dOgSz2QwAUKlUuP3223HvvffioYce8uiHwN/+9jekp6djz549jrKzZ89CoVCgc+fOjrLIyEhs27bNl/dDRERNRRObme+PS5cuITMzE3l5eaiqqnJ6/Ouvv/a4LreJ32q1YunSpVi2bBnCw8MxcOBADB8+HLfccgssFguuXLmC/Px8rF27FosWLcLTTz+NZ555BgqF+98Sbdu2dSozGAxQqVSCMpVKBZPJ5LaeyEULPHlvRER0k+gmPN/gdXKt/mv+85//ID8/H3/9618REhLiV11us/SIESOg1Wrx2WefITo62uUxDz30EADg+PHj+OijjzBixAhs2LDBqxNQq9WorKwUlJlMJmg0Gq/qISIiaqpyc3Px4Ycfonfv3n7X5Tbxz5071+MlAHv06IE5c+bg1KlTXp9AREQEzGYzCgsLER4eDgDQ6XReLT9IRERNEFv8DiEhIQgNDW2QutxezudL4o2NjfX6OcHBwRg8eDAWLFgAo9GIw4cPY/PmzRg6dKjXdRERURNik/l3a0JGjhyJzMxMGI1Gv+vyaFa/2WzG+vXrcerUKZeTCmbNmuXXScyaNQvTp09HcnIyNBoNpkyZ4th3mIiImicZW/wOBw4cwO7du3HnnXeiTZs2gqV7gQaa3FfXiy++iG3btiEuLs7pekGZzPtfVX369MHu3bsd91u1aoVF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\n", "text/plain": "
" }, "metadata": {}, "output_type": "display_data" } ] } }, "a549661baa1441e4955bd15b88d4aa5c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "c37c4af837a74af49d38eef3691a26be": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": {} }, "f055afb58dd7475bafc7c78bbe7a772e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "IntSliderModel", "state": { "continuous_update": false, "description": "step", "layout": "IPY_MODEL_5a2cad65fee747e3a6cfebeff2e18d2b", "max": 13, "style": "IPY_MODEL_450b8cc4a5fb4b788b1c8c901cf93abc" } }, "f1a3ed7946fd4711a432ed4f9c134b99": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "VBoxModel", "state": { "_dom_classes": [ "widget-interact" ], "children": [ "IPY_MODEL_f055afb58dd7475bafc7c78bbe7a772e", "IPY_MODEL_71f51c70826d428d8e07e73234b8b213" ], "layout": "IPY_MODEL_a549661baa1441e4955bd15b88d4aa5c" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }