Cx3D - инструмент для моделирования роста коры в 3D, разработанный в Институте нейроинформатики Цюрихского университета и ETH Zьrich.
В CX3D нейроны возникают путем репликации и миграции предшественников, которые созревают в клетках, способных распространять аксоны и дендриты. Индивидуальные нейроны дискредитируются в элементы, которые имеют соответствующие механические свойства (рисунок 3). Функции роста каждого нейрона инкапсулированы в набор заранее определенных модулей, которые автоматически распределяются по его сегментам во время роста. Внеклеточное пространство также дискредитировано и допускает диффузию внеклеточных сигнальных молекул, а также физическое взаимодействие многих развивающихся нейронов.

Рисунок 3. Выходной результат работы CX3D
Однако это программное обеспечение основано на Java и не идеально подходит для высокопроизводительных вычислений (HPC). Чтобы адаптировать Cx3D для поддержки HPC, требуется программное обеспечение с аналогичными функциями Cx3D, но написанное на C ++. Данную задачу призван решить проект BioDynaMo.
2 АНАЛИЗ СТРУКТУР И СИМУЛЯЦИЯ ДИФФУЗИИ С ИСПОЛЬЗОВАНИЕМ ОКТОДЕРЕВА ПРИ РОСТЕ НЕЙРОНАЛЬНЫХ СТРУКТУР
В данной главе будет описан процесс разработки распараллеленного решения для симуляции нейро структур на C++ в рамках проекта BioDinamo. В рамках первой итерации разработки. Главной задачей при решении данной проблемы является разработка модуля для реалистичной симуляции диффузии.
2.1 Диффузия
Диффузия - это чистое движение молекул или атомов из области высокой концентрации (или высокого химического потенциала) в область с низкой концентрацией (или с низким химическим потенциалом). Это также называют движением вещества с градиентом концентрации.
Градиент - это изменение значения величины (например, концентрации, давления, температуры) с изменением другой переменной (обычно расстояния). Например, изменение концентрации на расстоянии называется градиентом концентрации, изменение давления на расстоянии называется градиентом давления, а изменение температуры на расстоянии называется градиентом температуры.
Диффузия слова происходит от латинского слова, diffundere, что означает «распространяться» (вещество, которое «распространяется», перемещается из области высокой концентрации в область с низкой концентрацией).
Отличительной особенностью диффузии является то, что она зависит от случайного блуждания частиц и приводит к перемешиванию или массовому транспорту, не требуя направленного объемного движения. Массовое движение (объемный поток) является характеристикой адвекции. Термин конвекция используется для описания сочетания обоих транспортных явлений.
Существует два основных метода вычисления диффузии:
- Аналитический Численный
2.1.1 Аналитический метод решения задач диффузии
Методы аналитического решения разработаны только для линейных уравнений, не содержащих нелинейных функций относительно концентраций C, вида Ct = DCrr + f(r, t) с соответствующими начальными и граничными условиями.
Для аналитического решения линейных задач диффузии применяются основные классические методы:
- метод разделения переменных (метод Фурье), метод источников (или метод функций Грина), методы преобразования Лапласа и другие методы интегральных преобразований.
Каждый из них имеет свои достоинства и недостатки. Для практических решений обычно определяющими являются простота их освоения и применения, а также громоздкость получаемого решения.
2.1.2 Численный метод решения задач диффузии
Решение простых диффузионных задач, как правило, может быть получено аналитическими методами. Однако при усложнении задачи математические трудности такого решения быстро растут. Особенно трудно, а часто и вообще невозможно, получение аналитического решения нестационарных задач.
Самый общий и хронологически более ранний подход в решении уравнений — представление решения рядом Тейлора, которое по разным причинам (в первую очередь из-за отсутствия мощной вычислительной техники) отвергалось и заменялось другими, более простыми методами. Этот метод интегрирования дифференциальных уравнений был исключен из широкой практики более столетия назад. С появлением систем компьютерной математики вычислительные трудности были устранены, и метод разложения в ряд Тейлора можно с успехом применять при решении ОДУ.
Различные физические и биологические процессы моделируются с использованием параболических уравнений. Метод конечных элементов является популярным методом численного решения параболических уравнений с частными производными. Методы конечных элементов требуют генерации сетки для создания пространств приближения функций.

