Переименуйте запись от SimBiology.Scenarios объект
Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел Background в Симуляции Ответа Инсулина Глюкозы.
sbioloadproject('insulindemo','m1');
Модель содержит различные значения параметров и начальные условия, который представляет различные нарушения инсулина (такие как диабет 2 типа, низкая чувствительность инсулина, и так далее) сохраненный в пяти вариантах.
variants = getvariant(m1)
variants = SimBiology Variant Array Index: Name: Active: 1 Type 2 diabetic false 2 Low insulin se... false 3 High beta cell... false 4 Low beta cell ... false 5 High insulin s... false
Подавите информационное предупреждение, которое выдано во время симуляций.
warnSettings = warning('off','SimBiology:DimAnalysisNotDone_MatlabFcn_Dimensionless');
Выберите дозу, которая представляет одну еду 78 граммов глюкозы.
singleMeal = sbioselect(m1,'Name','Single Meal');
Создайте Scenarios объект представлять различные начальные условия, объединенные с дозой. Таким образом, создайте scenario возразите, где каждый вариант соединен (или объединен) с дозой, для в общей сложности пяти сценариев симуляции.
sObj = SimBiology.Scenarios; add(sObj,'cartesian','variants',variants); add(sObj,'cartesian','dose',singleMeal)
ans =
Scenarios (5 scenarios)
Name Content Number
________ ___________________ ______
Entry 1 variants SimBiology variants 5
x Entry 2 dose SimBiology dose 1
See also Expression property.
sObj содержит две записи. Используйте generate функционируйте, чтобы объединить записи и сгенерировать пять сценариев. Функция возвращает таблицу сценариев, где каждая строка представляет сценарий, и каждый столбец представляет запись Scenarios объект.
scenariosTbl = generate(sObj)
scenariosTbl=5×2 table
variants dose
________________________ ___________________________
[1×1 SimBiology.Variant] [1×1 SimBiology.RepeatDose]
[1×1 SimBiology.Variant] [1×1 SimBiology.RepeatDose]
[1×1 SimBiology.Variant] [1×1 SimBiology.RepeatDose]
[1×1 SimBiology.Variant] [1×1 SimBiology.RepeatDose]
[1×1 SimBiology.Variant] [1×1 SimBiology.RepeatDose]
Поменяйте имя записи первой записи.
rename(sObj,1,'Insulin Impairements')ans =
Scenarios (5 scenarios)
Name Content Number
____________________ ___________________ ______
Entry 1 Insulin Impairements SimBiology variants 5
x Entry 2 dose SimBiology dose 1
See also Expression property.
Создайте SimFunction объект симулировать сгенерированные сценарии. Используйте Scenarios возразите как вход и задайте плазменные концентрации глюкозы и инсулина как reponses (выходные параметры функции, которая будет построена). Задайте [] для входного параметра дозы начиная с Scenarios объект уже имеет информацию о дозировании.
f = createSimFunction(m1,sObj,{'[Plasma Glu Conc]','[Plasma Ins Conc]'},[])f =
SimFunction
Parameters:
Name Value Type Units
____________________________ ______ _____________ ___________________________________________
{'Plasma Volume (Glu)' } 1.88 {'parameter'} {'deciliter' }
{'k1' } 0.065 {'parameter'} {'1/minute' }
{'k2' } 0.079 {'parameter'} {'1/minute' }
{'Plasma Volume (Ins)' } 0.05 {'parameter'} {'liter' }
{'m1' } 0.19 {'parameter'} {'1/minute' }
{'m2' } 0.484 {'parameter'} {'1/minute' }
{'m4' } 0.1936 {'parameter'} {'1/minute' }
{'m5' } 0.0304 {'parameter'} {'minute/picomole' }
{'m6' } 0.6469 {'parameter'} {'dimensionless' }
{'Hepatic Extraction' } 0.6 {'parameter'} {'dimensionless' }
{'kmax' } 0.0558 {'parameter'} {'1/minute' }
{'kmin' } 0.008 {'parameter'} {'1/minute' }
{'kabs' } 0.0568 {'parameter'} {'1/minute' }
{'kgri' } 0 {'parameter'} {'1/minute' }
{'f' } 0.9 {'parameter'} {'dimensionless' }
{'a' } 0 {'parameter'} {'1/milligram' }
{'b' } 0.82 {'parameter'} {'dimensionless' }
{'c' } 0 {'parameter'} {'1/milligram' }
{'d' } 0.01 {'parameter'} {'dimensionless' }
{'Stomach Glu After Dosing'} 78 {'parameter'} {'gram' }
{'kp1' } 2.7 {'parameter'} {'milligram/minute' }
{'kp2' } 0.0021 {'parameter'} {'1/minute' }
{'kp3' } 0.009 {'parameter'} {'(milligram/minute)/(picomole/liter)' }
{'kp4' } 0.0618 {'parameter'} {'(milligram/minute)/picomole' }
{'ki' } 0.0079 {'parameter'} {'1/minute' }
{'[Ins Ind Glu Util]' } 1 {'parameter'} {'milligram/minute' }
{'Vm0' } 2.5129 {'parameter'} {'milligram/minute' }
{'Vmx' } 0.047 {'parameter'} {'(milligram/minute)/(picomole/liter)' }
{'Km' } 225.59 {'parameter'} {'milligram' }
{'p2U' } 0.0331 {'parameter'} {'1/minute' }
{'K' } 2.28 {'parameter'} {'picomole/(milligram/deciliter)' }
{'alpha' } 0.05 {'parameter'} {'1/minute' }
{'beta' } 0.11 {'parameter'} {'(picomole/minute)/(milligram/deciliter)'}
{'gamma' } 0.5 {'parameter'} {'1/minute' }
{'ke1' } 0.0005 {'parameter'} {'1/minute' }
{'ke2' } 339 {'parameter'} {'milligram' }
{'Basal Plasma Glu Conc' } 91.76 {'parameter'} {'milligram/deciliter' }
{'Basal Plasma Ins Conc' } 25.49 {'parameter'} {'picomole/liter' }
Observables:
Name Type Units
_____________________ ___________ _______________________
{'[Plasma Glu Conc]'} {'species'} {'milligram/deciliter'}
{'[Plasma Ins Conc]'} {'species'} {'picomole/liter' }
Dosed:
TargetName TargetDimension
__________ _____________________
{'Dose'} {'Mass (e.g., gram)'}
Симулируйте модель в течение 24 часов и постройте данные моделирования. Данные содержат пять запусков, где каждый запуск представляет сценарий в объекте Scenarios.
sd = f(sObj,24); sbioplot(sd)

