From 8f40420c66b541020b0ed2515a2ba6d900052dc0 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Sat, 24 Aug 2024 00:23:16 -0400 Subject: [PATCH] build based on 8df8b70 --- julia-docs/dev/docstrings.html | 246 ++++++++++---------- julia-docs/dev/medyan-tutorial.zip | Bin 718829 -> 725478 bytes julia-docs/dev/reference/fileformats.html | 70 +++--- julia-docs/dev/search.json | 6 +- julia-docs/dev/sitemap.xml | 264 +++++++++++----------- julia-docs/dev/tutorials/1install.html | 2 +- julia-docs/dev/tutorials/2rdme.html | 36 +-- julia-docs/dev/tutorials/3treadmill.html | 66 +++--- 8 files changed, 345 insertions(+), 345 deletions(-) diff --git a/julia-docs/dev/docstrings.html b/julia-docs/dev/docstrings.html index 218768a..6cc386f 100644 --- a/julia-docs/dev/docstrings.html +++ b/julia-docs/dev/docstrings.html @@ -298,617 +298,617 @@

Docstrings

- + Base.:* - + Base.copy - + Base.delete! - + Base.empty! - + Base.getindex - + Base.haskey - + Base.iterate - + Base.length - + Base.push! - + Base.setindex! - + MEDYAN.AgentNames - + MEDYAN.Boundary - + MEDYAN.CadherinParams - + MEDYAN.CadherinState - + MEDYAN.Context - + MEDYAN.CubicGrid - + MEDYAN.Decimated2MonSiteMinAngleRange - + MEDYAN.Decimated2MonSiteRange - + MEDYAN.FilamentEndSiteGeneral - + MEDYAN.FilamentSiteGeneral - + MEDYAN.Link2MonParams - + MEDYAN.Link2MonSiteCount - + MEDYAN.Link2MonSiteMonomerStateMatch - + MEDYAN.Link2MonSiteMotorCatch - + MEDYAN.Link2MonSiteMotorStall - + MEDYAN.Link2MonSiteOne - + MEDYAN.Link2MonSiteSlipBond - + MEDYAN.Link2MonState - + MEDYAN.MembraneSiteDiffusing - + MEDYAN.MembraneSpeciesParams - + MEDYAN.MonLink2MonSiteOne - + MEDYAN.MonomerName - + MEDYAN.SysDef - + MEDYAN.VertexName - + MEDYAN.VertexState - + MEDYAN.adapt_membranes! - + MEDYAN.add_decimated_2mon_site! - + MEDYAN.add_diffusion_coeff! - + MEDYAN.add_filament_params! - + MEDYAN.add_link_2mon! - + MEDYAN.add_link_2mon_site! - + MEDYAN.add_membranesitereaction! - + MEDYAN.addcadherin! - + MEDYAN.addcadherinsite! - + MEDYAN.adddiffusingcount_rand! - + MEDYAN.addfilament_reaction! - + MEDYAN.addfilamentend_reaction! - + MEDYAN.addfilamentendsite! - + MEDYAN.addfilamentsite! - + MEDYAN.addmembranediffusingcount_rand! - + MEDYAN.addmembranesite! - + MEDYAN.addpossiblecadherinsite! - + MEDYAN.addreaction! - + MEDYAN.addreactioncallback! - + MEDYAN.addunbindinglink_2mon_site! - + MEDYAN.boundary_box - + MEDYAN.boundary_capsule - + MEDYAN.boundary_cylinder - + MEDYAN.boundary_plane - + MEDYAN.centerof - + MEDYAN.chem_adddiffusingcount! - + MEDYAN.chem_addfixedcount! - + MEDYAN.chem_depolymerize! - + MEDYAN.chem_newfilament! - + MEDYAN.chem_newlink_2mon! - + MEDYAN.chem_polymerize! - + MEDYAN.chem_removefilament! - + MEDYAN.chem_removelink_2mon! - + MEDYAN.chem_setlink_2mon_state! - + MEDYAN.chem_setmonomerstate! - + MEDYAN.compute_all_membrane_geometry!_system - + MEDYAN.defer_chem_caching! - + MEDYAN.fil_mon_states - + MEDYAN.fil_node_mon_ids - + MEDYAN.fil_node_positions - + MEDYAN.fil_num_unmin_ends - + MEDYAN.filter_grididat - + MEDYAN.filtype_fil_ids - + MEDYAN.grididat - + MEDYAN.is_chem_cache_valid - + MEDYAN.link_2mon_endnames - + MEDYAN.link_2mon_state - + MEDYAN.load_snapshot! - + MEDYAN.minimize_energy! - + MEDYAN.mon_3states - + MEDYAN.mon_exists - + MEDYAN.mon_minimized - + MEDYAN.mon_plusvector - + MEDYAN.mon_position - + MEDYAN.mon_position_plusvector - + MEDYAN.newfilament_rand! - + MEDYAN.newmembrane! - + MEDYAN.num_filtypes - + MEDYAN.num_vertexwithstate - + MEDYAN.randompoint - + MEDYAN.refresh_chem_cache! - + MEDYAN.resolve_all_filament_mesh_crossing! - + MEDYAN.run_chemistry! - + MEDYAN.set_chemboundary! - + MEDYAN.set_enable_cylinder_volume_exclusion! - + MEDYAN.set_mechboundary! - + MEDYAN.set_time! - + MEDYAN.sever_filament! - + MEDYAN.vertex_state - + NLSolversBase.value!! - + src/auxprocs.jl - + src/boundary.jl - + src/cadherins/possiblecadherinsite.jl - + src/context.jl - + src/decimated_2mon_sites.jl - + src/filamentendsites.jl - + src/filamentsites.jl - + src/grids.jl - + src/link_2mon_sites.jl - + src/membrane/membranesites.jl - + src/membrane/meshadapt.jl - + src/minimize_energy.jl - + src/mon_link_2mon_sites.jl - + src/sever_filament.jl - + src/sys_def.jl - + src/trajectory-io/snapshot.jl - + src/util/math/cuboidslicing.jl - + src/util/stableindex.jl diff --git a/julia-docs/dev/medyan-tutorial.zip b/julia-docs/dev/medyan-tutorial.zip index 24992c1f02ba589e18eadc9b439106ee1b782d54..bab16ce9c7e82a23f45fb8580ad686c1bfd219d0 100644 GIT binary patch delta 44186 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 Gv;RL%vE@|& delta 37825 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"medyan"<

header.json["medyan"] contains static metadata about the simulation that is constant over time.

Example header.json "medyan" value

-
+
using MEDYAN
 import JSON3
 cinit, s = MEDYAN.example_all_sites_context()
@@ -397,7 +397,7 @@ 

Snapshot group

Snapshot Versioning

The snapshot format is versioned by the “version” attribute. The current snapshot version is:

-
+
using MEDYAN
 MEDYAN.SNAPSHOT_VERSION
@@ -419,7 +419,7 @@

“#expe

Example snapshot

-
+
using MEDYAN
 using SmallZarrGroups
 cinit, s = MEDYAN.example_all_sites_context()
@@ -453,7 +453,7 @@ 

Example snapshot

time (s) -
+
attrs(group)["time (s)"]
0.0
@@ -466,7 +466,7 @@

Example snapshot

version -
+
attrs(group)["version"]
"0.8.0"
@@ -479,7 +479,7 @@

Example snapshot

uuid -
+
attrs(group)["uuid"]
"37eee81f-88ae-4d11-b6b3-d38e1ccf0a08"
@@ -507,7 +507,7 @@

Example snapshot

diffusingcounts -
+
collect(group["diffusingcounts"])
2×4 Matrix{Int32}:
@@ -523,7 +523,7 @@ 

Example snapshot

fixedcounts -
+
collect(group["fixedcounts"])
2×4 Matrix{Float64}:
@@ -570,7 +570,7 @@ 

Example snapshot

🔢 capsules -
+
collect(group["chemboundary/capsules"])
8×1 Matrix{Float64}:
@@ -591,7 +591,7 @@ 

Example snapshot

🔢 planes -
+
collect(group["chemboundary/planes"])
4×6 Matrix{Float64}:
@@ -638,7 +638,7 @@ 

Example snapshot

position_scale -
+
attrs(group["filaments"])["position_scale"]
3
@@ -669,7 +669,7 @@

Example snapshot

🔢 endloadforces -
+
collect(group["filaments/1/endloadforces"])
2×2 Matrix{Float64}:
@@ -684,7 +684,7 @@ 

Example snapshot

🔢 fids -
+
collect(group["filaments/1/fids"])
2-element Vector{Int32}:
@@ -698,7 +698,7 @@ 

Example snapshot

🔢 minusend_num_notminimized -
+
collect(group["filaments/1/minusend_num_notminimized"])
2-element Vector{Int32}:
@@ -712,7 +712,7 @@ 

Example snapshot

🔢 plusend_num_notminimized -
+
collect(group["filaments/1/plusend_num_notminimized"])
2-element Vector{Int32}:
@@ -726,7 +726,7 @@ 

Example snapshot

🔢 num_cylinders -
+
collect(group["filaments/1/num_cylinders"])
2-element Vector{Int32}:
@@ -740,7 +740,7 @@ 

Example snapshot

🔢 num_monomers -
+
collect(group["filaments/1/num_monomers"])
2-element Vector{Int32}:
@@ -754,7 +754,7 @@ 

Example snapshot

🔢 node_mids -
+
collect(group["filaments/1/node_mids"])
2-element Vector{Int32}:
@@ -775,7 +775,7 @@ 

Example snapshot

🔢 nodepositions -
+
collect(group["filaments/1/nodepositions"])
4×3 Matrix{Float64}:
@@ -791,7 +791,7 @@ 

Example snapshot

🔢 monomerstates -
+
collect(group["filaments/1/monomerstates"])
18-element Vector{UInt8}:
@@ -868,7 +868,7 @@ 

