src/links/fila-tip-probe.jl

MEDYAN.def_fila_tip_probe!

def_fila_tip_probe!(s::SysDef; fila_type, name, is_minus_end, k_axial, k_lateral, reactions=[], description="")::SysDef

Define a link type for a tip probe: a ball tethered to one end of a fila_type filament, carrying tip reactions that obstacles slow down under baoab!. Attach a probe to a tip with make_fila_tip_probe!.

Use this in place of def_fila_tip_reaction! when running Langevin dynamics. A tip reaction is slowed by exp(-β·spacing·F) using the load force F at the end of the last mechanics run, which under baoab! is a single noisy sample. A probe instead uses the fraction of the last baoab! run during which the ball sat at least spacing beyond the tip, relative to the fraction expected with nothing in the way. This is a noisy but unbiased estimate of the gap-opening probability, which averages out over many chemistry windows and reduces to exp(-β·spacing·F) under a constant load. The factor is 1 before the first baoab! run and after minimize_energy!, which resets it.

The ball is held on the tip tangent line by a TangentLineRestraint and does not collide with the filament, so when unobstructed its offset along the tangent is Gaussian with σ = √(kT/k_axial). Choose k_axial so σ is comparable to spacing, and k_lateral stiff.

Keyword Arguments

  • fila_type::Symbol: Filament type.
  • name::Symbol: Name of the link type.
  • is_minus_end::Bool: Which end the probe attaches to.
  • k_axial::Float64: Tether stiffness along the tip tangent (pN/nm).
  • k_lateral::Float64: Tether stiffness across the tip tangent (pN/nm).
  • reactions::Vector = []: Tip reactions, each a NamedTuple with the keywords of def_fila_tip_reaction! except is_minus_end and both_ends. spacing = 0 means the reaction needs no gap. A custom affect! is called as (c; tip::FilaTipIdx, link::Link, chem_voxel, kwargs...) -> Int.
  • description::String = "": Description of the link type.

Examples

s = MEDYAN.SysDef()
def_fila_type!(s; name=:actin, mono_states=[:a, :plusend, :minusend], param=MEDYAN.ACTIN_TWIST_PARAMS)
def_diffusing_species!(s, :actin_mon; coeff=2.5e7)

def_fila_tip_probe!(s;
    fila_type = :actin,
    name = :plus_probe,
    is_minus_end = false,
    k_axial = 1.9,      # σ ≈ 1.5 nm at room temperature
    k_lateral = 100.0,
    reactions = [
        # polymerization, slowed by obstacles within one monomer spacing
        (;
            name = :pp,
            match = [:plusend],
            new = [:a, :plusend],
            spacing = 2.7,
            net_stoich = [:actin_mon => -1],
            base_rate = 1.93e7,
            invvolumepower = 1,
            reactants_extra = "diffusing.actin_mon",
        ),
    ],
)

MEDYAN.make_fila_tip_probe!

make_fila_tip_probe!(c::Context; type, tip, radius, stiffness, gamma=NaN32, collision_layers, no_collide_mask)::Link

Make a ball centered on the filament tip tip and link the two with a tip probe link of type type, see def_fila_tip_probe!. Return the link. The ball’s tag is link2tags(c, link)[2].

tip is a FilaTipIdx or Tag{FilaTipIdx}. It must be the end and filament type the link type was defined for.

The ball’s radius, stiffness, collision_layers and no_collide_mask default to the radius, kcollide, collision_layers and no_collide_mask of the filament type’s FilamentMechParams, so the ball sees the same obstacles as the tip. gamma is passed to make_ball!.

Remove a probe with remove_link! and remove_ball!.