{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Single Cell apoptosis\n", "\n", "As decribed in [Monier et al. 2015](http://www.nature.com/nature/journal/v518/n7538/full/nature14152.html).\n", "\n", "We start with a simple hexagonal apical mesh with cylindrical symmetry. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Imports" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import json\n", "import matplotlib.pylab as plt\n", "%matplotlib inline\n", "\n", "import ipywidgets as widgets\n", "from IPython.display import display, Image\n", "\n", "import tyssue\n", "from tyssue import Sheet, History\n", "from tyssue import config\n", "\n", "from tyssue import SheetGeometry as geom\n", "from tyssue.dynamics.sheet_vertex_model import SheetModel as basemodel\n", "from tyssue.dynamics.apoptosis_model import SheetApoptosisModel as model\n", "from tyssue.solvers.quasistatic import QSSolver\n", "\n", "\n", "from tyssue.draw import sheet_view, create_gif, browse_history\n", "from tyssue.io.hdf5 import load_datasets\n", "\n", "print(tyssue.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loading the datasets and specifications\n", "\n", "Here it is a cylindrical hexagonal mesh." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Read pre-recorded datasets\n", "h5store = 'data/small_hexagonal.hf5'\n", "from tyssue.io.hdf5 import save_datasets, load_datasets\n", "\n", "datasets = load_datasets(h5store,\n", " data_names=['face', 'vert', 'edge'])\n", "# Corresponding specifications\n", "specs = config.geometry.cylindrical_sheet()\n", "sheet = Sheet('emin', datasets, specs)\n", "sheet.sanitize(trim_borders=True, order_edges=True)\n", "\n", "geom.update_all(sheet)\n", "# Model\n", "nondim_specs = config.dynamics.quasistatic_sheet_spec()\n", "dim_model_specs = model.dimensionalize(nondim_specs)\n", "sheet.update_specs(dim_model_specs)\n", "\n", "sheet.get_opposite()\n", "live_edges = sheet.edge_df[sheet.edge_df['opposite']==-1].index\n", "dead_src = sheet.edge_df.loc[live_edges, 'srce'].unique()\n", "\n", "### Boundary conditions\n", "sheet.vert_df.is_active = 1\n", "sheet.vert_df.loc[dead_src, 'is_active'] = 0\n", "\n", "sheet.edge_df['is_active'] = sheet.upcast_srce('is_active') * sheet.upcast_trgt('is_active')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### First energy minimization" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "min_settings = {\n", "# \"minimize\":{\n", " 'options': {\n", " 'disp': False,\n", " 'ftol': 1e-6,\n", " 'gtol': 1e-5},\n", "# }\n", "}\n", "solver = QSSolver()\n", "\n", "res = solver.find_energy_min(sheet, geom, model, **min_settings)\n", "print(res['success'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Custom display function" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def leg_joint_view(sheet, coords=['z', 'x', 'y']):\n", " \n", " geom.update_all(sheet)\n", " x, y, z = coords\n", " datasets = {}\n", " \n", " datasets['face'] = sheet.face_df.sort_values(z)\n", " datasets['vert'] = sheet.vert_df.sort_values(z)\n", " edge_z = 0.5 * (sheet.upcast_srce(sheet.vert_df[z]) +\n", " sheet.upcast_trgt(sheet.vert_df[z]))\n", " datasets['edge'] = sheet.edge_df.copy()\n", " datasets['edge'][z] = edge_z\n", " datasets['edge'] = datasets['edge'].sort_values(z)\n", " \n", " tmp_sheet = Sheet('tmp', datasets,\n", " sheet.specs)\n", " tmp_sheet.reset_index()\n", "\n", " draw_specs = {\n", " 'vert': {\n", " 'visible': False\n", " },\n", " 'edge': {\n", " 'color': tmp_sheet.edge_df[z],\n", " #'zorder': depth.values\n", " }\n", " }\n", " \n", " fig, ax = sheet_view(tmp_sheet, coords[:2], mode='2D', **draw_specs)\n", " ax.set_xlim(-15, 15)\n", " ax.set_ylim(-10, 10)\n", " ax.set_facecolor('#404040')\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " fig.set_size_inches((10, 12))\n", " return fig, ax\n", "\n", "fig, ax = leg_joint_view(sheet)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Choosing an apoptotic cell " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "apoptotic_cell = 16\n", "print('Apoptotic cell position:\\n{}'.format(sheet.face_df.loc[apoptotic_cell, sheet.coords]))\n", "apoptotic_edges = sheet.edge_df[sheet.edge_df['face'] == apoptotic_cell]\n", "apoptotic_verts = apoptotic_edges['srce'].values\n", "print(\"Indices of the apoptotic vertices: {}\".format(apoptotic_verts))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cell behaviours, such as division or apoptosis, are defined as a series of unit changes in the tissue, such as the cell growth, or the abscission of the cell face once division is complete. For a given behavior, the next step often depends on the current state. This is managed by an EventManager object, which runs the behaviour.\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from tyssue.behaviors.sheet import apoptosis\n", "from tyssue.behaviors import EventManager\n", "\n", "\n", "manager = EventManager('face')\n", "\n", "\n", "sheet.settings['apoptosis'] = {\n", " 'shrink_rate': 1.2,\n", " 'critical_area': 8.,\n", " 'radial_tension': 0.2,\n", " 'contractile_increase': 0.3,\n", " 'contract_span': 2\n", " }\n", "\n", "sheet.face_df['id'] = sheet.face_df.index.values\n", "manager.append(apoptosis, face_id=apoptotic_cell, **sheet.settings['apoptosis'])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the code for the apoptosis behavior:\n", "\n", "```py\n", "def apoptosis(sheet, manager, **kwargs):\n", " \"\"\"Apoptotic behavior\n", "\n", " While the cell's apical area is bigger than a threshold, the\n", " cell shrinks, and the contractility of its neighbors is increased.\n", " once the critical area is reached, the cell is eliminated\n", " from the apical surface through successive type 1 transition. Once\n", " only three sides are left, the cell is eliminated from the tissue.\n", "\n", " Parameters\n", " ----------\n", " sheet : a :class:`Sheet` object\n", " manager : a :class:`EventManager` object\n", " face_id : int,\n", " the id of the apoptotic cell\n", " shrink_rate : float, default 0.1\n", " the rate of reduction of the cell's prefered volume\n", " e.g. the prefered volume is devided by a factor 1+shrink_rate\n", " critical_area : area at which the face is eliminated from the sheet\n", " radial_tension : amount of radial tension added at each contraction steps\n", " contractile_increase : increase in contractility at the cell neighbors\n", " contract_span : number of neighbors affected by the contracitity increase\n", " geom : the geometry class used\n", " \"\"\"\n", "\n", " apoptosis_spec = default_apoptosis_spec\n", " apoptosis_spec.update(**kwargs)\n", " face = apoptosis_spec[\"face\"]\n", "\n", " if sheet.face_df.loc[face, \"area\"] > apoptosis_spec[\"critical_area\"]:\n", " # Shrink and pull\n", " shrink(sheet, face, apoptosis_spec[\"shrink_rate\"])\n", " ab_pull(sheet, face, apoptosis_spec[\"radial_tension\"])\n", " # contract neighbors\n", " neighbors = sheet.get_neighborhood(\n", " face, apoptosis_spec[\"contract_span\"]\n", " ).dropna()\n", " neighbors[\"id\"] = sheet.face_df.loc[neighbors.face, \"id\"].values\n", " manager.extend(\n", " [\n", " (\n", " contraction,\n", " {\n", " \"face_id\": neighbor[\"id\"],\n", " \"contractile_increase\": (\n", " apoptosis_spec[\"contractile_increase\"] / neighbor[\"order\"],\n", " ),\n", " },\n", " )\n", " for _, neighbor in neighbors.iterrows()\n", " ]\n", " )\n", " done = False\n", " else:\n", " if sheet.face_df.loc[face, \"num_sides\"] > 3:\n", " exchange(sheet, face, apoptosis_spec[\"geom\"])\n", " done = False\n", " else:\n", " remove(sheet, face, apoptosis_spec[\"geom\"])\n", " done = True\n", " if not done:\n", " manager.append(apoptosis, **apoptosis_spec)\n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We perform the events at each time points to run the simulation" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "t = 0\n", "stop=100\n", "\n", "progress = widgets.IntProgress(min=0, max=stop)\n", "progress.value = 0\n", "display(progress)\n", "\n", "history = History(sheet)\n", "\n", "while manager.current and t < stop:\n", " manager.execute(sheet)\n", " t += 1\n", " progress.value = t\n", " res = solver.find_energy_min(sheet, geom, model, **min_settings)\n", " history.record()\n", " manager.update()\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3D view with ipyvolume" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "color = sheet.vert_df['y']\n", "fig, mesh = sheet_view(sheet, coords=['z', 'x', 'y'], edge={\"color\":color}, mode=\"3D\")\n", "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Provided you have ImageMagick installed, we can convert the output to a nice gif, like so:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "browse_history(history, edge={\"color\":lambda s : s.edge_df[\"length\"]})" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "create_gif(\n", " history,\n", " 'single_apopto.gif',\n", " num_frames=15,\n", " draw_func=leg_joint_view\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Image(\"single_apopto.gif\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "16366d638fbd4786a3d059399b5d077b": { "buffers": [ { "data": "zsL+PfD3Ez+JXAw/DmduPop0Oz9bJus+dqcLP7mJVj/aHo0+fLk/PpZZ1D7deQ4/PPlEPhlwzj5FSw4/KA0FPsRADz/2Rg0/dR51Pn9PPD/wT+k+KA0FPsRADz/2Rg0/DmduPop0Oz9bJus+GVgTP3o1WD/USIM+MzQOP+MaVz8z34k+mRFOPmVwxD425g0/mRFOPmVwxD425g0/idEDPiMyED9YHQ0/DmduPop0Oz9bJus+MKECPpIjET898Qw/dR51Pn9PPD/wT+k+MzQOP+MaVz8z34k+/u4VP8a+WD8A5X8+xjRDPk1q0D7ZWw4/fLk/PpZZ1D7deQ4/zsL+PfD3Ez+JXAw/DmduPop0Oz9bJus+dqcLP7mJVj/aHo0+2zNLPx10YT8uxfU9qOJiP59yZD9yU8M9jExgP8UgZD9vEsM9OnVlPwXEZD9JS8U9gEV+P+j5Zz/1YxM+gEV+P+j5Zz/1YxM+B7NdP2TOYz8Cg8Q9395NP8TNYT/Fcus9qOJiP59yZD9yU8M9/wNoPzgVZT/D9cg92zNLPx10YT8uxfU9qOJiP59yZD9yU8M92zNLPx10YT8uxfU9dqcLP7mJVj/aHo0+B7NdP2TOYz8Cg8Q9m8s9P1uaXz+FJhk+dR4JPwH2VT8/VpA+ol4wPwCOXT9DHDs+odlFP/W7YD9wQQY+Z3v0PidKUj906qI+VWnTPhiUTT/267Y+2zNLPx10YT8uxfU9dqcLP7mJVj/aHo0+DmduPop0Oz9bJus+zsL+PfD3Ez+JXAw/ndRnPmeYOj+u8uw+zsL+PfD3Ez+JXAw/gSIWPgFNLD+hSQI/fxJPPhEcNz9IwfM+gsgSPnTUBT9ZaQ4/ZJAbPuQsAD8Gvg4/DmduPop0Oz9bJus+zsL+PfD3Ez+JXAw/fLk/PpZZ1D7deQ4/5+OCPt16hT51Pwc/CHVBPsxi0j5haw4/vCNzPnBDnD5Wuwo/SMKOPqezMz7Qf/c+veKJPtMRYD6jcwI/Brx8PnEEkT5uMwk/mRFOPmVwxD425g0/UySPPoGxLj4rwvU+9rOQPuhOED6rP+o+fLk/PpZZ1D7deQ4/5+OCPt16hT51Pwc/UYiQPvVpFT4KS+w+SriQPo8zzT1bJdg+Mv+QPqPp7D13St8+cZGLPn9p0TybyLQ+JXqJPkpeHTwWvas+TtWNPoM1Tj23XcA+GjaKPrKdbzw6ya4+Ko2QPsR3wj1prNU+gsaMPtehGj1hpbo+wLSIPhO2nzsVqag+UYiQPvVpFT4KS+w+SriQPo8zzT1bJdg+UYiQPvVpFT4KS+w+5+OCPt16hT51Pwc/Mv+QPqPp7D13St8+RiOPPprtij1Yqcg+Ci2LPodTVj6WIgE/LH2IPoS9aT5grAM/RiOPPprtij1Yqcg+TvGQPpxp4j2l9Nw+1v6GPopVcz6WzQQ/bouKPuc0Wz4pzgE/UYiQPvVpFT4KS+w+5+OCPt16hT51Pwc/tcL0PcOCGz+6Swo/", "encoding": "base64", "path": [ "color", 0, "buffer" ] }, { "data": "AAAAAAEAAAADAAAAAAAAAAEAAAAGAAAABAAAAAMAAAAFAAAABAAAAAYAAAAFAAAABQAAAAYAAAAHAAAABQAAAAYAAAAKAAAACAAAAAcAAAAJAAAACAAAAAoAAAAJAAAABwAAAAgAAAALAAAABwAAAAgAAAAOAAAADAAAAAsAAAANAAAADAAAAA4AAAANAAAADQAAAA4AAAAPAAAADQAAAA4AAAASAAAAEAAAAA8AAAARAAAAEAAAABIAAAARAAAADwAAABAAAAATAAAADwAAABAAAAAWAAAAFAAAABMAAAAVAAAAFAAAABYAAAAVAAAAAQAAAAIAAAAGAAAAAQAAAAIAAAAYAAAACgAAAAYAAAAaAAAACgAAABgAAAAaAAAACQAAAAoAAAAbAAAACQAAAAoAAAAaAAAAGgAAAB0AAAAcAAAAGwAAAB0AAAAcAAAACAAAAAkAAAAOAAAACAAAAAkAAAAbAAAAEgAAAA4AAAAeAAAAEgAAABsAAAAeAAAAEQAAABIAAAAfAAAAEQAAABIAAAAeAAAAHgAAACEAAAAgAAAAHwAAACEAAAAgAAAAEAAAABEAAAAWAAAAEAAAABEAAAAfAAAAFwAAABYAAAAiAAAAFwAAAB8AAAAiAAAAGAAAABkAAAAaAAAAGAAAABkAAAAkAAAAHQAAABoAAAAmAAAAHQAAACQAAAAmAAAAHAAAAB0AAAAnAAAAHAAAAB0AAAAmAAAAJgAAACgAAAAoAAAAJwAAACgAAAAxAAAAGwAAABwAAAAeAAAAGwAAABwAAAAnAAAAIQAAAB4AAAApAAAAIQAAACcAAAApAAAAIAAAACEAAAAqAAAAIAAAACEAAAApAAAAKQAAACwAAAArAAAAKgAAACwAAAArAAAAHwAAACAAAAAiAAAAHwAAACAAAAAqAAAAIwAAACIAAAAtAAAAIwAAACoAAAAtAAAAJAAAACUAAAAmAAAAJAAAACUAAAAvAAAAKAAAACYAAAAxAAAAXQAAAC8AAAAxAAAAMQAAACgAAABdAAAAMQAAAF0AAAAyAAAAJwAAACgAAAApAAAAJwAAACwAAAApAAAAMwAAACwAAAAyAAAAMwAAACsAAAAsAAAANAAAACsAAAAsAAAAMwAAADMAAAA2AAAANQAAADQAAAA2AAAANQAAACoAAAArAAAALQAAACoAAAArAAAANAAAAC4AAAAtAAAANwAAAC4AAAA0AAAANwAAAC8AAAAwAAAAMQAAAC8AAAAwAAAAOQAAADsAAABdAAAAOQAAADsAAAA8AAAAMgAAAF0AAAA7AAAAOwAAAD4AAAA9AAAAPAAAAD4AAAA9AAAAMgAAAF0AAAAzAAAAMgAAADIAAAA8AAAANgAAADMAAAA/AAAANgAAADwAAAA/AAAANQAAADYAAABAAAAANQAAADYAAAA/AAAAPwAAAEIAAABBAAAAQAAAAEIAAABBAAAANAAAADUAAAA3AAAANAAAADUAAABAAAAAOAAAADcAAABDAAAAOAAAAEAAAABDAAAAOQAAADoAAAA7AAAAOQAAADoAAABFAAAAPgAAADsAAABHAAAAPgAAAEUAAABHAAAAPQAAAD4AAABIAAAAPQAAAD4AAABHAAAARwAAAEoAAABJAAAASAAAAEoAAABJAAAAPAAAAD0AAAA/AAAAPAAAAD0AAABIAAAAQgAAAD8AAABLAAAAQgAAAEgAAABLAAAAQQAAAEIAAABMAAAAQQAAAEIAAABLAAAASwAAAE4AAABNAAAATAAAAE4AAABNAAAAQAAAAEEAAABDAAAAQAAAAEEAAABMAAAARAAAAEMAAABPAAAARAAAAEwAAABPAAAARQAAAEYAAABHAAAARQAAAEYAAABRAAAASgAAAEcAAABTAAAASgAAAFEAAABTAAAASQAAAEoAAABUAAAASQAAAEoAAABTAAAAUwAAAFYAAABVAAAAVAAAAFYAAABVAAAASAAAAEkAAABLAAAASAAAAEkAAABUAAAATgAAAEsAAABXAAAATgAAAFQAAABXAAAATQAAAE4AAABYAAAATQAAAE4AAABXAAAAVwAAAFoAAABZAAAAWAAAAFoAAABZAAAATAAAAE0AAABPAAAATAAAAE0AAABYAAAAUAAAAE8AAABbAAAAUAAAAFgAAABbAAAAAwAAAAQAAABSAAAAAwAAAAQAAABWAAAAUQAAAFIAAABTAAAAUQAAAFYAAABTAAAABAAAAAUAAABWAAAABAAAAAUAAAAHAAAABwAAAAsAAAALAAAAVQAAAFUAAABWAAAACwAAAAwAAABVAAAACwAAAAwAAABaAAAAVAAAAFUAAABXAAAAVAAAAFoAAABXAAAADAAAAA0AAABaAAAADAAAAA0AAAAPAAAADwAAABMAAAATAAAAWQAAAFkAAABaAAAAEwAAABQAAABZAAAAEwAAABQAAABcAAAAWAAAAFkAAABbAAAAWAAAAFwAAABbAAAA", "encoding": "base64", "path": [ "lines", 0, "buffer" ] }, { "data": "xT5qwe32TMHFPmrB7fZMwWMACMFyP9vASVcJweLEYsA2LNK/udZqwGc64MDbvcK/wE+4P0XhVkC//qo/KbjXQCLZBUEUedRAgDlMQBYdB0Ht9kxBxT5qQe32TEHFPmpB7fZMwcU+asH9BQzBxajlvzMAd8DVDenAnAGGPyVSA0GPacpAhrUzQO32TEHFPmpB7fZMwcU+asEVTw/BdfoRwP3EwcAeBru9jTb9QFhNyEB3Es4/7fZMQcU+akHt9kzBxT5qwR1x3sBPAy7ADMAKPzUGA0E7R9hAvGN8QO32TEHFPmpB7fZMwcU+asFQ1QDB49CqvwNgTcAzSNLAbtcBQGdGCkGVluBAlwxwQO32TEHFPmpB7fZMwcU+asENCgXBaFevvwxiVcCX4dfAlCDcP5E4CUEUL9xAc3tjQO32TEHFPmpB7fZMwcU+asFe9QbBz9O4v7a4XMBcMtnAVlPFP6X/B0GRPNlAlCpdQO32TEHFPmpBMOu1wA==", "encoding": "base64", "path": [ "x", 0, "buffer" ] }, { "data": "aiUBQYeh7kDmo7ZAh6HuQD90/EBIywxB6nsBQSz8EkHczwxBsSrjQLuv20At4wdBW+UHQfr3EUGoIgtBWRELQR+V+0A5WMlAhVvWQJ7y+0CHoe5AaiUBQYeh7kDmo7ZAObBFQNl0DiYZxXNArxqIQChGrT9uibg/9iOAQCw5U0ARtpE9aD6XPjmwRUDZdA4mObBFwOajtsDFEjHAfG5UwABbosDdI2fA57RCwAaau8A6lLzAObBFwOajtsCHoe7AaiUBwbN918CT/vrA4gfzwKBG88DAQgfBowIMwYeh7sBqJQHBh6HuwOajtsAyjuXA3ujxwASgusA2WbLAlp/6wLuC9sDXRbHAt+S5wIeh7sDmo7bAObBFwDl88KfH5kHAT5gvwLEi2D7WgJ4+icYtwKg5Q8A5p/c+7IEHPzmwRcA5fPCnObBFQOajtkB/zlNAtkBzQN2Hz0A4RsVAK0B2QJibWEB7QchAvnbRQDmwRUDmo7ZA0SvtwA==", "encoding": "base64", "path": [ "y", 0, "buffer" ] }, { "data": "aiWBJzmwRUDmo7ZAObBFwIiuVcAeaZ6+nd9IQEtKpb5w2kNA7/q+QPXYuEBSEWvAOlRowH/DXL6Gr0VAzLQWvhxbSECoW7lA8r6/QM0QUcA5sEXAaiWBJzmwRUDmo7ZAh6HuQGolAUEa8f5AdtIBQb35DUHDOg5BAB/+QMkn8EAzsgBBDB0DQYeh7kBqJQFBh6HuQOajtkCz+/xA1OfhQIAmtUBLotZAmgfpQGzFpkDymJdAh6HuQOajtkA5sEVA2XSOpux/Q0BdVdM8H7LzP/pRL0BWSYG/uV62vzmwRUDZdI6mObBFwOajtsA8S0zAcAihwHQk38CI/MvAL2eswKABbMDkgOHAw4XwwDmwRcDmo7bAh6HuwGolAcHNXfzAZNAPwTC/E8G/rgvBFiUSwTp/AsE3vw3BMRQVwYeh7sBqJQHBh6HuwOajtsD3F/zALgAIwQYuz8AGXMbALgsIwRvo/MBmZcPATi7NwIeh7sDmo7bAeeQdPw==", "encoding": "base64", "path": [ "z", 0, "buffer" ] } ], "model_module": "ipyvolume", "model_module_version": "~0.4.2", "model_name": "MeshModel", "state": { "_dom_classes": [], "color": [ { "buffer": {}, "dtype": "float32", "shape": [ 94, 3 ] } ], "layout": "IPY_MODEL_78effc6e7eda4d61b75804fbf9cc38f7", "lines": [ { "buffer": {}, "dtype": "uint32", "shape": [ 234, 2 ] } ], "side": "both", "texture": null, "triangles": null, "u": null, "v": null, "x": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ], "y": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ], "z": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ] } }, "1b7a88f1bb39491c83c89396a103cbfd": { "buffers": [ { "data": "wLSIPhO2nzsVqag+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+WFiQPs+itz0PKNM+tTeAPr1vjD5weQg/FlFjPoOmrT4Deww/kh+BPv8gij6QFQg/w0gvPgOy5z7L1g4/SiYXPu8AAz/Dmg4/4nQyPs/c4z51yw4/oUhnPkZfqT7FHAw/NrAVPhvyAz/0iw4/DJT0Pb1zHD+5+gk/gSIWPgFNLD+hSQI/tcL0PcOCGz+6Swo/Ab6jPp9aRT+EgtI+kBPmPhpTUD90t6s+Ab6jPp9aRT+EgtI+NpMPPrx1Kj/0bwM/kBPmPhpTUD90t6s+QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+xQOCPl/Phz73rAc/rp0YPqEPAj/wpw4/qg80PsPw4T5yxA4/s0BrPoAMpT5jsws/y/L1PWqgGT8/4wo/zqncPhb4Tj9NZbE+GMyXPqn1Qj/CM9k+Q3EHPv+uJz+BCAU/QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+tr+DPnkjgz7VzAY/04cePoaT/D6azg4/RaFVPv1JvD4cfA0/idEDPiMyED9YHQ0/VWnTPhiUTT/267Y+dO2TPhwmQj+nWts+wCT1PVxVHj8JTgk/QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+mExlPlWEqz40TQw/XoUkPjID9T6g4A4/K9r8PXDpFD9bJQw/zqncPhb4Tj9NZbE+4dSnPo4jRj8eM9A+TmAqPvDbMD+DNf4+QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+nfJ4PhWNlT4v3Ak/gsgSPnTUBT9ZaQ4/OSksPoyD6z523g4/eV1fPpvisT5Kzww/FJb4PWMmIT9iLwg/paTvPs+kUT8R46U+eCqwPvuvRz+Gdcs+saMhPjkLLz9+bgA/QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+Brx8PnEEkT5uMwk/gsgSPnTUBT9ZaQ4/rrctPiyb6T4O2w4/n1ZhPu/Frz5Vpgw/B+31PfFFHz858gg/UtfqPir9UD/60ag+HvmrPqfqRj9e2c0+ZJYdPskhLj9rEQE/QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+WFiQPs+itz0PKNM+wLSIPhO2nzsVqag+mph+Ppm7jj6p2Ag/tDsUPkfjBD+Bew4/w0gvPgOy5z7L1g4/FlFjPoOmrT4Deww/gbP0PaZkHT8vpgk/UtfqPir9UD/60ag+4dSnPo4jRj8eM9A+ZsAZPrA3LT/RrwE/QdRVP8zSYj8RONI9gEV+P+j5Zz/1YxM+v+9PPiNqwj4Hzg0/", "encoding": "base64", "path": [ "color", 0, "buffer" ] }, { "data": "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", "encoding": "base64", "path": [ "lines", 0, "buffer" ] }, { "data": "xT5qwe32TMHFPmrB7fZMwWMACMFyP9vASVcJweLEYsA2LNK/udZqwGc64MDbvcK/wE+4P0XhVkC//qo/KbjXQCLZBUEUedRAgDlMQBYdB0Ht9kxBxT5qQe32TEHFPmpB7fZMwcU+asH9BQzBxajlvzMAd8DVDenAnAGGPyVSA0GPacpAhrUzQO32TEHFPmpB7fZMwcU+asEVTw/BdfoRwP3EwcAeBru9jTb9QFhNyEB3Es4/7fZMQcU+akHt9kzBxT5qwR1x3sBPAy7ADMAKPzUGA0E7R9hAvGN8QO32TEHFPmpB7fZMwcU+asFQ1QDB49CqvwNgTcAzSNLAbtcBQGdGCkGVluBAlwxwQO32TEHFPmpB7fZMwcU+asENCgXBaFevvwxiVcCX4dfAlCDcP5E4CUEUL9xAc3tjQO32TEHFPmpB7fZMwcU+asFe9QbBz9O4v7a4XMBcMtnAVlPFP6X/B0GRPNlAlCpdQO32TEHFPmpBMOu1wA==", "encoding": "base64", "path": [ "x", 0, "buffer" ] }, { "data": "aiUBQYeh7kDmo7ZAh6HuQD90/EBIywxB6nsBQSz8EkHczwxBsSrjQLuv20At4wdBW+UHQfr3EUGoIgtBWRELQR+V+0A5WMlAhVvWQJ7y+0CHoe5AaiUBQYeh7kDmo7ZAObBFQNl0DiYZxXNArxqIQChGrT9uibg/9iOAQCw5U0ARtpE9aD6XPjmwRUDZdA4mObBFwOajtsDFEjHAfG5UwABbosDdI2fA57RCwAaau8A6lLzAObBFwOajtsCHoe7AaiUBwbN918CT/vrA4gfzwKBG88DAQgfBowIMwYeh7sBqJQHBh6HuwOajtsAyjuXA3ujxwASgusA2WbLAlp/6wLuC9sDXRbHAt+S5wIeh7sDmo7bAObBFwDl88KfH5kHAT5gvwLEi2D7WgJ4+icYtwKg5Q8A5p/c+7IEHPzmwRcA5fPCnObBFQOajtkB/zlNAtkBzQN2Hz0A4RsVAK0B2QJibWEB7QchAvnbRQDmwRUDmo7ZA0SvtwA==", "encoding": "base64", "path": [ "y", 0, "buffer" ] }, { "data": "aiWBJzmwRUDmo7ZAObBFwIiuVcAeaZ6+nd9IQEtKpb5w2kNA7/q+QPXYuEBSEWvAOlRowH/DXL6Gr0VAzLQWvhxbSECoW7lA8r6/QM0QUcA5sEXAaiWBJzmwRUDmo7ZAh6HuQGolAUEa8f5AdtIBQb35DUHDOg5BAB/+QMkn8EAzsgBBDB0DQYeh7kBqJQFBh6HuQOajtkCz+/xA1OfhQIAmtUBLotZAmgfpQGzFpkDymJdAh6HuQOajtkA5sEVA2XSOpux/Q0BdVdM8H7LzP/pRL0BWSYG/uV62vzmwRUDZdI6mObBFwOajtsA8S0zAcAihwHQk38CI/MvAL2eswKABbMDkgOHAw4XwwDmwRcDmo7bAh6HuwGolAcHNXfzAZNAPwTC/E8G/rgvBFiUSwTp/AsE3vw3BMRQVwYeh7sBqJQHBh6HuwOajtsD3F/zALgAIwQYuz8AGXMbALgsIwRvo/MBmZcPATi7NwIeh7sDmo7bAeeQdPw==", "encoding": "base64", "path": [ "z", 0, "buffer" ] } ], "model_module": "ipyvolume", "model_module_version": "~0.4.2", "model_name": "MeshModel", "state": { "_dom_classes": [], "color": [ { "buffer": {}, "dtype": "float32", "shape": [ 94, 3 ] } ], "layout": "IPY_MODEL_1e37dd66ede1420bb848c475f29bd939", "lines": [ { "buffer": {}, "dtype": "uint32", "shape": [ 234, 2 ] } ], "side": "both", "texture": null, "triangles": null, "u": null, "v": null, "x": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ], "y": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ], "z": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ] } }, "1e37dd66ede1420bb848c475f29bd939": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "464c4da6d56d45ff920548c6f7464104": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "5f30ec5c421840559f968636eff989e6": { "buffers": [ { "data": "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", "encoding": "base64", "path": [ "lines", 0, "buffer" ] }, { "data": "xT5qwe32TMHFPmrB7fZMwWMACMFyP9vASVcJweLEYsA2LNK/udZqwGc64MDbvcK/wE+4P0XhVkC//qo/KbjXQCLZBUEUedRAgDlMQBYdB0Ht9kxBxT5qQe32TEHFPmpB7fZMwcU+asH9BQzBxajlvzMAd8DVDenAnAGGPyVSA0GPacpAhrUzQO32TEHFPmpB7fZMwcU+asEVTw/BdfoRwP3EwcAeBru9jTb9QFhNyEB3Es4/7fZMQcU+akHt9kzBxT5qwR1x3sBPAy7ADMAKPzUGA0E7R9hAvGN8QO32TEHFPmpB7fZMwcU+asFQ1QDB49CqvwNgTcAzSNLAbtcBQGdGCkGVluBAlwxwQO32TEHFPmpB7fZMwcU+asENCgXBaFevvwxiVcCX4dfAlCDcP5E4CUEUL9xAc3tjQO32TEHFPmpB7fZMwcU+asFe9QbBz9O4v7a4XMBcMtnAVlPFP6X/B0GRPNlAlCpdQO32TEHFPmpBMOu1wA==", "encoding": "base64", "path": [ "x", 0, "buffer" ] }, { "data": "aiUBQYeh7kDmo7ZAh6HuQD90/EBIywxB6nsBQSz8EkHczwxBsSrjQLuv20At4wdBW+UHQfr3EUGoIgtBWRELQR+V+0A5WMlAhVvWQJ7y+0CHoe5AaiUBQYeh7kDmo7ZAObBFQNl0DiYZxXNArxqIQChGrT9uibg/9iOAQCw5U0ARtpE9aD6XPjmwRUDZdA4mObBFwOajtsDFEjHAfG5UwABbosDdI2fA57RCwAaau8A6lLzAObBFwOajtsCHoe7AaiUBwbN918CT/vrA4gfzwKBG88DAQgfBowIMwYeh7sBqJQHBh6HuwOajtsAyjuXA3ujxwASgusA2WbLAlp/6wLuC9sDXRbHAt+S5wIeh7sDmo7bAObBFwDl88KfH5kHAT5gvwLEi2D7WgJ4+icYtwKg5Q8A5p/c+7IEHPzmwRcA5fPCnObBFQOajtkB/zlNAtkBzQN2Hz0A4RsVAK0B2QJibWEB7QchAvnbRQDmwRUDmo7ZA0SvtwA==", "encoding": "base64", "path": [ "y", 0, "buffer" ] }, { "data": "aiWBJzmwRUDmo7ZAObBFwIiuVcAeaZ6+nd9IQEtKpb5w2kNA7/q+QPXYuEBSEWvAOlRowH/DXL6Gr0VAzLQWvhxbSECoW7lA8r6/QM0QUcA5sEXAaiWBJzmwRUDmo7ZAh6HuQGolAUEa8f5AdtIBQb35DUHDOg5BAB/+QMkn8EAzsgBBDB0DQYeh7kBqJQFBh6HuQOajtkCz+/xA1OfhQIAmtUBLotZAmgfpQGzFpkDymJdAh6HuQOajtkA5sEVA2XSOpux/Q0BdVdM8H7LzP/pRL0BWSYG/uV62vzmwRUDZdI6mObBFwOajtsA8S0zAcAihwHQk38CI/MvAL2eswKABbMDkgOHAw4XwwDmwRcDmo7bAh6HuwGolAcHNXfzAZNAPwTC/E8G/rgvBFiUSwTp/AsE3vw3BMRQVwYeh7sBqJQHBh6HuwOajtsD3F/zALgAIwQYuz8AGXMbALgsIwRvo/MBmZcPATi7NwIeh7sDmo7bAeeQdPw==", "encoding": "base64", "path": [ "z", 0, "buffer" ] } ], "model_module": "ipyvolume", "model_module_version": "~0.4.2", "model_name": "MeshModel", "state": { "_dom_classes": [], "color": "#2b5d0a", "layout": "IPY_MODEL_464c4da6d56d45ff920548c6f7464104", "lines": [ { "buffer": {}, "dtype": "uint32", "shape": [ 234, 2 ] } ], "side": "both", "texture": null, "triangles": null, "u": null, "v": null, "x": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ], "y": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ], "z": [ { "buffer": {}, "dtype": "float32", "shape": [ 94 ] } ] } }, "6e675aa2464d4919b9340b5406488f95": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "78effc6e7eda4d61b75804fbf9cc38f7": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "da1d4fb59f8d4de2a42d963f423e7fc1": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.0.0", "model_name": "LayoutModel", "state": {} }, "de364e1f1e0a4743a2dbfa61fb9bfa21": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.1.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_f2a9364572c6461fa426f4e8f86fb96a" ], "layout": "IPY_MODEL_da1d4fb59f8d4de2a42d963f423e7fc1" } }, "f2a9364572c6461fa426f4e8f86fb96a": { "model_module": "ipyvolume", "model_module_version": "~0.4.2", "model_name": "FigureModel", "state": { "anglex": -0.610415105537893, "angley": -0.024790914862543877, "anglez": -2.4736817312131487, "data_max": 0, "data_min": 0, "height": 500, "layout": "IPY_MODEL_6e675aa2464d4919b9340b5406488f95", "matrix_projection": [ 3.017766952966369, 0, 0, 0, 0, 2.414213562373095, 0, 0, 0, 0, -1.000002000002, -1, 0, 0, -0.02000002000002, 0 ], "matrix_world": [ -0.024368435485795228, 0.019223271011195597, -0.0007696170307771761, 0, -0.01610293975082206, -0.01970065561915351, 0.01779119462897894, 0, 0.010527192889148083, 0.014363047259371584, 0.02543281718703274, 0, 3.2092092800181166e-10, -1.4881692991048175e-10, -1.7617446005990176, 1.0000000000000002 ], "meshes": [ "IPY_MODEL_5f30ec5c421840559f968636eff989e6", "IPY_MODEL_1b7a88f1bb39491c83c89396a103cbfd", "IPY_MODEL_16366d638fbd4786a3d059399b5d077b" ], "scatters": [], "style": { "axes": { "color": "white", "label": { "color": "white" }, "ticklabel": { "color": "white" }, "visible": false }, "background-color": "black", "box": { "visible": false } }, "tf": null, "volume_data": null, "width": 400, "xlim": [ -16.10435746630556, 16.104357487740177 ], "ylim": [ -16.10435746630556, 16.104357487740177 ], "zlim": [ -16.10435746630556, 16.104357487740177 ] } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 1 }