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)