Получите содержимое записи от SimBiology.Scenarios
объект
возвращает структуру, содержащую содержимое записи (или подзаписи) заданный entryStruct
= getEntry(sObj
,entryNameOrIndex
)entryNameOrIndex
.
возвращает структуру, содержащую содержимое подзаписи, заданной entryStruct
= getEntry(sObj
,entryIndex
,subIndex
)entryIndex
и subIndex
.
Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел 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
entryStruct
— Сценарии симуляцииScenarios
объектСценарии симуляции, возвращенные как Scenarios
объект.
Выход entryStruct
имеет следующие поля:
Name
– Вектор символов или массив ячеек из символьных векторов, задающий имена записей.
Content
– Вектор из числовых значений, объектов дозы, различных объектов или объектов вероятностного распределения.
Если вы запрашиваете случайную запись выборки, не задавая подзапись, или если случайные ссылки записи выборки только один компонент модели, entryStruct
имеет следующие дополнительные поля:
Number
– Количество отсчетов чертится от распределения. Если этим полем является пустой []
, количество отсчетов выведено из других записей. Значение по умолчанию равняется 2.
RankCorrelation
– Матрица порядковой корреляции. Этим полем является пустой []
если никакая корреляционная матрица не задана.
Covariance
– Ковариационная матрица. Этим полем является пустой []
если никакая ковариационная матрица не задана.
SamplingMethod
– Вектор символов, задающий метод выборки. Значения:
'random'
– Случайная выборка (значение по умолчанию).
'lhs'
– Латинская выборка гиперкуба.
'copula'
– Многомерная выборка с помощью связки.
'sobol'
– Квазислучайная выборка Sobol установлена.
'halton'
– Квазислучайная выборка Холтона установлена.
Для получения дополнительной информации см. Методы Выборки.
SimBiology.Scenarios
| SimFunction object
| createSimFunction (model)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.