SimFunction object

Подобный функции интерфейс, чтобы выполнить модели SimBiology

Описание

SimFunction объект обеспечивает интерфейс, который позволяет вам выполнять модель SimBiology® как функция и рабочий процесс, чтобы выполнить сканы параметра (параллельно, если Parallel Computing Toolbox™ доступен), симуляции Монте-Карло, и сканирует с несколькими или векторизованными дозами. Начиная с SimFunction объект может быть выполнен как указатель на функцию, можно настроить его, чтобы интегрировать модели SimBiology с другими продуктами MATLAB® и другими пользовательскими исследованиями (такими как визуальные прогнозирующие проверки).

Используйте createSimFunction метод, чтобы создать объект SimFunction. Объекты SimFunction являются неизменяемыми когда-то созданные и автоматически ускоренные при первом функциональном выполнении.

Синтаксис

Если вы указали информацию дозирования, когда вы вызвали createSimFunction создать SimFunction объект F, затем F имеет следующие синтаксисы.

simdata = F(phi,t_stop,u,t_output) возвращает a SimData object simdata после симуляции модели SimBiology с помощью начальных условий или сценариев симуляции задан в phi, время остановки симуляции, t_stop, дозируя информацию, u, и выходное время, t_output.

simdata = F(phi,t_stop,u) симуляции запусков с помощью входных параметров phi, t_stop, и u.

Если вы не указали информации дозирования, когда вы вызвали createSimFunction, затем F имеет следующие синтаксисы:

simdata = F(phi,t_stop) возвращает a SimData object simdata после симуляции модели с помощью начальных условий или сценариев симуляции задан в phi, и время остановки симуляции, t_stop.

simdata = F(phi,t_stop,[],t_output) использует входные параметры phi, t_stop, пустой дозируемый аргумент [], и t_output. Необходимо задать u, информация о дозировании, как пустой array[] для этой подписи. Когда t_output пусто и t_stop задан, симуляции сообщают о моментах времени решателя до t_stop. Когда t_output задан и t_stop пусто, только моменты времени в t_output сообщаются. Когда и заданы, моменты времени, о которых сообщают, являются объединением моментов времени решателя и моментов времени в t_output. Если последний t_output больше соответствующего t_stop, затем доходы симуляции до последнего момента времени в t_output.

simdata = F(phi,tbl) использует входные параметры phi и tbl. Используя эту подпись только позволяет вам задать выходные времена как одну из переменных tbl. Любая строка данных в tbl где все столбцы зависимой переменной, имеющие NaN значения проигнорированы.

[T,Y] = F(_) возвращает T, массив ячеек числового вектора и Y, массив ячеек 2D числовых матриц, с помощью любого из входных параметров в предыдущих синтаксисах.

Входные параметры

phi

Одно из следующего:

  • Пустой массив [] или массив пустой ячейки {}, означая выполнять симуляции с помощью базовых начальных значений, то есть, значения, перечисленные в Parameter свойство SimFunction объект, не изменяя их.

  • Матрица размера S-by-P, где S является количеством симуляций, чтобы выполнить и P, является количеством параметров, заданных в params аргумент, когда вы вызвали createSimFunction создать F. Каждая симуляция выполняется параметрами, заданными в соответствующей строке phi.

  • S-by-V матрица различных объектов или вектор-столбец ячейки длины S, где каждый элемент состоит из вектора-строки из различных объектов. S является количеством симуляций, чтобы выполнить, и V является количеством различных объектов. Этим вариантам только позволяют изменить SimFunction введите параметры, то есть, элементы модели, которые были указаны как params входной параметр, когда вы вызвали createSimFunction. Другими словами, необходимо задать различные параметры как входные параметры, когда вы создаете SimFunction объект. Любой SimFunction введите параметры, которые не заданы в использовании вариантов их базовые начальные значения.

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

  • Скалярный SimBiology.Scenarios объект, содержащий количество S сценариев.

