Основы модульного моделирования

Модульный подход к моделированию биологических систем в последние годы активно развивается. Он подразумевает декомпозицию системы на подсистемы, каждая из которых может быть смоделирована и проверена независимо. Модель всей системы задается как совокупность моделей подсистем (модулей). Этот подход делает структуру сложных иерархических моделей более явной за счет выделения функциональных единиц и их взаимосвязей. Он также позволяет включать в сложные модели модели, разработанные разными авторами, фокусируясь на разных частях системы и используя разные масштабы и даже формализмы.

В платформе BioUML диаграмма, описывающая модульную модель, содержит соединенные между собой элементы – модули, каждый из которых ссылается на другую диаграмму (возможно, тоже модульную) в платформе. Модули взаимодействуют между собой за счет передачи сигналов между ними, которая осуществляется засчет портов.

В зависимости от направления передачи сигнала выделяется три типа портов: вход, выход и контакт (Рисунок 1).

  • Вход (input) - значение переменной подается на вход модуля и не может быть изменено модулем;

  • Выход (output) - значение переменной полностью определяется (вычисляется) внутри модуля и подается на вход другим модулям;

  • Контакт (contact) - переменная, значение которой могут изменять оба модуля.

Концепция модуля

Рисунок 1. Концепция модуля

Существует три типа доступности портов, они могут быть приватными, публичными и вынесенными:

  • Приватный порт (private) используется для изменения поведения модулей.

  • Публичный порт (public) используется для представления модульной модели в виде модцля и включения ее в другую модельную модель.

  • Вынесенный порт (propagated)…

Примечание

добавить что такое вынесенный порт и возможно дать объяснение попроще для приватного и публичного

Между выходом и входом устанавливается направленная связь (directed), означающая передачу сигнала из одного модуля в другой. Между контактами – ненаправленная связь (undirected), обозначающая обмен сигналами.

Таблица 1. Графическая нотация элементов, используемых при модульном моделировании
Название Обозначение Описание
Подмодель Подмодель Модуль, содержащий математическую модель: модульная модель; SBML (SBML-SBGN) модель.
Переключатель Переключатель Модуль, в зависимости от условия, подающий на выход один из двух сигналов, поступающих на вход.
Константа Константа Модуль, подающий на выход константное значение.
Порты
Входной порт Входной порт Порт, определяющий входную переменную подмодели.
Выходной порт Выходной порт Порт, определяющий выходную переменную подмодели.
Контактный порт Контактный порт Порт, определяющий разделяемую переменную подмодели.
Шина Шина Переменная модульной модели. Несколько шин могут соответствовать одной переменной.
Связи
Направленная связь Направленная связь Связь, означающая передачу сигнала из одного модуля в другой.
Ненаправленная связь Ненаправленная связь Связь, означающая обмен сигналами между модулями.

Создание модульной модели

Для создания модульной модели создайте диаграмму следующего типа: композиционную или композиционную модель SBML в нотации SBGN. Однако, в модели второго типа будут отсутствовать дополнительные элементы, добавленные в BioUML.

Добавление модулей

В открывшейся диаграмме подмодель добавляется путем нажатия на иконку subdiagram, расположенной на панели инструментов. Документ диаграммы подмодели выбирается нажатием на поле option Diagram и последующего выбора файла в открывшемся окне, либо нажатием модели в области репозитория и переносом его в поле option Diagram (Рисунок 2).

Примечание

При работе с модульной моделью, включающей подмодели, при нажатии на подмодель, в отдельном окне нижней части рабочего пространства, будет отображаться ее диаграмма.

Добавление подмодели

Рисунок 2. Добавление подмодели

Модулю переключателя соответствует иконка switcher_icon, а константе - constant_icon, для которой в поле option Value задается значение. Переключатель и константа добавляются на диаграмму таким же образом на диаграмму, как и подмодель.

Примечание

нужно добавить что-то еще и про переключатель, потому что совсем непонятно как он используется, и какой сигнал он подает на вход из двух. как и должно быть более детальное объяснение про использование констант.

