Из распределения углов поворота видно, что нулевой угол встречается чаще, следовательно, он наиболее вероятен, а угол 1800 наименее вероятен. Из этого следует, что клетка при движении сохраняет свое направление. Углы поворотов распределены от 0 до 1800, при этом знак угла считается равновероятным (вправо или влево). В соответствии с такой гипотезой строится алгоритм модели движения клетки.
Нейтрофилы разделены на три типа: быстрые, средние и медленные. Три типа клеток различаются между собой по максимально возможному шагу в единичном акте движения. Для медленных клеток эта величина составляет 3 мкм (величина меньше размера клетки). Для средних клеток – 10 мкм (величина, немного превышающая размер клетки). Для быстрых клеток составляет 30 мкм.
Вычисление координат клетки
Координаты каждой последующей клетки вычисляются из предыдущего. Программа генерирует три случайных числа в соответствии с заданными распределениями (для каждого вида нейтрофилов своё распределение)
ri - случайный шаг.
ji - угол поворота.
signi - направление поворота.
Вычисляем угол по отношению к оси 0X.
Fi = Fi-1 + signi ´ji
xi = xi-1 + ri cos Fi
yi = yi-1 + ri sin Fi
рис. 5 Движение нейтрофила по случайной траектории.
Во время работы модели вычисляется на каждом шаге пройденный клеткой путь и строится график зависимости пройденного пути от времени.
Генерация случайных чисел с заданным распределением (Монте-Карло)
Пусть величина y принимает значения y1,y2,…,yn, с вероятностями p1,p2,…,pn. Сумма вероятностей p1+p2+…+pn=1. Разобьем отрезок [0,1] на отрезки p1,p2,…,pn.
Алгоритмические языки программирования имеют генератор равномерно распределенных псевдослучайных чисел. Если псевдослучайное число xi, равномерно распределенное на отрезке [0,1] мы будем «бросать» на отрезок, то он будет попадать в интервалы p1,p2,…,pn, с частотой, пропорциональной длине этих интервалов. Из этого следует, что числа y1,y2,…,yn будут появляться в соответствии с вероятностями p1,p2,…,pn.
Язык Pascal генерирует целые положительные псевдослучайные числа, распределённые в заданном интервале x:=random(100). Такая процедура будет генерировать числа, равномерно распределенные в интервале [0,100].
В данной программе вероятность измерялась в процентах. Все вероятности измерялись в целых числах, что превышало точность измерений. Таким образом были построены генераторы случайных шагов, углов поворота, случайных изменений площади, случайных коэффициентов адгезии (прилипания). Единственное исключение составляло явление поворота. Если генерируемая величина была меньше 50, угол поворота положителен, и если величина больше, либо равняется 50, то угол поворота отрицателен. Для каждой вычисляемой величины, генерировалась отдельная случайная величина y, поскольку величины riji считаются независимыми.
Алгоритм реализации конкретного распределения. На рис. 5 показана гистограмма (дифференциальное распределение) частоты встречаемости шагов клетки за выбранный интервал (интервал времени между измерениями).