Существующая реализация генерации сетки для решения задачи диффузии методом конечных элементов. Как видно из кода используется 4-х мерный массив, где первым слоем является концентрация i-ых субстанций. Остальные 3 хранят в себе относительное положение в пространстве.
Использование массива в решении вычислительных задач данного типа является далеко не оптимальными решением. Самым очевидным доказательством этого является случай, когда на i-ое вещество представлено в минимальном объеме. Необходимо инициализировать его на каждом из слоев. Так же очевидным фактом является, что в случае использования массива приходится просчитывать весь его объем для вычисления диффузии даже там, где она не происходит.
Использование воксельного представления помогает избежать данных недостатков в модели.
2.2 Воксель
Воксель (рисунок 4) представляет значение на регулярной сетке в трехмерном пространстве. Сами вокселы обычно не имеют своей позиции (их координаты), явно закодированной вместе со своими значениями. Вместо этого системы выводят положение вокселя на основе его положения относительно других вокселей (то есть его положение в структуре данных, составляющее одно объемное изображение). В отличие от пикселей и вокселей точки и многоугольники часто явно представлены координатами их вершин. Прямым следствием этого различия является то, что многоугольники могут эффективно представлять простые трехмерные структуры с большим количеством пустого или однородно заполненного пространства, в то время как вокселы превосходят при представлении регулярных выборочных пространств, которые неравномерно заполнены.

Рисунок 4. Иллюстрация сетки вокселей
В случае использования воксельной структуры представления пространства мы оперируем только вокселями в которых концентрация вещества отлична от нуля (рисунок 5). В точках пространства, где вещество отсутствует нет необходимости инициализации и вычислений, что позволяет нам оптимизировать скорость и расход памяти.

Рисунок 5. Иллюстрация вокселя и всех его соседей.
Но и данная реализация не является оптимальной. Примером этого является случай, когда 2 соседних вокселя имеют одинаковую концентрацию вещества, следовательно, диффузия не происходит. Решением данной проблемы является использование структуры октодерева.
2.3 Октодерево
Октодерево - это древовидная структура данных, которая используется для прямого разложения, в котором каждый узел (октант) имеет максимум восемь детей (рисунок 6). Они аналогичны бинарным деревьям (максимум 2 ребенка на узел) в 1-но мерном пространстве и квадродеревьям (максимум 4 ребенка на узел) в 2-ом пространстве. Единственный октант без родителей - это корень, а октант без детей называется листом. Октант с одним или несколькими детьми называется внутренним октаном, октантами с теми же родителями, которые называются братьями и сестрами. Полные октеты - это октавы, в которых каждый внутренний октант имеет ровно восемь детей. Глубина октанта от корня называется его уровнем. Октодеревья можно эффективно использовать для представления 3-х мерного пространства [9]. Методика геометрического моделирования, названная Octree Encoding, была впервые представлена в 1981 году.

Рисунок 6. Иллюстрация структуры октодерева.
2.3.1 Представление трехмерного пространства октодеревом
Каждый узел в дереве октантов делит пространство на восемь новых октантов. В региональной точке октодерева узел сохраняет явную трёхмерную точку, которая является «центром» разделения пространства для этого узла. Данная точка определяет один из углов каждого из восьми дочерних пространств (рисунок 7).

Рисунок 7. Представление трехмерного пространства октодеревом
2.3.2 Представления узлов на основе указателя
Существует несколько способов представления октодерева на основе указателей:
- Стандартное представление Блочное представление Представление типа sibling-child
2.3.2.1 Стандартное представление
Наиболее интуитивное представление на основе указателя состоит из восьми указателей на каждый из восьми дочерних узлов. Это представление поддерживает распределение узлов по запросу. Распределение по запросу выделяет память только для дочерних узлов, как только объект инициализируется, который попадает в соответствующую подэлемент [10]. Некоторые реализации октодерева добавляют указатели на родительский узел для обхода вниз.
// standard representation (104 bytes)
struct OctreeNode
{
OctreeNode * Children[8];
OctreeNode * Parent; // optional
Object * Objects;
Vector3 Center;
Vector3 HalfSize;
};
Поскольку листовые узлы не имеют дочерних элементов, им не нужно хранить указатели для детей. Поэтому можно использовать два разных типа узлов: один для внутренних узлов и один для листовых узлов. Чтобы различать внутренние узлы и листовые узлы, флаг должен храниться дополнительно. Флаг может быть либо сохранен как дополнительная переменная bool IsLeaf, либо закодирован в младшем значении бит одного из указателей, если узлы распределены с соответствующим выравниванием.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