Созданные подмодели отображаются в области поля операций во вкладке Model на горизонтальной панели и в открывшемся окне на вертикальной панели во вкладке Subdiagrams (Рисунок 3). В стобце Title указывается заголовок, отображающийся на графическом отображении подмодели. Столбец Diagram path содержит путь к диаграмме подмодели.

Вкладка Subdiagrams в поле операций

Рисунок 3. Вкладка Subdiagrams в поле операций

Создание портов

Чтобы создать порт перейдите в документ подмодели и нажмите на иконку port. В открывшемся окне в поле option Access type выберите тип доступности порта, в поле option Port type - тип порта и в поле option Tittle - заголовок порта, который будет отображаться на диаграмме. Из выпадаюшего списка в поле option Variable name укажите для какого ранее созданного элемента диаграммы будет создан порт (Рисунок 4).

Добавление порта в подмодели

Рисунок 4. Добавление порта в подмодели

В подмодели порт, созданный для сущности (переменной), будет автоматически соединен с ней ребром, а в случае создания порта для параметра, порт не будет связан с какими-либо элементами диаграммы. Созданный порт в диаграмме, соответствующей подмодели, будет отображен на модульной диаграмме - внутри подмодели будут добавлены обозначения портов, что изображено на рисунке, описывающем концепцию модуля.

Примечание

Для того чтобы изменения, сделанные в подмодели отобразились на модульной диаграмме, сохраните диаграмму и затем в документе модульной модели нажмите на иконку update submodel, расположенную на общей панели управления.

Чтобы добавить порт на верхнем уровне - в модульной диаграмме, для начала необходимо создать новый параметр. Далее, выберите соответсвуюший тип порта на панели инструментов. Входному порту соответствует иконка input_port, выходному порту - output_port и контактному порту - contact_port. В открывщемся окне в поле option Access Type выберите приватный тип доступности порта (private). Затем в полях option Module и option Base port name выберите подмодель и соответствующий в ней порт, а в поле option Variable name в выпадающем списке выберите параметр, для которого будет создан порт (Рисунок 5). Связь будет создана автоматически.

Добавление приватного порта на верхнем уровне модульной модели

Рисунок 5. Добавление приватного порта на верхнем уровне модульной модели

Для установления связи между входным и выходным портом в модульной модели, при ранее созданных портах в диаграммах подмодулей, нажмите на иконку directed link, означающей направленную связь. После этого последовательно нажмите на входной и затем на выходной порт, расположенные внутри подмодулей. Связь между контактными портами создается путем нажатия на иконку undirected link, обозначающей ненаправленную связь, и соединения контактных портов.

Созданные порты и связи отображаются в области поля операций во вкладке Model на горизонтальной панели и в открывшемся окне на вертикальной панели во вкладках Ports (Рисунок 6) и Connections (Рисунок 7), соответственно.

Вкладка Ports в поле операций

Рисунок 6. Вкладка Ports в поле операций

Вкладка Connections в поле операций

Рисунок 7. Вкладка Connections в поле операций

Создание шин

Шина является вспомогательным элементом на модульных диаграммах являются, позволяющих устанавливать связи сразу между несколькими модулями дистанционно. С одной шиной могут быть установлены связи только одного типа (направленные или ненаправленные), также не может быть установлено несколько входящих направленных связей.

Пример использование шин

Рисунок 8. Пример использования шин

Для добавления шины на диаграмму, нажмите на иконку bus_icon, расположенную на панели инструментов. Опционально можно выбрать цвет для графического отображения шины в option сolor (Рисунок 9). Установление связи между шиной и портом осуществуляется тем же образом, как было описано в секции «Cоздание портов».

Добавление шины

Рисунок 9. Добавление шины

Созданные шины отображаются в области поля операций во вкладке Model на горизонтальной панели и в открывшемся окне на вертикальной панели во вкладке Buses (Рисунок 10).

Пример использование шин

Рисунок 10. Вкладка Buses в поле операций