Создайте и симулируйте модель с пользовательской функцией

В этом примере показано, как создать пользовательскую функцию и включить ее в симуляцию модели.

Обзор

Необходимые условия для примера

Этот пример принимает, что у вас есть практическое знание:

  • MATLAB® приложение

  • Создание и сохранение программ MATLAB

О модели в качестве примера

Этот пример использует модель, описанную в Модели Дрожжей Гетеротримерный Цикл Белка G.

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

Нет.ИмяРеакция1Параметры уровня
1Взаимодействие лиганда приемникаL + R <-> RLkRL, kRLm
2Гетеротримерное формирование белка GGd + Gbg -> GkG1
3G активация белкаRL + G -> Ga + Gbg + RLkGa
4Синтез приемника и ухудшениеR <-> nullkRdo, kRs
5Ухудшение лиганда приемникаRL -> nullkRD1
6G деактивация белкаGa -> GdkGd
1 Легенда разновидностей: L = лиганд (альфа-фактор), R = факторный альфой приемник, Gd = неактивный G-alpha-GDP, Gbg = свободные уровни комплекса G-beta:G-gamma, G = неактивный комплекс Gbg:Gd, Ga = активный G-alpha-GTP

Предположения о примере

Этот пример принимает что:

  • Ингибитор (Inhib разновидности), замедляет деактивацию активного белка G (реакция 6 выше, Ga –> Gd).

  • Изменение суммы ингибитора (Inhib разновидности), задан в пользовательской функции, inhibvalex.

  • Ингибитор (Inhib разновидности), влияет на реакцию путем изменения суммы параметра уровня kGd.

О примере

В этом примере показано, как создать и вызвать пользовательскую функцию в SimBiology® выражение. А именно, это показывает, как использовать пользовательскую функцию в выражении правила.

Об Использовании пользовательских функций в выражениях SimBiology

Можно использовать пользовательские функции в:

  • Выражения скорости реакции (ReactionRate свойство

  • Управляйте выражениями (Rule свойство

  • Выражения события (EventFcns свойство или Trigger свойство

Требования для использования пользовательских функций в выражениях SimBiology:

  • Создайте пользовательскую функцию. Для получения дополнительной информации смотрите function.

  • Измените текущую папку в папку, содержащую ваш пользовательский файл MATLAB. Сделайте это при помощи cd команда или при помощи поля Current Folder на панели инструментов рабочего стола MATLAB. В качестве альтернативы добавьте папку, содержащую ваш файл к пути поиска файлов. Сделайте это при помощи addpath команда или видит Папки Изменения на Пути поиска файлов.

  • Вызовите пользовательскую функцию в реакции SimBiology, правиле или выражении события.

Совет

Если ваше выражение правила или скорости реакции не непрерывно и дифференцируемо, смотрите Используя События, чтобы Обратиться к Разрывам в Выражениях Правила и Скорости реакции прежде, чем симулировать вашу модель.

Создайте пользовательскую функцию

Следующая процедура создает пользовательскую функцию, inhibvalex, который позволяет вам задать, как сумма ингибитора изменяется в зависимости от времени. Входные параметры время, начальная сумма ингибитора и параметр, который управляет суммой ингибитора. Выход функции является суммой ингибитора.

В рабочем столе MATLAB выберите File > New > Script, чтобы открыть редактор 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);

График не показывает разновидности причитающихся процентов к широкому спектру в разновидностях, amounts/concentrations.

Постройте только разновидности интереса. Ga.

GaSimDataObj = selectbyname(simDataObj,'Ga');
sbioplot(GaSimDataObj);

Заметьте изменение в профиле разновидностей Ga во время = 400 секунды (время симуляции). Это - время, когда сумма ингибитора изменяется, чтобы отразить пересложение ингибитора к модели.

Постройте только ингибитор (Inhib разновидности).

InhibSimDataObj = selectbyname(simDataObj,'Inhib');
sbioplot(InhibSimDataObj)

Смотрите также

| |

Похожие темы