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 показана гистограмма (дифференциальное распределение) частоты встречаемости шагов клетки за выбранный интервал (интервал времени между измерениями).
рис. 6 Дифференциальное распределение.
Всё время работы алгоритма подсчитывается частота встречаемости каждого шага по всей популяции, за все время конкретного расчета (120 шагов по 1ой минуте). Полученные результаты выводились в виде гистограмм минутных сдвигов. При построении гистограмм, все теоретические клетки «смешивались в кучу», хотя в программе заведомо заданно, что клетки относятся к разным типам.
Исходя из дифференциального распределения, строим другую гистограмму.
рис. 7 Куммулятивная гистограмма.
Полученная гистограмма называется куммулятивной гистограммой (интегральное распределение). Генерируемая процедура паскаля равномерно распределенное случайное число y обязательно попадает в один из интервалов от p1 до p5. При его попадании в интервал pi, выбираем шаг ri, который и будет использоваться в вычислении следующего положения клетки. Очевидно, что при длительной работе алгоритма, доля шагов ri будет пропорциональна вероятности pi. Аналогичным образом вычисляется на каждом шаге все остальные параметры движения клеток.
В программе для случайной величины предусмотрена следующая таблица:
Табл. 3
№ | Значение шага | Частота наблюдений | Частота в % | Куммулятивная гистограмма |
1 | R1 | N1 | Cent 1 | Cent 1 |
2 | R2 | N2 | Cent 2 | Cent 1 + Cent 2 |
: | : | : | : | : |
10 | R10 | N10 | Cent 10 | å Cent |
Величины шагов, углы площади разбиты равномерно от 0 до максимального значения. Значение, больше максимального в эксперименте не встречается. Значения частоты наблюдений обозначают частоту встречаемости этих шагов в произвольном измерении. В принципе, сумма частот встречаемости должна составлять 1 или 100%. Однако при реальном моделировании, поле приходится описывать в виде приблизительного распределения. При этом мы можем увеличивать или уменьшать частоты появления отдельных шагов. Если при этом заботиться о том, что суммы всех частот должна составлять 100%, то это сильно затруднит просмотр всех вариантов. После подгонки формы приблизительного распределения, программа нормализует сумму частот к 100% по формуле
Таким образом формируется 3-й столбец таблицы. После формирования 3-го столбца таблицы, программа формирует 4-й столбец, представляющий собой куммулятивное распределение.
В программе полученное равномерно распределенное число y последовательно начиная с 1-го сравнивается с числами четвертого столбца. При этом номер числа последовательно наращивается. Как только y превысит очевидное число из 4-го столбца, процедура заканчивает свою работу. Номер последнего числа считается номером избранного числа, значение которого извлекается из первого столбца.
рис. 8 Алгоритм генерации случайного числа, заданным распределением.
Этому алгоритму соответствует следующая процедура:
Любая программа подразумевает обеспечение «экранного сервиса». На экране должны возникать таблицы исходных данных, которые удобно редактировать. Для этого должно быть предусмотрено создание в программе текстового файла, в котором изображается экранная таблица со специальными символами. Символы обозначают будущие места, в которых будут стоять исходные данные. Заранее оговариваются специальные символы.
рис. 9 Распределение служебных мест на экране для редактирования параметров измерения.
Специальные символы, которые указывают местоположение будущих значений.
@ | - место переключения фона. |
# | - место, где будет выведено значение параметров. |
~ | - место, где будут выводиться частоты. |
! | - место, где строятся столбцы гистограммы. |
* | - либо шаг, либо угол. Название параметра. |
$ | - место, в которое выводится тип клетки. (slow, medium, fast). |
|
Процедура формирования экрана работает следующим образом. Текстовый файл считывает символ за символом. Если считанный символ не входит в список специальных, он просто выводится на экран. Таким образом, на экран могут выводиться любые комментарии, например: инструкции по редактированию таблицы. При выводе всех символов, подсчитывается номер строки и номер позиции в строке. Номер позиции в строке задаётся в начале, равный единице. И наращивается с введением каждого нового символа до появления символа eoln (end of line - конец строки). После увеличивается на единицу счетчик номера строк и сбрасывается в единицу счетчик номера позиции. Работа процедуры заканчивается eof (end of file - конец файла).
На рис.10 показана траектория клетки.
рис. 10 Траектория движения клетки.
Вычисляются квадраты расстояния gik , т. е. между i-тым и k-тым положениями клетки. Для каждой заданной разници n = k – i усредняются вдоль траектории все квадраты gik.
При исследовании движения популяции клеток было обнаружено, что нейтрофилы, выделенные из одной и той же пробы, движутся с различными скоростями. Этот факт может объясняться многими причинами, главные из которых, по видимому, является возраст клеток, но мы не будем подробно изучать зависимость клеток от возраста.
Экспериментатор, условно разделил клетки на медленные, средние и быстрые. Количество таких клеток в популяции составляет 15 : 30 : 55. При моделировании популяции мы исходим из этого соотношения.