Example snapshot

num_link_2mons -
+
attrs(group["link_2mons/1"])["num_link_2mons"]
2
@@ -880,7 +880,7 @@

Example snapshot

next_lid -
+
attrs(group["link_2mons/1"])["next_lid"]
3
@@ -896,7 +896,7 @@

Example snapshot

🔢 endnames -
+
collect(group["link_2mons/1/endnames"])
2×6 Matrix{Int64}:
@@ -919,7 +919,7 @@ 

Example snapshot

🔢 lids -
+
collect(group["link_2mons/1/lids"])
2-element Vector{Int64}:
@@ -937,7 +937,7 @@ 

Example snapshot

Default: default link_2mon_state

See MEDYAN.chem_setlink_2mon_state! and MEDYAN.Link2MonState

The state of a link_2mon, organized in a nested struct of vector like form. Any static arrays will be unwrapped into a tuple of vectors, in column major order. The “name” attribute of each subgroup and dataset is the corresponding property name in the StructArray Any property in the default state that isn’t in the snapshot will stay at its default value.

-
+
group["link_2mons/1/state"]
📂
@@ -980,7 +980,7 @@ 

Example snapshot

🔢 capsules -
+
collect(group["mechboundary/capsules"])
8×1 Matrix{Float64}:
@@ -1001,7 +1001,7 @@ 

Example snapshot

🔢 planes -
+
collect(group["mechboundary/planes"])
4×6 Matrix{Float64}:
@@ -1047,7 +1047,7 @@ 

Example snapshot

num_membranes -
+
attrs(group["membranes"])["num_membranes"]
1
@@ -1059,7 +1059,7 @@

Example snapshot

position_scale -
+
attrs(group["membranes"])["position_scale"]
3
@@ -1101,7 +1101,7 @@

Example snapshot

type_id -
+
attrs(group["membranes/1"])["type_id"]
1
@@ -1116,7 +1116,7 @@

Example snapshot

🔢 trilist -
+
collect(group["membranes/1/trilist"])
3×1914 Matrix{Int64}:
@@ -1131,7 +1131,7 @@ 

Example snapshot

🔢 vertlist -
+
collect(group["membranes/1/vertlist"])
3×959 Matrix{Float64}:
@@ -1146,7 +1146,7 @@ 

Example snapshot

🔢 id -
+
collect(group["membranes/1/id"])
959-element Vector{Int64}:
@@ -1184,12 +1184,12 @@ 

Example snapshot

optional 🔢 copynumbers -
+
collect(group["membranes/1/copynumbers"])
3×959 Matrix{Int64}:
  0  0  0  0  0  0  0  0  0  0  0  0  0  …  0  0  0  0  0  0  0  0  0  0  0  0
- 0  0  0  0  0  0  0  0  0  0  0  0  0     0  0  0  0  0  0  0  0  0  1  0  0
+ 0  0  0  0  0  0  0  0  0  0  0  0  0     0  0  0  0  0  0  0  0  0  0  0  0
  0  0  0  0  0  0  0  0  0  0  0  0  0     0  0  0  0  0  0  0  0  0  0  0  0