ans =
Axes (SbioPlot) with properties:
XLim: [0 25]
YLim: [0 450]
XScale: 'linear'
YScale: 'linear'
GridLineStyle: '-'
Position: [73.8000 47.2000 342.2000 342.8000]
Units: 'pixels'
Show all properties
Если у вас есть Statistics and Machine Learning Toolbox™, можно также чертить демонстрационные значения для количеств модели от различных вероятностных распределений. Например, предположите что параметры Vmx и kp3, которые известны низкой и высокой чувствительностью инсулина, следуют за логарифмически нормальным распределением. Можно сгенерировать демонстрационные значения для этих параметров от такого распределения и выполнить сканирование, чтобы исследовать поведение модели.
Задайте логарифмически нормальный объект вероятностного распределения для Vmx.
pd_Vmx = makedist('lognormal')pd_Vmx =
LognormalDistribution
Lognormal distribution
mu = 0
sigma = 1
По определению, параметр mu среднее значение логарифмических значений. Чтобы варьироваться значение параметров вокруг основного значения (модели) параметра, установите mu к log(model_value). Установите стандартное отклонение на 0,2.
Vmx = sbioselect(m1,'Name','Vmx'); pd_Vmx.mu = log(Vmx.Value); pd_Vmx.sigma = 0.2
pd_Vmx =
LognormalDistribution
Lognormal distribution
mu = -3.05761
sigma = 0.2
Так же задайте вероятностное распределение для kp3.
pd_kp3 = makedist('lognormal'); kp3 = sbioselect(m1,'Name','kp3'); pd_kp3.mu = log(kp3.Value); pd_kp3.sigma = 0.2
pd_kp3 =
LognormalDistribution
Lognormal distribution
mu = -4.71053
sigma = 0.2
Теперь задайте объединенное вероятностное распределение, чтобы чертить демонстрационные значения для Vmx и kp3 с порядковой корреляцией, чтобы задать некоторую корреляцию между этими двумя параметрами. Обратите внимание на то, что это предположение корреляции в целях рисунка этого примера только и не может быть биологически релевантным.
Сначала удалите запись вариантов (запись 1) от sObj.
remove(sObj,1)
ans =
Scenarios (1 scenarios)
Name Content Number
____ _______________ ______
Entry 1 dose SimBiology dose 1
See also Expression property.
Добавьте запись, которая задает объединенное вероятностное распределение с матрицей порядковой корреляции.
add(sObj,'cartesian',["Vmx","kp3"],[pd_Vmx, pd_kp3],'RankCorrelation',[1,0.5;0.5,1])
ans =
Scenarios (2 scenarios)
Name Content Number
____ ______________________ ___________
Entry 1 dose SimBiology dose 1
x (Entry 2.1 Vmx Lognormal distribution 2 (default)
+ Entry 2.2) kp3 Lognormal distribution 2 (default)
See also Expression property.
По умолчанию номер выборок, чтобы чертить от совместного распределения определяется к 2. Увеличьте число выборок.
updateEntry(sObj,2,'Number',100)ans =
Scenarios (100 scenarios)
Name Content Number
____ ______________________ ______
Entry 1 dose SimBiology dose 1
x (Entry 2.1 Vmx Lognormal distribution 100
+ Entry 2.2) kp3 Lognormal distribution 100
See also Expression property.
Проверьте что Scenarios объект может быть симулирован с моделью. verify функционируйте выдает ошибку, если какая-либо запись не решает исключительно к объекту в модели, или содержимое записи имеет противоречивые длины (объемы выборки). Функция выдает предупреждение, если многократные въезды решают к тому же объекту в модели.
verify(sObj,m1)
Сгенерируйте сценарии симуляции. Постройте демонстрационные значения с помощью plotmatrix. Вы видите значение Vmx варьируется вокруг его значения модели 0.047 и тот из kp3 приблизительно 0,009.
sTbl = generate(sObj); [s,ax,bigax,h,hax] = plotmatrix([sTbl.Vmx,sTbl.kp3]); ax(1,1).YLabel.String = "Vmx"; ax(2,1).YLabel.String = "kp3"; ax(2,1).XLabel.String = "Vmx"; ax(2,2).XLabel.String = "kp3";

