Source code for cytocalc.helper
#! /usr/bin/env python3
# This file contains helper functions i.e. functions
# that have a one-off use and do not really fit elsewhere
# NOTE: When 3-4 functions have a similar paradigm, convert
# them into a different class/file.
import math
# For the formulae, refer to supplementary information: https://doi.org/10.15252%2Fmsb.20177796
[docs]
def theoretical_cont_rate(
motor_count, crosslinker_count, sim_params, buckling_thres, scale
):
"""Predicts the concentration rate for a given set of simulation parameters"""
s = math.pi * (sim_params["cell_radius"]) ** 2 # Area of cell
l = sim_params["filament"]["length"]
f = sim_params["filament_count"]
x = ((f * (f - 1)) * l * l) / (math.pi * s) # number of intersections
def _get_probability(obj, obj_count):
"""finds the probability of couple being attached to filament"""
k_on = obj["binding_rate"]
k_off = obj["unbinding_rate"]
eps = obj["binding_range"]
v2 = 4 * math.pi * x * (eps**2)
v1 = 2 * f * l * eps - v2
a = k_on / k_off
avg = (
obj_count
* (a**2 * v2 / (2 * s))
* (1 + a * ((v1 + v2) / s) + a * (v2**2 / (2 * s))) ** (-1)
)
lamda = avg / x # not a typo - lambda shouldn't be used a var name in python
prob = 1 - math.e ** (-lamda)
return prob
prob_m = _get_probability(sim_params["plus_motor"], motor_count)
prob_c = _get_probability(sim_params["binder"], crosslinker_count)
return scale * (prob_m) * (prob_c) * (1 - prob_c) ** (buckling_thres)