Когда phi задан как 1- P или 1- V матрица (или Scenarios объект только с одним сценарием), затем все симуляции используют те же параметры, и количество симуляций определяется из t_stopU, или t_output аргумент в том порядке. Например, если phi и t_stop имейте одну строку и u матрица размера N-by-DoseTargets, количество симуляций определяется как N.

Когда phi задан как SimBiology.Scenarios объект, все сценарии симулированы. Варианты применяются, прежде чем значения из сценариев установлены.

t_stop

  • Скаляр, задающий то же время остановки для всех симуляций

  • Вектор из размера N определение времени остановки для каждой симуляции для всех симуляций N

u

  • Пустой массив [] не применять дозы в процессе моделирования, если вы не задаете phi как Scenarios объект, которому задали дозы в его записях.

  • table из дозирования информации с двумя или тремя переменными, содержащими ScheduleDose данные (ScheduleDose таблица), а именно, время дозы, суммарная доза и (дополнительная) мощность дозы. Назовите табличные переменные можно следующим образом.

    u.Properties.VariableNames = {'Time','Amount','Rate'};

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

    u.Properties.VariableUnits = {'second','molecule','molecule/second'};

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

  • table с одной строкой и пятью переменными, содержащими RepeatDose данные (RepeatDose таблица. Переменная мощности дозы является дополнительной. Назовите переменные можно следующим образом.

    u.Properties.VariableNames = {'StartTime','Amount','Rate','Interval','RepeatCount'};

    Если UnitConversion включен, задайте модули для каждой переменной. Модули для 'RepeatCount' переменной может быть пустой '' или 'dimensionless'. Модуль 'Amount' переменная должна быть размерностно сопоставима с той из целевых разновидностей. Например, если модуль целевых разновидностей находится в модуле суммы (таком как родинка или молекула), то 'Amount' переменный модуль должен иметь ту же размерность, т.е. ее модуль должен быть модулем суммы и не может быть массовым модулем (таким как грамм или килограмм). Модуль для 'Rate' переменная должна быть размерностно сопоставимой также.

    u.Properties.VariableUnits = {'second','molecule','molecule/second','second','dimensionless'};

    Совет

    Если у вас уже есть объект дозы (ScheduleDose или RepeatDose), можно получить эту таблицу дозы при помощи getTable метод объекта.

  • Массив ячеек таблиц размера 1 на n, где N является количеством целей дозы. Каждая ячейка может представлять любую таблицу, аналогичную описанному ранее.

  • Массив ячеек таблиц размера S-by-N, где S является количеством симуляций и N, является количеством целей дозы. Каждая ячейка представляет таблицу. S равен количеству строк в phi.

Если u массив ячеек таблиц, затем:

  • Если phi также Scenarios объект, объединенное количество доз в Scenarios возразите и количество столбцов в u должен равняться числу элементов в Dosed свойство SimFunction объект. Другими словами, информация дозирования, которую вы указали во время создания SimFunction объект должен быть сопоставим с информацией дозирования, которую вы указываете в выполнении объекта. Общее количество элементов для Dosed свойство равно комбинации любых доз от входа Scenarios объект и дозы в дозируемом входном параметре createSimFunction.

  • Если phi не Scenarios объект, количество столбцов (N) в массиве ячеек u должно быть равно числу элементов в Dosed свойство SimFunction объект. Порядок таблиц дозы должен также совпадать с порядком дозируемых разновидностей в createSimFunction. Таким образом, SimBiology принимает взаимно-однозначное соответствие между столбцами u и цели дозы заданы в Dosed свойство SimFunction объект, означая дозы (таблицы дозы) в первом столбце u применяются к первой цели дозы в Dosed свойство и так далее.

  • i th доза для j th цель дозы проигнорирован если u{i,j} = [].

  • Если i th доза не параметрируется, u{i,j} может быть [] или любой тип таблицы (ScheduleDose или RepeatDose таблица.

  • Если i th доза параметрируется, u{i,j} должен быть [] или RepeatDose таблица с одной строкой и столбец для каждого свойства (StartTime, Amount, RateИнтервал, RepeatCount) это не параметрируется. Это не требуется, чтобы создавать столбец для свойства дозы, которое параметрируется. Если все свойства параметрируются, можно передать в таблице с одной строкой и никаких столбцах, чтобы указать, что параметрированная доза применяется во время симуляций. Чтобы составить такую таблицу, используйте table.empty(1,0).

t_output

  • Вектор из монотонно увеличения вывел времена, который применяется ко всем симуляциям

  • Массив ячеек, содержащий один временной вектор, который применяется ко всем симуляциям

  • Массив ячеек представления векторов вывел времена. ith элемент ячеек обеспечивает выходные времена для ith симуляции. Число элементов в массиве ячеек должно совпадать с количеством строк (симуляции) в phi.

tbl

table или dataset (Statistics and Machine Learning Toolbox), который имеет время и информацию о дозировании, такую как группа, помечает, независимая переменная, зависимая переменная (переменные), сумма (суммы) и уровень (уровни). Необходимо назвать переменные настольного приемника или набора данных как 'GROUP','TIME','DEPENDENTVAR1','DEPENDENTVAR2',...,'AMOUNT1','RATE1','AMOUNT2','RATE2',.... Переменная уровня является дополнительной для каждой дозы.

Если Dosed свойство объекта SimFunction F пусто, затем означайте - и связанные с уровнем переменные не требуются. Количество групп в tbl должно быть равно количеству строк или количеству сценариев, в phi. Объединенная информация о дозировании в phi, если phi SimBiology.Scenarios объект и количество суммы и столбцов уровня в tbl должно быть равно количеству доз в Dosed свойство объекта F. Если tbl имеет дополнительные столбцы, они проигнорированы.

Если UnitConversion включен, задайте модуль для каждой переменной. Модуль 'Amount' переменная должна быть размерностно сопоставима с той из целевых разновидностей. См. описание входного параметра u для деталей.

Выходные аргументы

simdata

Массив объектов SimData, который содержит результаты выполнения SimFunction F. Число элементов в simdata массив совпадает с количеством строк в phi. Количество столбцов в каждом элементе simdata массив, то есть, simdata(i).Data, равно числу элементов в observed массив ячеек, который был задан при создании F.

T

Массив ячеек, содержащий числовой вектор из размера S x 1S количество симуляций. ith элемент T содержит момент времени от ith симуляции.

Y

Массив ячеек 2D числовых матриц. ith элемент Y содержит данные из ith симуляции. Количество строк в T{i} равно количеству строк в Y{i}.

Сводные данные конструктора

createSimFunction (модель)Объект Create SimFunction

Сводные данные метода

ускорьтесь (SimFunction)Подготовьте объект SimFunction к ускоренным симуляциям
isAccelerated (SimFunction)Определите, ускоряется ли объект SimFunction

Сводные данные свойства

Parameters

table с названными переменными:

  • 'Name'

  • 'Value'

  • 'Type'

  • 'Units' (только если UnitConversion включен),

Таблица содержит информацию о количествах модели (разновидности, отсеки или параметры), которые задают входные параметры SimFunction object. Например, эта таблица может содержать параметры или разновидности, значения которых сканируются SimFunction objectЭто свойство доступно только для чтения.

Observables

table с названными переменными:

  • 'Name'

  • 'Type'

  • 'Units' (только если UnitConversion включен),

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

Dosed

table содержа дозирование информации с названными переменными:

  • 'TargetName'

  • 'TargetDimension' (только если UnitConversion включен),

Кроме того, таблица также содержит переменные для каждого свойства, которое параметрируется. Для каждого параметрированного свойства две переменные добавляются к этой таблице. Первая переменная имеет то же имя как имя свойства, и значение является именем заданного параметра. Второй переменной снабдил суффиксом имя свойства Value (PropertyNameValue), и значение является значением по умолчанию параметра. Если UnitConversion включен, модульный столбец также добавляется с именем PropertyNameUnits.

Предположим Amount свойство повторной дозы, предназначающейся для разновидностей Drug, параметрируется путем установки его на параметр модели под названием AmountParam со значением 10 миллиграмм и UnitConversion включен. Dosed таблица содержит следующие переменные:

TargetNameTargetDimensionСуммаAmountValueAmountUnits
'Drug''Mass (e.g., gram)' 'AmountParam'10'milligram'
UseParallel

Логический. Если true и Parallel Computing Toolbox доступен, SimFunction выполняется параллельно. Это свойство доступно только для чтения.

UnitConversion

Логический. Если верный:

  • Во время выполнения SimFunction объект, phi принят, чтобы быть в тех же модулях как модули для соответствующих количеств модели, заданных в params аргумент, когда объект был создан с помощью createSimFunction метод.

  • Время (t_output или t_stop) принят, чтобы быть в том же модуле как TimeUnits свойство активного configset object из модели SimBiology, от который F был создан.

  • Переменные таблиц дозы (u) должны были задать модули установкой u.Properties.VariableUnits к массиву ячеек соответствующих модулей. Размерность цели дозы, такой как сумма (молекула, родинка, и т.д.) или масса (грамм, килограмм, и т.д.), хранится на Dosed свойство F.

  • Результат симуляции находится в тех же модулях как заданные на соответствующих количествах в модели SimBiology от который F был создан.

Это свойство доступно только для чтения.

AutoAccelerate

Логический. Когда верный, модель ускоряется на первой оценке SimFunction объект.

Это свойство доступно только для чтения.

DependentFiles

Массив ячеек из символьных векторов, содержащий имена файлов, от которых зависит модель. Это свойство используется для развертывания. Это свойство доступно только для чтения.

Примеры

свернуть все

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

Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел Background в Симуляции Ответа Инсулина Глюкозы.

sbioloadproject('insulindemo', 'm1')

Модель содержит различные начальные условия, сохраненные в различных вариантах.

variants = getvariant(m1);

Получите начальные условия для пациента диабетика типа 2.

type2 = variants(1)
type2 = 
   SimBiology Variant - Type 2 diabetic (inactive)

   ContentIndex:     Type:        Name:             Property:           Value:
   1                 parameter    Plasma Volume ... Value               1.49
   2                 parameter    k1                Value               0.042
   3                 parameter    k2                Value               0.071
   4                 parameter    Plasma Volume ... Value               0.04
   5                 parameter    m1                Value               0.379
   6                 parameter    m2                Value               0.673
   7                 parameter    m4                Value               0.269
   8                 parameter    m5                Value               0.0526
   9                 parameter    m6                Value               0.8118
   10                parameter    Hepatic Extrac... Value               0.6
   11                parameter    kmax              Value               0.0465
   12                parameter    kmin              Value               0.0076
   13                parameter    kabs              Value               0.023
   14                parameter    kgri              Value               0.0465
   15                parameter    f                 Value               0.9
   16                parameter    a                 Value               6e-05
   17                parameter    b                 Value               0.68
   18                parameter    c                 Value               0.00023
   19                parameter    d                 Value               0.09
   20                parameter    Stomach Glu Af... Value               125
   21                parameter    kp1               Value               3.09
   22                parameter    kp2               Value               0.0007
   23                parameter    kp3               Value               0.005
   24                parameter    kp4               Value               0.0786
   25                parameter    ki                Value               0.0066
   26                parameter    [Ins Ind Glu U... Value               1
   27                parameter    Vm0               Value               4.65
   28                parameter    Vmx               Value               0.034
   29                parameter    Km                Value               466.21
   30                parameter    p2U               Value               0.084
   31                parameter    K                 Value               0.99
   32                parameter    alpha             Value               0.013
   33                parameter    beta              Value               0.05
   34                parameter    gamma             Value               0.5
   35                parameter    ke1               Value               0.0007
   36                parameter    ke2               Value               269
   37                parameter    Basal Plasma G... Value               164.18
   38                parameter    Basal Plasma I... Value               54.81

Подавите информационное предупреждение, которое выдано во время симуляций.

warnSettings = warning('off','SimBiology:DimAnalysisNotDone_MatlabFcn_Dimensionless');

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

  • Задайте пустой массив {} для второго входного параметра, чтобы обозначить, что модель будет симулирована с помощью основных значений параметров (то есть, никакое сканирование параметра не будет выполняться).

  • Задайте плазменные концентрации глюкозы и инсулина как ответы (выходные параметры функции, которая будет построена).

  • Задайте разновидности Dose как дозируемые разновидности. Эта разновидность представляет начальную концентрацию глюкозы в начале симуляции.

normSim = createSimFunction(m1,{},...
             {'[Plasma Glu Conc]','[Plasma Ins Conc]'},'Dose')
normSim = 
SimFunction

Parameters:

Observables: 

            Name                Type                 Units         
    _____________________    ___________    _______________________

    {'[Plasma Glu Conc]'}    {'species'}    {'milligram/deciliter'}
    {'[Plasma Ins Conc]'}    {'species'}    {'picomole/liter'     }

Dosed: 

    TargetName       TargetDimension   
    __________    _____________________

     {'Dose'}     {'Mass (e.g., gram)'}

Для страдающего от диабета пациента задайте начальные условия с помощью варианта type2.

diabSim = createSimFunction(m1,{},...
             {'[Plasma Glu Conc]','[Plasma Ins Conc]'},'Dose',type2)
diabSim = 
SimFunction

Parameters:

Observables: 

            Name                Type                 Units         
    _____________________    ___________    _______________________

    {'[Plasma Glu Conc]'}    {'species'}    {'milligram/deciliter'}
    {'[Plasma Ins Conc]'}    {'species'}    {'picomole/liter'     }

Dosed: 

    TargetName       TargetDimension   
    __________    _____________________

     {'Dose'}     {'Mass (e.g., gram)'}

Выберите дозу, которая представляет одну еду 78 граммов глюкозы в начале симуляции.

singleMeal = sbioselect(m1,'Name','Single Meal');

Преобразуйте информацию о дозировании в формат таблицы.

mealTable  = getTable(singleMeal);

Симулируйте ответ инсулина глюкозы для нормального предмета в течение 24 часов.

sbioplot(normSim([],24,mealTable));

Симулируйте ответ инсулина глюкозы для диабетического предмета в течение 24 часов.

sbioplot(diabSim([],24,mealTable));

Выполните использование скана варианты

Предположим, что вы хотите выполнить скан параметра с помощью массива вариантов, которые содержат различные начальные условия для различных нарушений инсулина. Например, модель m1 имеет варианты, которые соответствуют низкой чувствительности инсулина и высокой чувствительности инсулина. Можно симулировать модель для обоих условий через один вызов объекта SimFunction.

Выберите варианты, чтобы отсканировать.

varToScan = sbioselect(m1,'Name',...
                    {'Low insulin sensitivity','High insulin sensitivity'});

Проверяйте, какие параметры модели хранятся в каждом варианте.

varToScan(1)
ans = 
   SimBiology Variant - Low insulin sensitivity (inactive)

   ContentIndex:     Type:        Name:             Property:           Value:
   1                 parameter    Vmx               Value               0.0235
   2                 parameter    kp3               Value               0.0045

varToScan(2)
ans = 
   SimBiology Variant - High insulin sensitivity (inactive)

   ContentIndex:     Type:        Name:             Property:           Value:
   1                 parameter    Vmx               Value               0.094
   2                 parameter    kp3               Value               0.018

Оба варианта хранят альтернативные значения для Vmx и kp3 параметры. Необходимо задать их как входные параметры, когда вы создаете объект SimFunction.

Создайте объект SimFunction отсканировать варианты.

variantScan = createSimFunction(m1,{'Vmx','kp3'},...
          {'[Plasma Glu Conc]','[Plasma Ins Conc]'},'Dose');

Симулируйте модель и постройте результаты. Run 1 включайте результаты симуляции для низкой чувствительности инсулина и Run 2 для высокой чувствительности инсулина.

sbioplot(variantScan(varToScan,24,mealTable));

Низкая чувствительность инсулина приводит к увеличенной и продленной плазменной концентрации глюкозы.

Восстановите предупреждение настроек.

warning(warnSettings);

В этом примере показано, как отсканировать начальные суммы разновидности из радиоактивной модели затухания с реакцией первого порядка dzdt=cx, где x и z разновидности и c постоянный форвардный курс.

Загрузите демонстрационный проект, содержащий radiodecay модель m1.

sbioloadproject radiodecay;

Создайте SimFunction объект f отсканировать начальные суммы разновидностей x.

f = createSimFunction(m1,{'x'},{'x','z'},[])
f = 
SimFunction

Parameters:

    Name     Value       Type           Units    
    _____    _____    ___________    ____________

    {'x'}    1000     {'species'}    {'molecule'}

Observables: 

    Name        Type           Units    
    _____    ___________    ____________

    {'x'}    {'species'}    {'molecule'}
    {'z'}    {'species'}    {'molecule'}

Dosed: None

Задайте четыре различных начальных суммы разновидностей x для сканирования. Количество строк указывает на общее количество симуляций, и каждая симуляция использует значение параметров, заданное в каждой строке вектора.

phi = [200; 400; 600; 800];

Запустите симуляции, пока время остановки не равняется 20, и постройте результаты симуляции.

sbioplot(f(phi, 20));

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

Загрузите демонстрационный проект, содержащий radiodecay модель m1.

sbioloadproject radiodecay;

Создайте SimFunction объект f определение параметра Reaction1.c быть отсканированным и разновидности x как дозируемая цель.

f = createSimFunction(m1,{'Reaction1.c'},{'x','z'},{'x'});

Задайте скалярную дозу суммы 200 молекул, данных в трех моментах времени (5, 10, и 15 секунд).

dosetime = [5 10 15];
dose = [200 200 200];
u = table(dosetime', dose');
u.Properties.VariableNames = {'Time','Amount'};
u.Properties.VariableUnits = {'second','molecule'};

Задайте значения параметров для Reaction1.c отсканировать.

phi = [0.1 0.2 0.5]';

Симулируйте модель в течение 20 секунд и постройте результаты.

sbioplot(f(phi,20,u));

Можно также задать различные суммарные дозы в разное время.

d1 = table(5,100);
d1.Properties.VariableNames = {'Time','Amount'};
d1.Properties.VariableUnits = {'second','molecule'};
d2 = table(10,300);
d2.Properties.VariableNames = {'Time','Amount'};
d2.Properties.VariableUnits = {'second','molecule'};
d3 = table(15,600);
d3.Properties.VariableNames = {'Time','Amount'};
d3.Properties.VariableUnits = {'second','molecule'};

Симулируйте модель с помощью этих доз и постройте результаты.

sbioplot(f(phi,20,{d1;d2;d3}));

Можно также задать массив ячеек таблиц дозы.

u = cell(3,1);
dosetime = [5 10 15];
dose = [200 200 200];
u{1} = table(dosetime',dose');
u{1}.Properties.VariableNames = {'Time','Amount'};
u{1}.Properties.VariableUnits = {'second','molecule'};
dosetime2 = [2 6 12];
dose2 = [500 500 500];
u{2} = table(dosetime2', dose2');
u{2}.Properties.VariableNames = {'Time','Amount'};
u{2}.Properties.VariableUnits = {'second','molecule'};
dosetime3 = [3 8 18];
dose3 = [100 100 100];
u{3} = table(dosetime3', dose3');
u{3}.Properties.VariableNames = {'Time','Amount'};
u{3}.Properties.VariableUnits = {'second','molecule'};

Симулируйте модель с помощью таблиц дозы и постройте результаты.

sbioplot(f(phi,20,u));

Ссылки

[1] Гиллеспи, D.T. (1977). Точная стохастическая симуляция двойных химических реакций. Журнал физической химии. 81 (25), 2340–2361.

Введенный в R2014a
Для просмотра документации необходимо авторизоваться на сайте