diff --git a/julia-docs/dev/docstrings.html b/julia-docs/dev/docstrings.html index e70c8ad..40d57da 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 12a555d..fd67b0c 100644 Binary files a/julia-docs/dev/medyan-tutorial.zip and b/julia-docs/dev/medyan-tutorial.zip differ diff --git a/julia-docs/dev/reference/fileformats.html b/julia-docs/dev/reference/fileformats.html index 62916cd..64a20f9 100644 --- a/julia-docs/dev/reference/fileformats.html +++ b/julia-docs/dev/reference/fileformats.html @@ -274,7 +274,7 @@

"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  1  0  0  0  0
+ 0  0  0  1  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
diff --git a/julia-docs/dev/search.json b/julia-docs/dev/search.json index 0afc071..c2a3f58 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 1 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 0 0 1 0 0 0 0 0 0 0 0 0 0 1 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 1 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 0 0 1 0 0 0 0 0 0 0 0 0 0 1 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" @@ -1389,7 +1389,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/YkotL/src/scenes.jl:229\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/6c4lt/src/scenes.jl:229\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" @@ -1477,7 +1477,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/YkotL/src/scenes.jl:229\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/6c4lt/src/scenes.jl:229\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" @@ -1488,7 +1488,7 @@ "href": "tutorials/1install.html", "title": "1. Installing MEDYAN.jl", "section": "", - "text": "MEDYAN.jl is a julia package so first install the julia programming language.\nThis tutorial was generated using:\n\n\nJulia Version 1.11.0\nCommit 501a4f25c2b (2024-10-07 11:40 UTC)\nBuild Info:\n Official https://julialang.org/ release\nPlatform Info:\n OS: Linux (x86_64-linux-gnu)\n CPU: 16 × Intel(R) Core(TM) i7-10700KF CPU @ 3.80GHz\n WORD_SIZE: 64\n LLVM: libLLVM-16.0.6 (ORCJIT, skylake)\nThreads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)\nEnvironment:\n LD_LIBRARY_PATH = /home/gh-actions1/actions-runner6/_work/_tool/julia/1.11.0/x64/bin/../lib/julia:/home/gh-actions1/actions-runner6/_work/_tool/julia/1.11.0/x64/bin/../lib\n\n\nThe tutorials should work on newer versions of julia, and on MacOS and Windows, please create an issue if you have a problem or question.\nJulia can be installed with juliaup.\nYou can also download julia here.\nDo not install julia using apt install julia or module load julia, as these don’t have a recent version of julia.\nAfter installing julia, open the REPL with the julia command in terminal.", + "text": "MEDYAN.jl is a julia package so first install the julia programming language.\nThis tutorial was generated using:\n\n\nJulia Version 1.11.1\nCommit 8f5b7ca12ad (2024-10-16 10:53 UTC)\nBuild Info:\n Official https://julialang.org/ release\nPlatform Info:\n OS: Linux (x86_64-linux-gnu)\n CPU: 16 × Intel(R) Core(TM) i7-10700KF CPU @ 3.80GHz\n WORD_SIZE: 64\n LLVM: libLLVM-16.0.6 (ORCJIT, skylake)\nThreads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)\nEnvironment:\n LD_LIBRARY_PATH = /home/gh-actions1/actions-runner7/_work/_tool/julia/1.11.1/x64/bin/../lib/julia:/home/gh-actions1/actions-runner7/_work/_tool/julia/1.11.1/x64/bin/../lib\n\n\nThe tutorials should work on newer versions of julia, and on MacOS and Windows, please create an issue if you have a problem or question.\nJulia can be installed with juliaup.\nYou can also download julia here.\nDo not install julia using apt install julia or module load julia, as these don’t have a recent version of julia.\nAfter installing julia, open the REPL with the julia command in terminal.", "crumbs": [ "Tutorials", "1. Installing MEDYAN.jl" @@ -1499,7 +1499,7 @@ "href": "tutorials/1install.html#install-julia", "title": "1. Installing MEDYAN.jl", "section": "", - "text": "MEDYAN.jl is a julia package so first install the julia programming language.\nThis tutorial was generated using:\n\n\nJulia Version 1.11.0\nCommit 501a4f25c2b (2024-10-07 11:40 UTC)\nBuild Info:\n Official https://julialang.org/ release\nPlatform Info:\n OS: Linux (x86_64-linux-gnu)\n CPU: 16 × Intel(R) Core(TM) i7-10700KF CPU @ 3.80GHz\n WORD_SIZE: 64\n LLVM: libLLVM-16.0.6 (ORCJIT, skylake)\nThreads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)\nEnvironment:\n LD_LIBRARY_PATH = /home/gh-actions1/actions-runner6/_work/_tool/julia/1.11.0/x64/bin/../lib/julia:/home/gh-actions1/actions-runner6/_work/_tool/julia/1.11.0/x64/bin/../lib\n\n\nThe tutorials should work on newer versions of julia, and on MacOS and Windows, please create an issue if you have a problem or question.\nJulia can be installed with juliaup.\nYou can also download julia here.\nDo not install julia using apt install julia or module load julia, as these don’t have a recent version of julia.\nAfter installing julia, open the REPL with the julia command in terminal.", + "text": "MEDYAN.jl is a julia package so first install the julia programming language.\nThis tutorial was generated using:\n\n\nJulia Version 1.11.1\nCommit 8f5b7ca12ad (2024-10-16 10:53 UTC)\nBuild Info:\n Official https://julialang.org/ release\nPlatform Info:\n OS: Linux (x86_64-linux-gnu)\n CPU: 16 × Intel(R) Core(TM) i7-10700KF CPU @ 3.80GHz\n WORD_SIZE: 64\n LLVM: libLLVM-16.0.6 (ORCJIT, skylake)\nThreads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)\nEnvironment:\n LD_LIBRARY_PATH = /home/gh-actions1/actions-runner7/_work/_tool/julia/1.11.1/x64/bin/../lib/julia:/home/gh-actions1/actions-runner7/_work/_tool/julia/1.11.1/x64/bin/../lib\n\n\nThe tutorials should work on newer versions of julia, and on MacOS and Windows, please create an issue if you have a problem or question.\nJulia can be installed with juliaup.\nYou can also download julia here.\nDo not install julia using apt install julia or module load julia, as these don’t have a recent version of julia.\nAfter installing julia, open the REPL with the julia command in terminal.", "crumbs": [ "Tutorials", "1. Installing MEDYAN.jl" diff --git a/julia-docs/dev/sitemap.xml b/julia-docs/dev/sitemap.xml index 1a3ba95..7701fe3 100644 --- a/julia-docs/dev/sitemap.xml +++ b/julia-docs/dev/sitemap.xml @@ -2,534 +2,534 @@ https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_chemboundary--0aa6e4e95c60f9f7.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_adddiffusingcount--2264be341b81a600.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_removelink_2mon--e25a3fd69f791cd0.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_cylinder-33a45da15f9672d3.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertexstate-450b7005d2acebe8.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_link_2mon_site--b9548c4a2d23aac9.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monstate-9845e7e08620ea8a.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_plusvector-b7271c7721602813.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.load_snapshot--e534be293ce74465.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_mechboundary--b5e26b6b690256aa.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_plane-2caa9b52b3b3f0cc.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_depolymerize--a5f262191e484dd4.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_minimized-5b17adaf7d8a4f62.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.defer_chem_caching--9538a1c449f3da93.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_box-060d4c56df40146a.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_diffusion_coeff--a77d1ef833cfdedd.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_setmonomerstate--ed756af0de4db0ca.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemonomerstatematch-c495443de74016ce.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.membranesitediffusing-66734014eb12ddb1.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_removefilament--f36888837f14bad7.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.grididat-8671e01413346deb.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_node_mon_ids-b1d3d66a81296343.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.agentnames-948e6a24b4fb0cb5.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_polymerize--7a5e88ac36e4ccbf.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_setlink_2mon_state--82213403237b28e5.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.empty--418304748816268d.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.decimated2monsiteminanglerange-fc006e574376cfff.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.adapt_membranes--1d26092defd0f4fa.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_mon_states-3db9714621903b78.html - 2024-10-10T02:12:56.282Z + 2024-10-23T10:42:19.860Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary-f1e7be79002a27f8.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.newfilament_rand--432ec27232aad41e.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.length-7ea31a421de7d258.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/mon_link_2mon_sites.html - 2024-10-10T02:12:54.318Z + 2024-10-23T10:42:18.296Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/decimated_2mon_sites.html - 2024-10-10T02:12:54.318Z + 2024-10-23T10:42:18.300Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/link_2mon_sites.html - 2024-10-10T02:12:54.322Z + 2024-10-23T10:42:18.304Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/cadherins/possiblecadherinsite.html - 2024-10-10T02:12:54.322Z + 2024-10-23T10:42:18.316Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/util/stableindex.html - 2024-10-10T02:12:56.266Z + 2024-10-23T10:42:19.848Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/grids.html - 2024-10-10T02:12:54.314Z + 2024-10-23T10:42:18.296Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/filamentendsites.html - 2024-10-10T02:12:56.274Z + 2024-10-23T10:42:19.852Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/auxprocs.html - 2024-10-10T02:12:56.270Z + 2024-10-23T10:42:19.848Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/membrane/meshadapt.html - 2024-10-10T02:12:54.314Z + 2024-10-23T10:42:18.296Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/context.html - 2024-10-10T02:12:56.266Z + 2024-10-23T10:42:19.844Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_exists-898c415a5eddc619.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addunbindinglink_2mon_site--76d17dbe625169cd.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_enable_cylinder_volume_exclusion--38c20ab68ab8bf1a.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_decimated_2mon_site--ad56e7ee56067940.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.adddiffusingcount_rand--9d3ddfabbceeef92.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.run_chemistry--dda22fac5c555b9e.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsiteone-9886bc1476194731.html - 2024-10-10T02:12:56.282Z + 2024-10-23T10:42:19.860Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monparams-d960d08f0808df0c.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_position-83983d8916347411.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsiteslipbond-2cec57cbea12864e.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.860Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.num_filtypes-b9943bbf7a9c7781.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.sever_filament--a0475617dc0fbf93.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addreactioncallback--9c9d46adeded2d88.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.centerof-e902b9bb7b2a6caf.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilament_reaction--63195cbff2ab4237.html - 2024-10-10T02:12:56.322Z + 2024-10-23T10:42:19.908Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.---a21e771ed8ea7d6f.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentsite--eb6bfd871a21b6f4.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.setindex--725f722fff4cfa6d.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.copy-4ca5eb8401ab10b2.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.set_time--a6dd8f73f68a3759.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/reference/fileformats.html - 2023-11-16T17:03:00.955Z + 2023-11-16T17:03:00.567Z https://medyan-dev.github.io/julia-docs/dev/docstrings.html - 2023-10-16T15:46:53.623Z + 2023-10-16T15:47:29.144Z https://medyan-dev.github.io/julia-docs/dev/tutorials/2rdme.html - 2024-04-03T19:20:11.283Z + 2024-04-03T19:20:11.495Z https://medyan-dev.github.io/julia-docs/dev/explanations.html - 2023-10-16T15:46:53.623Z + 2023-10-16T15:47:29.144Z https://medyan-dev.github.io/julia-docs/dev/tutorials/1install.html - 2023-10-19T22:31:31.523Z + 2023-10-19T22:31:32.099Z https://medyan-dev.github.io/julia-docs/dev/tutorials/3treadmill.html - 2024-04-03T19:20:11.283Z + 2024-04-03T19:20:11.495Z https://medyan-dev.github.io/julia-docs/dev/index.html - 2023-10-16T15:46:53.623Z + 2023-10-16T15:47:29.144Z https://medyan-dev.github.io/julia-docs/dev/reference/index.html - 2023-10-16T15:46:53.623Z + 2023-10-16T15:47:29.144Z https://medyan-dev.github.io/julia-docs/dev/reference/sitesinfo.html - 2023-10-16T15:46:53.623Z + 2023-10-16T15:47:29.144Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addpossiblecadherinsite--ae8586daa0b5454a.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.membranespeciesparams-548fecb643fc2599.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_newfilament--7a45f2860949bee3.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemotorcatch-0185d4c95b91e30b.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentend_reaction--83ec3db37b4e2130.html - 2024-10-10T02:12:56.326Z + 2024-10-23T10:42:19.912Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitecount-ab4fcc1eb50c2313.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filamentsitegeneral-0d87ce44fed17b2c.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addmembranediffusingcount_rand--7b719dca63a36b1b.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertexname-2d87a6a86cabc4f5.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.randompoint-83e939bdee528294.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_link_2mon--b801c872b8ff168a.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.refresh_chem_cache--f90ebca1f896ad2c.html - 2024-10-10T02:12:56.322Z + 2024-10-23T10:42:19.908Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.iterate-5228367cd62c0bf2.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addfilamentendsite--95612d72d1fda05f.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cubicgrid-fe4b7cc2dceb0431.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.haskey-e7d3f961991e2663.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.compute_all_membrane_geometry-_system-05b4d2a32e31560c.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_num_unmin_ends-813ffc641f9ac9da.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_membranesitereaction--59d1fe245302e071.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cadherinparams-b70febdaf4c8fba5.html - 2024-10-10T02:12:56.322Z + 2024-10-23T10:42:19.908Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_3states-6c16efb303a60058.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/membrane/membranesites.html - 2024-10-10T02:12:54.322Z + 2024-10-23T10:42:18.300Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/filamentsites.html - 2024-10-10T02:12:54.322Z + 2024-10-23T10:42:18.300Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sever_filament.html - 2024-10-10T02:12:54.318Z + 2024-10-23T10:42:18.300Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sys_def.html - 2024-10-10T02:12:54.314Z + 2024-10-23T10:42:18.292Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/trajectory-io/snapshot.html - 2024-10-10T02:12:56.274Z + 2024-10-23T10:42:19.852Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/util/math/cuboidslicing.html - 2024-10-10T02:12:54.318Z + 2024-10-23T10:42:18.300Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/sys_def-types.html - 2024-10-10T02:12:56.270Z + 2024-10-23T10:42:19.852Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/boundary.html - 2024-10-10T02:12:54.318Z + 2024-10-23T10:42:18.296Z https://medyan-dev.github.io/julia-docs/dev/docstrings/src/minimize_energy.html - 2024-10-10T02:12:56.274Z + 2024-10-23T10:42:19.852Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link_2mon_state-6d59dcd98ed7e303.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link2monsitemotorstall-deb10f7964d5bef9.html - 2024-10-10T02:12:56.322Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.add_filament_params--74c7d0081157ca31.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filter_grididat-58a94154d21e32b0.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.push--8715d52e2302aaeb.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addmembranesite--892875b2c079002d.html - 2024-10-10T02:12:56.282Z + 2024-10-23T10:42:19.860Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.decimated2monsiterange-8afd8f3188bbcd4a.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addcadherin--3c757785fa097c75.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addreaction--da9bd35e7d1df7c3.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.link_2mon_endnames-5d0bca4b8e2e3509.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.context-736368ed32b08894.html - 2024-10-10T02:12:56.302Z + 2024-10-23T10:42:19.880Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filtype_fil_ids-d333c38b9f9b3584.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.cadherinstate-0cd5353e58a90ec2.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.delete--56ef520341df3c06.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.860Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.boundary_capsule-1700142f310bd9db.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.filamentendsitegeneral-7a32ac96fb4364ea.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/base.getindex-f593dde852851bc8.html - 2024-10-10T02:12:56.290Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.vertex_state-aa3350c08b68b63a.html - 2024-10-10T02:12:56.298Z + 2024-10-23T10:42:19.876Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.resolve_all_filament_mesh_crossing--a8be83a7d2ad65c7.html - 2024-10-10T02:12:56.326Z + 2024-10-23T10:42:19.908Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.mon_position_plusvector-927d0affbbdfef6f.html - 2024-10-10T02:12:56.278Z + 2024-10-23T10:42:19.856Z https://medyan-dev.github.io/julia-docs/dev/docstrings/nlsolversbase.value---d4fdd3b317023c0e.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.896Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.is_chem_cache_valid-8336a8adc58a252f.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.sysdef-c0c4da7a2b3d4fef.html - 2024-10-10T02:12:56.322Z + 2024-10-23T10:42:19.908Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.monlink2monsiteone-77707f45e082c27e.html - 2024-10-10T02:12:56.322Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.addcadherinsite--9e21ac42968d0196.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.monomername-bb517706cb60c4f5.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.868Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.num_vertexwithstate-3cf6fcd964588d37.html - 2024-10-10T02:12:56.306Z + 2024-10-23T10:42:19.884Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_newlink_2mon--e4f84fe5cfa9a727.html - 2024-10-10T02:12:56.286Z + 2024-10-23T10:42:19.864Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.minimize_energy--84c4aeab5457d3ee.html - 2024-10-10T02:12:56.318Z + 2024-10-23T10:42:19.904Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.fil_node_positions-618a66637eb50781.html - 2024-10-10T02:12:56.294Z + 2024-10-23T10:42:19.872Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.chem_addfixedcount--0286edfebf8ea5e6.html - 2024-10-10T02:12:56.314Z + 2024-10-23T10:42:19.900Z https://medyan-dev.github.io/julia-docs/dev/docstrings/medyan.newmembrane--a714b4a1c87062be.html - 2024-10-10T02:12:56.310Z + 2024-10-23T10:42:19.900Z diff --git a/julia-docs/dev/tutorials/1install.html b/julia-docs/dev/tutorials/1install.html index 22c12d2..2fbaba6 100644 --- a/julia-docs/dev/tutorials/1install.html +++ b/julia-docs/dev/tutorials/1install.html @@ -247,10 +247,10 @@

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.0
-Commit 501a4f25c2b (2024-10-07 11:40 UTC)
+
Julia Version 1.11.1
+Commit 8f5b7ca12ad (2024-10-16 10:53 UTC)
 Build Info:
   Official https://julialang.org/ release
 Platform Info:
@@ -260,7 +260,7 @@ 

Install julia

LLVM: libLLVM-16.0.6 (ORCJIT, skylake) Threads: 1 default, 0 interactive, 1 GC (on 16 virtual cores) Environment: - LD_LIBRARY_PATH = /home/gh-actions1/actions-runner6/_work/_tool/julia/1.11.0/x64/bin/../lib/julia:/home/gh-actions1/actions-runner6/_work/_tool/julia/1.11.0/x64/bin/../lib
+ LD_LIBRARY_PATH = /home/gh-actions1/actions-runner7/_work/_tool/julia/1.11.1/x64/bin/../lib/julia:/home/gh-actions1/actions-runner7/_work/_tool/julia/1.11.1/x64/bin/../lib

The tutorials should work on newer versions of julia, and on MacOS and Windows, please create an issue if you have a problem or question.

diff --git a/julia-docs/dev/tutorials/2rdme.html b/julia-docs/dev/tutorials/2rdme.html index 7b78846..b3d8024 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
-
+
-