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

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

Обзор

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

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

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

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

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

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

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

Нет.ИмяReaction1Параметры уровня
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, который позволяет вам задать, как сумма ингибитора изменяется в зависимости от времени. Входные параметры время, начальная сумма ингибитора и параметр, который управляет суммой ингибитора. Выход функции является суммой ингибитора.

  1. В рабочем столе MATLAB выберите File > New > Script, чтобы открыть редактор MATLAB.

  2. Скопируйте и вставьте следующее объявление функции:

    % 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
  3. Сохраните файл (назовите файл inhibvalex.m) в директории, которая находится на пути поиска файлов MATLAB, или к директории, к которой можно получить доступ.

  4. Если местоположение файла не находится на пути поиска файлов MATLAB, измените рабочую директорию в расположение файла.

Загрузите модель в качестве примера

Загрузите gprotein проект в качестве примера, который включает переменную m1, объект модели:

sbioloadproject gprotein

m1 объект модели появляется в рабочем пространстве MATLAB.

Добавьте пользовательскую функцию в модель в качестве примера

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

  1. Добавьте повторное правило присвоения в модель, которая задает эти три входных значения к пользовательской функции, inhibvalex:

    rule1 = addrule(m1, 'Inhib = inhibvalex(time, Cpo, Kel)',...
                    'repeatedAssignment');

    time вход является ключевым словом SimBiology, распознанным временем симуляции

  2. Создайте эти два параметра, используемые rule1 управляйте и присвойте значения им:

    p1 = addparameter(m1, 'Cpo', 250);
    p2 = addparameter(m1, 'Kel', 0.01);
    
  3. Создайте разновидности, используемые rule1 правило:

    s1 = addspecies(m1.Compartments, 'Inhib');

Задайте правило изменить значение параметров

Значение параметра уровня kGd затронут суммой ингибитора, существующего в системе. Добавьте правило в модель, чтобы описать это действие, но сначала изменить ConstantValue свойство параметра kGd так, чтобы это могло варьироваться правилом.

  1. Измените ConstantValue свойство kGd параметр к false.

    p3 = sbioselect(m1, 'Type', 'parameter', 'Name', 'kGd');
    p3.ConstantValue = false;
  2. Добавьте повторное правило присвоения в модель, чтобы задать как kGd параметр затронут Inhib разновидности.

    rule2 = addrule(m1, 'kGd = 1/Inhib', 'repeatedAssignment');

Добавьте событие к сбросу решатель в разрыве

Пользовательская функция, inhibvalex, вводит разрыв в модели когда время = 400. Чтобы гарантировать точные результаты симуляции, добавьте событие в модель, чтобы сбросить решатель во время разрыва. Установите событие инициировать во время разрыва (время = 400). Событие не должно изменить модель, поэтому создать функцию события, которая умножает значение разновидностей на 1.

addevent(m1, 'time>=400', 'G=1*G');

Симулируйте модифицированную модель

  1. Сконфигурируйте настройки симуляции (configset object) для m1 объект модели, чтобы регистрировать все состояния во время симуляции.

    cs = getconfigset(m1);
    cs.RuntimeOptions.StatesToLog = 'all';
    
  2. Симулируйте модель.

    simDataObj = sbiosimulate(m1);
  3. Постройте график результатов.

    sbioplot(simDataObj);
    

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

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

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

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

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

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

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

| |

Похожие темы