From 219a70d165d64b8c34a37196ad1335228d11adb7 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Wed, 13 Nov 2024 20:25:47 -0500 Subject: [PATCH] build based on 4d2abe7 --- julia-docs/dev/docstrings.html | 248 +++++++++++----------- julia-docs/dev/medyan-tutorial.zip | Bin 759101 -> 762742 bytes julia-docs/dev/reference/fileformats.html | 70 +++--- julia-docs/dev/search.json | 4 +- julia-docs/dev/sitemap.xml | 248 +++++++++++----------- julia-docs/dev/tutorials/1install.html | 2 +- julia-docs/dev/tutorials/2rdme.html | 34 +-- julia-docs/dev/tutorials/3treadmill.html | 66 +++--- 8 files changed, 336 insertions(+), 336 deletions(-) diff --git a/julia-docs/dev/docstrings.html b/julia-docs/dev/docstrings.html index 3159c47..79e7eb3 100644 --- a/julia-docs/dev/docstrings.html +++ b/julia-docs/dev/docstrings.html @@ -298,622 +298,622 @@

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-types.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 201f083894cbd557df93190dbcae3f6db4d47642..a74f6b915c047abf322fe7573c87c9eefb4021df 100644 GIT binary patch delta 62491 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%0Ax32{(Ve%>a9Vd@oP_ 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

Xkh^zH7^j^Fw`yRgAe-Z)9#Tk3}Oc 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 delta 58794 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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()
@@ -386,7 +386,7 @@ 

Snapshot group

Snapshot Versioning

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

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

“#expe

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

🔢 lids -
+
collect(group["link_2mons/1/lids"])
2-element Vector{Int64}:
@@ -926,7 +926,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"]
📂
@@ -969,7 +969,7 @@ 

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

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

Example snapshot

🔢 id -
+
collect(group["membranes/1/id"])
959-element Vector{Int64}:
@@ -1173,12 +1173,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  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
diff --git a/julia-docs/dev/search.json b/julia-docs/dev/search.json index 1616638..e705eab 100644 --- a/julia-docs/dev/search.json +++ b/julia-docs/dev/search.json @@ -1334,7 +1334,7 @@ "href": "reference/fileformats.html", "title": "File Formats", "section": "", - "text": "MEDYAN.jl uses Zarr v2 zip store for saving snapshots.\n\n\n\n\n\n\nOther Languages\n\n\n\nTo open the snapshots in python use zarr\n\n\n\n\nTrajectory outputs and logs are stored in a directory.\nThe output directory contains a traj sub directory with a header.json file, many snap$(NUMBER).zarr.zip files where NUMBER is the frame number of the snapshot, and finally a footer.json.\nThe initial state returned by setup is stored in snap0.zarr.zip.\nInside the snap$(NUMBER).zarr.zip there is a snap/medyan group containing the snapshot of the MEDYAN.Context at the step. Other state may be stored in child groups of snap.\nThe header.json file also has a top level \"medyan\" key with a value describing the system being simulated.\nOther header information may be under other top level keys.\nSee https://github.com/medyan-dev/MEDYANSimRunner.jl for more details on the output directory structure.\n\n\n\nheader.json[\"medyan\"] contains static metadata about the simulation that is constant over time.\n\n\n\nusing MEDYAN\nimport JSON3\ncinit, s = MEDYAN.example_all_sites_context()\nJSON3.pretty(MEDYAN.header(cinit); allow_inf = true)\n\n{\n \"version\": \"0.1.0\",\n \"medyanInfo\": {\n \"title\": \"MEDYAN.jl\",\n \"version\": \"0.1.0\",\n \"sourceCodeUrl\": \"https://github.com/medyan-dev/MEDYAN.jl\"\n },\n \"size\": {\n \"x(nm)\": 2000,\n \"y(nm)\": 500,\n \"z(nm)\": 500\n },\n \"chem_grid_size\": {\n \"nx\": 4,\n \"ny\": 1,\n \"nz\": 1,\n \"voxel_x(nm)\": 500,\n \"voxel_y(nm)\": 500,\n \"voxel_z(nm)\": 500\n },\n \"diffusing_species\": [\n {\n \"name\": \"b\"\n },\n {\n \"name\": \"c\"\n }\n ],\n \"membrane_diffusing_species\": [\n {\n \"name\": \"ma\"\n },\n {\n \"name\": \"mb\"\n },\n {\n \"name\": \"mc\"\n }\n ],\n \"fixed_species\": [\n {\n \"name\": \"d\"\n },\n {\n \"name\": \"a\"\n }\n ],\n \"filaments\": [\n {\n \"name\": \"a\",\n \"radius(nm)\": 3,\n \"monomerstates\": [\n \"me\",\n \"a\",\n \"b\",\n \"c\",\n \"pe\"\n ]\n },\n {\n \"name\": \"b\",\n \"radius(nm)\": 3,\n \"monomerstates\": [\n \"me\",\n \"a\",\n \"b\",\n \"c\",\n \"pe\"\n ]\n }\n ],\n \"link_2mons\": [\n {\n \"name\": \"a\"\n },\n {\n \"name\": \"b\"\n },\n {\n \"name\": \"c\"\n },\n {\n \"name\": \"d\"\n }\n ]\n}\n\n\n\n\n\n\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\n\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\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\n\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.", + "text": "MEDYAN.jl uses Zarr v2 zip store for saving snapshots.\n\n\n\n\n\n\nOther Languages\n\n\n\nTo open the snapshots in python use zarr\n\n\n\n\nTrajectory outputs and logs are stored in a directory.\nThe output directory contains a traj sub directory with a header.json file, many snap$(NUMBER).zarr.zip files where NUMBER is the frame number of the snapshot, and finally a footer.json.\nThe initial state returned by setup is stored in snap0.zarr.zip.\nInside the snap$(NUMBER).zarr.zip there is a snap/medyan group containing the snapshot of the MEDYAN.Context at the step. Other state may be stored in child groups of snap.\nThe header.json file also has a top level \"medyan\" key with a value describing the system being simulated.\nOther header information may be under other top level keys.\nSee https://github.com/medyan-dev/MEDYANSimRunner.jl for more details on the output directory structure.\n\n\n\nheader.json[\"medyan\"] contains static metadata about the simulation that is constant over time.\n\n\n\nusing MEDYAN\nimport JSON3\ncinit, s = MEDYAN.example_all_sites_context()\nJSON3.pretty(MEDYAN.header(cinit); allow_inf = true)\n\n{\n \"version\": \"0.1.0\",\n \"medyanInfo\": {\n \"title\": \"MEDYAN.jl\",\n \"version\": \"0.1.0\",\n \"sourceCodeUrl\": \"https://github.com/medyan-dev/MEDYAN.jl\"\n },\n \"size\": {\n \"x(nm)\": 2000,\n \"y(nm)\": 500,\n \"z(nm)\": 500\n },\n \"chem_grid_size\": {\n \"nx\": 4,\n \"ny\": 1,\n \"nz\": 1,\n \"voxel_x(nm)\": 500,\n \"voxel_y(nm)\": 500,\n \"voxel_z(nm)\": 500\n },\n \"diffusing_species\": [\n {\n \"name\": \"b\"\n },\n {\n \"name\": \"c\"\n }\n ],\n \"membrane_diffusing_species\": [\n {\n \"name\": \"ma\"\n },\n {\n \"name\": \"mb\"\n },\n {\n \"name\": \"mc\"\n }\n ],\n \"fixed_species\": [\n {\n \"name\": \"d\"\n },\n {\n \"name\": \"a\"\n }\n ],\n \"filaments\": [\n {\n \"name\": \"a\",\n \"radius(nm)\": 3,\n \"monomerstates\": [\n \"me\",\n \"a\",\n \"b\",\n \"c\",\n \"pe\"\n ]\n },\n {\n \"name\": \"b\",\n \"radius(nm)\": 3,\n \"monomerstates\": [\n \"me\",\n \"a\",\n \"b\",\n \"c\",\n \"pe\"\n ]\n }\n ],\n \"link_2mons\": [\n {\n \"name\": \"a\"\n },\n {\n \"name\": \"b\"\n },\n {\n \"name\": \"c\"\n },\n {\n \"name\": \"d\"\n }\n ]\n}\n\n\n\n\n\n\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\n\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\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\n\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 1 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" @@ -1367,7 +1367,7 @@ "href": "reference/fileformats.html#snapshot-group", "title": "File Formats", "section": "", - "text": "A 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\n\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\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\n\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.", + "text": "A 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\n\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\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\n\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 1 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 e187959..e636faa 100644 --- a/julia-docs/dev/sitemap.xml +++ b/julia-docs/dev/sitemap.xml @@ -2,251 +2,251 @@ https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_chemboundary--0aa6e4e95c60f9f7.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_adddiffusingcount--2264be341b81a600.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_removelink_2mon--e25a3fd69f791cd0.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_cylinder-33a45da15f9672d3.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertexstate-450b7005d2acebe8.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_link_2mon_site--b9548c4a2d23aac9.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monstate-9845e7e08620ea8a.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_plusvector-b7271c7721602813.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.load_snapshot--e534be293ce74465.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_mechboundary--b5e26b6b690256aa.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_plane-2caa9b52b3b3f0cc.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_depolymerize--a5f262191e484dd4.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_minimized-5b17adaf7d8a4f62.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.defer_chem_caching--9538a1c449f3da93.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_box-060d4c56df40146a.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_diffusion_coeff--a77d1ef833cfdedd.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_setmonomerstate--ed756af0de4db0ca.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemonomerstatematch-c495443de74016ce.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.membranesitediffusing-66734014eb12ddb1.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_removefilament--f36888837f14bad7.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.grididat-8671e01413346deb.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_node_mon_ids-b1d3d66a81296343.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.agentnames-948e6a24b4fb0cb5.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_polymerize--7a5e88ac36e4ccbf.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_setlink_2mon_state--82213403237b28e5.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.empty--418304748816268d.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.decimated2monsiteminanglerange-fc006e574376cfff.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.adapt_membranes--1d26092defd0f4fa.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_mon_states-3db9714621903b78.html - 2024-11-11T02:20:39.952Z + 2024-11-14T01:22:17.126Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary-f1e7be79002a27f8.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.newfilament_rand--432ec27232aad41e.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.length-7ea31a421de7d258.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/mon_link_2mon_sites.html - 2024-11-11T02:20:37.976Z + 2024-11-14T01:22:15.266Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/decimated_2mon_sites.html - 2024-11-11T02:20:37.980Z + 2024-11-14T01:22:15.270Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/link_2mon_sites.html - 2024-11-11T02:20:37.984Z + 2024-11-14T01:22:15.274Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/cadherins/possiblecadherinsite.html - 2024-11-11T02:20:37.984Z + 2024-11-14T01:22:15.274Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/util/stableindex.html - 2024-11-11T02:20:39.936Z + 2024-11-14T01:22:17.110Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/grids.html - 2024-11-11T02:20:37.976Z + 2024-11-14T01:22:15.266Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/filamentendsites.html - 2024-11-11T02:20:39.944Z + 2024-11-14T01:22:17.114Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/auxprocs.html - 2024-11-11T02:20:39.940Z + 2024-11-14T01:22:17.114Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/membrane/meshadapt.html - 2024-11-11T02:20:37.976Z + 2024-11-14T01:22:15.266Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/context.html - 2024-11-11T02:20:39.936Z + 2024-11-14T01:22:17.110Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_exists-898c415a5eddc619.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addunbindinglink_2mon_site--76d17dbe625169cd.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_enable_cylinder_volume_exclusion--38c20ab68ab8bf1a.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_decimated_2mon_site--ad56e7ee56067940.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.adddiffusingcount_rand--9d3ddfabbceeef92.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.run_chemistry--dda22fac5c555b9e.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsiteone-9886bc1476194731.html - 2024-11-11T02:20:39.952Z + 2024-11-14T01:22:17.126Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monparams-d960d08f0808df0c.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_position-83983d8916347411.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsiteslipbond-2cec57cbea12864e.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.126Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.num_filtypes-b9943bbf7a9c7781.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.sever_filament--a0475617dc0fbf93.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.126Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addreactioncallback--9c9d46adeded2d88.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.centerof-e902b9bb7b2a6caf.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilament_reaction--63195cbff2ab4237.html - 2024-11-11T02:20:39.992Z + 2024-11-14T01:22:17.190Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.---a21e771ed8ea7d6f.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentsite--eb6bfd871a21b6f4.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.setindex--725f722fff4cfa6d.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.copy-4ca5eb8401ab10b2.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_time--a6dd8f73f68a3759.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/reference/fileformats.html @@ -286,250 +286,250 @@ https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addpossiblecadherinsite--ae8586daa0b5454a.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.membranespeciesparams-548fecb643fc2599.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_newfilament--7a45f2860949bee3.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemotorcatch-0185d4c95b91e30b.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentend_reaction--83ec3db37b4e2130.html - 2024-11-11T02:20:39.996Z + 2024-11-14T01:22:17.194Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitecount-ab4fcc1eb50c2313.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filamentsitegeneral-0d87ce44fed17b2c.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addmembranediffusingcount_rand--7b719dca63a36b1b.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertexname-2d87a6a86cabc4f5.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.randompoint-83e939bdee528294.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_link_2mon--b801c872b8ff168a.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.refresh_chem_cache--f90ebca1f896ad2c.html - 2024-11-11T02:20:39.992Z + 2024-11-14T01:22:17.166Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.iterate-5228367cd62c0bf2.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentendsite--95612d72d1fda05f.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cubicgrid-fe4b7cc2dceb0431.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.haskey-e7d3f961991e2663.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.compute_all_membrane_geometry-_system-05b4d2a32e31560c.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_num_unmin_ends-813ffc641f9ac9da.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_membranesitereaction--59d1fe245302e071.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cadherinparams-b70febdaf4c8fba5.html - 2024-11-11T02:20:39.992Z + 2024-11-14T01:22:17.190Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_3states-6c16efb303a60058.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/membrane/membranesites.html - 2024-11-11T02:20:37.980Z + 2024-11-14T01:22:15.270Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/filamentsites.html - 2024-11-11T02:20:37.980Z + 2024-11-14T01:22:15.270Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sever_filament.html - 2024-11-11T02:20:37.980Z + 2024-11-14T01:22:15.270Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sys_def.html - 2024-11-11T02:20:37.976Z + 2024-11-14T01:22:15.262Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/trajectory-io/snapshot.html - 2024-11-11T02:20:39.944Z + 2024-11-14T01:22:17.114Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/util/math/cuboidslicing.html - 2024-11-11T02:20:37.980Z + 2024-11-14T01:22:15.270Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sys_def-types.html - 2024-11-11T02:20:39.940Z + 2024-11-14T01:22:17.114Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/boundary.html - 2024-11-11T02:20:37.976Z + 2024-11-14T01:22:15.266Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/minimize_energy.html - 2024-11-11T02:20:39.944Z + 2024-11-14T01:22:17.114Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link_2mon_state-6d59dcd98ed7e303.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemotorstall-deb10f7964d5bef9.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_filament_params--74c7d0081157ca31.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filter_grididat-58a94154d21e32b0.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.push--8715d52e2302aaeb.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addmembranesite--892875b2c079002d.html - 2024-11-11T02:20:39.952Z + 2024-11-14T01:22:17.126Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.decimated2monsiterange-8afd8f3188bbcd4a.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addcadherin--3c757785fa097c75.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addreaction--da9bd35e7d1df7c3.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link_2mon_endnames-5d0bca4b8e2e3509.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.context-736368ed32b08894.html - 2024-11-11T02:20:39.972Z + 2024-11-14T01:22:17.146Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filtype_fil_ids-d333c38b9f9b3584.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cadherinstate-0cd5353e58a90ec2.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.delete--56ef520341df3c06.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.126Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_capsule-1700142f310bd9db.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.154Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filamentendsitegeneral-7a32ac96fb4364ea.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.getindex-f593dde852851bc8.html - 2024-11-11T02:20:39.960Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertex_state-aa3350c08b68b63a.html - 2024-11-11T02:20:39.968Z + 2024-11-14T01:22:17.142Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.resolve_all_filament_mesh_crossing--a8be83a7d2ad65c7.html - 2024-11-11T02:20:39.992Z + 2024-11-14T01:22:17.190Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_position_plusvector-927d0affbbdfef6f.html - 2024-11-11T02:20:39.948Z + 2024-11-14T01:22:17.122Z https://medyan-dev.github.io/julia-docs/dev/docstrings/nlsolversbase.value---d4fdd3b317023c0e.html - 2024-11-11T02:20:39.980Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.is_chem_cache_valid-8336a8adc58a252f.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.sysdef-c0c4da7a2b3d4fef.html - 2024-11-11T02:20:39.992Z + 2024-11-14T01:22:17.190Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.monlink2monsiteone-77707f45e082c27e.html - 2024-11-11T02:20:39.992Z + 2024-11-14T01:22:17.166Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addcadherinsite--9e21ac42968d0196.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.monomername-bb517706cb60c4f5.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.134Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.num_vertexwithstate-3cf6fcd964588d37.html - 2024-11-11T02:20:39.976Z + 2024-11-14T01:22:17.150Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_newlink_2mon--e4f84fe5cfa9a727.html - 2024-11-11T02:20:39.956Z + 2024-11-14T01:22:17.130Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.minimize_energy--84c4aeab5457d3ee.html - 2024-11-11T02:20:39.988Z + 2024-11-14T01:22:17.162Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_node_positions-618a66637eb50781.html - 2024-11-11T02:20:39.964Z + 2024-11-14T01:22:17.138Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_addfixedcount--0286edfebf8ea5e6.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.158Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.newmembrane--a714b4a1c87062be.html - 2024-11-11T02:20:39.984Z + 2024-11-14T01:22:17.154Z diff --git a/julia-docs/dev/tutorials/1install.html b/julia-docs/dev/tutorials/1install.html index aac809c..bb9f7b0 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.11.1
 Commit 8f5b7ca12ad (2024-10-16 10:53 UTC)
diff --git a/julia-docs/dev/tutorials/2rdme.html b/julia-docs/dev/tutorials/2rdme.html
index 573fe46..34276b5 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
-
+
-