Удалите записи из SimBiology.Scenarios
объект
удаляет запись (или подзапись) sObj
= remove(sObj
,entryNameOrIndex
)entryNameorIndex
от SimBiology.Scenarios
объект sObj
.
удаляет подзапись sObj
= remove(sObj
,entryIndex
,subIndex
)subIndex
из записи entryIndex
.
Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел 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
______________________ _________________________
1x1 SimBiology.Variant 1x1 SimBiology.RepeatDose
1x1 SimBiology.Variant 1x1 SimBiology.RepeatDose
1x1 SimBiology.Variant 1x1 SimBiology.RepeatDose
1x1 SimBiology.Variant 1x1 SimBiology.RepeatDose
1x1 SimBiology.Variant 1x1 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' } {'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)'} TimeUnits: hour
Симулируйте модель в течение 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: [0.0744 0.1100 0.3901 0.8150] Units: 'normalized' 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. Для маленького значения сигмы среднее значение логарифмически нормального distribtion приблизительно равно log(
model_value
)
. Для получения дополнительной информации смотрите Логарифмически нормальное Распределение (Statistics and Machine Learning Toolbox).
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',50)
ans = Scenarios (50 scenarios) Name Content Number ____ ______________________ ______ Entry 1 dose SimBiology dose 1 x (Entry 2.1 Vmx Lognormal distribution 50 + Entry 2.2) kp3 Lognormal distribution 50 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: [2x1 prob.LognormalDistribution]
Number: 50
RankCorrelation: [2x2 double]
Covariance: []
SamplingMethod: 'random'
SamplingOptions: [0x0 struct]
entry2struct.SamplingMethod = 'lhs'
entry2struct = struct with fields:
Name: {'Vmx' 'kp3'}
Content: [2x1 prob.LognormalDistribution]
Number: 50
RankCorrelation: [2x2 double]
Covariance: []
SamplingMethod: 'lhs'
SamplingOptions: [0x0 struct]
Можно теперь использовать обновленную структуру, чтобы изменить запись 2.
updateEntry(sObj,2,entry2struct)
ans = Scenarios (50 scenarios) Name Content Number ____ ______________________ ______ Entry 1 dose SimBiology dose 1 x (Entry 2.1 Vmx Lognormal distribution 50 + Entry 2.2) kp3 Lognormal distribution 50 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
entryIndex
— Индекс записиИндекс записи в виде скалярного положительного целого числа. Индекс записи должен быть меньшим, чем или равным количеству записей в объекте.
Типы данных: double
subIndex
— Подындекс записиПодындекс записи в виде скалярного положительного целого числа. Подындекс должен быть меньшим, чем или равным количеству подзаписей в записи.
Типы данных: double
sObj
— Сценарии симуляцииScenarios
объектСценарии симуляции, возвращенные как Scenarios
объект.
SimBiology.Scenarios
| SimFunction object
| createSimFunction (model)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.