Sites

Abstractly, sites are an interface that allow more complex structures like filaments to interact with diffusing species and chemistry voxel reaction propensities.

Each site type has an associated fixed species. During chemistry that fixed species count will always be greater than or equal to the total counts of the site in the chemistry voxel.

Chemistry callbacks can try and pick a random site in a chemistry voxel to get specific information about exactly where in a chemistry voxel some event should happen.

These are the groups of sites currently in MEDYAN.jl:

filament sites

Filament sites can only be associated with one filament type.

Required Functions

A type T must implement the following functions to be a filament site.

getplusrange(site::T)::Int

How many monomer states in the plus direction this site looks at.

getminusrange(site::T)::Int

How many monomer states in the minus direction this site looks at.

filamentsitecount(site::T,states)::Float64

Return site count at a monomer given states, A vector of MonomerState with length length(states) == getminusrange(filamentsite) + 1 + getplusrange(filamentsite)

The site count gets put in the chemistry voxel of the center monomer.

Built-in filament sites

filament end sites

Filament end sites can only be associated with one filament type.

Required Functions

A type T must implement the following functions to be a filament end site.

getrange(site::T)::Int

How many monomer states this site looks at.

isminusend(site::T)::Bool

True if the filament end site is on the minus end, false if on the plus end.

spacing(site::T)::Float64

Return spacing needed for the filament end site reaction to happen, units of nm.

added_monomers(site::T)::Int

Return number of monomers that need to be added for the filament end site reaction to happen. Each filament has a limited number of monomers that can be added per end between minimizations given by FilamentMechParams.max_num_unmin_end. If this function returns zero, this limit is ignored for site. Also, see fil_num_unmin_ends If this function returns a number greater than zero, the site count will be zero if the current number of unminimized monomers on the end plus the added_monomers result will go over FilamentMechParams.max_num_unmin_end.

filamentendsitecount(site::T,states)::Float64

Return the filament end site count at the end of a filament with monomer states vector states The rate of filament end reaction will be modified by the brownian ratchet model:

exp(-β*F*L) where F is the compression force on the filament end, and L is spacing(site).

length(states) == getrange(filamentendsite)

The site count gets put in the chemistry voxel of the end monomer.

Built-in filament end sites

decimated_2mon sites

Decimated_2mon sites represent a potential link between two monomers, potentially on two different filaments. The site count is added to the chemistry voxel of the potential monomer that could attach to the minus end of the link_2mon.

Required Functions

A type T must implement the following functions to be a decimated_2mon site.

cutoff_distance(site::T)::Float64

Return the maximum distance in nm of a decimated_2mon site.

max_decimated_2mon_sitecount(site::T)::Float64

Return the maximum decimated_2mon_sitecount will return given a pair of monomers in_linking_range.

in_linking_range(site::T,m_pos,p_pos,m_plusv,p_plusv)::Tuple{Bool,Bool}

Return if two monomers are in range to possibly link in the forward direction, and if they are in range to possibly link in the reverse direction.

getftids(site::T)::Tuple{Integer,Integer}

Return the filament types of the minus and plus monomers.

getmidsteps(site::T)::Tuple{Integer,Integer}

Return the monomer step size starting with mid 0 in the search for potential decimated_2mon sites on the minus and plus ends respectively.

1 searches every monomer. 2 searches every monomer with even mid …

If the plus and minus filament types are the same, then getmidsteps(site)[1] == getmidsteps(site)[2]

decimated_2mon_sitecount(site::T,minusstate,plusstate,m_pos,p_pos,m_plusv,p_plusv)::Float64

Return the site count of two monomers getting linked given their states, their positions, and their plus vectors. The monomers can be assumed to be in_linking_range, from the correct filament types, and at the correct step.

Built-in decimated_2mon sites

Experimental Sites

cadherin sites

Cadherin sites can only be associated with the cadherin type. They can represent propensities for reactions to happen to a cadherin between one monomer and one membrane vertex.

Required Functions

A type T must implement the following functions to be a cadherin site.

cadherin_sitecount(site::T, cadherin_state::CadherinState, mechparams, vid, ftid, vertexstate, monomerstates, v_pos, m_pos, m_plusv)::Float64

Return the site count given the state of the cadherin, the vid vertex id, the ftid filament type id, the vertexstate vertex state, the monomerstates monomer states, the positions of vertex and the monomer, and the orientation of the monomer.

vertexstate should be the state of vertex on the one end of cadherin, when monomerstates should be the collection of 3 MonomerState ordered from minus to plus end, with the other end of cadherin attached to the center monomer.

Vertex state is defined to denote the reaction activity of vertices. The default state of vertex is one, which means the vertex is inert to chemical reaction.

If a monomer or a vertex doesn’t exist, its state should be input as zero.

The site count gets put in the chemistry voxel with the vertex.

Built-in cadherin sites