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
link_2mon sites
Link_2mon sites can only be associated with one link_2mon type. They can represent propensities for reactions to happen to a link_2mon attached to two monomers, like unbinding or motor walking, or a site for a diffusing species to interact with a bound link_2mon.
Required Functions
A type T
must implement the following functions to be a link_2mon site.
link_2mon_sitecount(site::T, link_2mon_state::Link2MonState, mechparams, minusftid, plusftid, minusmonomerstates, plusmonomerstates, m_pos, p_pos, m_plusv, p_plusv)::Float64
Return the site count given the state of the link_2mon, the minusftid
, plusftid
filament type ids, the minusmonomerstates
, plusmonomerstates
monomer states, and the positions and orientations of the two monomers.
minusmonomerstates
and plusmonomerstates
should be collections of 3 MonomerState
ordered from minus to plus end, with the link_2mon attached to the center monomer.
If a monomer doesn’t exist, its state should be input as zero.
The site count gets put in the chemistry voxel of the minus end of the link_2mon.
Built-in link_2mon 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
mon_link_2mon sites
Mon_link_2mon sites can only be associated with one link_2mon type. They can represent propensities for reactions to happen between a link_2mon attached to two monomers and another nearby monomer, like cross linking.
Required Functions
A type T
must implement the following functions to be a mon_link_2mon site.
cutoff_distance(site::T)::Float64
Return the maximum distance in nm of a site. The nearby monomer must be within this distance of the minus end of the link to be counted.
getftid(site::T)::Integer
Return the required filament type id of the nearby monomers.
mon_link_2mon_sitecount(site::T, link_2mon_state::Link2MonState)::Float64
Return the site count that should be added for each monomer of the required filament type in the cutoff distance.
The site count gets put in the chemistry voxel of the minus end of the link_2mon.
Built-in mon_link_2mon 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.