Skip to content

Instantly share code, notes, and snippets.

@kozo2
Last active July 15, 2023 18:49
Show Gist options
  • Select an option

  • Save kozo2/34c1811d9313d34ba447 to your computer and use it in GitHub Desktop.

Select an option

Save kozo2/34c1811d9313d34ba447 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# Spatiocyte simulations with single-molecule resolution"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We showed an example of E-Cell4 spatial representation. \n",
"Next let's simulate the models with more detailed spatial representation called **single molecule resolution**."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Spatiocyte lattice-based method\n",
"\n",
"In spatical Gillespie method, we divided the **Space** into smaller **Space**, then we diffuse the molecules in the **Subvolume**.\n",
"However we simulated the molecules in the **Subvolume** as the number of the molecules, and the location of the molecules are NOT determinated.\n",
"\n",
"In other words, the spatical resolution of spatical Gillespie method is equal to the side of the **Subvolume** $l$.\n",
"To improve this resolution we need to make the size of $l$ small, but in this method the $l$ must be larger than the (at least) 10 times the diameter of molecule $R$.\n",
"\n",
"How can we improve the spatical resolution to the size of the molecule?\n",
"The answer is the simulation with single-molecule resolution.\n",
"This method simulate the molecule not with the number of the molecules, but with the spatical reaction diffusion of each molecule.\n",
"\n",
"E-Cell4 has multiple single-molecule resolution method, here we explain about Spatiocyte lattice-based method.\n",
"\n",
"Spatiocyte treat each molecule as hard sphere and diffuse the molecules in hexagonal close-packed lattice.\n",
"\n",
"Spatiocyte has ID for each molecule and the position of the molecule with single-molecule resolution.\n",
"To use the time scale, Spatiocyte has 100 times smaller time-step than spatical Gillespie, because the time scale of diffusion increases with the square of the distance.\n",
"\n",
"Next, let's use Spatiocyte.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from ecell4 import *\n",
"\n",
"with species_attributes():\n",
" A | B | C | {'D': '1'}\n",
"\n",
"with reaction_rules():\n",
" A + B == C | (0.01, 0.3)\n",
"\n",
"m = get_model()\n",
"w = lattice.LatticeWorld(Real3(1, 1, 1), 0.005) # The second argument is 'voxel_radius'.\n",
"w.bind_to(m)\n",
"w.add_molecules(Species('C'), 60)\n",
"sim = lattice.LatticeSimulator(w)\n",
"obs = FixedIntervalNumberObserver(0.1, ('A', 'B', 'C'))\n",
"sim.run(10, obs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is a distinct difference in the second argument for **LatticeWorld**. This is called **Voxel radius**.\n",
"Spatiocyte defines the locations of the molecules with dividing the Space with molecule size, and call the minimum unit for this Space as **Voxel**.\n",
"\n",
"In most cases the size of the molecule would be good for **Voxel radius**.\n",
"\n",
"In this example, we set 5 $\\mathrm{nm}$ as the radius of the molecule in the Space with the side 1 $\\mathrm{\\mu m}$ .\n",
"\n",
"It takes more time to simulate, but the result is same with ODE or Gillespie."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The diffusion movement of single molecule\n",
"\n",
"Next let's simulate single molecule diffusion to check the resolution.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from ecell4 import *\n",
"\n",
"with species_attributes():\n",
" A | {'D': '1'}\n",
"\n",
"m = get_model()\n",
"w = lattice.LatticeWorld(Real3(1, 1, 1), 0.005)\n",
"w.bind_to(m)\n",
"\n",
"(pid, p), suc = w.new_particle(Species('A'), Real3(0.5, 0.5, 0.5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**new_particle** method places a particle to a coordinate in **LatticeWorld**, and returns the particle's **pid**, the information about the particle **p**, and verify whether the particle is cooked with **suc**.\n",
"If a particle is already placed in the coordinate you can NOT place a particle over it and **suc** will be False and fail.\n",
"\n",
"**p** contains the particle position, species type, radius, and diffusion coefficient.\n",
"You can inspect the **p** with the particle's ID **pid**.\n",
"\n",
"Let's check **p**."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A\n",
"0.005 1.0\n",
"(0.49806291436591293, 0.49652123150307814, 0.5)\n"
]
}
],
"source": [
"pid, p = w.get_particle(pid)\n",
"print(p.species().serial()) # will print: A\n",
"print(p.radius(), p.D()) # will print: (0.005, 1.0)\n",
"print(tuple(p.position())) # will print: (0.49806291436591293, 0.49652123150307814, 0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**get_particle** method receives the particle ID and returns the ID and particle (of cource the IDs are same).\n",
"You can inspect the coordinate of the particle as **Real3** with **position** method.\n",
"It is hard to directly read the coordinate, here we printed it after converting to tuple.\n",
"As you can see the tuple coodinate is slightly different from original **Real3**. This is because Spatiocyte can place the molecule only on the lattice.\n",
"**LatticeWorld** places the molecule the nearest lattice for the argument **Real3**.\n",
"\n",
"You can visualize the coordinate of the molecule with **viz.plot_world** method, and check the molecule in the center of the World.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<html>\n",
" <head>\n",
" <script type=\"text/javascript\">\n",
" (function(){\n",
" if(window[\"THREE\"] === undefined || window[\"d3\"] === undefined){\n",
"\t require.config({\n",
"\t paths:{\n",
"\t d3: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.4/d3.min',\n",
"\t 'custom/d3.min'\n",
"\t ],\n",
"\t THREE: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/three.js/r66/three.min',\n",
"\t 'custom/three.min'\n",
"\t ],\n",
" Elegans: [\n",
"\t 'https://rawgit.com/domitry/elegans/master/release/elegans',\n",
"\t 'custom/elegans'\n",
"\t ]\n",
"\t },\n",
"\t shim:{\n",
"\t THREE: {\n",
"\t exports: 'THREE'\n",
"\t },\n",
"\t Elegans: {\n",
"\t deps: ['THREE'],\n",
"\t exports: 'Elegans'\n",
"\t }\n",
"\t }\n",
"\t });\n",
"\n",
"\t require([\"d3\", \"THREE\"], function(d3){\n",
"\t window[\"d3\"] = d3;\n",
"\n",
"\t d3.select(document)\n",
"\t .on(\"contextmenu\", function(){\n",
"\t d3.selectAll(\"canvas\").style(\"z-index\", 10);\n",
"\t d3.selectAll(\".download_menu\").style(\"z-index\", 100);\n",
"\t });\n",
"\t });\n",
" }\n",
"\n",
" require([\"Elegans\"], function(){\n",
"\t console.log(\"Begin rendering...\");\n",
"\t var model = {\"options\": {\"save_image\": true, \"height\": 500, \"autorange\": false, \"width\": 500, \"range\": {\"x\": [0.0, 1.0], \"y\": [0.0, 1.0], \"z\": [0.0, 1.0]}, \"grid\": true}, \"plots\": [{\"data\": {\"x\": [0.49806291436591293], \"y\": [0.49652123150307814], \"z\": [0.5]}, \"options\": {\"name\": \"A\", \"size\": 0.15, \"color\": \"#a6cee3\"}, \"type\": \"Particles\"}]};\n",
"\t Elegans.Embed.parse(\"#\"+\"viz8b03c1cd-09b9-4cbb-a56c-39e11af65742\",model).render();\n",
" });\n",
" })();\n",
" </script>\n",
" </head>\n",
" <body>\n",
" <div id=\"viz8b03c1cd-09b9-4cbb-a56c-39e11af65742\"></div>\n",
" </body>\n",
"</html>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{'A': '#a6cee3'}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"viz.plot_world(w, save_image=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And you can use **Observer** to track the trajectory of molecular diffusion process."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<html>\n",
" <head>\n",
" <script type=\"text/javascript\">\n",
" (function(){\n",
" if(window[\"THREE\"] === undefined || window[\"d3\"] === undefined){\n",
"\t require.config({\n",
"\t paths:{\n",
"\t d3: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.4/d3.min',\n",
"\t 'custom/d3.min'\n",
"\t ],\n",
"\t THREE: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/three.js/r66/three.min',\n",
"\t 'custom/three.min'\n",
"\t ],\n",
" Elegans: [\n",
"\t 'https://rawgit.com/domitry/elegans/master/release/elegans',\n",
"\t 'custom/elegans'\n",
"\t ]\n",
"\t },\n",
"\t shim:{\n",
"\t THREE: {\n",
"\t exports: 'THREE'\n",
"\t },\n",
"\t Elegans: {\n",
"\t deps: ['THREE'],\n",
"\t exports: 'Elegans'\n",
"\t }\n",
"\t }\n",
"\t });\n",
"\n",
"\t require([\"d3\", \"THREE\"], function(d3){\n",
"\t window[\"d3\"] = d3;\n",
"\n",
"\t d3.select(document)\n",
"\t .on(\"contextmenu\", function(){\n",
"\t d3.selectAll(\"canvas\").style(\"z-index\", 10);\n",
"\t d3.selectAll(\".download_menu\").style(\"z-index\", 100);\n",
"\t });\n",
"\t });\n",
" }\n",
"\n",
" require([\"Elegans\"], function(){\n",
"\t console.log(\"Begin rendering...\");\n",
"\t var model = {\"options\": {\"width\": 500, \"height\": 500, \"autorange\": false, \"grid\": true, \"range\": {\"x\": [-2.3564535657527976, 0.6955079584742688], \"y\": [-1.771946643670098, 1.2800148805569687], \"z\": [-0.2084807621135334, 2.843480762113533]}}, \"plots\": [{\"data\": {\"x\": [0.49806291436591293, 0.5878775382679629, 0.563382640840131, 0.5797125724586856, 0.49806291436591293, 0.59604250407724, 0.6042074698865173, 0.6287023673143491, 0.6287023673143491, 0.6123724356957946, 0.5878775382679629, 0.5552176750308537, 0.48173298274735843, 0.4082482904638631, 0.4245782220824176, 0.5062278801751902, 0.5225578117937447, 0.5715476066494083, 0.5062278801751902, 0.6776921621700127, 0.6287023673143491, 0.6205374015050719, 0.5552176750308537, 0.6123724356957946, 0.5062278801751902, 0.5388877434122993, 0.4409081537009721, 0.4245782220824176, 0.47356801693808115, 0.3837533930360313, 0.48989794855663565, 0.4409081537009721, 0.4409081537009721, 0.45723808531952664, 0.3510935297989222, 0.3837533930360313, 0.4245782220824176, 0.5225578117937447, 0.48989794855663565, 0.45723808531952664, 0.4409081537009721, 0.45723808531952664, 0.530722777603022, 0.59604250407724, 0.47356801693808115, 0.5062278801751902, 0.4409081537009721, 0.5143928459844674, 0.3510935297989222, 0.3184336665618132, 0.27760883751542687, 0.31026870075253593, 0.20412414523193154, 0.16329931618554522, 0.1469693845669907, 0.13880441875771343, 0.19595917942265428, 0.187794213613377, 0.2122891110412088, 0.20412414523193154, 0.2939387691339814, 0.23678400846904057, 0.08981462390204988, 0.13880441875771343, 0.19595917942265428, 0.16329931618554522, 0.13063945294843618, 0.08981462390204988, 0.09797958971132714, 0.04898979485566357, 0.06531972647421809, 0.040824829046386304, 0.032659863237109045, 0.032659863237109045, 0.09797958971132714, 0.09797958971132714, 0.1714642819948225, 0.20412414523193154, 0.22045407685048604, 0.22861904265976332, 0.22861904265976332, 0.24494897427831783, 0.19595917942265428, 0.27760883751542687, 0.2939387691339814, 0.31026870075253593, 0.32659863237109044, 0.3347635981803677, 0.4000833246545858, 0.375588427226754, 0.3347635981803677, 0.2939387691339814, 0.3184336665618132, 0.2531139400875951, 0.187794213613377, 0.11430952132988166, 0.04898979485566357, 0.13063945294843618, 0.12247448713915891, 0.06531972647421809, 0.08981462390204988, 0.07348469228349536, 0.04898979485566357, -0.06102893193311498, -0.15084355583516484, -0.2406581797372147, -0.2406581797372147, -0.19166838488155113, -0.14267859002588756, -0.09368879517022399, -0.012039137077451412, 0.05715476066494085, -0.0528639661238377, 0.00816496580927728, 0.05715476066494083, 0.11430952132988166, 0.12247448713915891, 0.07348469228349536, 0.17962924780409975, 0.1714642819948225, 0.22861904265976332, 0.1469693845669907, 0.06531972647421809, 0.11430952132988166, 0.04898979485566357, -0.126348658407333, -0.13451362421661028, -0.11818369259805583, -0.10185376097950127, -0.06102893193311498, -0.06102893193311498, -0.06102893193311498, -0.10185376097950127, -0.14267859002588756, -0.11001872678877855, -0.13451362421661028, -0.21616328230938286, -0.2406581797372147, -0.248823145546492, -0.22432824811866015, -0.2896479745928783, -0.25698811135576927, -0.281483008783601, -0.31414287202071, -0.29781294040215556, -0.3876275643042054, -0.30597790621143284, -0.34680273525781913, -0.21616328230938286, -0.15084355583516484, -0.31414287202071, -0.3549677010670964, -0.436617359159869, -0.33047280363926457, -0.4284523933505917, -0.45294729077842355, -0.436617359159869, -0.41212246173203715, -0.49377211982480984, -0.469277222396978, -0.49377211982480984, -0.48560715401553256, -0.49377211982480984, -0.48560715401553256, -0.48560715401553256, -0.5264319830619189, -0.4611122565877007, -0.31414287202071, -0.29781294040215556, -0.23249321392793743, -0.19166838488155113, -0.2406581797372147, -0.26515307716504644, -0.2733180429743237, -0.3549677010670964, -0.501937085634087, -0.42028742754131443, -0.41212246173203715, -0.37946259849492814, -0.281483008783601, -0.3631326668763736, -0.4284523933505917, -0.5427619146804734, -0.5345969488711961, -0.436617359159869, -0.5101020514433643, -0.4611122565877007, -0.281483008783601, -0.29781294040215556, -0.23249321392793743, -0.2079983165001057, -0.23249321392793743, -0.2896479745928783, -0.19166838488155113, -0.18350341907227385, -0.23249321392793743, -0.15084355583516484, -0.26515307716504644, -0.33047280363926457, -0.3957925301134827, -0.42028742754131443, -0.41212246173203715, -0.3549677010670964, -0.37946259849492814, -0.33863776944854185, -0.33863776944854185, -0.2896479745928783, -0.30597790621143284, -0.2733180429743237, -0.2896479745928783, -0.2406581797372147, -0.26515307716504644, -0.2079983165001057, -0.18350341907227385, -0.13451362421661028, -0.11001872678877855, -0.15084355583516484, -0.19166838488155113, -0.15084355583516484, -0.17533845326299657, -0.17533845326299657, -0.15084355583516484, -0.06919389774239226, -0.07735886355166943, -0.0528639661238377, -0.11001872678877855, -0.10185376097950127, -0.0528639661238377, -0.13451362421661028, -0.2733180429743237, -0.2079983165001057, -0.15900852164444212, -0.23249321392793743, -0.248823145546492, -0.22432824811866015, -0.14267859002588756, -0.15900852164444212, -0.18350341907227385, -0.15900852164444212, -0.15900852164444212, -0.15900852164444212, -0.15084355583516484, -0.19983335069082842, -0.2733180429743237, -0.34680273525781913, -0.3957925301134827, -0.3957925301134827, -0.42028742754131443, -0.49377211982480984, -0.5672568121083051, -0.436617359159869, -0.3957925301134827, -0.4284523933505917, -0.40395749592276, -0.469277222396978, -0.5182670172526416, -0.4611122565877007, -0.5264319830619189, -0.559091846299028, -0.5345969488711961, -0.49377211982480984, -0.657071436010355, -0.6407415043918006, -0.6162466069639687, -0.689731299247464, -0.6978962650567413, -0.689731299247464, -0.689731299247464, -0.7877108889587912, -0.7142261966752959, -0.6489064702010778, -0.689731299247464, -0.5835867437268597, -0.6162466069639687, -0.6407415043918006, -0.7550510257216821, -0.6815663334381867, -0.5754217779175824, -0.5835867437268597, -0.49377211982480984, -0.5101020514433643, -0.5182670172526416, -0.4284523933505917, -0.3549677010670964, -0.436617359159869, -0.37129763268565086, -0.5101020514433643, -0.42028742754131443, -0.5509268804897507, -0.5754217779175824, -0.7387210941031277, -0.7223911624845731, -0.7142261966752959, -0.7958758547680684, -0.812205786386623, -0.7142261966752959, -0.8856904786701183, -0.9755051025721682, -0.9020204102886729, -0.9918350341907227, -1.0, -1.0365340345052831, -1.0855238293609468, -1.061028931933115, -1.0691938977423923, -1.126348658407333, -1.0773588635516695, -0.9428452393350593, -0.9183503419072274, -0.9918350341907227, -1.0283690686960059, -1.0120391370774513, -1.0283690686960059, -0.9428452393350593, -0.967340136762891, -0.967340136762891, -0.967340136762891, -1.093688795170224, -1.1753384532629965, -1.2243282481186601, -1.2243282481186601, -1.281483008783601, -1.2896479745928784, -1.4121224617320371, -1.3304728036392646, -1.4039574959227599, -1.3631326668763735, -1.3304728036392646, -1.305977906211433, -1.3876275643042053, -1.4284523933505917, -1.4529472907784236, -1.501937085634087, -1.4447823249691463, -1.4039574959227599, -1.4611122565877008, -1.5427619146804734, -1.5999166753454142, -1.5427619146804734, -1.559091846299028, -1.567256812108305, -1.5835867437268596, -1.5427619146804734, -1.4611122565877008, -1.436617359159869, -1.4039574959227599, -1.3631326668763735, -1.3549677010670964, -1.4284523933505917, -1.4202874275413144, -1.4529472907784236, -1.4447823249691463, -1.4529472907784236, -1.49377211982481, -1.501937085634087, -1.4856071540155327, -1.436617359159869, -1.4202874275413144, -1.3712976326856507, -1.3386377694485418, -1.3957925301134826, -1.4121224617320371, -1.5182670172526416, -1.3712976326856507, -1.3549677010670964, -1.2569881113557693, -1.3223078378299873, -1.3712976326856507, -1.4202874275413144, -1.4447823249691463, -1.49377211982481, -1.5509268804897507, -1.5917517095361369, -1.6489064702010778, -1.624411572773246, -1.6162466069639687, -1.6734013676289097, -1.746886059912405, -1.8040408205773457, -1.7795459231495139, -1.7142261966752959, -1.7305561282938504, -1.7142261966752959, -1.7877108889587912, -1.7713809573402366, -1.7877108889587912, -1.8693605470515637, -1.934680273525782, -2.0528639661238377, -2.13451362421661, -2.1835034190722737, -2.1835034190722737, -2.2651530771650465, -2.2651530771650465, -2.322307837829987, -2.3386377694485416, -2.2569881113557693, -2.1998333506908283, -2.061028931933115, -1.9918350341907227, -2.0202041028867286, -2.0446990003145604, -1.9836700683814454, -1.877525512860841, -1.9020204102886729, -1.7877108889587912, -1.812205786386623, -1.689731299247464, -1.7877108889587912, -1.7305561282938504, -1.7223911624845731, -1.5999166753454142, -1.5917517095361369, -1.4774421882062554, -1.4284523933505917, -1.3549677010670964, -1.379462598494928, -1.379462598494928, -1.4284523933505917, -1.3876275643042053, -1.3631326668763735, -1.3386377694485418, -1.3549677010670964, -1.248823145546492, -1.2406581797372147, -1.2733180429743238, -1.2896479745928784, -1.1998333506908283, -1.2161632823093829, -1.1835034190722737, -1.1508435558351648, -1.1671734874537194, -1.2406581797372147, -1.2324932139279374, -1.2161632823093829, -1.0446990003145604, -1.0202041028867286, -1.093688795170224, -1.0, -0.9836700683814454, -1.0202041028867286, -0.9510102051443363, -0.9836700683814454, -1.118183692598056, -1.0855238293609468, -1.1671734874537194, -1.2324932139279374, -1.1590085216444421, -1.1671734874537194, -1.2406581797372147, -1.0365340345052831, -1.0, -0.9918350341907227, -0.9346802735257819, -0.8693605470515638, -0.8856904786701183, -0.8203707521959003, -0.8775255128608411, -0.8938554444793956, -0.9755051025721682, -1.0528639661238377, -1.1426785900258876, -1.1018537609795014, -1.118183692598056, -1.118183692598056, -1.0773588635516695, -1.0446990003145604, -1.0691938977423923, -1.0691938977423923, -1.118183692598056, -1.093688795170224, -1.0202041028867286, -1.191668384881551, -1.1753384532629965, -1.2569881113557693, -1.2243282481186601, -1.1508435558351648, -1.1753384532629965, -1.2079983165001056, -1.2651530771650465, -1.2324932139279374, -1.2733180429743238, -1.305977906211433, -1.3386377694485418, -1.2651530771650465, -1.2651530771650465, -1.3304728036392646, -1.2324932139279374, -1.2651530771650465, -1.1835034190722737, -1.1590085216444421, -1.1018537609795014, -0.9428452393350593, -0.8938554444793956, -0.9020204102886729, -0.8938554444793956, -0.9346802735257819, -1.0528639661238377, -0.9673401367628909, -1.0365340345052831, -0.9755051025721682], \"y\": [0.49652123150307814, 0.5109549882328188, 0.5051814855409226, 0.5571430097679889, 0.7043673284113435, 0.6957070743734991, 0.7794228634059948, 0.8862326632060756, 0.851591647054698, 0.9122134253196088, 0.9353074360871938, 0.9439676901250381, 1.0115470053837925, 1.0606217782649108, 1.1039230484541327, 1.0779422863405994, 1.1385640646055102, 1.1732050807568877, 1.2078460969082654, 1.228053356329902, 1.2800148805569684, 1.2771281292110204, 1.2598076211353315, 1.1674315780649915, 1.1472243186433546, 1.1125833024919771, 1.1125833024919771, 1.0606217782649108, 1.0, 1.04618802153517, 0.8660254037844386, 0.8313843876330611, 0.7014805770653953, 0.7707626093681504, 0.7043673284113435, 0.6610660582221216, 0.6062177826491071, 0.6321985447626403, 0.6668395609140177, 0.6062177826491071, 0.6062177826491071, 0.5109549882328188, 0.5917840259193664, 0.49652123150307814, 0.5196152422706632, 0.4070319397786862, 0.3637306695894642, 0.30599564267050167, 0.24537386440559095, 0.3406366588218792, 0.3377499074759311, 0.3377499074759311, 0.37527767497325676, 0.2598076211353316, 0.21650635094610965, 0.23671361036774657, 0.13856406460551018, 0.16743157806499148, 0.1991858428704209, 0.22805335632990217, 0.2511473670974872, 0.31465589670834604, 0.18475208614068023, 0.21939310229205777, 0.1991858428704209, 0.11258330249197702, 0.16454482671904336, 0.09814954576223638, 0.05196152422706632, 0.06928203230275509, 0.1991858428704209, 0.21939310229205777, 0.16454482671904336, 0.13856406460551018, 0.09526279441628825, 0.13856406460551018, 0.011547005383792516, 0.06350852961085883, 0.11547005383792515, 0.008660254037844387, -0.03005154776142871, -0.05603230987496188, 0.0, 0.0, 0.0, -0.09067332602633937, -0.09067332602633937, -0.13974809890745754, -0.11376733679392437, -0.14263485025340572, -0.18304936909667946, -0.2119168825561608, -0.28697241755081215, -0.22635063928590138, -0.35625444985356725, -0.3591412011995154, -0.350480947161671, -0.3937822173508929, -0.43419673619416665, -0.41110272542658177, -0.46017749830769983, -0.35625444985356725, -0.350480947161671, -0.36491470389141156, -0.33316043908598225, -0.39089546600494474, -0.43419673619416665, -0.43419673619416665, -0.4168762281184779, -0.4168762281184779, -0.260991655437279, -0.3042929256265009, -0.33316043908598225, -0.3042929256265009, -0.3475941958157228, -0.37646170927520417, -0.42553648215632234, -0.39089546600494474, -0.3851219633130486, -0.486158260421233, -0.6189488223348469, -0.6362693304105358, -0.575647552145625, -0.6449295844483802, -0.6535898384862245, -0.6507030871402764, -0.6449295844483802, -0.6102885682970026, -0.5929680602213139, -0.572760800799677, -0.642042833102432, -0.7026646113673427, -0.6622500925240689, -0.6160620709888989, -0.6333825790645877, -0.6882308546376021, -0.6709103465619133, -0.5121390225347662, -0.5669872981077807, -0.5900813088753657, -0.6247223250267433, -0.6247223250267433, -0.7055513627132909, -0.7228718707889796, -0.7921539030917347, -0.8412286759728529, -0.8412286759728529, -0.8181346652052679, -0.8181346652052679, -0.8094744111674235, -0.774833395016046, -0.8325684219350085, -0.7892671517457865, -0.800814157129579, -0.9307179676972449, -1.0531455585290137, -0.9971132486540519, -0.9480384757729337, -0.9307179676972449, -0.8585491840485417, -0.887416697508023, -0.8931902001999192, -0.8614359353944898, -0.9364914703891412, -0.9191709623134524, -0.8441154273188011, -0.8960769515458673, -0.9566987298107781, -0.9133974596215562, -0.9047372055837117, -0.8498889300106973, -0.8758696921242305, -0.9047372055837117, -1.035825050453325, -1.035825050453325, -0.9971132486540519, -0.9971132486540518, -1.0646925639128062, -1.099333580064184, -1.1166540881398725, -1.125314342177717, -1.099333580064184, -1.0560323098749618, -1.035825050453325, -0.9971132486540519, -1.082013071988495, -1.0733528179506506, -1.15129510429125, -1.2205771365940052, -1.2032566285183164, -1.1570686069831462, -1.1772758664047833, -1.2003698771723683, -1.1917096231345239, -1.1859361204426278, -1.2205771365940052, -1.2119168825561608, -1.3158399310102935, -1.307179676972449, -1.281198914858916, -1.304292925626501, -1.2552181527453827, -1.148408352945302, -1.1166540881398725, -1.1397480989074575, -1.0185045423776362, -0.9364914703891412, -0.9797927405783631, -0.8672094380863861, -0.8585491840485417, -0.754626135594409, -0.7488526329025128, -0.7806068977079422, -0.8527756813566454, -0.774833395016046, -0.8152479138593198, -0.8181346652052679, -0.9364914703891412, -0.9047372055837117, -0.8412286759728529, -0.8498889300106973, -0.800814157129579, -0.9480384757729337, -0.9278312163512967, -0.9047372055837117, -0.9451517244269856, -0.9826794919243113, -1.0560323098749618, -1.0906733260263395, -1.1137673367939245, -1.0964468287182356, -1.0185045423776362, -0.9653589838486225, -0.9220577136594005, -0.9191709623134524, -0.9971132486540518, -1.0185045423776362, -1.0906733260263395, -1.061805812566858, -0.9624722325026742, -0.8672094380863861, -0.8527756813566454, -0.8960769515458673, -1.0098442883397918, -0.9740192378864669, -0.9653589838486225, -0.9220577136594005, -0.8845299461620748, -0.8354551732809566, -0.8325684219350085, -0.7286453734808759, -0.5843078061834694, -0.5929680602213139, -0.59874156291321, -0.5381197846482995, -0.4774980063833886, -0.4977052658050256, -0.575647552145625, -0.5929680602213139, -0.6507030871402764, -0.7661731409782016, -0.774833395016046, -0.7315321248268241, -0.6940043573294983, -0.6882308546376021, -0.685344103291654, -0.7401923788646684, -0.8787564434701786, -0.8527756813566454, -0.8498889300106973, -0.8498889300106973, -0.800814157129579, -0.8498889300106973, -0.7892671517457865, -0.8267949192431123, -0.7575128869403571, -0.642042833102432, -0.6622500925240689, -0.642042833102432, -0.6276090763726914, -0.6622500925240689, -0.7632863896322535, -0.7575128869403571, -0.7199851194430316, -0.6593633411781208, -0.572760800799677, -0.5150257738807144, -0.5381197846482995, -0.46017749830769983, -0.4284232335022705, -0.44574374157795926, -0.4890450117671812, -0.4774980063833886, -0.486158260421233, -0.486158260421233, -0.49481851445907743, -0.463064249653648, -0.5034787684969219, -0.5583270440699363, -0.5207992765726106, -0.6189488223348469, -0.6102885682970026, -0.5843078061834694, -0.5641005467618325, -0.6968911086754465, -0.6766838492538096, -0.59874156291321, -0.5467800386861438, -0.5323462819564031, -0.6160620709888989, -0.49481851445907743, -0.43419673619416665, -0.4082159740806336, -0.3389339417778784, -0.3591412011995154, -0.3071796769724491, -0.3158399310102935, -0.2350108933237458, -0.21769038524805706, -0.10510708275608005, -0.1917096231345239, -0.1686156123669389, -0.24367114736159023, -0.22923739063184956, -0.25521815274538273, -0.3129531796643453, -0.3245001850481378, -0.28985916889676033, -0.15706860698314629, -0.15706860698314629, -0.15129510429125015, -0.16572886102099071, -0.13974809890745754, -0.15129510429125015, -0.14840835294530197, -0.07335281795065063, -0.0993335800641838, -0.11376733679392437, -0.12531434217771698, -0.09067332602633937, -0.10510708275608005, -0.21769038524805706, -0.28985916889676033, -0.22057713659400524, -0.2783121635129677, -0.28697241755081215, -0.25521815274538273, -0.260991655437279, -0.18593612044262764, -0.13974809890745754, -0.07912632064254688, -0.05603230987496188, -0.0531455585290137, -0.05603230987496188, -0.044485304491169275, -0.03582505045332496, -0.07046606660470245, -0.11376733679392437, -0.044485304491169275, -0.2003698771723682, -0.2119168825561608, -0.22057713659400524, -0.2783121635129677, -0.2350108933237458, -0.16572886102099071, -0.11376733679392437, -0.16572886102099071, -0.24367114736159023, -0.3129531796643453, -0.3851219633130486, -0.36780145523735974, -0.4774980063833886, -0.47172450369149244, -0.43419673619416665, -0.463064249653648, -0.39089546600494474, -0.48038475772933675, -0.49481851445907743, -0.47172450369149244, -0.3389339417778784, -0.39089546600494474, -0.29563267158865647, -0.1917096231345239, -0.28985916889676033, -0.37646170927520417, -0.40244247138873734, -0.43708348754011483, -0.6362693304105358, -0.6449295844483802, -0.774833395016046, -0.8787564434701786, -0.887416697508023, -0.8181346652052679, -0.7834936490538904, -0.8325684219350085, -0.8672094380863861, -0.8931902001999192, -0.9480384757729337, -0.8931902001999192, -0.9538119784648299, -1.0, -1.122427590831769, -1.082013071988495, -1.1397480989074575, -1.168615612366939, -1.0906733260263395, -1.1397480989074575, -1.2292373906318494, -1.2378976446696939, -1.2436711473615902, -1.2725386608210716, -1.2003698771723683, -1.2985194229346047, -1.281198914858916, -1.3331604390859821, -1.2696519094751233, -1.2378976446696939, -1.2985194229346047, -1.3331604390859821, -1.3475941958157227, -1.3331604390859821, -1.2436711473615902, -1.174389115058835, -1.082013071988495, -1.1570686069831462, -1.1570686069831462, -1.304292925626501, -1.3851219633130487, -1.4630642496536481, -1.5150257738807142, -1.4977052658050256, -1.4284232335022704, -1.2956326715886566, -1.307179676972449, -1.2985194229346047, -1.3649147038914116, -1.4111027254265818, -1.4255364821563223, -1.4803847577293368, -1.4544039956158037, -1.4024424713887373, -1.4890450117671812, -1.4544039956158037, -1.4111027254265818, -1.350480947161671, -1.4630642496536481, -1.5150257738807142, -1.416876228118478, -1.50636551984287, -1.4948185144590775, -1.5583270440699364, -1.4803847577293368, -1.4341967361941665, -1.4890450117671812, -1.3245001850481377, -1.4284232335022704, -1.5410065359942475, -1.4774980063833887, -1.4515172442698554, -1.4082159740806337, -1.4370834875401148, -1.3649147038914116, -1.350480947161671, -1.3678014552373599, -1.350480947161671, -1.3129531796643454, -1.3389339417778783, -1.3158399310102935, -1.4457437415779593, -1.5150257738807142, -1.5900813088753658, -1.5843078061834694, -1.6074018169510544, -1.7026646113673427, -1.771946643670098, -1.6507030871402764, -1.601628314259158, -1.503478768496922, -1.4948185144590775, -1.4803847577293368, -1.4890450117671812, -1.4861582604212331, -1.503478768496922, -1.5641005467618325, -1.6362693304105358, -1.6535898384862247, -1.575647552145625, -1.5583270440699364, -1.5843078061834694, -1.601628314259158, -1.6507030871402764, -1.7575128869403571, -1.7286453734808758, -1.7373056275187202, -1.7228718707889796, -1.6766838492538096, -1.549666790032092, -1.50636551984287, -1.4803847577293368, -1.5150257738807142, -1.5381197846482995], \"z\": [0.5, 0.535, 0.525, 0.5750000000000001, 0.61, 0.635, 0.65, 0.47500000000000003, 0.34500000000000003, 0.45, 0.42, 0.615, 0.6900000000000001, 0.6950000000000001, 0.79, 0.6950000000000001, 0.66, 0.61, 0.62, 0.625, 0.615, 0.53, 0.53, 0.47000000000000003, 0.375, 0.305, 0.255, 0.28500000000000003, 0.24, 0.28, 0.26, 0.22, 0.245, 0.185, 0.2, 0.125, 0.18, 0.155, 0.225, 0.24, 0.29, 0.255, 0.23500000000000001, 0.21, 0.25, 0.315, 0.26, 0.17, 0.135, 0.15, 0.085, 0.155, 0.17, 0.18, 0.255, 0.31, 0.32, 0.26, 0.20500000000000002, 0.23500000000000001, 0.255, 0.315, 0.34, 0.35000000000000003, 0.365, 0.395, 0.41500000000000004, 0.35000000000000003, 0.32, 0.38, 0.435, 0.44, 0.465, 0.35000000000000003, 0.395, 0.28, 0.24, 0.27, 0.3, 0.385, 0.37, 0.385, 0.46, 0.62, 0.58, 0.5650000000000001, 0.545, 0.56, 0.705, 0.655, 0.675, 0.745, 0.635, 0.65, 0.615, 0.54, 0.485, 0.5, 0.47000000000000003, 0.4, 0.495, 0.535, 0.525, 0.58, 0.5650000000000001, 0.675, 0.7000000000000001, 0.77, 0.86, 0.86, 0.78, 0.8250000000000001, 0.775, 0.875, 0.89, 0.9, 0.845, 0.795, 0.8250000000000001, 0.75, 0.7000000000000001, 0.78, 0.785, 0.805, 0.74, 0.685, 0.705, 0.725, 0.775, 0.89, 0.98, 0.8150000000000001, 0.795, 0.765, 0.715, 0.73, 0.93, 0.935, 0.9500000000000001, 0.98, 1.08, 1.18, 1.19, 1.11, 1.26, 1.2650000000000001, 1.365, 1.395, 1.355, 1.42, 1.43, 1.52, 1.4849999999999999, 1.4849999999999999, 1.46, 1.49, 1.585, 1.43, 1.42, 1.435, 1.425, 1.385, 1.42, 1.54, 1.52, 1.52, 1.4100000000000001, 1.565, 1.52, 1.5750000000000002, 1.62, 1.695, 1.7850000000000001, 1.78, 1.69, 1.705, 1.665, 1.62, 1.62, 1.6400000000000001, 1.725, 1.72, 1.7650000000000001, 1.8599999999999999, 1.8250000000000002, 1.8900000000000001, 1.885, 1.87, 1.92, 1.87, 1.9100000000000001, 1.995, 1.975, 2.12, 2.11, 2.06, 2.045, 2.125, 2.01, 2.045, 2.075, 2.1, 2.125, 2.12, 2.1, 2.05, 2.01, 2.065, 2.0, 1.9050000000000002, 1.845, 1.845, 1.8, 1.815, 1.8599999999999999, 1.78, 1.8050000000000002, 1.8, 1.7850000000000001, 1.675, 1.69, 1.795, 1.81, 1.835, 1.745, 1.855, 1.88, 1.8250000000000002, 1.865, 1.7149999999999999, 1.795, 1.76, 1.8399999999999999, 1.7650000000000001, 1.72, 1.645, 1.74, 1.7149999999999999, 1.685, 1.685, 1.69, 1.755, 1.71, 1.795, 1.745, 1.87, 1.855, 1.8599999999999999, 1.845, 1.78, 1.75, 1.6400000000000001, 1.675, 1.7149999999999999, 1.76, 1.925, 2.01, 1.9849999999999999, 2.005, 1.995, 1.905, 1.8599999999999999, 1.865, 1.81, 1.9, 1.975, 1.88, 1.8, 1.7349999999999999, 1.69, 1.77, 1.7349999999999999, 1.7000000000000002, 1.645, 1.67, 1.6800000000000002, 1.6800000000000002, 1.745, 1.8599999999999999, 1.975, 2.025, 2.05, 2.07, 2.075, 2.16, 2.3, 2.32, 2.32, 2.345, 2.42, 2.35, 2.365, 2.355, 2.36, 2.24, 2.235, 2.23, 2.18, 2.205, 2.17, 2.22, 2.305, 2.33, 2.345, 2.235, 2.23, 2.355, 2.325, 2.29, 2.195, 2.185, 2.2, 2.165, 2.135, 2.18, 2.12, 2.065, 2.055, 2.095, 2.15, 2.01, 1.98, 2.06, 1.995, 1.94, 1.88, 1.85, 1.9100000000000001, 1.8900000000000001, 1.8, 1.81, 1.665, 1.72, 1.69, 1.5750000000000002, 1.655, 1.65, 1.685, 1.795, 1.845, 1.8399999999999999, 1.815, 1.75, 1.8, 1.81, 1.7850000000000001, 1.78, 1.76, 1.77, 1.76, 1.605, 1.7149999999999999, 1.63, 1.7349999999999999, 1.725, 1.76, 1.79, 1.7850000000000001, 1.7650000000000001, 1.8050000000000002, 1.915, 1.81, 1.75, 1.705, 1.685, 1.705, 1.505, 1.52, 1.52, 1.505, 1.5150000000000001, 1.585, 1.545, 1.6400000000000001, 1.54, 1.625, 1.51, 1.585, 1.585, 1.495, 1.395, 1.3900000000000001, 1.37, 1.38, 1.52, 1.495, 1.4849999999999999, 1.44, 1.415, 1.47, 1.42, 1.415, 1.455, 1.545, 1.57, 1.6600000000000001, 1.675, 1.69, 1.8050000000000002, 1.79, 1.83, 1.76, 1.72, 1.69, 1.76, 1.7149999999999999, 1.6400000000000001, 1.7349999999999999, 1.7000000000000002, 1.73, 1.81, 1.7149999999999999, 1.745, 1.8050000000000002, 1.815, 1.685, 1.75, 1.675, 1.625, 1.6400000000000001, 1.615, 1.69, 1.75, 1.75, 1.72, 1.72, 1.7149999999999999, 1.745, 1.79, 1.8, 1.6600000000000001, 1.63, 1.63, 1.67, 1.7850000000000001, 1.88, 1.94, 1.905, 1.98, 2.0149999999999997, 2.035, 2.025, 1.855, 1.88, 1.885, 1.9500000000000002, 1.98, 1.99, 1.9849999999999999, 2.035, 2.035, 2.11, 2.02, 2.045, 2.05, 2.01, 2.145, 2.045, 2.11, 2.035, 2.085, 2.12, 2.185, 2.225, 2.245, 2.16, 2.215, 2.255, 2.24, 2.24, 2.25, 2.26, 2.2, 2.135, 2.065, 2.045, 2.07, 2.14, 2.165, 2.24, 2.315, 2.33, 2.36, 2.4050000000000002, 2.41, 2.43, 2.4050000000000002, 2.435, 2.34, 2.39, 2.455, 2.43, 2.35, 2.445, 2.41, 2.55, 2.5300000000000002, 2.445, 2.44, 2.5, 2.45]}, \"options\": {\"name\": \"1\", \"thickness\": 2, \"colors\": [\"#a6cee3\", \"#a6cee3\"]}, \"type\": \"Line\"}]};\n",
"\t Elegans.Embed.parse(\"#\"+\"viz7d7f5093-d218-4d0d-a477-e08dbe86d533\",model).render();\n",
" });\n",
" })();\n",
" </script>\n",
" </head>\n",
" <body>\n",
" <div id=\"viz7d7f5093-d218-4d0d-a477-e08dbe86d533\"></div>\n",
" </body>\n",
"</html>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{'1': '#a6cee3'}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sim = lattice.LatticeSimulator(w)\n",
"obs = FixedIntervalTrajectoryObserver(0.002, (pid,))\n",
"sim.run(1, obs)\n",
"viz.plot_trajectory(obs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here we visualized the trajectory with **viz.plot_trajectory** method, you can also obtain it as Real3 list with **data** method.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"501\n"
]
}
],
"source": [
"print(len(obs.data()))\n",
"print(len(obs.data()[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**data** method returns nested list.\n",
"First index means the index of the particle.\n",
"Second index means the index of the **Real3**.\n",
"In this case we threw just one particle, so the first result is **1**, and next **501** means time-series coordinate of the only one particle (initial coordinate and the coordinates in 1/0.002 = 500 time points)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also you can obtain the particles in bulk with **list_particles** method and species type."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A (0.6940220937885672, 0.42723919920032305, 0.79)\n",
"A (0.12247448713915891, 0.8256108849411649, 0.96)\n",
"A (0.47356801693808115, 0.9699484522385713, 0.11)\n",
"A (0.563382640840131, 0.3925981830489455, 0.13)\n",
"A (0.23678400846904057, 0.5051814855409226, 0.195)\n",
"A (0.07348469228349536, 0.002886751345948129, 0.8250000000000001)\n"
]
}
],
"source": [
"w.add_molecules(Species('A'), 5)\n",
"\n",
"particles = w.list_particles(Species('A'))\n",
"for pid, p in particles:\n",
" print(p.species().serial(), tuple(p.position()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Please remember **list_particles** method, this method can be used for other World as well as **add_molecules** method.\n",
"\n",
"On a different note, in Spatiocyte proper method to inspect the single molecule is **list_voxels**, and the coordinate is described with index of voxel (not Real3)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The diffusion coefficient and the second-order reaction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The models we have addressed are called **second-order reaction**.\n",
"Let's look at the relationship between this second-order reaction and the diffusion coefficient in Spatiocyte."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10ad4e4e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from ecell4 import *\n",
"\n",
"with species_attributes():\n",
" A | B | C | {'D': '1'}\n",
"\n",
"with reaction_rules():\n",
" A + B > C | 1.0\n",
"\n",
"m = get_model()\n",
"w = lattice.LatticeWorld(Real3(2, 1, 1), 0.005)\n",
"\n",
"w.bind_to(m)\n",
"\n",
"w.add_molecules(Species('A'), 120)\n",
"w.add_molecules(Species('B'), 120)\n",
"\n",
"obs = FixedIntervalNumberObserver(0.005, ('A', 'B', 'C'))\n",
"sim = lattice.LatticeSimulator(w)\n",
"sim.run(1.0, obs)\n",
"\n",
"%matplotlib inline\n",
"\n",
"odew = ode.ODEWorld(Real3(2, 1, 1))\n",
"odew.bind_to(m)\n",
"odew.add_molecules(Species('A'), 120)\n",
"odew.add_molecules(Species('B'), 120)\n",
"odeobs = FixedIntervalNumberObserver(0.005, ('A', 'B', 'C'))\n",
"odesim = ode.ODESimulator(odew)\n",
"odesim.run(1.0, odeobs)\n",
"viz.plot_number_observer(obs, \"-\", odeobs, \"--\")\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Although we used faster kinetic constant than before, the result is same.\n",
"But by contrast with ODE simulation, you can find the difference between them (solid line is Spatiocyte, dash line is ODE)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Is this fault of Spatiocyte? (No)\n",
"Actually Spatiocyte reaction rate couldn't be faster, while ODE reaction rate can be faster infinitely."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is caused by the difference between the definition of reaction rate constant in **ODE solver** and **single molecule simulation method**. \n",
"\n",
"The former is called **macroscopic** or **effective** reaction rate constant, the latter is called **microscopic** or **intrinsic** reaction rate constant.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The **macroscopic** rate represents the reaction rate in mixed molecular state, meanwhile **microscopic** rate represents the reactivity in molecule collision.\n",
"So in **microscopic** perspective, the first thing molecules need to react is collision.\n",
"\n",
"In Spatiocyte however you make this **microscopic** rate faster, you can NOT make the reaction rate faster than diffusion rate.\n",
"This is called **diffusion-limited**.\n",
"This is similar to what the molecules coordinated disproportionately need time to react."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is known that there is a relationship between this macroscopic rate constant $k_\\mathrm{on}$ and microscopic rate constant $k_a$ in 3D space."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"$\n",
"\\frac{1}{k_\\mathrm{on}}=\\frac{1}{k_a}+\\frac{1}{4\\pi RD_\\mathrm{tot}}\n",
"$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, $R$ is the sum of two molecule's radius in collision, $D_\\mathrm{tot}$ is the sum of diffusion coefficients.\n",
"In the case of the above IPython Notebook cell, $k_D=4\\pi RD_\\mathrm{tot}$ is almost 0.25 and **microscopic** rate constant is 1.0.\n",
"So the **macroscopic** rate constant is almost 0.2.\n",
"\n",
"(However unless you specify the configuration for Spatiocyte, the second order reaction rate must be slower than $3\\sqrt{2} RD$, and the dissociation constant $k_D$ is also $3\\sqrt{2} RD$.\n",
"\n",
"The single molecule simulation method can separate molecular **diffusion** and **reaction** in accurate manner contrary to ODE or Gillespie method supposed well mixed system (that is diffusion coefficient is infinite).\n",
"\n",
"However if the microscopic rate constant $k_D$ is small enough, the macroscopic rate constant is almost equal to microscopic one (reaction late-limit)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The structure in the Spatiocyte method"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we explain a way to create a structure like cell membrane.\n",
"Although The structure feature in E-Cell4 is still in development, Spatiocyte supports the structure on some level.\n",
"Let's look a sphere structure as an example.\n",
"\n",
"To restrict the molecular diffusion inside of the sphere, first we create it.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"539805\n"
]
},
{
"data": {
"text/html": [
"<html>\n",
" <head>\n",
" <script type=\"text/javascript\">\n",
" (function(){\n",
" if(window[\"THREE\"] === undefined || window[\"d3\"] === undefined){\n",
"\t require.config({\n",
"\t paths:{\n",
"\t d3: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.4/d3.min',\n",
"\t 'custom/d3.min'\n",
"\t ],\n",
"\t THREE: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/three.js/r66/three.min',\n",
"\t 'custom/three.min'\n",
"\t ],\n",
" Elegans: [\n",
"\t 'https://rawgit.com/domitry/elegans/master/release/elegans',\n",
"\t 'custom/elegans'\n",
"\t ]\n",
"\t },\n",
"\t shim:{\n",
"\t THREE: {\n",
"\t exports: 'THREE'\n",
"\t },\n",
"\t Elegans: {\n",
"\t deps: ['THREE'],\n",
"\t exports: 'Elegans'\n",
"\t }\n",
"\t }\n",
"\t });\n",
"\n",
"\t require([\"d3\", \"THREE\"], function(d3){\n",
"\t window[\"d3\"] = d3;\n",
"\n",
"\t d3.select(document)\n",
"\t .on(\"contextmenu\", function(){\n",
"\t d3.selectAll(\"canvas\").style(\"z-index\", 10);\n",
"\t d3.selectAll(\".download_menu\").style(\"z-index\", 100);\n",
"\t });\n",
"\t });\n",
" }\n",
"\n",
" require([\"Elegans\"], function(){\n",
"\t console.log(\"Begin rendering...\");\n",
"\t var model = {\"options\": {\"height\": 500, \"autorange\": false, \"save_image\": false, \"width\": 500, \"grid\": true, \"range\": {\"x\": [0.0, 1.0], \"y\": [0.0, 1.0], \"z\": [0.0, 1.0]}}, \"plots\": [{\"options\": {\"name\": \"C\", \"color\": \"#a6cee3\", \"size\": 0.15}, \"type\": \"Particles\", \"data\": {\"x\": [0.3347635981803677, 0.7266819570256763, 0.5552176750308537, 0.751176854453508, 0.5143928459844674, 0.7266819570256763, 0.7021870595978444, 0.13880441875771343, 0.7021870595978444, 0.6776921621700127, 0.5797125724586856, 0.187794213613377, 0.05715476066494083, 0.44907311951024936, 0.68585712797929, 0.563382640840131, 0.3592584956081995, 0.3837533930360313, 0.4409081537009721, 0.5062278801751902, 0.7756717518813399, 0.8899812732112214, 0.5388877434122993, 0.8328265125462806, 0.68585712797929, 0.7266819570256763, 0.8654863757833897, 0.4164132562731403, 0.2939387691339814, 0.6368673331236264, 0.3184336665618132, 0.8001666493091716, 0.28577380332470415, 0.3592584956081995, 0.4245782220824176, 0.5715476066494083, 0.59604250407724, 0.5470527092215764, 0.7593418202627853, 0.3510935297989222, 0.530722777603022, 0.5388877434122993, 0.7593418202627853, 0.8654863757833897, 0.39191835884530857, 0.6123724356957946, 0.4000833246545858, 0.5878775382679629, 0.342928563989645, 0.6940220937885672, 0.43274318789169486, 0.32659863237109044, 0.7675067860720626, 0.3674234614174768, 0.5470527092215764, 0.1061445555206044, 0.28577380332470415, 0.20412414523193154, 0.17962924780409975, 0.1469693845669907, 0.563382640840131, 0.187794213613377, 0.5225578117937447, 0.6287023673143491, 0.3184336665618132, 0.5470527092215764, 0.7348469228349536, 0.4409081537009721, 0.3510935297989222, 0.8328265125462806, 0.2531139400875951, 0.6776921621700127, 0.6776921621700127, 0.375588427226754, 0.44907311951024936, 0.6123724356957946, 0.3347635981803677, 0.3674234614174768, 0.08981462390204988, 0.5552176750308537, 0.26944387170614964, 0.30210373494325865, 0.5878775382679629, 0.23678400846904057, 0.6776921621700127, 0.4164132562731403, 0.22861904265976332, 0.4082482904638631, 0.8491564441648352, 0.718516991216399, 0.6613622305514582, 0.3837533930360313, 0.6123724356957946, 0.5797125724586856, 0.15513435037626797, 0.1714642819948225, 0.342928563989645, 0.5470527092215764, 0.6205374015050719, 0.6940220937885672, 0.6695271963607354, 0.5878775382679629, 0.24494897427831783, 0.3837533930360313, 0.5552176750308537, 0.8001666493091716, 0.7103520254071217, 0.6613622305514582, 0.59604250407724, 0.6531972647421809, 0.8328265125462806, 0.342928563989645, 0.6613622305514582, 0.7756717518813399, 0.7103520254071217, 0.12247448713915891, 0.5715476066494083, 0.4164132562731403, 0.375588427226754, 0.3837533930360313, 0.2531139400875951, 0.4245782220824176, 0.6613622305514582, 0.7756717518813399, 0.5470527092215764, 0.39191835884530857, 0.5797125724586856, 0.873651341592667, 0.23678400846904057, 0.7021870595978444, 0.28577380332470415, 0.375588427226754, 0.6123724356957946, 0.5878775382679629, 0.6776921621700127, 0.32659863237109044, 0.3510935297989222, 0.30210373494325865, 0.8573214099741124, 0.5225578117937447, 0.22861904265976332, 0.43274318789169486, 0.3184336665618132, 0.68585712797929, 0.39191835884530857, 0.22861904265976332, 0.13880441875771343, 0.375588427226754, 0.8491564441648352, 0.7266819570256763, 0.39191835884530857, 0.751176854453508, 0.59604250407724, 0.32659863237109044, 0.26127890589687236, 0.3347635981803677, 0.48173298274735843, 0.5062278801751902, 0.2531139400875951, 0.6450322989329036, 0.19595917942265428, 0.1061445555206044, 0.3510935297989222, 0.8818163074019442, 0.3837533930360313, 0.17962924780409975, 0.5797125724586856, 0.48173298274735843, 0.6531972647421809, 0.68585712797929, 0.6776921621700127, 0.6368673331236264, 0.8164965809277261, 0.4082482904638631, 0.45723808531952664, 0.8981462390204987, 0.7756717518813399, 0.27760883751542687, 0.187794213613377, 0.4000833246545858, 0.4082482904638631, 0.9144761706390533, 0.7756717518813399, 0.39191835884530857, 0.27760883751542687, 0.7756717518813399, 0.39191835884530857, 0.8899812732112214, 0.6368673331236264, 0.342928563989645, 0.5470527092215764, 0.6123724356957946, 0.17962924780409975, 0.16329931618554522, 0.6042074698865173, 0.4164132562731403, 0.5470527092215764, 0.5470527092215764, 0.47356801693808115, 0.5388877434122993, 0.3837533930360313, 0.49806291436591293, 0.8246615467370034, 0.44907311951024936, 0.7103520254071217, 0.13880441875771343, 0.6042074698865173, 0.39191835884530857, 0.7430118886442307, 0.31026870075253593, 0.6695271963607354, 0.48173298274735843, 0.32659863237109044, 0.563382640840131, 0.1061445555206044, 0.718516991216399, 0.6450322989329036, 0.08164965809277261, 0.4000833246545858, 0.6613622305514582, 0.5388877434122993, 0.27760883751542687, 0.24494897427831783, 0.19595917942265428, 0.6531972647421809, 0.8654863757833897, 0.5225578117937447, 0.7021870595978444, 0.07348469228349536, 0.48989794855663565, 0.6450322989329036, 0.68585712797929, 0.68585712797929, 0.7593418202627853, 0.563382640840131, 0.49806291436591293, 0.30210373494325865, 0.7348469228349536, 0.59604250407724, 0.47356801693808115, 0.68585712797929, 0.3510935297989222, 0.43274318789169486, 0.39191835884530857, 0.5715476066494083, 0.39191835884530857, 0.30210373494325865, 0.1714642819948225, 0.1714642819948225, 0.22045407685048604, 0.7266819570256763, 0.375588427226754, 0.342928563989645, 0.7430118886442307, 0.30210373494325865, 0.5225578117937447, 0.26127890589687236, 0.530722777603022, 0.1061445555206044, 0.6205374015050719, 0.5143928459844674, 0.563382640840131, 0.3510935297989222, 0.718516991216399, 0.68585712797929, 0.6531972647421809, 0.2122891110412088, 0.3674234614174768, 0.09797958971132714, 0.26944387170614964, 0.6368673331236264, 0.3674234614174768, 0.4082482904638631, 0.5715476066494083, 0.5552176750308537, 0.17962924780409975, 0.28577380332470415, 0.48989794855663565, 0.4082482904638631, 0.22045407685048604, 0.7920016834998943, 0.31026870075253593, 0.3184336665618132, 0.48989794855663565, 0.7430118886442307, 0.7103520254071217, 0.17962924780409975, 0.3184336665618132, 0.12247448713915891, 0.5470527092215764, 0.26944387170614964, 0.5715476066494083, 0.31026870075253593, 0.5552176750308537, 0.47356801693808115, 0.4409081537009721, 0.6776921621700127, 0.6042074698865173, 0.5470527092215764, 0.718516991216399, 0.45723808531952664, 0.5470527092215764, 0.31026870075253593, 0.48173298274735843, 0.8899812732112214, 0.6776921621700127, 0.8246615467370034, 0.6940220937885672, 0.48989794855663565, 0.530722777603022, 0.1061445555206044, 0.28577380332470415, 0.27760883751542687, 0.530722777603022, 0.17962924780409975, 0.5470527092215764, 0.22045407685048604, 0.4082482904638631, 0.8409914783555579, 0.3510935297989222, 0.30210373494325865, 0.4000833246545858, 0.5143928459844674, 0.26944387170614964, 0.8409914783555579, 0.59604250407724, 0.6531972647421809, 0.22045407685048604, 0.4245782220824176, 0.16329931618554522, 0.4409081537009721, 0.27760883751542687, 0.12247448713915891, 0.45723808531952664, 0.59604250407724, 0.48989794855663565, 0.22861904265976332, 0.7675067860720626, 0.8409914783555579, 0.3837533930360313, 0.44907311951024936, 0.5552176750308537, 0.7021870595978444, 0.530722777603022, 0.8573214099741124, 0.563382640840131, 0.47356801693808115, 0.13880441875771343, 0.20412414523193154, 0.15513435037626797, 0.4245782220824176, 0.19595917942265428, 0.5552176750308537, 0.32659863237109044, 0.3837533930360313, 0.17962924780409975, 0.5470527092215764, 0.3510935297989222, 0.563382640840131, 0.28577380332470415, 0.59604250407724, 0.2531139400875951, 0.3837533930360313, 0.8981462390204987, 0.5470527092215764, 0.5552176750308537, 0.68585712797929, 0.563382640840131, 0.4245782220824176, 0.4082482904638631, 0.5470527092215764, 0.7103520254071217, 0.7266819570256763, 0.6123724356957946, 0.13880441875771343, 0.43274318789169486, 0.718516991216399, 0.6940220937885672, 0.5062278801751902, 0.342928563989645, 0.6205374015050719, 0.3347635981803677, 0.9144761706390533, 0.7430118886442307, 0.5878775382679629, 0.15513435037626797, 0.31026870075253593, 0.43274318789169486, 0.6776921621700127, 0.17962924780409975, 0.5062278801751902, 0.11430952132988166, 0.718516991216399, 0.7593418202627853, 0.718516991216399, 0.4245782220824176, 0.49806291436591293, 0.32659863237109044, 0.6287023673143491, 0.39191835884530857, 0.6368673331236264, 0.31026870075253593, 0.44907311951024936, 0.375588427226754, 0.3837533930360313, 0.59604250407724, 0.4245782220824176, 0.45723808531952664, 0.7920016834998943, 0.8001666493091716, 0.9144761706390533, 0.3674234614174768, 0.5470527092215764, 0.873651341592667, 0.24494897427831783, 0.6531972647421809, 0.2939387691339814, 0.8573214099741124, 0.28577380332470415, 0.22045407685048604, 0.3837533930360313, 0.48989794855663565, 0.7348469228349536, 0.7348469228349536, 0.28577380332470415, 0.20412414523193154, 0.6531972647421809, 0.49806291436591293, 0.5470527092215764, 0.45723808531952664, 0.48989794855663565, 0.7348469228349536, 0.7675067860720626, 0.27760883751542687, 0.49806291436591293, 0.5470527092215764, 0.7103520254071217, 0.7675067860720626, 0.7266819570256763, 0.5388877434122993, 0.7593418202627853, 0.23678400846904057, 0.28577380332470415, 0.8491564441648352, 0.46540305112880387, 0.5388877434122993, 0.7838367176906171, 0.48989794855663565, 0.5552176750308537, 0.8246615467370034, 0.15513435037626797, 0.5062278801751902, 0.2939387691339814, 0.5552176750308537, 0.530722777603022, 0.187794213613377, 0.28577380332470415, 0.6287023673143491, 0.7021870595978444, 0.09797958971132714, 0.32659863237109044, 0.7021870595978444, 0.22045407685048604, 0.342928563989645, 0.9226411364483306, 0.6042074698865173, 0.1061445555206044, 0.5878775382679629, 0.9144761706390533, 0.3674234614174768, 0.6450322989329036, 0.7756717518813399, 0.7430118886442307, 0.8246615467370034, 0.6205374015050719, 0.23678400846904057, 0.5797125724586856, 0.2939387691339814, 0.28577380332470415, 0.4164132562731403, 0.5388877434122993, 0.3837533930360313, 0.6042074698865173, 0.6613622305514582, 0.8328265125462806, 0.48173298274735843, 0.1061445555206044, 0.6450322989329036, 0.5552176750308537, 0.6531972647421809, 0.49806291436591293, 0.906311204829776, 0.24494897427831783, 0.375588427226754, 0.5878775382679629, 0.5552176750308537, 0.2531139400875951, 0.44907311951024936, 0.6042074698865173, 0.7675067860720626, 0.22861904265976332, 0.68585712797929, 0.7103520254071217, 0.5470527092215764, 0.59604250407724, 0.22861904265976332, 0.30210373494325865, 0.3592584956081995, 0.6123724356957946, 0.1061445555206044, 0.26127890589687236, 0.8164965809277261, 0.6123724356957946, 0.3347635981803677, 0.2531139400875951, 0.6940220937885672, 0.43274318789169486, 0.5797125724586856, 0.3592584956081995, 0.5225578117937447, 0.43274318789169486, 0.8818163074019442, 0.8164965809277261, 0.751176854453508, 0.43274318789169486, 0.1061445555206044, 0.563382640840131, 0.8001666493091716, 0.4000833246545858, 0.1714642819948225, 0.530722777603022, 0.2122891110412088, 0.7920016834998943, 0.5225578117937447, 0.45723808531952664, 0.375588427226754, 0.718516991216399, 0.6123724356957946, 0.48989794855663565, 0.8491564441648352, 0.8328265125462806, 0.6776921621700127, 0.7675067860720626, 0.1469693845669907, 0.47356801693808115, 0.26127890589687236, 0.6531972647421809, 0.12247448713915891, 0.3184336665618132, 0.8573214099741124, 0.49806291436591293, 0.5552176750308537, 0.3674234614174768, 0.6531972647421809, 0.4409081537009721, 0.563382640840131, 0.59604250407724, 0.27760883751542687, 0.45723808531952664, 0.5225578117937447, 0.2122891110412088, 0.5878775382679629, 0.16329931618554522, 0.6776921621700127, 0.43274318789169486, 0.5715476066494083, 0.24494897427831783, 0.7675067860720626, 0.59604250407724, 0.8491564441648352, 0.49806291436591293, 0.6613622305514582, 0.27760883751542687, 0.6042074698865173, 0.47356801693808115, 0.7920016834998943, 0.6613622305514582, 0.8573214099741124, 0.7103520254071217, 0.15513435037626797, 0.28577380332470415, 0.3837533930360313, 0.13880441875771343, 0.3592584956081995, 0.3510935297989222, 0.5225578117937447, 0.30210373494325865, 0.48173298274735843, 0.24494897427831783, 0.7103520254071217, 0.20412414523193154, 0.59604250407724, 0.8083316151184489, 0.8981462390204987, 0.563382640840131, 0.375588427226754, 0.30210373494325865, 0.48173298274735843, 0.6368673331236264, 0.68585712797929, 0.39191835884530857, 0.7103520254071217, 0.59604250407724, 0.8899812732112214, 0.375588427226754, 0.7348469228349536, 0.08981462390204988, 0.7266819570256763, 0.68585712797929, 0.26944387170614964, 0.1714642819948225, 0.4164132562731403, 0.30210373494325865, 0.5878775382679629, 0.45723808531952664, 0.26944387170614964, 0.7021870595978444, 0.5878775382679629, 0.5552176750308537, 0.5062278801751902, 0.3347635981803677, 0.7593418202627853, 0.7266819570256763, 0.2122891110412088, 0.7756717518813399, 0.4164132562731403, 0.6695271963607354, 0.6695271963607354, 0.28577380332470415, 0.5062278801751902, 0.6287023673143491, 0.4164132562731403, 0.342928563989645, 0.1061445555206044, 0.6042074698865173, 0.5797125724586856, 0.4164132562731403, 0.24494897427831783, 0.6940220937885672, 0.7266819570256763, 0.6776921621700127, 0.44907311951024936, 0.7266819570256763, 0.31026870075253593, 0.6450322989329036, 0.47356801693808115, 0.6940220937885672, 0.3837533930360313, 0.48989794855663565, 0.7756717518813399, 0.43274318789169486, 0.3510935297989222, 0.5143928459844674, 0.46540305112880387, 0.32659863237109044, 0.718516991216399, 0.19595917942265428, 0.6450322989329036, 0.32659863237109044, 0.45723808531952664, 0.187794213613377, 0.751176854453508, 0.8328265125462806, 0.3592584956081995, 0.5878775382679629, 0.7675067860720626, 0.32659863237109044, 0.2531139400875951, 0.7021870595978444, 0.3592584956081995, 0.23678400846904057, 0.6287023673143491, 0.48989794855663565, 0.1061445555206044, 0.4409081537009721, 0.22045407685048604, 0.8818163074019442, 0.563382640840131, 0.8246615467370034, 0.3510935297989222, 0.6695271963607354, 0.8246615467370034, 0.8981462390204987, 0.5552176750308537, 0.22861904265976332, 0.47356801693808115, 0.59604250407724, 0.59604250407724, 0.8083316151184489, 0.873651341592667, 0.563382640840131, 0.3837533930360313, 0.26944387170614964, 0.718516991216399, 0.43274318789169486, 0.26127890589687236, 0.5062278801751902, 0.8083316151184489, 0.3184336665618132, 0.3674234614174768, 0.8491564441648352, 0.4409081537009721, 0.5552176750308537, 0.28577380332470415, 0.563382640840131, 0.2939387691339814, 0.44907311951024936, 0.5062278801751902, 0.45723808531952664, 0.5715476066494083, 0.375588427226754, 0.6205374015050719, 0.6123724356957946, 0.3510935297989222, 0.6042074698865173, 0.3837533930360313, 0.7021870595978444, 0.563382640840131, 0.9144761706390533, 0.3674234614174768, 0.20412414523193154, 0.1469693845669907, 0.48989794855663565, 0.7593418202627853, 0.46540305112880387, 0.873651341592667, 0.187794213613377, 0.6940220937885672, 0.3347635981803677, 0.48989794855663565, 0.6450322989329036, 0.375588427226754, 0.7103520254071217, 0.15513435037626797, 0.187794213613377, 0.187794213613377, 0.7838367176906171, 0.530722777603022, 0.2122891110412088, 0.5470527092215764, 0.31026870075253593, 0.5143928459844674, 0.5715476066494083, 0.16329931618554522, 0.5062278801751902, 0.22861904265976332, 0.5715476066494083, 0.6368673331236264, 0.3510935297989222, 0.48989794855663565, 0.530722777603022, 0.4164132562731403, 0.32659863237109044, 0.6042074698865173, 0.7021870595978444, 0.5878775382679629, 0.6123724356957946, 0.8001666493091716, 0.5552176750308537, 0.563382640840131, 0.20412414523193154, 0.24494897427831783, 0.27760883751542687, 0.6368673331236264, 0.5470527092215764, 0.5470527092215764, 0.45723808531952664, 0.68585712797929, 0.27760883751542687, 0.6368673331236264, 0.6776921621700127, 0.30210373494325865, 0.3347635981803677, 0.5062278801751902, 0.5143928459844674, 0.48173298274735843, 0.3510935297989222, 0.342928563989645, 0.342928563989645, 0.3347635981803677, 0.6368673331236264, 0.5062278801751902, 0.48989794855663565, 0.26944387170614964, 0.342928563989645, 0.6695271963607354, 0.7348469228349536, 0.31026870075253593, 0.31026870075253593, 0.8001666493091716, 0.7103520254071217, 0.5715476066494083, 0.4245782220824176, 0.59604250407724, 0.6205374015050719, 0.6450322989329036, 0.1061445555206044, 0.7348469228349536, 0.48173298274735843, 0.5388877434122993, 0.5388877434122993, 0.44907311951024936, 0.4082482904638631, 0.49806291436591293, 0.5388877434122993, 0.6695271963607354, 0.6613622305514582, 0.7103520254071217, 0.8164965809277261, 0.30210373494325865, 0.563382640840131, 0.12247448713915891, 0.6940220937885672, 0.4409081537009721, 0.530722777603022, 0.530722777603022, 0.3592584956081995, 0.68585712797929, 0.718516991216399, 0.8164965809277261, 0.32659863237109044, 0.26127890589687236, 0.19595917942265428, 0.8246615467370034, 0.530722777603022, 0.6450322989329036, 0.5062278801751902, 0.530722777603022, 0.6042074698865173, 0.4164132562731403, 0.6450322989329036, 0.45723808531952664, 0.28577380332470415, 0.7756717518813399, 0.47356801693808115, 0.6287023673143491, 0.68585712797929, 0.46540305112880387, 0.5797125724586856, 0.5225578117937447, 0.1714642819948225, 0.5715476066494083, 0.59604250407724, 0.6287023673143491, 0.3592584956081995, 0.4000833246545858, 0.47356801693808115, 0.342928563989645, 0.6776921621700127, 0.5388877434122993, 0.5062278801751902, 0.751176854453508, 0.6450322989329036, 0.59604250407724, 0.6695271963607354, 0.6123724356957946, 0.5225578117937447, 0.7021870595978444, 0.24494897427831783, 0.28577380332470415, 0.3184336665618132, 0.2939387691339814, 0.7838367176906171, 0.2531139400875951, 0.6123724356957946, 0.7756717518813399, 0.31026870075253593, 0.5552176750308537, 0.8164965809277261, 0.4082482904638631, 0.5797125724586856, 0.3674234614174768, 0.39191835884530857, 0.39191835884530857, 0.30210373494325865, 0.6450322989329036, 0.4000833246545858, 0.6695271963607354, 0.6205374015050719, 0.7675067860720626, 0.68585712797929, 0.6042074698865173, 0.3510935297989222, 0.16329931618554522, 0.7593418202627853, 0.6123724356957946, 0.8409914783555579, 0.6205374015050719, 0.45723808531952664, 0.5225578117937447, 0.8573214099741124, 0.4245782220824176, 0.375588427226754, 0.44907311951024936, 0.68585712797929, 0.5225578117937447, 0.6776921621700127, 0.7266819570256763, 0.5715476066494083, 0.3510935297989222, 0.7756717518813399, 0.46540305112880387, 0.906311204829776, 0.2122891110412088, 0.5143928459844674, 0.4082482904638631, 0.5715476066494083, 0.39191835884530857, 0.4164132562731403, 0.5143928459844674, 0.13880441875771343, 0.5225578117937447, 0.4245782220824176, 0.6940220937885672, 0.27760883751542687, 0.5552176750308537, 0.5388877434122993, 0.3510935297989222, 0.5552176750308537, 0.45723808531952664, 0.32659863237109044, 0.30210373494325865, 0.26127890589687236, 0.39191835884530857, 0.6287023673143491, 0.5715476066494083, 0.5470527092215764, 0.26127890589687236, 0.4409081537009721, 0.8164965809277261, 0.4164132562731403, 0.1714642819948225, 0.46540305112880387, 0.6205374015050719, 0.39191835884530857, 0.6368673331236264, 0.906311204829776, 0.7838367176906171, 0.59604250407724, 0.8001666493091716, 0.7021870595978444, 0.19595917942265428, 0.26944387170614964, 0.68585712797929, 0.43274318789169486, 0.5552176750308537, 0.530722777603022, 0.2122891110412088, 0.4082482904638631, 0.5225578117937447, 0.5143928459844674, 0.6123724356957946, 0.17962924780409975, 0.563382640840131, 0.16329931618554522, 0.15513435037626797, 0.5552176750308537, 0.6123724356957946, 0.342928563989645, 0.6695271963607354, 0.20412414523193154, 0.7756717518813399, 0.530722777603022, 0.3510935297989222, 0.187794213613377, 0.6450322989329036, 0.6776921621700127, 0.3674234614174768, 0.8573214099741124, 0.26944387170614964, 0.751176854453508, 0.3674234614174768, 0.6776921621700127, 0.13063945294843618, 0.46540305112880387, 0.23678400846904057, 0.48173298274735843, 0.530722777603022, 0.23678400846904057, 0.6940220937885672, 0.187794213613377, 0.6368673331236264, 0.4164132562731403, 0.43274318789169486, 0.375588427226754, 0.6123724356957946, 0.6450322989329036, 0.59604250407724, 0.6531972647421809, 0.2939387691339814, 0.8246615467370034, 0.32659863237109044, 0.5470527092215764, 0.26944387170614964, 0.3592584956081995, 0.4245782220824176, 0.7021870595978444, 0.4082482904638631, 0.68585712797929, 0.3674234614174768], \"y\": [0.2800148805569685, 0.18475208614068023, 0.30310889132455354, 0.268467875173176, 0.38393792901110113, 0.4532199613138562, 0.6581793068761734, 0.38393792901110113, 0.5196152422706632, 0.48786097746523377, 0.7649891066762542, 0.49652123150307814, 0.48786097746523377, 0.15011106998930268, 0.4676537180435969, 0.49652123150307814, 0.5109549882328188, 0.21939310229205777, 0.4676537180435969, 0.4070319397786862, 0.5484827557301445, 0.7130275824491878, 0.5715767664977295, 0.6841600689897065, 0.5629165124598852, 0.36661742093541233, 0.5888972745734182, 0.6783865662978104, 0.3637306695894642, 0.4503332099679081, 0.17609183210283585, 0.17320508075688773, 0.513841739578767, 0.7101408311032397, 0.3637306695894642, 0.6581793068761734, 0.6697263122599659, 0.40125843708678993, 0.6870468203356547, 0.15011106998930268, 0.626425042070744, 0.24248711305964282, 0.33197640478403484, 0.7188010851410841, 0.7534421012924616, 0.7823096147519429, 0.4358994532381674, 0.7274613391789284, 0.7447818472546173, 0.8775724091682312, 0.15877132402714708, 0.7014805770653953, 0.22516660498395405, 0.36661742093541233, 0.7216878364870323, 0.4618802153517006, 0.21939310229205777, 0.20207259421636903, 0.7274613391789284, 0.4243524478543749, 0.470540469389545, 0.3406366588218792, 0.7447818472546173, 0.6091045339950553, 0.31465589670834604, 0.37527767497325676, 0.8573651497465943, 0.9266471820493494, 0.4099186911246343, 0.7707626093681504, 0.30599564267050167, 0.5225019936166114, 0.35795716689756796, 0.7274613391789284, 0.30599564267050167, 0.8862326632060756, 0.12413030787576954, 0.24537386440559095, 0.5571430097679889, 0.5196152422706632, 0.5917840259193664, 0.35795716689756796, 0.14722431864335456, 0.8169506309033205, 0.6610660582221216, 0.3233161507461904, 0.7534421012924616, 0.6581793068761734, 0.4763139720814413, 0.1991858428704209, 0.7303480905248766, 0.49652123150307814, 0.3233161507461904, 0.26269437248127975, 0.37527767497325676, 0.3925981830489455, 0.874685657822283, 0.19341234017852463, 0.8227241335952167, 0.6177647880328996, 0.6841600689897065, 0.17320508075688773, 0.48497422611928565, 0.6091045339950553, 0.5109549882328188, 0.41569219381653055, 0.626425042070744, 0.8429313930168537, 0.12413030787576954, 0.15588457268119896, 0.4763139720814413, 0.4763139720814413, 0.40125843708678993, 0.42723919920032305, 0.40125843708678993, 0.3925981830489455, 0.3204293994002423, 0.8169506309033205, 0.21650635094610965, 0.35795716689756796, 0.38393792901110113, 0.07794228634059948, 0.30599564267050167, 0.37527767497325676, 0.33197640478403484, 0.48497422611928565, 0.4618802153517006, 0.26269437248127975, 0.37527767497325676, 0.6841600689897065, 0.5398225016923002, 0.7361215932167728, 0.7736493607140986, 0.6668395609140177, 0.3233161507461904, 0.8140638795573724, 0.2800148805569685, 0.7563288526384098, 0.31465589670834604, 0.6148780366869514, 0.23382685902179845, 0.8775724091682312, 0.24537386440559095, 0.28578838324886474, 0.10392304845413264, 0.268467875173176, 0.5398225016923002, 0.6062177826491071, 0.7707626093681504, 0.4532199613138562, 0.6581793068761734, 0.8140638795573724, 0.5225019936166114, 0.6841600689897065, 0.37239092362730863, 0.6610660582221216, 0.4358994532381674, 0.6841600689897065, 0.33197640478403484, 0.6437455501464328, 0.5282754963085076, 0.4185789451624787, 0.513841739578767, 0.4330127018922193, 0.19341234017852463, 0.5629165124598852, 0.49652123150307814, 0.22805335632990217, 0.7101408311032397, 0.7274613391789284, 0.6957070743734991, 0.762102355330306, 0.5022947341949744, 0.1818653347947321, 0.30310889132455354, 0.5542562584220407, 0.5744635178436777, 0.30310889132455354, 0.6957070743734991, 0.0808290376865476, 0.16454482671904336, 0.48497422611928565, 0.6177647880328996, 0.1818653347947321, 0.5196152422706632, 0.3406366588218792, 0.17320508075688773, 0.5225019936166114, 0.7880831174438392, 0.9179869280115049, 0.42723919920032305, 0.1414508159514583, 0.3290896534380867, 0.49363448015713, 0.3897114317029974, 0.33197640478403484, 0.5917840259193664, 0.33197640478403484, 0.6321985447626403, 0.381051177665153, 0.4358994532381674, 0.8689121551303868, 0.4099186911246343, 0.7303480905248766, 0.48786097746523377, 0.6957070743734991, 0.762102355330306, 0.6062177826491071, 0.4618802153517006, 0.4330127018922193, 0.24248711305964282, 0.1414508159514583, 0.2511473670974872, 0.6004442799572108, 0.6437455501464328, 0.4330127018922193, 0.36661742093541233, 0.45899346400575247, 0.28867513459481287, 0.5225019936166114, 0.6928203230275509, 0.28578838324886474, 0.5282754963085076, 0.37239092362730863, 0.5109549882328188, 0.5455960043841963, 0.5629165124598852, 0.536935750346352, 0.5744635178436777, 0.8400446416709055, 0.5311622476544557, 0.5802370205355739, 0.7534421012924616, 0.35795716689756796, 0.470540469389545, 0.42723919920032305, 0.7130275824491878, 0.45899346400575247, 0.3233161507461904, 0.6668395609140177, 0.6841600689897065, 0.7996301228276318, 0.16743157806499148, 0.5542562584220407, 0.48497422611928565, 0.35507041555161983, 0.6697263122599659, 0.5658032638058333, 0.4358994532381674, 0.35795716689756796, 0.3925981830489455, 0.4416729559300637, 0.5802370205355739, 0.48786097746523377, 0.7996301228276318, 0.30310889132455354, 0.8227241335952167, 0.7909698687897874, 0.6697263122599659, 0.3983716857408418, 0.48786097746523377, 0.7736493607140986, 0.7909698687897874, 0.8833459118601275, 0.4330127018922193, 0.3897114317029974, 0.48497422611928565, 0.6091045339950553, 0.4416729559300637, 0.38393792901110113, 0.8920061658979718, 0.24537386440559095, 0.9093266739736606, 0.7534421012924616, 0.3983716857408418, 0.6841600689897065, 0.4358994532381674, 0.41569219381653055, 0.1818653347947321, 0.5744635178436777, 0.3233161507461904, 0.7880831174438392, 0.3492969128597236, 0.21650635094610965, 0.19341234017852463, 0.49652123150307814, 0.6668395609140177, 0.5398225016923002, 0.626425042070744, 0.8689121551303868, 0.6610660582221216, 0.3117691453623979, 0.1818653347947321, 0.5109549882328188, 0.4763139720814413, 0.5802370205355739, 0.3492969128597236, 0.5715767664977295, 0.2800148805569685, 0.41569219381653055, 0.5542562584220407, 0.513841739578767, 0.4676537180435969, 0.9035531712817644, 0.6783865662978104, 0.37527767497325676, 0.7130275824491878, 0.5831237718815221, 0.5022947341949744, 0.513841739578767, 0.33197640478403484, 0.5051814855409226, 0.3204293994002423, 0.15011106998930268, 0.268467875173176, 0.6350852961085884, 0.42723919920032305, 0.1905255888325765, 0.7649891066762542, 0.5051814855409226, 0.30599564267050167, 0.5831237718815221, 0.3233161507461904, 0.44455970727601185, 0.7216878364870323, 0.4099186911246343, 0.7880831174438392, 0.4532199613138562, 0.6581793068761734, 0.6148780366869514, 0.8920061658979718, 0.2598076211353316, 0.48786097746523377, 0.48497422611928565, 0.6437455501464328, 0.48497422611928565, 0.6062177826491071, 0.4070319397786862, 0.33197640478403484, 0.6004442799572108, 0.7649891066762542, 0.536935750346352, 0.10392304845413264, 0.15011106998930268, 0.40125843708678993, 0.3925981830489455, 0.5975575286112627, 0.6091045339950553, 0.7996301228276318, 0.6870468203356547, 0.5715767664977295, 0.6581793068761734, 0.28578838324886474, 0.15588457268119896, 0.33197640478403484, 0.5022947341949744, 0.8429313930168537, 0.15011106998930268, 0.23671361036774657, 0.6350852961085884, 0.13279056191361394, 0.3233161507461904, 0.38393792901110113, 0.6235382907247958, 0.31465589670834604, 0.6148780366869514, 0.7707626093681504, 0.8082903768654761, 0.45899346400575247, 0.6235382907247958, 0.28867513459481287, 0.33197640478403484, 0.23671361036774657, 0.6783865662978104, 0.5311622476544557, 0.2713546265191241, 0.6321985447626403, 0.2540341184434353, 0.6408587988004846, 0.7880831174438392, 0.2598076211353316, 0.44455970727601185, 0.4676537180435969, 0.7216878364870323, 0.4676537180435969, 0.26269437248127975, 0.27712812921102037, 0.6437455501464328, 0.17609183210283585, 0.3377499074759311, 0.7967433714816836, 0.4763139720814413, 0.5196152422706632, 0.5917840259193664, 0.1991858428704209, 0.536935750346352, 0.626425042070744, 0.2511473670974872, 0.6697263122599659, 0.21650635094610965, 0.6841600689897065, 0.4503332099679081, 0.38393792901110113, 0.8140638795573724, 0.6177647880328996, 0.8689121551303868, 0.6581793068761734, 0.5455960043841963, 0.5398225016923002, 0.5542562584220407, 0.5888972745734182, 0.42723919920032305, 0.5398225016923002, 0.37527767497325676, 0.1905255888325765, 0.2598076211353316, 0.4676537180435969, 0.3925981830489455, 0.26269437248127975, 0.4185789451624787, 0.4532199613138562, 0.3897114317029974, 0.6321985447626403, 0.45899346400575247, 0.6437455501464328, 0.23671361036774657, 0.5022947341949744, 0.35795716689756796, 0.8082903768654761, 0.6321985447626403, 0.4330127018922193, 0.5455960043841963, 0.3290896534380867, 0.6408587988004846, 0.3233161507461904, 0.8169506309033205, 0.24537386440559095, 0.5629165124598852, 0.4185789451624787, 0.8140638795573724, 0.40125843708678993, 0.2800148805569685, 0.4099186911246343, 0.6062177826491071, 0.2713546265191241, 0.2598076211353316, 0.7361215932167728, 0.23382685902179845, 0.6235382907247958, 0.2800148805569685, 0.2540341184434353, 0.7794228634059948, 0.4503332099679081, 0.5802370205355739, 0.8689121551303868, 0.38393792901110113, 0.2107328482542134, 0.6091045339950553, 0.5022947341949744, 0.649519052838329, 0.16454482671904336, 0.2598076211353316, 0.5484827557301445, 0.4070319397786862, 0.5831237718815221, 0.8400446416709055, 0.513841739578767, 0.6928203230275509, 0.6235382907247958, 0.6004442799572108, 0.6350852961085884, 0.31465589670834604, 0.8342711389790093, 0.22805335632990217, 0.48497422611928565, 0.7563288526384098, 0.7736493607140986, 0.21650635094610965, 0.3492969128597236, 0.29733538863265724, 0.1299038105676658, 0.5051814855409226, 0.6408587988004846, 0.6524058041842772, 0.5109549882328188, 0.9208736793574531, 0.48786097746523377, 0.5225019936166114, 0.874685657822283, 0.8660254037844386, 0.3925981830489455, 0.44455970727601185, 0.3290896534380867, 0.5542562584220407, 0.37239092362730863, 0.3377499074759311, 0.5917840259193664, 0.2540341184434353, 0.8920061658979718, 0.5715767664977295, 0.16454482671904336, 0.6321985447626403, 0.8169506309033205, 0.13279056191361394, 0.6524058041842772, 0.5629165124598852, 0.6783865662978104, 0.4763139720814413, 0.7909698687897874, 0.5398225016923002, 0.649519052838329, 0.6408587988004846, 0.6350852961085884, 0.28867513459481287, 0.38393792901110113, 0.2800148805569685, 0.5051814855409226, 0.49652123150307814, 0.5109549882328188, 0.34641016151377546, 0.3492969128597236, 0.5975575286112627, 0.7361215932167728, 0.5975575286112627, 0.5398225016923002, 0.49652123150307814, 0.44455970727601185, 0.7447818472546173, 0.4358994532381674, 0.4618802153517006, 0.5658032638058333, 0.5715767664977295, 0.7996301228276318, 0.8920061658979718, 0.8833459118601275, 0.7880831174438392, 0.23382685902179845, 0.35795716689756796, 0.5455960043841963, 0.4330127018922193, 0.5109549882328188, 0.5571430097679889, 0.7101408311032397, 0.6148780366869514, 0.8227241335952167, 0.6408587988004846, 0.48497422611928565, 0.4618802153517006, 0.6697263122599659, 0.6177647880328996, 0.1414508159514583, 0.16454482671904336, 0.6783865662978104, 0.28578838324886474, 0.5282754963085076, 0.5398225016923002, 0.28867513459481287, 0.45899346400575247, 0.3897114317029974, 0.8400446416709055, 0.5455960043841963, 0.3377499074759311, 0.5629165124598852, 0.33197640478403484, 0.2540341184434353, 0.5109549882328188, 0.7014805770653953, 0.6668395609140177, 0.8256108849411649, 0.34641016151377546, 0.6697263122599659, 0.8256108849411649, 0.5455960043841963, 0.7794228634059948, 0.4763139720814413, 0.6177647880328996, 0.2800148805569685, 0.30599564267050167, 0.20207259421636903, 0.44455970727601185, 0.36661742093541233, 0.7649891066762542, 0.4099186911246343, 0.4503332099679081, 0.30599564267050167, 0.27712812921102037, 0.5658032638058333, 0.4532199613138562, 0.5542562584220407, 0.6783865662978104, 0.5571430097679889, 0.6870468203356547, 0.470540469389545, 0.5455960043841963, 0.7996301228276318, 0.2598076211353316, 0.8082903768654761, 0.38393792901110113, 0.7447818472546173, 0.3204293994002423, 0.35507041555161983, 0.8082903768654761, 0.5398225016923002, 0.48786097746523377, 0.7274613391789284, 0.5022947341949744, 0.4532199613138562, 0.5398225016923002, 0.16454482671904336, 0.31465589670834604, 0.3492969128597236, 0.24537386440559095, 0.470540469389545, 0.23382685902179845, 0.23382685902179845, 0.851591647054698, 0.8227241335952167, 0.2598076211353316, 0.5888972745734182, 0.7707626093681504, 0.5051814855409226, 0.513841739578767, 0.19341234017852463, 0.7014805770653953, 0.4618802153517006, 0.7996301228276318, 0.4243524478543749, 0.7014805770653953, 0.49652123150307814, 0.7707626093681504, 0.42723919920032305, 0.8082903768654761, 0.48497422611928565, 0.40125843708678993, 0.28578838324886474, 0.6870468203356547, 0.470540469389545, 0.24248711305964282, 0.5051814855409226, 0.31465589670834604, 0.15011106998930268, 0.2107328482542134, 0.30599564267050167, 0.6148780366869514, 0.851591647054698, 0.2511473670974872, 0.5051814855409226, 0.4792007234273894, 0.9093266739736606, 0.6177647880328996, 0.6091045339950553, 0.2800148805569685, 0.6783865662978104, 0.3925981830489455, 0.30310889132455354, 0.7534421012924616, 0.6062177826491071, 0.89489291724392, 0.4676537180435969, 0.4503332099679081, 0.5225019936166114, 0.2944486372867091, 0.5022947341949744, 0.7101408311032397, 0.1818653347947321, 0.7101408311032397, 0.6062177826491071, 0.5484827557301445, 0.2944486372867091, 0.6148780366869514, 0.8082903768654761, 0.2713546265191241, 0.8054036255195279, 0.4532199613138562, 0.8660254037844386, 0.36661742093541233, 0.6581793068761734, 0.13279056191361394, 0.6091045339950553, 0.22805335632990217, 0.6841600689897065, 0.6870468203356547, 0.5802370205355739, 0.5455960043841963, 0.37239092362730863, 0.7361215932167728, 0.44455970727601185, 0.5225019936166114, 0.626425042070744, 0.42723919920032305, 0.4358994532381674, 0.8342711389790093, 0.6004442799572108, 0.3204293994002423, 0.8169506309033205, 0.48497422611928565, 0.5542562584220407, 0.4618802153517006, 0.6350852961085884, 0.8082903768654761, 0.23382685902179845, 0.49363448015713, 0.6062177826491071, 0.5051814855409226, 0.4358994532381674, 0.268467875173176, 0.36661742093541233, 0.536935750346352, 0.5022947341949744, 0.1991858428704209, 0.5715767664977295, 0.6928203230275509, 0.22805335632990217, 0.5917840259193664, 0.3204293994002423, 0.5051814855409226, 0.649519052838329, 0.2107328482542134, 0.4243524478543749, 0.48786097746523377, 0.6870468203356547, 0.7274613391789284, 0.13856406460551018, 0.7649891066762542, 0.28867513459481287, 0.6870468203356547, 0.470540469389545, 0.739008344562721, 0.18475208614068023, 0.09526279441628825, 0.40125843708678993, 0.08660254037844387, 0.5225019936166114, 0.470540469389545, 0.37527767497325676, 0.4358994532381674, 0.5715767664977295, 0.4185789451624787, 0.7101408311032397, 0.8689121551303868, 0.6841600689897065, 0.19341234017852463, 0.8660254037844386, 0.7014805770653953, 0.8833459118601275, 0.5109549882328188, 0.2511473670974872, 0.2598076211353316, 0.44455970727601185, 0.6235382907247958, 0.22805335632990217, 0.42723919920032305, 0.649519052838329, 0.5109549882328188, 0.5196152422706632, 0.16454482671904336, 0.6783865662978104, 0.536935750346352, 0.7361215932167728, 0.13279056191361394, 0.33197640478403484, 0.7274613391789284, 0.268467875173176, 0.15588457268119896, 0.8082903768654761, 0.6177647880328996, 0.6235382907247958, 0.28578838324886474, 0.7534421012924616, 0.28578838324886474, 0.7130275824491878, 0.33197640478403484, 0.24537386440559095, 0.6235382907247958, 0.4792007234273894, 0.26269437248127975, 0.44455970727601185, 0.5888972745734182, 0.4070319397786862, 0.08948929172439199, 0.7794228634059948, 0.30310889132455354, 0.4416729559300637, 0.4185789451624787, 0.536935750346352, 0.5629165124598852, 0.2944486372867091, 0.6668395609140177, 0.5455960043841963, 0.4243524478543749, 0.35795716689756796, 0.4243524478543749, 0.8833459118601275, 0.6783865662978104, 0.6235382907247958, 0.4358994532381674, 0.5917840259193664, 0.5975575286112627, 0.2107328482542134, 0.6841600689897065, 0.5022947341949744, 0.9035531712817644, 0.37239092362730863, 0.8429313930168537, 0.3377499074759311, 0.3377499074759311, 0.6610660582221216, 0.44455970727601185, 0.5196152422706632, 0.5225019936166114, 0.3233161507461904, 0.48786097746523377, 0.6437455501464328, 0.536935750346352, 0.7130275824491878, 0.4099186911246343, 0.4416729559300637, 0.536935750346352, 0.5196152422706632, 0.4416729559300637, 0.48497422611928565, 0.8313843876330611, 0.536935750346352, 0.4099186911246343, 0.4358994532381674, 0.8082903768654761, 0.35507041555161983, 0.4532199613138562, 0.7707626093681504, 0.5484827557301445, 0.4358994532381674, 0.4676537180435969, 0.7996301228276318, 0.42723919920032305, 0.7707626093681504, 0.7563288526384098, 0.4416729559300637, 0.5917840259193664, 0.30599564267050167, 0.30310889132455354, 0.4185789451624787, 0.8573651497465943, 0.44455970727601185, 0.19341234017852463, 0.3204293994002423, 0.6870468203356547, 0.2511473670974872, 0.1299038105676658, 0.37527767497325676, 0.5196152422706632, 0.2944486372867091, 0.3117691453623979, 0.5484827557301445, 0.7216878364870323, 0.5196152422706632, 0.37527767497325676, 0.9179869280115049, 0.30310889132455354, 0.5715767664977295, 0.8429313930168537, 0.8256108849411649, 0.23382685902179845, 0.45899346400575247, 0.15011106998930268, 0.07216878364870322, 0.26269437248127975, 0.1299038105676658, 0.7707626093681504, 0.6581793068761734, 0.6754998149518622, 0.5571430097679889, 0.8689121551303868, 0.762102355330306, 0.8140638795573724, 0.8775724091682312, 0.5225019936166114, 0.3925981830489455, 0.381051177665153, 0.30310889132455354, 0.7447818472546173, 0.536935750346352, 0.3117691453623979, 0.4618802153517006, 0.6581793068761734, 0.5051814855409226, 0.36661742093541233, 0.4358994532381674, 0.7534421012924616, 0.11258330249197702, 0.24248711305964282, 0.5398225016923002, 0.5802370205355739, 0.6754998149518622, 0.8602519010925425, 0.28578838324886474, 0.7794228634059948, 0.6004442799572108, 0.40125843708678993, 0.5975575286112627, 0.28867513459481287, 0.38393792901110113, 0.8602519010925425, 0.40125843708678993, 0.6408587988004846, 0.2540341184434353, 0.3983716857408418, 0.5542562584220407, 0.4243524478543749, 0.7476685986005654, 0.09814954576223638, 0.4532199613138562, 0.5715767664977295, 0.1905255888325765, 0.48786097746523377, 0.4416729559300637, 0.48497422611928565, 0.649519052838329, 0.6177647880328996, 0.45899346400575247, 0.6668395609140177, 0.5542562584220407, 0.5744635178436777, 0.762102355330306, 0.7707626093681504, 0.7649891066762542, 0.268467875173176, 0.6437455501464328, 0.7014805770653953, 0.5022947341949744, 0.22516660498395405, 0.5484827557301445, 0.3233161507461904, 0.5571430097679889, 0.7707626093681504, 0.3117691453623979, 0.24248711305964282, 0.38393792901110113, 0.7534421012924616, 0.2540341184434353, 0.37239092362730863, 0.35507041555161983, 0.3377499074759311, 0.5744635178436777, 0.22516660498395405, 0.37527767497325676, 0.2598076211353316, 0.8342711389790093, 0.7707626093681504, 0.6321985447626403, 0.3204293994002423, 0.11547005383792515, 0.851591647054698, 0.4503332099679081, 0.17609183210283585, 0.3637306695894642, 0.626425042070744, 0.5888972745734182, 0.2107328482542134, 0.20784609690826528, 0.8227241335952167, 0.6091045339950553, 0.470540469389545, 0.35795716689756796, 0.7303480905248766, 0.6177647880328996, 0.851591647054698, 0.17609183210283585, 0.8689121551303868, 0.6524058041842772, 0.49652123150307814, 0.7447818472546173, 0.36661742093541233, 0.6350852961085884, 0.649519052838329, 0.9035531712817644, 0.470540469389545, 0.15877132402714708, 0.42723919920032305, 0.5051814855409226, 0.7130275824491878, 0.5398225016923002, 0.5542562584220407, 0.3406366588218792, 0.33197640478403484, 0.5455960043841963, 0.4792007234273894, 0.6783865662978104, 0.6783865662978104, 0.5802370205355739, 0.874685657822283, 0.5658032638058333, 0.7967433714816836, 0.6091045339950553, 0.5744635178436777, 0.7361215932167728, 0.3897114317029974, 0.536935750346352, 0.8660254037844386, 0.5022947341949744, 0.49652123150307814], \"z\": [0.41500000000000004, 0.6, 0.375, 0.23500000000000001, 0.405, 0.615, 0.17, 0.455, 0.9, 0.485, 0.155, 0.32, 0.485, 0.71, 0.71, 0.6, 0.215, 0.8200000000000001, 0.11, 0.135, 0.22, 0.545, 0.59, 0.295, 0.835, 0.155, 0.5, 0.365, 0.26, 0.29, 0.525, 0.54, 0.6, 0.68, 0.24, 0.27, 0.4, 0.605, 0.47000000000000003, 0.48, 0.5650000000000001, 0.27, 0.515, 0.355, 0.795, 0.645, 0.715, 0.85, 0.62, 0.39, 0.335, 0.445, 0.54, 0.535, 0.5, 0.61, 0.53, 0.52, 0.54, 0.275, 0.685, 0.44, 0.38, 0.625, 0.195, 0.79, 0.605, 0.395, 0.36, 0.535, 0.34, 0.125, 0.49, 0.76, 0.54, 0.305, 0.645, 0.185, 0.595, 0.16, 0.805, 0.8300000000000001, 0.605, 0.665, 0.8250000000000001, 0.49, 0.635, 0.51, 0.505, 0.675, 0.435, 0.8, 0.13, 0.17500000000000002, 0.33, 0.22, 0.505, 0.41500000000000004, 0.615, 0.49, 0.755, 0.59, 0.7000000000000001, 0.265, 0.835, 0.5700000000000001, 0.245, 0.52, 0.395, 0.72, 0.785, 0.885, 0.215, 0.61, 0.305, 0.42, 0.325, 0.335, 0.6950000000000001, 0.81, 0.745, 0.5750000000000001, 0.87, 0.65, 0.605, 0.18, 0.16, 0.495, 0.6900000000000001, 0.165, 0.305, 0.435, 0.44, 0.105, 0.38, 0.52, 0.28500000000000003, 0.31, 0.355, 0.075, 0.265, 0.42, 0.705, 0.595, 0.63, 0.625, 0.505, 0.61, 0.515, 0.365, 0.31, 0.41000000000000003, 0.685, 0.675, 0.845, 0.6950000000000001, 0.385, 0.455, 0.725, 0.365, 0.47500000000000003, 0.34500000000000003, 0.3, 0.49, 0.765, 0.265, 0.88, 0.34500000000000003, 0.32, 0.8200000000000001, 0.725, 0.51, 0.72, 0.445, 0.145, 0.59, 0.805, 0.835, 0.355, 0.49, 0.715, 0.38, 0.68, 0.535, 0.42, 0.8, 0.51, 0.495, 0.28500000000000003, 0.54, 0.43, 0.605, 0.64, 0.23500000000000001, 0.135, 0.635, 0.185, 0.885, 0.645, 0.13, 0.185, 0.605, 0.4, 0.655, 0.755, 0.675, 0.77, 0.54, 0.31, 0.48, 0.59, 0.545, 0.245, 0.36, 0.495, 0.33, 0.795, 0.515, 0.5700000000000001, 0.515, 0.87, 0.185, 0.47500000000000003, 0.745, 0.535, 0.425, 0.065, 0.7000000000000001, 0.425, 0.425, 0.51, 0.455, 0.255, 0.29, 0.845, 0.93, 0.585, 0.835, 0.22, 0.835, 0.255, 0.645, 0.36, 0.88, 0.9, 0.715, 0.68, 0.47000000000000003, 0.755, 0.25, 0.87, 0.535, 0.28500000000000003, 0.785, 0.625, 0.455, 0.47500000000000003, 0.29, 0.46, 0.6900000000000001, 0.935, 0.43, 0.24, 0.45, 0.14, 0.465, 0.27, 0.915, 0.5750000000000001, 0.8250000000000001, 0.465, 0.265, 0.585, 0.835, 0.5700000000000001, 0.395, 0.8150000000000001, 0.3, 0.225, 0.655, 0.61, 0.665, 0.875, 0.375, 0.495, 0.62, 0.295, 0.685, 0.405, 0.485, 0.8250000000000001, 0.52, 0.685, 0.215, 0.705, 0.265, 0.165, 0.63, 0.305, 0.74, 0.36, 0.06, 0.6900000000000001, 0.405, 0.535, 0.11, 0.635, 0.3, 0.85, 0.34, 0.5650000000000001, 0.8150000000000001, 0.775, 0.3, 0.685, 0.88, 0.35000000000000003, 0.7000000000000001, 0.535, 0.645, 0.16, 0.65, 0.34, 0.52, 0.5700000000000001, 0.44, 0.6950000000000001, 0.335, 0.75, 0.745, 0.365, 0.23, 0.555, 0.87, 0.125, 0.2, 0.75, 0.165, 0.675, 0.89, 0.20500000000000002, 0.09, 0.55, 0.43, 0.755, 0.13, 0.295, 0.425, 0.505, 0.71, 0.12, 0.39, 0.405, 0.46, 0.735, 0.22, 0.24, 0.26, 0.27, 0.16, 0.38, 0.7000000000000001, 0.155, 0.51, 0.895, 0.8250000000000001, 0.325, 0.77, 0.715, 0.34, 0.72, 0.585, 0.39, 0.245, 0.6900000000000001, 0.71, 0.605, 0.59, 0.64, 0.775, 0.6, 0.45, 0.5700000000000001, 0.21, 0.9, 0.625, 0.64, 0.705, 0.545, 0.625, 0.58, 0.375, 0.24, 0.425, 0.335, 0.84, 0.595, 0.685, 0.28, 0.275, 0.125, 0.8, 0.605, 0.6, 0.54, 0.685, 0.19, 0.8150000000000001, 0.675, 0.54, 0.56, 0.58, 0.425, 0.56, 0.65, 0.71, 0.8200000000000001, 0.36, 0.765, 0.465, 0.8250000000000001, 0.8150000000000001, 0.435, 0.525, 0.495, 0.4, 0.22, 0.86, 0.77, 0.255, 0.76, 0.20500000000000002, 0.43, 0.61, 0.23, 0.8150000000000001, 0.745, 0.395, 0.375, 0.35000000000000003, 0.675, 0.325, 0.14, 0.24, 0.5, 0.25, 0.645, 0.775, 0.22, 0.435, 0.62, 0.17, 0.48, 0.445, 0.365, 0.785, 0.595, 0.655, 0.22, 0.625, 0.585, 0.58, 0.47000000000000003, 0.295, 0.38, 0.28500000000000003, 0.56, 0.28, 0.46, 0.76, 0.45, 0.745, 0.595, 0.455, 0.68, 0.71, 0.43, 0.625, 0.265, 0.17500000000000002, 0.715, 0.125, 0.13, 0.54, 0.465, 0.545, 0.505, 0.785, 0.535, 0.44, 0.56, 0.68, 0.48, 0.88, 0.855, 0.195, 0.155, 0.21, 0.405, 0.72, 0.5650000000000001, 0.425, 0.5650000000000001, 0.44, 0.28, 0.585, 0.245, 0.915, 0.29, 0.585, 0.275, 0.68, 0.39, 0.45, 0.755, 0.745, 0.155, 0.63, 0.085, 0.74, 0.275, 0.395, 0.705, 0.505, 0.555, 0.6, 0.21, 0.31, 0.305, 0.44, 0.1, 0.48, 0.615, 0.41500000000000004, 0.64, 0.465, 0.6950000000000001, 0.75, 0.315, 0.32, 0.225, 0.895, 0.65, 0.275, 0.405, 0.48, 0.88, 0.67, 0.21, 0.59, 0.425, 0.225, 0.495, 0.5650000000000001, 0.325, 0.065, 0.8300000000000001, 0.445, 0.20500000000000002, 0.655, 0.525, 0.335, 0.405, 0.28500000000000003, 0.32, 0.115, 0.315, 0.455, 0.35000000000000003, 0.36, 0.81, 0.42, 0.325, 0.48, 0.5650000000000001, 0.36, 0.165, 0.63, 0.43, 0.78, 0.34500000000000003, 0.8250000000000001, 0.5700000000000001, 0.85, 0.71, 0.87, 0.56, 0.835, 0.29, 0.635, 0.645, 0.85, 0.495, 0.515, 0.335, 0.56, 0.41000000000000003, 0.835, 0.23, 0.265, 0.255, 0.5, 0.085, 0.405, 0.32, 0.16, 0.655, 0.305, 0.455, 0.595, 0.605, 0.645, 0.395, 0.775, 0.335, 0.625, 0.5750000000000001, 0.6, 0.93, 0.145, 0.585, 0.27, 0.5750000000000001, 0.655, 0.66, 0.685, 0.545, 0.735, 0.26, 0.495, 0.1, 0.75, 0.63, 0.685, 0.295, 0.37, 0.165, 0.43, 0.125, 0.535, 0.66, 0.435, 0.34, 0.715, 0.465, 0.305, 0.23500000000000001, 0.84, 0.535, 0.63, 0.725, 0.855, 0.34500000000000003, 0.49, 0.775, 0.455, 0.39, 0.4, 0.65, 0.32, 0.6950000000000001, 0.5, 0.26, 0.6900000000000001, 0.5750000000000001, 0.41000000000000003, 0.53, 0.73, 0.43, 0.705, 0.59, 0.67, 0.745, 0.41500000000000004, 0.44, 0.47500000000000003, 0.33, 0.41000000000000003, 0.725, 0.375, 0.5750000000000001, 0.46, 0.545, 0.135, 0.655, 0.435, 0.43, 0.115, 0.585, 0.36, 0.585, 0.5750000000000001, 0.58, 0.365, 0.23500000000000001, 0.48, 0.6, 0.71, 0.77, 0.58, 0.555, 0.465, 0.84, 0.195, 0.255, 0.215, 0.335, 0.16, 0.08, 0.405, 0.08, 0.44, 0.745, 0.775, 0.595, 0.535, 0.585, 0.595, 0.445, 0.41500000000000004, 0.55, 0.61, 0.73, 0.305, 0.35000000000000003, 0.42, 0.305, 0.64, 0.52, 0.41500000000000004, 0.525, 0.51, 0.295, 0.775, 0.28, 0.405, 0.7000000000000001, 0.34500000000000003, 0.75, 0.675, 0.615, 0.635, 0.44, 0.315, 0.5700000000000001, 0.8250000000000001, 0.405, 0.38, 0.3, 0.36, 0.545, 0.32, 0.145, 0.735, 0.68, 0.535, 0.405, 0.47000000000000003, 0.6950000000000001, 0.39, 0.355, 0.43, 0.5750000000000001, 0.51, 0.74, 0.85, 0.37, 0.375, 0.715, 0.735, 0.665, 0.375, 0.635, 0.5, 0.52, 0.715, 0.45, 0.55, 0.485, 0.47500000000000003, 0.41000000000000003, 0.785, 0.8150000000000001, 0.20500000000000002, 0.26, 0.665, 0.18, 0.495, 0.765, 0.395, 0.35000000000000003, 0.28500000000000003, 0.53, 0.515, 0.87, 0.195, 0.665, 0.835, 0.255, 0.325, 0.65, 0.47500000000000003, 0.875, 0.42, 0.835, 0.5750000000000001, 0.5650000000000001, 0.2, 0.6, 0.485, 0.87, 0.355, 0.395, 0.62, 0.185, 0.92, 0.525, 0.5700000000000001, 0.85, 0.23500000000000001, 0.38, 0.5700000000000001, 0.6, 0.52, 0.845, 0.3, 0.17500000000000002, 0.715, 0.165, 0.78, 0.245, 0.21, 0.655, 0.8200000000000001, 0.525, 0.48, 0.515, 0.135, 0.29, 0.395, 0.295, 0.745, 0.62, 0.525, 0.325, 0.24, 0.195, 0.605, 0.62, 0.76, 0.25, 0.21, 0.44, 0.17, 0.34, 0.23, 0.61, 0.645, 0.63, 0.44, 0.6900000000000001, 0.425, 0.165, 0.46, 0.495, 0.505, 0.455, 0.315, 0.5700000000000001, 0.27, 0.115, 0.315, 0.22, 0.56, 0.62, 0.795, 0.38, 0.32, 0.685, 0.74, 0.44, 0.42, 0.14, 0.3, 0.465, 0.755, 0.34500000000000003, 0.785, 0.535, 0.67, 0.305, 0.125, 0.17, 0.32, 0.705, 0.41000000000000003, 0.76, 0.405, 0.365, 0.14, 0.725, 0.64, 0.395, 0.22, 0.68, 0.87, 0.39, 0.665, 0.245, 0.3, 0.28500000000000003, 0.74, 0.45, 0.8150000000000001, 0.145, 0.27, 0.215, 0.34, 0.155, 0.255, 0.52, 0.685, 0.74, 0.6950000000000001, 0.615, 0.6950000000000001, 0.525, 0.34500000000000003, 0.7000000000000001, 0.41000000000000003, 0.85, 0.46, 0.085, 0.615, 0.65, 0.79, 0.585, 0.47500000000000003, 0.29, 0.455, 0.375, 0.325, 0.455, 0.31, 0.58, 0.63, 0.775, 0.595, 0.17500000000000002, 0.405, 0.29, 0.41500000000000004, 0.22, 0.545, 0.36, 0.485, 0.8, 0.735, 0.54, 0.405, 0.215, 0.625, 0.63, 0.675, 0.41000000000000003, 0.28500000000000003, 0.495, 0.28500000000000003, 0.29, 0.43, 0.35000000000000003, 0.675, 0.47000000000000003, 0.525, 0.655, 0.495, 0.505, 0.59, 0.225, 0.20500000000000002, 0.23500000000000001, 0.12, 0.54, 0.20500000000000002, 0.365, 0.08, 0.845, 0.8250000000000001, 0.155, 0.595, 0.6900000000000001, 0.41000000000000003, 0.785, 0.515, 0.355, 0.115, 0.79, 0.37, 0.88, 0.7000000000000001]}}]};\n",
"\t Elegans.Embed.parse(\"#\"+\"viz8a9a2046-5bd0-4482-8556-a3f28488f3d5\",model).render();\n",
" });\n",
" })();\n",
" </script>\n",
" </head>\n",
" <body>\n",
" <div id=\"viz8a9a2046-5bd0-4482-8556-a3f28488f3d5\"></div>\n",
" </body>\n",
"</html>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{'C': '#a6cee3'}"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w = lattice.LatticeWorld(Real3(1, 1, 1), 0.005)\n",
"sph = Sphere(Real3(0.5, 0.5, 0.5), 0.45)\n",
"print(w.add_structure(Species('C'), sph)) # will print 539805\n",
"viz.plot_world(w)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"with species_attributes():\n",
" A | {'D': '1', 'location': 'C'}\n",
"\n",
"m = get_model()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<html>\n",
" <head>\n",
" <script type=\"text/javascript\">\n",
" (function(){\n",
" if(window[\"THREE\"] === undefined || window[\"d3\"] === undefined){\n",
"\t require.config({\n",
"\t paths:{\n",
"\t d3: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.4/d3.min',\n",
"\t 'custom/d3.min'\n",
"\t ],\n",
"\t THREE: [\n",
"\t 'https://cdnjs.cloudflare.com/ajax/libs/three.js/r66/three.min',\n",
"\t 'custom/three.min'\n",
"\t ],\n",
" Elegans: [\n",
"\t 'https://rawgit.com/domitry/elegans/master/release/elegans',\n",
"\t 'custom/elegans'\n",
"\t ]\n",
"\t },\n",
"\t shim:{\n",
"\t THREE: {\n",
"\t exports: 'THREE'\n",
"\t },\n",
"\t Elegans: {\n",
"\t deps: ['THREE'],\n",
"\t exports: 'Elegans'\n",
"\t }\n",
"\t }\n",
"\t });\n",
"\n",
"\t require([\"d3\", \"THREE\"], function(d3){\n",
"\t window[\"d3\"] = d3;\n",
"\n",
"\t d3.select(document)\n",
"\t .on(\"contextmenu\", function(){\n",
"\t d3.selectAll(\"canvas\").style(\"z-index\", 10);\n",
"\t d3.selectAll(\".download_menu\").style(\"z-index\", 100);\n",
"\t });\n",
"\t });\n",
" }\n",
"\n",
" require([\"Elegans\"], function(){\n",
"\t console.log(\"Begin rendering...\");\n",
"\t var model = {\"options\": {\"height\": 500, \"autorange\": false, \"save_image\": false, \"width\": 500, \"grid\": true, \"range\": {\"x\": [0.0, 1.0], \"y\": [0.0, 1.0], \"z\": [0.0, 1.0]}}, \"plots\": [{\"options\": {\"name\": \"A\", \"color\": \"#1f78b4\", \"size\": 0.15}, \"type\": \"Particles\", \"data\": {\"x\": [0.040824829046386304, 0.22045407685048604, 0.9471360338761623, 0.7593418202627853, 0.3347635981803677, 0.040824829046386304, 0.6368673331236264, 0.05715476066494083, 0.08164965809277261, 0.8164965809277261, 0.8083316151184489, 0.2531139400875951, 0.6613622305514582, 0.7430118886442307, 0.187794213613377, 0.6940220937885672, 0.06531972647421809, 0.8818163074019442, 0.06531972647421809, 0.6123724356957946, 0.46540305112880387, 0.7266819570256763, 0.0, 0.9797958971132713, 0.8164965809277261, 0.7266819570256763, 0.04898979485566357, 0.3674234614174768, 0.9879608629225486, 0.8246615467370034, 0.873651341592667, 0.20412414523193154, 0.09797958971132714, 0.9879608629225486, 0.4245782220824176, 0.7920016834998943, 0.39191835884530857, 0.9553009996854396, 0.9879608629225486, 0.05715476066494083, 0.7021870595978444, 0.9716309313039941, 0.04898979485566357, 0.3347635981803677, 0.718516991216399, 0.040824829046386304, 0.8491564441648352, 0.15513435037626797, 0.342928563989645, 0.3184336665618132, 0.27760883751542687, 0.8164965809277261, 0.9716309313039941, 0.6695271963607354, 0.7430118886442307, 0.8328265125462806, 0.3510935297989222, 0.09797958971132714, 0.008164965809277261, 0.8246615467370034, 0.4245782220824176, 0.7593418202627853, 0.873651341592667, 0.530722777603022, 0.016329931618554522, 0.17962924780409975, 0.530722777603022, 0.7593418202627853, 0.1061445555206044, 0.6042074698865173, 0.9144761706390533, 0.5388877434122993, 0.040824829046386304, 0.8899812732112214, 0.906311204829776, 0.873651341592667, 0.9308061022576077, 0.375588427226754, 0.8164965809277261, 0.20412414523193154, 0.7021870595978444, 0.04898979485566357, 0.873651341592667, 0.0, 0.032659863237109045, 0.906311204829776, 0.59604250407724, 0.024494897427831785, 0.68585712797929, 0.1469693845669907, 0.8899812732112214, 0.9226411364483306, 0.9797958971132713, 0.04898979485566357, 0.5552176750308537, 0.3347635981803677, 0.12247448713915891, 0.563382640840131, 0.07348469228349536, 0.7266819570256763, 0.4082482904638631, 0.8981462390204987, 0.6042074698865173, 0.46540305112880387, 0.187794213613377, 0.39191835884530857, 0.8654863757833897, 0.0, 0.28577380332470415, 0.873651341592667, 0.9144761706390533, 0.873651341592667, 0.9226411364483306, 0.13063945294843618, 0.7756717518813399, 0.08164965809277261, 0.8899812732112214, 0.9879608629225486, 0.22861904265976332, 0.8981462390204987], \"y\": [0.9814954576223639, 0.5398225016923002, 0.7447818472546173, 0.8342711389790093, 0.89489291724392, 0.13279056191361394, 0.20784609690826528, 0.028867513459481287, 0.3983716857408418, 0.22516660498395405, 0.06350852961085883, 0.38393792901110113, 0.6610660582221216, 0.2540341184434353, 0.3925981830489455, 0.89489291724392, 0.98726896031426, 0.20784609690826528, 0.268467875173176, 0.6957070743734991, 0.03752776749732568, 0.19341234017852463, 0.34641016151377546, 0.14722431864335456, 0.8573651497465943, 0.18475208614068023, 0.05196152422706632, 0.07216878364870322, 0.4532199613138562, 0.9468544414709863, 0.9814954576223639, 0.12413030787576954, 0.5975575286112627, 0.4185789451624787, 0.7967433714816836, 0.6783865662978104, 0.9006664199358162, 0.9901557116602082, 0.7996301228276318, 0.046188021535170064, 0.0, 0.9035531712817644, 0.8660254037844386, 0.7303480905248766, 0.07794228634059948, 0.8342711389790093, 0.762102355330306, 0.09814954576223638, 0.7361215932167728, 0.011547005383792516, 0.02598076211353316, 0.3290896534380867, 0.30599564267050167, 0.8400446416709055, 0.002886751345948129, 0.06928203230275509, 0.0202072594216369, 0.5629165124598852, 0.1414508159514583, 0.8429313930168537, 0.8660254037844386, 0.8689121551303868, 0.4358994532381674, 0.8862326632060756, 0.649519052838329, 0.7188010851410841, 0.10680979980008076, 0.9295339333952976, 0.11547005383792515, 0.5629165124598852, 0.3377499074759311, 0.060621778264910706, 0.44455970727601185, 0.0202072594216369, 0.6957070743734991, 0.03752776749732568, 0.8313843876330611, 0.8227241335952167, 0.41569219381653055, 0.028867513459481287, 0.7794228634059948, 0.9266471820493494, 0.23671361036774657, 0.034641016151377546, 0.8833459118601275, 0.0808290376865476, 0.06350852961085883, 0.938194187433142, 0.9266471820493494, 0.6408587988004846, 0.9208736793574531, 0.9814954576223639, 0.6581793068761734, 0.07794228634059948, 0.16454482671904336, 0.9295339333952976, 0.851591647054698, 0.3406366588218792, 0.851591647054698, 0.964174949546675, 0.06928203230275509, 0.3117691453623979, 0.8054036255195279, 0.9122134253196088, 0.5917840259193664, 0.6841600689897065, 0.4763139720814413, 0.7101408311032397, 0.11547005383792515, 0.964174949546675, 0.4243524478543749, 0.5917840259193664, 0.626425042070744, 0.9612881982007269, 0.28867513459481287, 0.5715767664977295, 0.7736493607140986, 0.5225019936166114, 0.874685657822283, 0.008660254037844387], \"z\": [0.05, 0.065, 0.72, 0.845, 0.1, 0.03, 0.03, 0.07, 0.09, 0.88, 0.4, 0.995, 0.055, 0.05, 0.12, 0.98, 0.92, 0.28, 0.155, 0.9450000000000001, 0.28500000000000003, 0.20500000000000002, 0.49, 0.495, 0.185, 0.87, 0.74, 0.985, 0.585, 0.56, 0.88, 0.275, 0.085, 0.395, 0.16, 0.9450000000000001, 0.88, 0.405, 0.675, 0.71, 0.16, 0.735, 0.03, 0.055, 0.195, 0.105, 0.06, 0.31, 0.115, 0.9500000000000001, 0.325, 0.89, 0.86, 0.795, 0.375, 0.74, 0.795, 0.025, 0.145, 0.74, 0.04, 0.47500000000000003, 0.23500000000000001, 0.755, 0.295, 0.225, 0.995, 0.53, 0.18, 0.045, 0.975, 0.835, 0.74, 0.20500000000000002, 0.245, 0.405, 0.78, 0.085, 0.9, 0.22, 0.0, 0.41500000000000004, 0.7000000000000001, 0.51, 0.45, 0.47000000000000003, 0.64, 0.545, 0.305, 0.02, 0.745, 0.5700000000000001, 0.28, 0.595, 0.075, 0.8200000000000001, 0.835, 0.01, 0.465, 0.71, 0.76, 0.8300000000000001, 0.025, 0.9500000000000001, 0.895, 0.065, 0.785, 0.37, 0.03, 0.0, 0.335, 0.915, 0.115, 0.865, 0.21, 0.9, 0.84, 0.115, 0.925, 0.595]}}]};\n",
"\t Elegans.Embed.parse(\"#\"+\"vizf723be44-c096-49f1-800c-e47b6eec7deb\",model).render();\n",
" });\n",
" })();\n",
" </script>\n",
" </head>\n",
" <body>\n",
" <div id=\"vizf723be44-c096-49f1-800c-e47b6eec7deb\"></div>\n",
" </body>\n",
"</html>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{'A': '#1f78b4', 'C': '#a6cee3'}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w.add_molecules(Species('A'), 120)\n",
"viz.plot_world(w, species_list=('A',)) # visualize A-molecules only"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"ename": "ValueError",
"evalue": "A world must be bound to a model.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-5-ec1e9d0ccde6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mpid_list\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mpid\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mpid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mp\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlist_particles\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mSpecies\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'A'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m10\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mobs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mFixedIntervalTrajectoryObserver\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1e-3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpid_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0msim\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlattice\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLatticeSimulator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0msim\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mobs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mviz\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_trajectory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mecell4/lattice.pyx\u001b[0m in \u001b[0;36mecell4.lattice.LatticeSimulator.__cinit__ (lib/ecell4/lattice.cpp:7203)\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: A world must be bound to a model."
]
}
],
"source": [
"pid_list = [pid for pid, p in w.list_particles(Species('A'))[: 10]]\n",
"obs = FixedIntervalTrajectoryObserver(1e-3, pid_list)\n",
"sim = lattice.LatticeSimulator(w)\n",
"sim.run(1, obs)\n",
"viz.plot_trajectory(obs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The structure and the reaction"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment