В этом примере показано, как создать пользовательскую функцию и включить ее в моделирование модели.
В этом примере предполагается, что у вас есть рабочие знания по следующим вопросам:
Приложение MATLAB ®
Создание и сохранение программ MATLAB
В этом примере используется модель, описанная в Model of the Yeast Heterotrimeric G Protein Cycle.
В этой таблице показаны реакции, используемые для моделирования цикла G-белка, и соответствующие параметры скорости (константы скорости) для каждой реакции. Для обратимых реакций параметр прямой скорости перечисляется первым.
| Нет. | Имя | Reaction1 | Параметры скорости |
|---|---|---|---|
| 1 | Взаимодействие рецептор-лиганд | L + R <-> RL | kRL, kRLm |
| 2 | Образование гетеротримерного G-белка | Gd + Gbg -> G | kG1 |
| 3 | Активация G-белка | RL + G -> Ga + Gbg + RL | kGa |
| 4 | Синтез и деградация рецепторов | R <-> null | kRdo, kRs |
| 5 | Деградация рецептора-лиганда | RL -> null | kRD1 |
| 6 | Инактивация G-белка | Ga -> Gd | kGd |
| 1 Легенда видов: L = лиганд (альфа-фактор), R = рецептор альфа-фактора, Gd = неактивный G-альфа-ВВП, Gbg = свободные уровни G-бета: G-гамма комплекс, G = неактивный Gbg: Gd комплекс, Ga = активный G-альфа-GTP | |||
В этом примере предполагается, что:
Ингибитор (Inhib вид) замедляет инактивацию активного G-белка (реакция 6 выше, Ga –> Gd).
Изменение количества ингибитора (Inhib species) определяется в пользовательской функции, inhibvalex.
Ингибитор (Inhib species) влияет на реакцию, изменяя величину параметра скорости kGd.
В этом примере показано, как создать и вызвать пользовательскую функцию в выражении SimBiology ®. В частности, показано, как использовать пользовательскую функцию в выражении правила .
Пользовательские функции можно использовать в:
Выражения скорости реакции (ReactionRate собственность)
Выражения правил (Rule собственность)
Выражения событий (EventFcns собственность или Trigger собственность)
Требования к использованию пользовательских функций в выражениях SimBiology:
Создайте пользовательскую функцию. Дополнительные сведения см. в разделе function.
Измените текущую папку на папку, содержащую пользовательский файл MATLAB. Для этого используйте cd или с помощью поля Current Folder на панели инструментов рабочего стола MATLAB. Либо добавьте папку, содержащую файл, в путь поиска. Для этого используйте addpath или см. раздел Изменение папок в пути поиска.
Вызовите пользовательскую функцию в выражении реакции, правила или события SimBiology.
Совет
Если выражение правила или скорости реакции не является непрерывным и дифференцируемым, перед моделированием модели см. раздел Использование событий для устранения прерываний в выражениях скорости реакции и правила.
Следующая процедура создает пользовательскую функцию, inhibvalex, что позволяет указать, как количество ингибитора изменяется с течением времени. Входными данными являются время, начальное количество ингибитора и параметр, который регулирует количество ингибитора. Выходом функции является количество ингибитора.
На рабочем столе MATLAB выберите «Файл» > «Создать» > «Сценарий», чтобы открыть редактор MATLAB.
Скопируйте и вставьте следующее объявление функции:
% inhibvalex.m function Cp = inhibvalex(t, Cpo, kel) % This function takes the input arguments t, Cpo, and kel % and returns the value of the inhibitor Cp. % You can later specify the input arguments in a % SimBiology rule expression. % For example in the rule expression, specify: % t as time (a keyword recognized as simulation time), % Cpo as a parameter that represents the initial amount of inhibitor, % and kel as a parameter that governs the amount of inhibitor. if t < 400 Cp = Cpo*exp(-kel*(t)); else Cp = Cpo*exp(-kel*(t-400)); end
Сохраните файл (присвойте ему имя inhibvalex.m) в каталоге, который находится в пути поиска MATLAB, или в каталоге, к которому можно получить доступ.
Если местоположение файла отсутствует в пути поиска MATLAB, измените рабочую папку на местоположение файла.
Загрузить gprotein пример проекта, который включает переменную m1, объект модели:
sbioloadproject gprotein m1 объект модели появляется в рабочей области MATLAB.
Следующая процедура создает выражение правила, вызывающее пользовательскую функцию. inhibvalexи определяет три входных значения для этой функции.
Добавьте в модель повторяющееся правило назначения, определяющее три входных значения пользовательской функции. inhibvalex:
rule1 = addrule(m1, 'Inhib = inhibvalex(time, Cpo, Kel)',... 'repeatedAssignment');
time ввод является ключевым словом SimBiology, распознаваемым как время моделирования
Создайте два параметра, используемые rule1 и назначьте им значения:
p1 = addparameter(m1, 'Cpo', 250); p2 = addparameter(m1, 'Kel', 0.01);
Создайте виды, используемые rule1 правило:
s1 = addspecies(m1.Compartments, 'Inhib');Значение параметра скорости kGd влияет количество ингибитора, присутствующего в системе. Добавьте в модель правило, описывающее это действие, но сначала измените ConstantValue свойство параметра kGd чтобы его можно было варьировать по правилу.
Изменить ConstantValue имущества kGd параметр для false.
p3 = sbioselect(m1, 'Type', 'parameter', 'Name', 'kGd'); p3.ConstantValue = false;
Добавление повторяющегося правила назначения в модель для определения способа kGd на параметр влияет Inhib виды.
rule2 = addrule(m1, 'kGd = 1/Inhib', 'repeatedAssignment');
Пользовательская функция, inhibvalex, вводит разрыв в модели, когда время = 400. Чтобы обеспечить точные результаты моделирования, добавьте в модель событие, чтобы сбросить решатель во время разрыва. Установите событие для запуска в момент разрыва (время = 400). Событие не нуждается в изменении модели, поэтому создайте функцию события, которая умножает значение вида на 1.
addevent(m1, 'time>=400', 'G=1*G');
Настройка параметров моделирования (configset object) для m1 объект модели для регистрации всех состояний во время моделирования.
cs = getconfigset(m1);
cs.RuntimeOptions.StatesToLog = 'all';
Моделирование модели.
simDataObj = sbiosimulate(m1);
Постройте график результатов.
sbioplot(simDataObj);

На графике не показаны интересующие виды из-за широкого диапазона видовых количеств/концентраций.
Постройте только интересующий вид. Ga.
GaSimDataObj = selectbyname(simDataObj,'Ga');
sbioplot(GaSimDataObj);

Обратите внимание на изменение профиля видов Ga в момент времени = 400 секунды (время моделирования). Это время, когда количество ингибитора изменяется, чтобы отразить повторное добавление ингибитора к модели.
Постройте график только для ингибитора (Inhib виды).
InhibSimDataObj = selectbyname(simDataObj,'Inhib');
sbioplot(InhibSimDataObj)