diff --git a/julia-docs/dev/search.json b/julia-docs/dev/search.json index 5fda41e..cd1c01b 100644 --- a/julia-docs/dev/search.json +++ b/julia-docs/dev/search.json @@ -1416,7 +1416,7 @@ "href": "tutorials/2rdme.html", "title": "2. Rock Paper Scissors Stochastic Reaction Diffusion", "section": "", - "text": "Inspired by:\nhttps://www.youtube.com/watch?v=TORwMc2AaRE&t=0s\n\n\nOpen a julia REPL or jupyter notebook using the medyan-tutorial environment you created in tutorial 1.\nLoad MEDYAN with MEDYANVis for visualization\n\nusing MEDYAN\nusing MEDYANVis\nusing CairoMakie\nusing Random\nusing SmallZarrGroups\nRandom.seed!(1234);\n\n\n\n\nThe first step is declaring the names of agents in the system.\nThis system will contain three diffusing species.\n\nagent_names = MEDYAN.AgentNames(;\n diffusingspeciesnames=[\n :R, # Rock\n :P, # Paper\n :S, # Scissors\n ],\n)\n\nMEDYAN.AgentNames([:R, :P, :S], Symbol[], Symbol[], Symbol[], Tuple{Symbol, Vector{Symbol}}[], Symbol[], Symbol[], Symbol[])\n\n\n\n\n\nAfter the agent names are declared, the system can be defined.\nThis is done by constructing a MEDYAN.SysDef object from the agent_names and then mutating it to add parameters, reactions, and callbacks.\n\ns = MEDYAN.SysDef(agent_names)\n\nMEDYAN.SysDef\n Diffusing species:\n R: 0.0 nm²/s\n P: 0.0 nm²/s\n S: 0.0 nm²/s\n\n\nAdd a diffusion coefficient of 1E6 nm²/s to all species. All units are based on nm, s, pN\nadd_diffusion_coeff!\n\nD = 1E6\nadd_diffusion_coeff!(s, :R, D) # nm²/s\nadd_diffusion_coeff!(s, :P, D) # nm²/s\nadd_diffusion_coeff!(s, :S, D) # nm²/s\n\nMEDYAN.SysDef\n Diffusing species:\n R: 1.0e6 nm²/s\n P: 1.0e6 nm²/s\n S: 1.0e6 nm²/s\n\n\nAdd reactions, paper “beats” rock, scissors “beats” paper, rock “beats” scissors. In this simulation “beats” means convert to self type.\nIn this case because the reaction is between two diffusing species, it has units of nm³/s. You can think of this as the volume where if exactly one of each reactant existed the rate would be 1 per second.\naddreaction!\n\nrate = 50.0*(500.0^3) # nm³/s\naddreaction!(s,\n \"diffusing.P + diffusing.R --> 2diffusing.P\",\n rate,\n 1,\n)\naddreaction!(s,\n \"diffusing.S + diffusing.P --> 2diffusing.S\",\n rate,\n 1,\n)\naddreaction!(s,\n \"diffusing.R + diffusing.S --> 2diffusing.R\",\n rate,\n 1,\n)\n\nMEDYAN.SysDef\n Diffusing species:\n R: 1.0e6 nm²/s\n P: 1.0e6 nm²/s\n S: 1.0e6 nm²/s\n Compartment reactions without callbacks:\n \"diffusing.P + diffusing.R --> 2diffusing.P\" 6.25e9 nm³/s\n \"diffusing.S + diffusing.P --> 2diffusing.S\" 6.25e9 nm³/s\n \"diffusing.R + diffusing.S --> 2diffusing.R\" 6.25e9 nm³/s\n\n\n\n\n\nAll simulations run in a grid.\nThis is a box that contains the simulation.\nThe grid is composed of chemistry voxels, small cubes that can have different counts of the various diffusing species.\nCreate a 50 by 50 by 1 grid of 500 nm side length voxels.\n\nL = 50\ngrid = CubicGrid((L,L,1),500.0)\n\nCubicGrid([50, 50, 1], 500.0)\n\n\n\n\n\nThe Context is the object the handles the state of a running simulation.\nCreate a Context using s and grid\n\nc = MEDYAN.Context(s, grid)\n\nMEDYAN.Context at time 0.0s in CubicGrid([50, 50, 1], 500.0)\n\n\n\n\n\nThe context starts empty.\nDistribute 2000 of each species randomly to the chem voxels by mutating the context.\nadddiffusingcount_rand!\n\nadddiffusingcount_rand!(c, s.diffusing.R, 2000)\nadddiffusingcount_rand!(c, s.diffusing.P, 2000)\nadddiffusingcount_rand!(c, s.diffusing.S, 2000)\n\n\n\n\nRun chemistry for 1.0s and visualize the results.\n\nvis = Visualizer()\nsetvisible!(vis[\"/Grid\"], false)\nsetvisible!(vis[\"/Axes\"], false)\nsetvisible!(vis[\"/Background\"], false)\n\nIf you open the visualizer in a browser with open(vis) and run the following you should get an animated version of below.\n\nfor i in 1:100\n run_chemistry!(c, 0.01)\n MEDYANVis.drawdiffusing!(vis[\"diffusing\"], c.grid, c.chemistryengine, s; size = 0.8)\n sleep(0.02)\nend\n\n\n\n \n \n \n \n\n\n\n\n\nNext we will see how to plot quantities from the simulation.\nIf you want to analyze a trajectory in detail, or load a system state, one method is to use snapshots. For details see snapshot group reference\nMEDYAN.load_snapshot! can be used to reload snapshots, this is very useful for restarting simulations, or changing the simulation state in a different programming language, but not needed in this tutorial.\nSmallZarrGroups.jl can be used to save/load snapshot groups to/from disk, in zip files, or in directories.\nRun chemistry for another 1.0s and store a snapshot every 0.01s in a vector.\n\nusing SmallZarrGroups\nsnapshots = ZGroup[]\nfor i in 1:100\n run_chemistry!(c, 0.01)\n push!(snapshots, MEDYAN.snapshot(c))\nend\n\nNow that the simulation is done the results can be analyzed. For longer simulations, these snapshots should be saved to disk with for example:\nSmallZarrGroups.save_dir(\"snapshot$i.zarr.zip\",MEDYAN.snapshot(c))\nto avoid needed to rerun the simulation and to avoid using too much RAM.\n\ntotal_rocks = Int[]\ntotal_papers = Int[]\ntotal_scissors = Int[]\ntimes = Float64[]\nfor group in snapshots\n totals = sum(collect(group[\"diffusingcounts\"]);dims=2)\n push!(times, attrs(group)[\"time (s)\"])\n push!(total_rocks, totals[s.diffusing.R])\n push!(total_papers, totals[s.diffusing.P])\n push!(total_scissors, totals[s.diffusing.S])\nend\n\n\nfigure, axis, lineplot = lines(times, total_rocks; label=\"rock\")\nlines!(times, total_papers; label=\"paper\")\nlines!(times, total_scissors; label=\"scissors\")\nlines!(\n times,\n total_scissors.+total_papers.+total_rocks;\n label=\"combined\")\naxislegend()\ncurrent_figure()\n\n┌ Warning: Found `resolution` in the theme when creating a `Scene`. The `resolution` keyword for `Scene`s and `Figure`s has been deprecated. Use `Figure(; size = ...` or `Scene(; size = ...)` instead, which better reflects that this is a unitless size and not a pixel resolution. The key could also come from `set_theme!` calls or related theming functions.\n└ @ Makie ~/.julia/packages/Makie/rEu75/src/scenes.jl:227\n\n\n\n\n\n\n\n\n\nIf you are using VSCode or Jupyter the figure will be displayed.\nIf you are using the REPL, save the figure as a PDF to view it.\nsave(\"tutorial2-plot.pdf\", current_figure())", + "text": "Inspired by:\nhttps://www.youtube.com/watch?v=TORwMc2AaRE&t=0s\n\n\nOpen a julia REPL or jupyter notebook using the medyan-tutorial environment you created in tutorial 1.\nLoad MEDYAN with MEDYANVis for visualization\n\nusing MEDYAN\nusing MEDYANVis\nusing CairoMakie\nusing Random\nusing SmallZarrGroups\nRandom.seed!(1234);\n\n\n\n\nThe first step is declaring the names of agents in the system.\nThis system will contain three diffusing species.\n\nagent_names = MEDYAN.AgentNames(;\n diffusingspeciesnames=[\n :R, # Rock\n :P, # Paper\n :S, # Scissors\n ],\n)\n\nMEDYAN.AgentNames([:R, :P, :S], Symbol[], Symbol[], Symbol[], Tuple{Symbol, Vector{Symbol}}[], Symbol[], Symbol[], Symbol[])\n\n\n\n\n\nAfter the agent names are declared, the system can be defined.\nThis is done by constructing a MEDYAN.SysDef object from the agent_names and then mutating it to add parameters, reactions, and callbacks.\n\ns = MEDYAN.SysDef(agent_names)\n\nMEDYAN.SysDef\n Diffusing species:\n R: 0.0 nm²/s\n P: 0.0 nm²/s\n S: 0.0 nm²/s\n\n\nAdd a diffusion coefficient of 1E6 nm²/s to all species. All units are based on nm, s, pN\nadd_diffusion_coeff!\n\nD = 1E6\nadd_diffusion_coeff!(s, :R, D) # nm²/s\nadd_diffusion_coeff!(s, :P, D) # nm²/s\nadd_diffusion_coeff!(s, :S, D) # nm²/s\n\nMEDYAN.SysDef\n Diffusing species:\n R: 1.0e6 nm²/s\n P: 1.0e6 nm²/s\n S: 1.0e6 nm²/s\n\n\nAdd reactions, paper “beats” rock, scissors “beats” paper, rock “beats” scissors. In this simulation “beats” means convert to self type.\nIn this case because the reaction is between two diffusing species, it has units of nm³/s. You can think of this as the volume where if exactly one of each reactant existed the rate would be 1 per second.\naddreaction!\n\nrate = 50.0*(500.0^3) # nm³/s\naddreaction!(s,\n \"diffusing.P + diffusing.R --> 2diffusing.P\",\n rate,\n 1,\n)\naddreaction!(s,\n \"diffusing.S + diffusing.P --> 2diffusing.S\",\n rate,\n 1,\n)\naddreaction!(s,\n \"diffusing.R + diffusing.S --> 2diffusing.R\",\n rate,\n 1,\n)\n\nMEDYAN.SysDef\n Diffusing species:\n R: 1.0e6 nm²/s\n P: 1.0e6 nm²/s\n S: 1.0e6 nm²/s\n Compartment reactions without callbacks:\n \"diffusing.P + diffusing.R --> 2diffusing.P\" 6.25e9 nm³/s\n \"diffusing.S + diffusing.P --> 2diffusing.S\" 6.25e9 nm³/s\n \"diffusing.R + diffusing.S --> 2diffusing.R\" 6.25e9 nm³/s\n\n\n\n\n\nAll simulations run in a grid.\nThis is a box that contains the simulation.\nThe grid is composed of chemistry voxels, small cubes that can have different counts of the various diffusing species.\nCreate a 50 by 50 by 1 grid of 500 nm side length voxels.\n\nL = 50\ngrid = CubicGrid((L,L,1),500.0)\n\nCubicGrid([50, 50, 1], 500.0)\n\n\n\n\n\nThe Context is the object the handles the state of a running simulation.\nCreate a Context using s and grid\n\nc = MEDYAN.Context(s, grid)\n\nMEDYAN.Context at time 0.0s in CubicGrid([50, 50, 1], 500.0)\n\n\n\n\n\nThe context starts empty.\nDistribute 2000 of each species randomly to the chem voxels by mutating the context.\nadddiffusingcount_rand!\n\nadddiffusingcount_rand!(c, s.diffusing.R, 2000)\nadddiffusingcount_rand!(c, s.diffusing.P, 2000)\nadddiffusingcount_rand!(c, s.diffusing.S, 2000)\n\n\n\n\nRun chemistry for 1.0s and visualize the results.\n\nvis = Visualizer()\nsetvisible!(vis[\"/Grid\"], false)\nsetvisible!(vis[\"/Axes\"], false)\nsetvisible!(vis[\"/Background\"], false)\n\nIf you open the visualizer in a browser with open(vis) and run the following you should get an animated version of below.\n\nfor i in 1:100\n run_chemistry!(c, 0.01)\n MEDYANVis.drawdiffusing!(vis[\"diffusing\"], c.grid, c.chemistryengine, s; size = 0.8)\n sleep(0.02)\nend\n\n\n\n \n \n \n \n\n\n\n\n\nNext we will see how to plot quantities from the simulation.\nIf you want to analyze a trajectory in detail, or load a system state, one method is to use snapshots. For details see snapshot group reference\nMEDYAN.load_snapshot! can be used to reload snapshots, this is very useful for restarting simulations, or changing the simulation state in a different programming language, but not needed in this tutorial.\nSmallZarrGroups.jl can be used to save/load snapshot groups to/from disk, in zip files, or in directories.\nRun chemistry for another 1.0s and store a snapshot every 0.01s in a vector.\n\nusing SmallZarrGroups\nsnapshots = ZGroup[]\nfor i in 1:100\n run_chemistry!(c, 0.01)\n push!(snapshots, MEDYAN.snapshot(c))\nend\n\nNow that the simulation is done the results can be analyzed. For longer simulations, these snapshots should be saved to disk with for example:\nSmallZarrGroups.save_dir(\"snapshot$i.zarr.zip\",MEDYAN.snapshot(c))\nto avoid needed to rerun the simulation and to avoid using too much RAM.\n\ntotal_rocks = Int[]\ntotal_papers = Int[]\ntotal_scissors = Int[]\ntimes = Float64[]\nfor group in snapshots\n totals = sum(collect(group[\"diffusingcounts\"]);dims=2)\n push!(times, attrs(group)[\"time (s)\"])\n push!(total_rocks, totals[s.diffusing.R])\n push!(total_papers, totals[s.diffusing.P])\n push!(total_scissors, totals[s.diffusing.S])\nend\n\n\nfigure, axis, lineplot = lines(times, total_rocks; label=\"rock\")\nlines!(times, total_papers; label=\"paper\")\nlines!(times, total_scissors; label=\"scissors\")\nlines!(\n times,\n total_scissors.+total_papers.+total_rocks;\n label=\"combined\")\naxislegend()\ncurrent_figure()\n\n┌ Warning: Found `resolution` in the theme when creating a `Scene`. The `resolution` keyword for `Scene`s and `Figure`s has been deprecated. Use `Figure(; size = ...` or `Scene(; size = ...)` instead, which better reflects that this is a unitless size and not a pixel resolution. The key could also come from `set_theme!` calls or related theming functions.\n└ @ Makie ~/.julia/packages/Makie/aG6xp/src/scenes.jl:227\n\n\n\n\n\n\n\n\n\nIf you are using VSCode or Jupyter the figure will be displayed.\nIf you are using the REPL, save the figure as a PDF to view it.\nsave(\"tutorial2-plot.pdf\", current_figure())", "crumbs": [ "Tutorials", "2. Rock Paper Scissors Stochastic Reaction Diffusion" @@ -1504,7 +1504,7 @@ "href": "tutorials/2rdme.html#snapshots-and-plotting", "title": "2. Rock Paper Scissors Stochastic Reaction Diffusion", "section": "", - "text": "Next we will see how to plot quantities from the simulation.\nIf you want to analyze a trajectory in detail, or load a system state, one method is to use snapshots. For details see snapshot group reference\nMEDYAN.load_snapshot! can be used to reload snapshots, this is very useful for restarting simulations, or changing the simulation state in a different programming language, but not needed in this tutorial.\nSmallZarrGroups.jl can be used to save/load snapshot groups to/from disk, in zip files, or in directories.\nRun chemistry for another 1.0s and store a snapshot every 0.01s in a vector.\n\nusing SmallZarrGroups\nsnapshots = ZGroup[]\nfor i in 1:100\n run_chemistry!(c, 0.01)\n push!(snapshots, MEDYAN.snapshot(c))\nend\n\nNow that the simulation is done the results can be analyzed. For longer simulations, these snapshots should be saved to disk with for example:\nSmallZarrGroups.save_dir(\"snapshot$i.zarr.zip\",MEDYAN.snapshot(c))\nto avoid needed to rerun the simulation and to avoid using too much RAM.\n\ntotal_rocks = Int[]\ntotal_papers = Int[]\ntotal_scissors = Int[]\ntimes = Float64[]\nfor group in snapshots\n totals = sum(collect(group[\"diffusingcounts\"]);dims=2)\n push!(times, attrs(group)[\"time (s)\"])\n push!(total_rocks, totals[s.diffusing.R])\n push!(total_papers, totals[s.diffusing.P])\n push!(total_scissors, totals[s.diffusing.S])\nend\n\n\nfigure, axis, lineplot = lines(times, total_rocks; label=\"rock\")\nlines!(times, total_papers; label=\"paper\")\nlines!(times, total_scissors; label=\"scissors\")\nlines!(\n times,\n total_scissors.+total_papers.+total_rocks;\n label=\"combined\")\naxislegend()\ncurrent_figure()\n\n┌ Warning: Found `resolution` in the theme when creating a `Scene`. The `resolution` keyword for `Scene`s and `Figure`s has been deprecated. Use `Figure(; size = ...` or `Scene(; size = ...)` instead, which better reflects that this is a unitless size and not a pixel resolution. The key could also come from `set_theme!` calls or related theming functions.\n└ @ Makie ~/.julia/packages/Makie/rEu75/src/scenes.jl:227\n\n\n\n\n\n\n\n\n\nIf you are using VSCode or Jupyter the figure will be displayed.\nIf you are using the REPL, save the figure as a PDF to view it.\nsave(\"tutorial2-plot.pdf\", current_figure())", + "text": "Next we will see how to plot quantities from the simulation.\nIf you want to analyze a trajectory in detail, or load a system state, one method is to use snapshots. For details see snapshot group reference\nMEDYAN.load_snapshot! can be used to reload snapshots, this is very useful for restarting simulations, or changing the simulation state in a different programming language, but not needed in this tutorial.\nSmallZarrGroups.jl can be used to save/load snapshot groups to/from disk, in zip files, or in directories.\nRun chemistry for another 1.0s and store a snapshot every 0.01s in a vector.\n\nusing SmallZarrGroups\nsnapshots = ZGroup[]\nfor i in 1:100\n run_chemistry!(c, 0.01)\n push!(snapshots, MEDYAN.snapshot(c))\nend\n\nNow that the simulation is done the results can be analyzed. For longer simulations, these snapshots should be saved to disk with for example:\nSmallZarrGroups.save_dir(\"snapshot$i.zarr.zip\",MEDYAN.snapshot(c))\nto avoid needed to rerun the simulation and to avoid using too much RAM.\n\ntotal_rocks = Int[]\ntotal_papers = Int[]\ntotal_scissors = Int[]\ntimes = Float64[]\nfor group in snapshots\n totals = sum(collect(group[\"diffusingcounts\"]);dims=2)\n push!(times, attrs(group)[\"time (s)\"])\n push!(total_rocks, totals[s.diffusing.R])\n push!(total_papers, totals[s.diffusing.P])\n push!(total_scissors, totals[s.diffusing.S])\nend\n\n\nfigure, axis, lineplot = lines(times, total_rocks; label=\"rock\")\nlines!(times, total_papers; label=\"paper\")\nlines!(times, total_scissors; label=\"scissors\")\nlines!(\n times,\n total_scissors.+total_papers.+total_rocks;\n label=\"combined\")\naxislegend()\ncurrent_figure()\n\n┌ Warning: Found `resolution` in the theme when creating a `Scene`. The `resolution` keyword for `Scene`s and `Figure`s has been deprecated. Use `Figure(; size = ...` or `Scene(; size = ...)` instead, which better reflects that this is a unitless size and not a pixel resolution. The key could also come from `set_theme!` calls or related theming functions.\n└ @ Makie ~/.julia/packages/Makie/aG6xp/src/scenes.jl:227\n\n\n\n\n\n\n\n\n\nIf you are using VSCode or Jupyter the figure will be displayed.\nIf you are using the REPL, save the figure as a PDF to view it.\nsave(\"tutorial2-plot.pdf\", current_figure())", "crumbs": [ "Tutorials", "2. Rock Paper Scissors Stochastic Reaction Diffusion" @@ -1559,7 +1559,7 @@ "href": "reference/fileformats.html#snapshot-group", "title": "File Formats", "section": "Snapshot group", - "text": "Snapshot group\nA snapshot describes the state of a Context at a single point in time.\nA snapshot can be used to set the state of a Context if it was constructed with the same system and parameters as the Context used to create the snapshot. Trying to load a snapshot into a Context constructed with a different system or parameters may lead to unexpected results.\nBy default units are in nm, pN, and s. Coordinates are relative to the center of the grid.\nThe snapshot doesn’t hold the exact full state of a Context, simulations restarted from a snapshot may not have the exact same results because:\n\nThe snapshot doesn’t store the state of the random number generator.\nCoordinates may be rounded to save disk space.\nDictionaries and other internal data structures may get reordered and or resorted when the snapshot is loaded.\nMultithreading may be non deterministic.\n\nBut if rounding isn’t too extreme, the reloaded Context should have the same statistics.\n\nSnapshot Versioning\nThe snapshot format is versioned by the “version” attribute. The current snapshot version is:\n\nusing MEDYAN\nMEDYAN.SNAPSHOT_VERSION\n\nv\"0.8.0\"\n\n\nCurrently before snapshot version 1.0.0 anything goes.\nAfter snapshot version 1.0.0 is released.\nSnapshots written with a previous snapshot version above v\"1\" should be readable. Snapshots written with a newer snapshot version are generally not readable.\nIf new agent types are added to MEDYAN.jl, usually only the minor version needs to be updated, as nothing special needs to be done to read older snapshot versions without that added agent type.\nIf new data is added to an existing agent type, also usually only the minor version needs to be increment, though the case of the new data not existing must be handled with some default.\nIf the way an existing agent type is stored significantly changes, such that external code analyzing the snapshot would need to be modified, the major version must be incremented. Also if possible there should be a function to update a snapshot from the old version to the new version.\n\n“#experimental” and “#comment” prefixes\nAny group, dataset, or attribute name prefixed with with “#” can change format or be removed without changing the snapshot version.\n“#experimental” is used for saving new types of agents or other data that doesn’t have a stable format yet.\n“#comment” is used for saving human readable comments that could change in format or wording.\n\n\n\nExample snapshot\n\nusing MEDYAN\nusing SmallZarrGroups\ncinit, s = MEDYAN.example_all_sites_context()\ngroup = MEDYAN.snapshot(cinit)\n\n\n\n\n\n\n\nSnapshot 📂\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\ntime (s)\n\n\nattrs(group)[\"time (s)\"]\n\n0.0\n\n\nDefault: No change\nSee MEDYAN.set_time!\n\n\n\nversion\n\n\nattrs(group)[\"version\"]\n\n\"0.8.0\"\n\n\nDefault: No change\nSee Snapshot Versioning\n\n\n\nuuid\n\n\nattrs(group)[\"uuid\"]\n\n\"37eee81f-88ae-4d11-b6b3-d38e1ccf0a08\"\n\n\nMust be set to exactly “37eee81f-88ae-4d11-b6b3-d38e1ccf0a08”\nto be considered a valid MEDYAN snapshot.\n\n\n\n\n\n\n\n\n\n\n🔢\n\n\n\n\n\n\n\ndiffusingcounts\n\n\ncollect(group[\"diffusingcounts\"])\n\n2×4 Matrix{Int32}:\n 0 100 40 0\n 0 1000 400 0\n\n\nDefault: Empty\nIndexed by [species id, compartment id] to give count.\nSee MEDYAN.chem_adddiffusingcount!\n\n\n\nfixedcounts\n\n\ncollect(group[\"fixedcounts\"])\n\n2×4 Matrix{Float64}:\n 10.25 0.0 0.0 0.0\n 0.0 0.0 0.0 20.25\n\n\nDefault: Empty\nIndexed by [species id, compartment id] to give count.\nSee MEDYAN.chem_addfixedcount!\n\n\n\n\n\n\n\n\n\n\n\n📂\n\n\n\n\n\n\n\n\n\n\n\n\nchemboundary\n\n\n\n\n\nThere is a dataset for each type of boundary, the total boundary is an intersection of the following.\nSee MEDYAN.Boundary\n\n\n🔢 capsules\n\n\ncollect(group[\"chemboundary/capsules\"])\n\n8×1 Matrix{Float64}:\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 10000.0\n 1.0\n\n\nDefault: Empty\nEach column of the dataset is a capsule.\n\n\n\n🔢 planes\n\n\ncollect(group[\"chemboundary/planes\"])\n\n4×6 Matrix{Float64}:\n -10.0 10.0 0.0 0.0 0.0 0.0\n 0.0 0.0 -10.0 10.0 0.0 0.0\n 0.0 0.0 0.0 0.0 -10.0 10.0\n 10000.0 10000.0 2500.0 2500.0 2500.0 2500.0\n\n\nDefault: Empty\nEach column of the dataset is a plane.\n\n\n\n\n\n\n\n\n\n\n\n\nfilaments\n\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\nposition_scale\n\n\nattrs(group[\"filaments\"])[\"position_scale\"]\n\n3\n\n\nDefault: No effect\nFilament positions were rounded to the nearest 2^-position_scale nm when saved.\n\n\n\n\n\nThere is a subgroup for each filament type with at least one filament. The subgroups are named by their filament type id. For example:\n\n\n\n\n\n\n\n📂 1\n\n\n\n\n\n\n\n🔢 endloadforces\n\n\ncollect(group[\"filaments/1/endloadforces\"])\n\n2×2 Matrix{Float64}:\n 0.0 0.0\n 0.0 0.0\n\n\nFilament end load forces (pN).\nEach row is the load force on the minus and plus ends of a filament.\n\n\n\n🔢 fids\n\n\ncollect(group[\"filaments/1/fids\"])\n\n2-element Vector{Int32}:\n 1\n 2\n\n\nFilament ids.\n\n\n\n🔢 minusend_num_notminimized\n\n\ncollect(group[\"filaments/1/minusend_num_notminimized\"])\n\n2-element Vector{Int32}:\n 0\n 0\n\n\nNumber of newly added monomers to the filament minus ends since last minimization.\n\n\n\n🔢 plusend_num_notminimized\n\n\ncollect(group[\"filaments/1/plusend_num_notminimized\"])\n\n2-element Vector{Int32}:\n 0\n 0\n\n\nNumber of newly added monomers to the filament plus ends since last minimization.\n\n\n\n🔢 num_cylinders\n\n\ncollect(group[\"filaments/1/num_cylinders\"])\n\n2-element Vector{Int32}:\n 1\n 1\n\n\nNumber of cylinders per filament.\n\n\n\n🔢 num_monomers\n\n\ncollect(group[\"filaments/1/num_monomers\"])\n\n2-element Vector{Int32}:\n 9\n 9\n\n\nNumber of monomers per filament.\n\n\n\n🔢 node_mids\n\n\ncollect(group[\"filaments/1/node_mids\"])\n\n2-element Vector{Int32}:\n 1\n 1\n\n\nThe monomer ids at the minus ends of the cylinders.\n |\n -----+-----|-----+-----\n minus end <---- M | M | (M) | M ----> plus end\n -----+-----|-----+-----\n |\n ^ A nodeposition is indicated by the line.\nThe monomer id with parenthesis (M) will in node_mids\n\n\n\n🔢 nodepositions\n\n\ncollect(group[\"filaments/1/nodepositions\"])\n\n4×3 Matrix{Float64}:\n -530.0 -50.0 -50.0\n -440.0 -50.0 -50.0\n -520.0 -49.0 -50.0\n -430.0 -49.0 -50.0\n\n\nEach row is a node position in nm.\n\n\n\n🔢 monomerstates\n\n\ncollect(group[\"filaments/1/monomerstates\"])\n\n18-element Vector{UInt8}:\n 0x01\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x05\n 0x01\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x05\n\n\nMonomer states.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlink_2mons\n\n\n\n\n\nThere is a subgroup for each link_2mon type with at least one link_2mon. The subgroups are named by their link_2mon type id. For example:\n\n\n\n\n\n\n\n📂 1\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\nnum_link_2mons\n\n\nattrs(group[\"link_2mons/1\"])[\"num_link_2mons\"]\n\n2\n\n\nNumber of link_2mons of this type.\n\n\n\nnext_lid\n\n\nattrs(group[\"link_2mons/1\"])[\"next_lid\"]\n\n3\n\n\nThe default next link id for new links.\nThis should be greater than all the existing lids.\n\n\n\n\n\n\n🔢 endnames\n\n\ncollect(group[\"link_2mons/1/endnames\"])\n\n2×6 Matrix{Int64}:\n 1 1 2 1 1 2\n 1 1 2 1 2 2\n\n\nThe pairs of monomers that the link_2mons are linked between. The monomer pairs are directed and unique.\nEach row of this matrix represents two monomers. The 6 integers per row are in order:\n\nMinus end filament type id.\nMinus end filament id.\nMinus end monomer id.\nPlus end filament type id.\nPlus end filament id.\nPlus end monomer id.\n\n\n\n\n🔢 lids\n\n\ncollect(group[\"link_2mons/1/lids\"])\n\n2-element Vector{Int64}:\n 1\n 2\n\n\nThe link_2mon ids.\nLinks retain their ids while they remain bound.\n\n\n\n📂 state\n\nDefault: default link_2mon_state\nSee MEDYAN.chem_setlink_2mon_state! and MEDYAN.Link2MonState\nThe state of a link_2mon, organized in a nested struct of vector like form. Any static arrays will be unwrapped into a tuple of vectors, in column major order. The “name” attribute of each subgroup and dataset is the corresponding property name in the StructArray Any property in the default state that isn’t in the snapshot will stay at its default value.\n\ngroup[\"link_2mons/1/state\"]\n\n📂\n├─ 📂 1 🏷️ name => \"chemstate\",\n| ├─ 🔢 1: 2 Int64 🏷️ name => \"a\",\n| └─ 🔢 2: 2 Float64 🏷️ name => \"b\",\n├─ 📂 2 🏷️ name => \"mechstate\",\n| └─ 📂 1 🏷️ name => \"â\",\n| ├─ 🔢 1: 2 Float32 🏷️ name => \"1\",\n| ├─ 🔢 2: 2 Float32 🏷️ name => \"2\",\n| └─ 🔢 3: 2 Float32 🏷️ name => \"3\",\n└─ 🔢 3: 2 Bool 🏷️ name => \"is_minimized\",\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmechboundary\n\n\n\n\n\nThere is a dataset for each type of boundary, the total boundary is an intersection of the following.\nSee MEDYAN.Boundary\n\n\n🔢 capsules\n\n\ncollect(group[\"mechboundary/capsules\"])\n\n8×1 Matrix{Float64}:\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 10000.0\n 1.0\n\n\nDefault: Empty\nEach column of the dataset is a capsule.\n\n\n\n🔢 planes\n\n\ncollect(group[\"mechboundary/planes\"])\n\n4×6 Matrix{Float64}:\n -10.0 10.0 0.0 0.0 0.0 0.0\n 0.0 0.0 -10.0 10.0 0.0 0.0\n 0.0 0.0 0.0 0.0 -10.0 10.0\n 10000.0 10000.0 2500.0 2500.0 2500.0 2500.0\n\n\nDefault: Empty\nEach column of the dataset is a plane.\n\n\n\n\n\n\n\n\n\n\n\n\nmembranes\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\nnum_membranes\n\n\nattrs(group[\"membranes\"])[\"num_membranes\"]\n\n1\n\n\nTotal number of membranes.\n\n\n\nposition_scale\n\n\nattrs(group[\"membranes\"])[\"position_scale\"]\n\n3\n\n\nDefault: No effect\nPositions were rounded to the nearest 2^-position_scale nm when saved.\n\n\n\n\nThere is a subgroup for each membrane. The subgroups are named by the membrane index. For example:\n\n\n\n\n\n\n\n📂 1\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\ntype_id\n\n\nattrs(group[\"membranes/1\"])[\"type_id\"]\n\n1\n\n\nThis membrane’s type id.\n\n\n\n\n\n\n🔢 trilist\n\n\ncollect(group[\"membranes/1/trilist\"])\n\n3×1914 Matrix{Int64}:\n 2 871 836 517 520 462 409 416 … 792 688 226 201 450 326 164\n 848 807 732 412 362 635 656 845 913 354 652 920 923 956 781\n 238 630 203 190 623 853 733 608 875 944 373 958 958 959 959\n\n\nEach column is the 3 vertex indexes of a triangle. Indexes are one based, and follow the right hand rule. Looking at the triangle from the outside in, they have counterclockwise winding.\n\n\n\n🔢 vertlist\n\n\ncollect(group[\"membranes/1/vertlist\"])\n\n3×959 Matrix{Float64}:\n 115.0 -590.25 -552.0 226.75 … 182.375 -316.125 157.75\n -222.75 -232.875 -193.125 137.5 238.125 -429.875 -34.5\n -252.25 275.25 -343.25 -15.5 -49.125 -237.875 -279.875\n\n\nEach column is a vertex coordinate in nm.\n\n\n\n🔢 id\n\n\ncollect(group[\"membranes/1/id\"])\n\n959-element Vector{Int64}:\n 7814\n 10608\n 3334\n 14756\n 12541\n 9498\n 10903\n 2092\n 9775\n 10\n 12855\n 12136\n 1949\n ⋮\n 3653\n 5295\n 3951\n 8003\n 14307\n 12258\n 7204\n 4182\n 7834\n 9058\n 6485\n 10738\n\n\nArray of vertex IDs. Each vertex has an id which is assigned upon initialization and persists throughout its lifetime.\n\n\n\noptional 🔢 copynumbers\n\n\ncollect(group[\"membranes/1/copynumbers\"])\n\n3×959 Matrix{Int64}:\n 0 0 0 0 0 0 0 0 0 0 0 0 0 … 0 0 0 0 0 0 0 0 0 0 0 0\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n\n\nArray of vertex membrane species copynumbers. If the membrane has no defined species this dataset will not exist.", + "text": "Snapshot group\nA snapshot describes the state of a Context at a single point in time.\nA snapshot can be used to set the state of a Context if it was constructed with the same system and parameters as the Context used to create the snapshot. Trying to load a snapshot into a Context constructed with a different system or parameters may lead to unexpected results.\nBy default units are in nm, pN, and s. Coordinates are relative to the center of the grid.\nThe snapshot doesn’t hold the exact full state of a Context, simulations restarted from a snapshot may not have the exact same results because:\n\nThe snapshot doesn’t store the state of the random number generator.\nCoordinates may be rounded to save disk space.\nDictionaries and other internal data structures may get reordered and or resorted when the snapshot is loaded.\nMultithreading may be non deterministic.\n\nBut if rounding isn’t too extreme, the reloaded Context should have the same statistics.\n\nSnapshot Versioning\nThe snapshot format is versioned by the “version” attribute. The current snapshot version is:\n\nusing MEDYAN\nMEDYAN.SNAPSHOT_VERSION\n\nv\"0.8.0\"\n\n\nCurrently before snapshot version 1.0.0 anything goes.\nAfter snapshot version 1.0.0 is released.\nSnapshots written with a previous snapshot version above v\"1\" should be readable. Snapshots written with a newer snapshot version are generally not readable.\nIf new agent types are added to MEDYAN.jl, usually only the minor version needs to be updated, as nothing special needs to be done to read older snapshot versions without that added agent type.\nIf new data is added to an existing agent type, also usually only the minor version needs to be increment, though the case of the new data not existing must be handled with some default.\nIf the way an existing agent type is stored significantly changes, such that external code analyzing the snapshot would need to be modified, the major version must be incremented. Also if possible there should be a function to update a snapshot from the old version to the new version.\n\n“#experimental” and “#comment” prefixes\nAny group, dataset, or attribute name prefixed with with “#” can change format or be removed without changing the snapshot version.\n“#experimental” is used for saving new types of agents or other data that doesn’t have a stable format yet.\n“#comment” is used for saving human readable comments that could change in format or wording.\n\n\n\nExample snapshot\n\nusing MEDYAN\nusing SmallZarrGroups\ncinit, s = MEDYAN.example_all_sites_context()\ngroup = MEDYAN.snapshot(cinit)\n\n\n\n\n\n\n\nSnapshot 📂\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\ntime (s)\n\n\nattrs(group)[\"time (s)\"]\n\n0.0\n\n\nDefault: No change\nSee MEDYAN.set_time!\n\n\n\nversion\n\n\nattrs(group)[\"version\"]\n\n\"0.8.0\"\n\n\nDefault: No change\nSee Snapshot Versioning\n\n\n\nuuid\n\n\nattrs(group)[\"uuid\"]\n\n\"37eee81f-88ae-4d11-b6b3-d38e1ccf0a08\"\n\n\nMust be set to exactly “37eee81f-88ae-4d11-b6b3-d38e1ccf0a08”\nto be considered a valid MEDYAN snapshot.\n\n\n\n\n\n\n\n\n\n\n🔢\n\n\n\n\n\n\n\ndiffusingcounts\n\n\ncollect(group[\"diffusingcounts\"])\n\n2×4 Matrix{Int32}:\n 0 100 40 0\n 0 1000 400 0\n\n\nDefault: Empty\nIndexed by [species id, compartment id] to give count.\nSee MEDYAN.chem_adddiffusingcount!\n\n\n\nfixedcounts\n\n\ncollect(group[\"fixedcounts\"])\n\n2×4 Matrix{Float64}:\n 10.25 0.0 0.0 0.0\n 0.0 0.0 0.0 20.25\n\n\nDefault: Empty\nIndexed by [species id, compartment id] to give count.\nSee MEDYAN.chem_addfixedcount!\n\n\n\n\n\n\n\n\n\n\n\n📂\n\n\n\n\n\n\n\n\n\n\n\n\nchemboundary\n\n\n\n\n\nThere is a dataset for each type of boundary, the total boundary is an intersection of the following.\nSee MEDYAN.Boundary\n\n\n🔢 capsules\n\n\ncollect(group[\"chemboundary/capsules\"])\n\n8×1 Matrix{Float64}:\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 10000.0\n 1.0\n\n\nDefault: Empty\nEach column of the dataset is a capsule.\n\n\n\n🔢 planes\n\n\ncollect(group[\"chemboundary/planes\"])\n\n4×6 Matrix{Float64}:\n -10.0 10.0 0.0 0.0 0.0 0.0\n 0.0 0.0 -10.0 10.0 0.0 0.0\n 0.0 0.0 0.0 0.0 -10.0 10.0\n 10000.0 10000.0 2500.0 2500.0 2500.0 2500.0\n\n\nDefault: Empty\nEach column of the dataset is a plane.\n\n\n\n\n\n\n\n\n\n\n\n\nfilaments\n\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\nposition_scale\n\n\nattrs(group[\"filaments\"])[\"position_scale\"]\n\n3\n\n\nDefault: No effect\nFilament positions were rounded to the nearest 2^-position_scale nm when saved.\n\n\n\n\n\nThere is a subgroup for each filament type with at least one filament. The subgroups are named by their filament type id. For example:\n\n\n\n\n\n\n\n📂 1\n\n\n\n\n\n\n\n🔢 endloadforces\n\n\ncollect(group[\"filaments/1/endloadforces\"])\n\n2×2 Matrix{Float64}:\n 0.0 0.0\n 0.0 0.0\n\n\nFilament end load forces (pN).\nEach row is the load force on the minus and plus ends of a filament.\n\n\n\n🔢 fids\n\n\ncollect(group[\"filaments/1/fids\"])\n\n2-element Vector{Int32}:\n 1\n 2\n\n\nFilament ids.\n\n\n\n🔢 minusend_num_notminimized\n\n\ncollect(group[\"filaments/1/minusend_num_notminimized\"])\n\n2-element Vector{Int32}:\n 0\n 0\n\n\nNumber of newly added monomers to the filament minus ends since last minimization.\n\n\n\n🔢 plusend_num_notminimized\n\n\ncollect(group[\"filaments/1/plusend_num_notminimized\"])\n\n2-element Vector{Int32}:\n 0\n 0\n\n\nNumber of newly added monomers to the filament plus ends since last minimization.\n\n\n\n🔢 num_cylinders\n\n\ncollect(group[\"filaments/1/num_cylinders\"])\n\n2-element Vector{Int32}:\n 1\n 1\n\n\nNumber of cylinders per filament.\n\n\n\n🔢 num_monomers\n\n\ncollect(group[\"filaments/1/num_monomers\"])\n\n2-element Vector{Int32}:\n 9\n 9\n\n\nNumber of monomers per filament.\n\n\n\n🔢 node_mids\n\n\ncollect(group[\"filaments/1/node_mids\"])\n\n2-element Vector{Int32}:\n 1\n 1\n\n\nThe monomer ids at the minus ends of the cylinders.\n |\n -----+-----|-----+-----\n minus end <---- M | M | (M) | M ----> plus end\n -----+-----|-----+-----\n |\n ^ A nodeposition is indicated by the line.\nThe monomer id with parenthesis (M) will in node_mids\n\n\n\n🔢 nodepositions\n\n\ncollect(group[\"filaments/1/nodepositions\"])\n\n4×3 Matrix{Float64}:\n -530.0 -50.0 -50.0\n -440.0 -50.0 -50.0\n -520.0 -49.0 -50.0\n -430.0 -49.0 -50.0\n\n\nEach row is a node position in nm.\n\n\n\n🔢 monomerstates\n\n\ncollect(group[\"filaments/1/monomerstates\"])\n\n18-element Vector{UInt8}:\n 0x01\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x05\n 0x01\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x02\n 0x05\n\n\nMonomer states.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlink_2mons\n\n\n\n\n\nThere is a subgroup for each link_2mon type with at least one link_2mon. The subgroups are named by their link_2mon type id. For example:\n\n\n\n\n\n\n\n📂 1\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\nnum_link_2mons\n\n\nattrs(group[\"link_2mons/1\"])[\"num_link_2mons\"]\n\n2\n\n\nNumber of link_2mons of this type.\n\n\n\nnext_lid\n\n\nattrs(group[\"link_2mons/1\"])[\"next_lid\"]\n\n3\n\n\nThe default next link id for new links.\nThis should be greater than all the existing lids.\n\n\n\n\n\n\n🔢 endnames\n\n\ncollect(group[\"link_2mons/1/endnames\"])\n\n2×6 Matrix{Int64}:\n 1 1 2 1 1 2\n 1 1 2 1 2 2\n\n\nThe pairs of monomers that the link_2mons are linked between. The monomer pairs are directed and unique.\nEach row of this matrix represents two monomers. The 6 integers per row are in order:\n\nMinus end filament type id.\nMinus end filament id.\nMinus end monomer id.\nPlus end filament type id.\nPlus end filament id.\nPlus end monomer id.\n\n\n\n\n🔢 lids\n\n\ncollect(group[\"link_2mons/1/lids\"])\n\n2-element Vector{Int64}:\n 1\n 2\n\n\nThe link_2mon ids.\nLinks retain their ids while they remain bound.\n\n\n\n📂 state\n\nDefault: default link_2mon_state\nSee MEDYAN.chem_setlink_2mon_state! and MEDYAN.Link2MonState\nThe state of a link_2mon, organized in a nested struct of vector like form. Any static arrays will be unwrapped into a tuple of vectors, in column major order. The “name” attribute of each subgroup and dataset is the corresponding property name in the StructArray Any property in the default state that isn’t in the snapshot will stay at its default value.\n\ngroup[\"link_2mons/1/state\"]\n\n📂\n├─ 📂 1 🏷️ name => \"chemstate\",\n| ├─ 🔢 1: 2 Int64 🏷️ name => \"a\",\n| └─ 🔢 2: 2 Float64 🏷️ name => \"b\",\n├─ 📂 2 🏷️ name => \"mechstate\",\n| └─ 📂 1 🏷️ name => \"â\",\n| ├─ 🔢 1: 2 Float32 🏷️ name => \"1\",\n| ├─ 🔢 2: 2 Float32 🏷️ name => \"2\",\n| └─ 🔢 3: 2 Float32 🏷️ name => \"3\",\n└─ 🔢 3: 2 Bool 🏷️ name => \"is_minimized\",\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmechboundary\n\n\n\n\n\nThere is a dataset for each type of boundary, the total boundary is an intersection of the following.\nSee MEDYAN.Boundary\n\n\n🔢 capsules\n\n\ncollect(group[\"mechboundary/capsules\"])\n\n8×1 Matrix{Float64}:\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 0.0\n 10000.0\n 1.0\n\n\nDefault: Empty\nEach column of the dataset is a capsule.\n\n\n\n🔢 planes\n\n\ncollect(group[\"mechboundary/planes\"])\n\n4×6 Matrix{Float64}:\n -10.0 10.0 0.0 0.0 0.0 0.0\n 0.0 0.0 -10.0 10.0 0.0 0.0\n 0.0 0.0 0.0 0.0 -10.0 10.0\n 10000.0 10000.0 2500.0 2500.0 2500.0 2500.0\n\n\nDefault: Empty\nEach column of the dataset is a plane.\n\n\n\n\n\n\n\n\n\n\n\n\nmembranes\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\nnum_membranes\n\n\nattrs(group[\"membranes\"])[\"num_membranes\"]\n\n1\n\n\nTotal number of membranes.\n\n\n\nposition_scale\n\n\nattrs(group[\"membranes\"])[\"position_scale\"]\n\n3\n\n\nDefault: No effect\nPositions were rounded to the nearest 2^-position_scale nm when saved.\n\n\n\n\nThere is a subgroup for each membrane. The subgroups are named by the membrane index. For example:\n\n\n\n\n\n\n\n📂 1\n\n\n\n\n\n\n\n\n\n\n\n🏷️\n\n\n\n\n\n\n\ntype_id\n\n\nattrs(group[\"membranes/1\"])[\"type_id\"]\n\n1\n\n\nThis membrane’s type id.\n\n\n\n\n\n\n🔢 trilist\n\n\ncollect(group[\"membranes/1/trilist\"])\n\n3×1914 Matrix{Int64}:\n 2 871 836 517 520 462 409 416 … 792 688 226 201 450 326 164\n 848 807 732 412 362 635 656 845 913 354 652 920 923 956 781\n 238 630 203 190 623 853 733 608 875 944 373 958 958 959 959\n\n\nEach column is the 3 vertex indexes of a triangle. Indexes are one based, and follow the right hand rule. Looking at the triangle from the outside in, they have counterclockwise winding.\n\n\n\n🔢 vertlist\n\n\ncollect(group[\"membranes/1/vertlist\"])\n\n3×959 Matrix{Float64}:\n 115.0 -590.25 -552.0 226.75 … 182.375 -316.125 157.75\n -222.75 -232.875 -193.125 137.5 238.125 -429.875 -34.5\n -252.25 275.25 -343.25 -15.5 -49.125 -237.875 -279.875\n\n\nEach column is a vertex coordinate in nm.\n\n\n\n🔢 id\n\n\ncollect(group[\"membranes/1/id\"])\n\n959-element Vector{Int64}:\n 7814\n 10608\n 3334\n 14756\n 12541\n 9498\n 10903\n 2092\n 9775\n 10\n 12855\n 12136\n 1949\n ⋮\n 3653\n 5295\n 3951\n 8003\n 14307\n 12258\n 7204\n 4182\n 7834\n 9058\n 6485\n 10738\n\n\nArray of vertex IDs. Each vertex has an id which is assigned upon initialization and persists throughout its lifetime.\n\n\n\noptional 🔢 copynumbers\n\n\ncollect(group[\"membranes/1/copynumbers\"])\n\n3×959 Matrix{Int64}:\n 0 0 0 0 0 0 0 0 0 0 0 0 0 … 0 0 0 0 0 0 0 0 0 0 0 0\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n\n\nArray of vertex membrane species copynumbers. If the membrane has no defined species this dataset will not exist.", "crumbs": [ "Reference", "File Formats" diff --git a/julia-docs/dev/sitemap.xml b/julia-docs/dev/sitemap.xml index 5a1092d..ab59cff 100644 --- a/julia-docs/dev/sitemap.xml +++ b/julia-docs/dev/sitemap.xml @@ -2,530 +2,530 @@ https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_chemboundary--0aa6e4e95c60f9f7.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_adddiffusingcount--2264be341b81a600.html - 2024-07-24T19:25:24.500Z + 2024-08-24T04:18:44.103Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_removelink_2mon--e25a3fd69f791cd0.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.007Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_cylinder-33a45da15f9672d3.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertexstate-450b7005d2acebe8.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_link_2mon_site--b9548c4a2d23aac9.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.067Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monstate-9845e7e08620ea8a.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_plusvector-b7271c7721602813.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.load_snapshot--e534be293ce74465.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_mechboundary--b5e26b6b690256aa.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_plane-2caa9b52b3b3f0cc.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_depolymerize--a5f262191e484dd4.html - 2024-07-24T19:25:24.360Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_minimized-5b17adaf7d8a4f62.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.defer_chem_caching--9538a1c449f3da93.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_box-060d4c56df40146a.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_diffusion_coeff--a77d1ef833cfdedd.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.023Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_setmonomerstate--ed756af0de4db0ca.html - 2024-07-24T19:25:24.496Z + 2024-08-24T04:18:44.103Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemonomerstatematch-c495443de74016ce.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.membranesitediffusing-66734014eb12ddb1.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_removefilament--f36888837f14bad7.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.011Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.grididat-8671e01413346deb.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_node_mon_ids-b1d3d66a81296343.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.agentnames-948e6a24b4fb0cb5.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_polymerize--7a5e88ac36e4ccbf.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_setlink_2mon_state--82213403237b28e5.html - 2024-07-24T19:25:24.500Z + 2024-08-24T04:18:44.103Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.empty--418304748816268d.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.decimated2monsiteminanglerange-fc006e574376cfff.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.adapt_membranes--1d26092defd0f4fa.html - 2024-07-24T19:25:24.360Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_mon_states-3db9714621903b78.html - 2024-07-24T19:25:24.340Z + 2024-08-24T04:18:44.015Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary-f1e7be79002a27f8.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.newfilament_rand--432ec27232aad41e.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.011Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.length-7ea31a421de7d258.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/mon_link_2mon_sites.html - 2024-07-24T19:25:22.932Z + 2024-08-24T04:18:42.543Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/decimated_2mon_sites.html - 2024-07-24T19:25:22.936Z + 2024-08-24T04:18:42.543Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/link_2mon_sites.html - 2024-07-24T19:25:22.948Z + 2024-08-24T04:18:42.547Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/util/math/cuboidslicing.html - 2024-07-24T19:25:22.936Z + 2024-08-24T04:18:42.543Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/trajectory-io/snapshot.html - 2024-07-24T19:25:24.332Z + 2024-08-24T04:18:44.003Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sys_def.html - 2024-07-24T19:25:22.928Z + 2024-08-24T04:18:42.539Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sever_filament.html - 2024-07-24T19:25:22.936Z + 2024-08-24T04:18:42.543Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/filamentsites.html - 2024-07-24T19:25:22.944Z + 2024-08-24T04:18:42.547Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/membrane/membranesites.html - 2024-07-24T19:25:22.944Z + 2024-08-24T04:18:42.547Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_3states-6c16efb303a60058.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cadherinparams-b70febdaf4c8fba5.html - 2024-07-24T19:25:24.508Z + 2024-08-24T04:18:44.111Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_membranesitereaction--59d1fe245302e071.html - 2024-07-24T19:25:24.360Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_num_unmin_ends-813ffc641f9ac9da.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.067Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.compute_all_membrane_geometry-_system-05b4d2a32e31560c.html - 2024-07-24T19:25:24.504Z + 2024-08-24T04:18:44.107Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.haskey-e7d3f961991e2663.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cubicgrid-fe4b7cc2dceb0431.html - 2024-07-24T19:25:24.384Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentendsite--95612d72d1fda05f.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.iterate-5228367cd62c0bf2.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.011Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.refresh_chem_cache--f90ebca1f896ad2c.html - 2024-07-24T19:25:24.504Z + 2024-08-24T04:18:44.111Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_link_2mon--b801c872b8ff168a.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.randompoint-83e939bdee528294.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.067Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertexname-2d87a6a86cabc4f5.html - 2024-07-24T19:25:24.500Z + 2024-08-24T04:18:44.107Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addmembranediffusingcount_rand--7b719dca63a36b1b.html - 2024-07-24T19:25:24.360Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filamentsitegeneral-0d87ce44fed17b2c.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitecount-ab4fcc1eb50c2313.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentend_reaction--83ec3db37b4e2130.html - 2024-07-24T19:25:24.508Z + 2024-08-24T04:18:44.115Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemotorcatch-0185d4c95b91e30b.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.067Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_newfilament--7a45f2860949bee3.html - 2024-07-24T19:25:24.500Z + 2024-08-24T04:18:44.103Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.membranespeciesparams-548fecb643fc2599.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addpossiblecadherinsite--ae8586daa0b5454a.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/reference/sitesinfo.html - 2023-10-13T14:24:55.339Z + 2023-10-16T15:47:29.040Z https://medyan-dev.github.io/julia-docs/dev/reference/index.html - 2023-10-13T14:24:55.339Z + 2023-10-16T15:47:29.040Z https://medyan-dev.github.io/julia-docs/dev/index.html - 2023-10-13T14:24:55.339Z + 2023-10-16T15:47:29.040Z https://medyan-dev.github.io/julia-docs/dev/tutorials/3treadmill.html - 2024-01-30T01:58:12.660Z + 2024-04-03T19:20:12.059Z https://medyan-dev.github.io/julia-docs/dev/tutorials/1install.html - 2023-10-19T20:15:13.966Z + 2023-11-07T01:05:34.196Z https://medyan-dev.github.io/julia-docs/dev/explanations.html - 2023-10-13T14:24:55.339Z + 2023-10-16T15:47:29.040Z https://medyan-dev.github.io/julia-docs/dev/tutorials/2rdme.html - 2024-01-30T01:58:12.660Z + 2024-04-03T19:20:12.059Z https://medyan-dev.github.io/julia-docs/dev/docstrings.html - 2023-10-13T14:24:55.339Z + 2023-10-16T15:47:29.040Z https://medyan-dev.github.io/julia-docs/dev/reference/fileformats.html - 2023-11-16T15:43:48.563Z + 2023-11-16T17:03:01.255Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_time--a6dd8f73f68a3759.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.copy-4ca5eb8401ab10b2.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.007Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.setindex--725f722fff4cfa6d.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentsite--eb6bfd871a21b6f4.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.---a21e771ed8ea7d6f.html - 2024-07-24T19:25:24.500Z + 2024-08-24T04:18:44.103Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilament_reaction--63195cbff2ab4237.html - 2024-07-24T19:25:24.504Z + 2024-08-24T04:18:44.111Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.centerof-e902b9bb7b2a6caf.html - 2024-07-24T19:25:24.496Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addreactioncallback--9c9d46adeded2d88.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.sever_filament--a0475617dc0fbf93.html - 2024-07-24T19:25:24.344Z + 2024-08-24T04:18:44.015Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.num_filtypes-b9943bbf7a9c7781.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsiteslipbond-2cec57cbea12864e.html - 2024-07-24T19:25:24.340Z + 2024-08-24T04:18:44.015Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_position-83983d8916347411.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monparams-d960d08f0808df0c.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsiteone-9886bc1476194731.html - 2024-07-24T19:25:24.340Z + 2024-08-24T04:18:44.015Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.run_chemistry--dda22fac5c555b9e.html - 2024-07-24T19:25:24.496Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.adddiffusingcount_rand--9d3ddfabbceeef92.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_decimated_2mon_site--ad56e7ee56067940.html - 2024-07-24T19:25:24.344Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_enable_cylinder_volume_exclusion--38c20ab68ab8bf1a.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addunbindinglink_2mon_site--76d17dbe625169cd.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_exists-898c415a5eddc619.html - 2024-07-24T19:25:24.344Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/context.html - 2024-07-24T19:25:24.324Z + 2024-08-24T04:18:43.999Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/membrane/meshadapt.html - 2024-07-24T19:25:22.932Z + 2024-08-24T04:18:42.539Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/auxprocs.html - 2024-07-24T19:25:24.328Z + 2024-08-24T04:18:44.003Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/filamentendsites.html - 2024-07-24T19:25:24.332Z + 2024-08-24T04:18:44.003Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/grids.html - 2024-07-24T19:25:22.928Z + 2024-08-24T04:18:42.539Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/util/stableindex.html - 2024-07-24T19:25:24.328Z + 2024-08-24T04:18:43.999Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/cadherins/possiblecadherinsite.html - 2024-07-24T19:25:22.948Z + 2024-08-24T04:18:42.547Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/boundary.html - 2024-07-24T19:25:22.932Z + 2024-08-24T04:18:42.543Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/minimize_energy.html - 2024-07-24T19:25:24.332Z + 2024-08-24T04:18:44.003Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link_2mon_state-6d59dcd98ed7e303.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.007Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemotorstall-deb10f7964d5bef9.html - 2024-07-24T19:25:24.504Z + 2024-08-24T04:18:44.107Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_filament_params--74c7d0081157ca31.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filter_grididat-58a94154d21e32b0.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.push--8715d52e2302aaeb.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addmembranesite--892875b2c079002d.html - 2024-07-24T19:25:24.340Z + 2024-08-24T04:18:44.011Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.decimated2monsiterange-8afd8f3188bbcd4a.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addcadherin--3c757785fa097c75.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.067Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addreaction--da9bd35e7d1df7c3.html - 2024-07-24T19:25:24.364Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link_2mon_endnames-5d0bca4b8e2e3509.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.087Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.context-736368ed32b08894.html - 2024-07-24T19:25:24.368Z + 2024-08-24T04:18:44.083Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filtype_fil_ids-d333c38b9f9b3584.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cadherinstate-0cd5353e58a90ec2.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.delete--56ef520341df3c06.html - 2024-07-24T19:25:24.340Z + 2024-08-24T04:18:44.015Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_capsule-1700142f310bd9db.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.095Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filamentendsitegeneral-7a32ac96fb4364ea.html - 2024-07-24T19:25:24.500Z + 2024-08-24T04:18:44.107Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.getindex-f593dde852851bc8.html - 2024-07-24T19:25:24.348Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertex_state-aa3350c08b68b63a.html - 2024-07-24T19:25:24.360Z + 2024-08-24T04:18:44.079Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.resolve_all_filament_mesh_crossing--a8be83a7d2ad65c7.html - 2024-07-24T19:25:24.508Z + 2024-08-24T04:18:44.111Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_position_plusvector-927d0affbbdfef6f.html - 2024-07-24T19:25:24.336Z + 2024-08-24T04:18:44.011Z https://medyan-dev.github.io/julia-docs/dev/docstrings/nlsolversbase.value---d4fdd3b317023c0e.html - 2024-07-24T19:25:24.376Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.is_chem_cache_valid-8336a8adc58a252f.html - 2024-07-24T19:25:24.496Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.sysdef-c0c4da7a2b3d4fef.html - 2024-07-24T19:25:24.508Z + 2024-08-24T04:18:44.111Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.monlink2monsiteone-77707f45e082c27e.html - 2024-07-24T19:25:24.504Z + 2024-08-24T04:18:44.107Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addcadherinsite--9e21ac42968d0196.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.monomername-bb517706cb60c4f5.html - 2024-07-24T19:25:24.352Z + 2024-08-24T04:18:44.071Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.num_vertexwithstate-3cf6fcd964588d37.html - 2024-07-24T19:25:24.372Z + 2024-08-24T04:18:44.091Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_newlink_2mon--e4f84fe5cfa9a727.html - 2024-07-24T19:25:24.344Z + 2024-08-24T04:18:44.019Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.minimize_energy--84c4aeab5457d3ee.html - 2024-07-24T19:25:24.504Z + 2024-08-24T04:18:44.107Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_node_positions-618a66637eb50781.html - 2024-07-24T19:25:24.356Z + 2024-08-24T04:18:44.075Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_addfixedcount--0286edfebf8ea5e6.html - 2024-07-24T19:25:24.384Z + 2024-08-24T04:18:44.099Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.newmembrane--a714b4a1c87062be.html - 2024-07-24T19:25:24.380Z + 2024-08-24T04:18:44.095Z diff --git a/julia-docs/dev/tutorials/1install.html b/julia-docs/dev/tutorials/1install.html index 735bfe3..f07c56b 100644 --- a/julia-docs/dev/tutorials/1install.html +++ b/julia-docs/dev/tutorials/1install.html @@ -247,7 +247,7 @@

1. Installing MEDYAN.jl

Install julia

MEDYAN.jl is a julia package so first install the julia programming language.

This tutorial was generated using:

-
+
Julia Version 1.10.4
 Commit 48d4fd48430 (2024-06-04 10:41 UTC)
diff --git a/julia-docs/dev/tutorials/2rdme.html b/julia-docs/dev/tutorials/2rdme.html
index f3afa9d..45cc155 100644
--- a/julia-docs/dev/tutorials/2rdme.html
+++ b/julia-docs/dev/tutorials/2rdme.html
@@ -276,7 +276,7 @@ 

2. Rock Paper Scissors Stochastic Reaction Diffusion

Setup

Open a julia REPL or jupyter notebook using the medyan-tutorial environment you created in tutorial 1.

Load MEDYAN with MEDYANVis for visualization

-
+
using MEDYAN
 using MEDYANVis
 using CairoMakie
@@ -289,7 +289,7 @@ 

Setup

Declaring agent names

The first step is declaring the names of agents in the system.

This system will contain three diffusing species.

-
+
agent_names = MEDYAN.AgentNames(;
     diffusingspeciesnames=[
         :R, # Rock
@@ -306,7 +306,7 @@ 

Declaring agent name

Defining System

After the agent names are declared, the system can be defined.

This is done by constructing a MEDYAN.SysDef object from the agent_names and then mutating it to add parameters, reactions, and callbacks.

-
+
s = MEDYAN.SysDef(agent_names)
MEDYAN.SysDef
@@ -318,7 +318,7 @@ 

Defining System

Add a diffusion coefficient of 1E6 nm²/s to all species. All units are based on nm, s, pN

add_diffusion_coeff!

-
+
D = 1E6
 add_diffusion_coeff!(s, :R, D) # nm²/s
 add_diffusion_coeff!(s, :P, D) # nm²/s
@@ -334,7 +334,7 @@ 

Defining System

Add reactions, paper “beats” rock, scissors “beats” paper, rock “beats” scissors. In this simulation “beats” means convert to self type.

In this case because the reaction is between two diffusing species, it has units of nm³/s. You can think of this as the volume where if exactly one of each reactant existed the rate would be 1 per second.

addreaction!

-
+
rate = 50.0*(500.0^3) # nm³/s
 addreaction!(s,
     "diffusing.P + diffusing.R --> 2diffusing.P",
@@ -370,7 +370,7 @@ 

Creating a grid

This is a box that contains the simulation.

The grid is composed of chemistry voxels, small cubes that can have different counts of the various diffusing species.

Create a 50 by 50 by 1 grid of 500 nm side length voxels.

-
+
L = 50
 grid = CubicGrid((L,L,1),500.0)
@@ -382,7 +382,7 @@

Creating a grid

Creating a Context

The Context is the object the handles the state of a running simulation.

Create a Context using s and grid

-
+
c = MEDYAN.Context(s, grid)
MEDYAN.Context at time 0.0s in CubicGrid([50, 50, 1], 500.0)
@@ -394,7 +394,7 @@

Add agents to th

The context starts empty.

Distribute 2000 of each species randomly to the chem voxels by mutating the context.

adddiffusingcount_rand!

-
+
adddiffusingcount_rand!(c, s.diffusing.R, 2000)
 adddiffusingcount_rand!(c, s.diffusing.P, 2000)
 adddiffusingcount_rand!(c, s.diffusing.S, 2000)
@@ -403,24 +403,24 @@

Add agents to th

Run chemistry

Run chemistry for 1.0s and visualize the results.

-
+
vis = Visualizer()
 setvisible!(vis["/Grid"], false)
 setvisible!(vis["/Axes"], false)
 setvisible!(vis["/Background"], false)

If you open the visualizer in a browser with open(vis) and run the following you should get an animated version of below.

-
+
for i in 1:100
     run_chemistry!(c, 0.01)
     MEDYANVis.drawdiffusing!(vis["diffusing"], c.grid, c.chemistryengine, s; size = 0.8)
     sleep(0.02)
 end
-
+
-