Симулируйте сценарии с помощью того же SimFunction, который вы создали ранее. Вы не должны создавать новый объект SimFunction даже при том, что объект Scenarios был обновлен.
sd2 = f(sObj,24); sbioplot(sd2);

По умолчанию SimBiology использует случайный метод выборки. Можно изменить его в латинскую выборку гиперкуба (или sobol или Холтон) для более систематического заполняющего пространство подхода.
entry2struct = getEntry(sObj,2)
entry2struct = struct with fields:
Name: {'Vmx' 'kp3'}
Content: [2×1 prob.LognormalDistribution]
Number: 100
RankCorrelation: [2×2 double]
Covariance: []
SamplingMethod: 'random'
entry2struct.SamplingMethod = 'lhs'entry2struct = struct with fields:
Name: {'Vmx' 'kp3'}
Content: [2×1 prob.LognormalDistribution]
Number: 100
RankCorrelation: [2×2 double]
Covariance: []
SamplingMethod: 'lhs'
Можно теперь использовать обновленную структуру, чтобы изменить запись 2.
updateEntry(sObj,2,entry2struct)
ans =
Scenarios (100 scenarios)
Name Content Number
____ ______________________ ______
Entry 1 dose SimBiology dose 1
x (Entry 2.1 Vmx Lognormal distribution 100
+ Entry 2.2) kp3 Lognormal distribution 100
See also Expression property.
Визуализируйте демонстрационные значения.
sTbl2 = generate(sObj); [s,ax,bigax,h,hax] = plotmatrix([sTbl2.Vmx,sTbl2.kp3]); ax(1,1).YLabel.String = "Vmx"; ax(2,1).YLabel.String = "kp3"; ax(2,1).XLabel.String = "Vmx"; ax(2,2).XLabel.String = "kp3";

Симулируйте сценарии.
sd3 = f(sObj,24); sbioplot(sd3);

Восстановите предупреждение настроек.
warning(warnSettings);
sObj — Сценарии симуляцииSimBiology.Scenarios объектСценарии симуляции, заданные как SimBiology.Scenarios объект.
entryNameOrIndex — Имя записи или индексИмя записи или индекс, заданный как вектор символов, строка или скалярное положительное целое число. Можно также задать имя подзаписи.
Если вы задаете индекс, это должно быть меньшим, чем или равным количеству записей в объекте.
Типы данных: double | char | string
newName — Новое имяНовое имя для записи, заданной как вектор символов или строка.
Пример: 'k2'
Типы данных: char | string
entryIndex — Индекс записиИндекс записи, заданный как скалярное положительное целое число. Индекс записи должен быть меньшим, чем или равным количеству записей в объекте.
Типы данных: double
subIndex — Подындекс записиПодындекс записи, заданный как скалярное положительное целое число. Подындекс должен быть меньшим, чем или равным количеству подзаписей в записи.
Типы данных: double
sObj — Сценарии симуляцииScenarios объектСценарии симуляции, возвращенные как Scenarios объект.
SimBiology.Scenarios | SimFunction object | createSimFunction (model)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.