Обновите содержимое записи от SimBiology.Scenarios
объект
обновляет содержимое записи (или подзаписи) sObj
= updateEntry(sObj
,entryNameOrIndex
,Name,Value
)entryNameOrIndex
как задано одним или несколькими аргументами пары "имя-значение". Необходимо задать по крайней мере один аргумент пары "имя-значение".
обновляет содержимое подзаписи sObj
= updateEntry(sObj
,entryIndex
,subIndex
,Name,Value
)subIndex
как задано одними или несколькими аргументами name-value. Необходимо задать по крайней мере один аргумент пары "имя-значение".
Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел 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
object = updateEntry(object,1,'Name','k1','Content',[0.4,0.5,0.6])
обновляет имя записи 1 к 'k1'
и его значения к [0.4,0.5,0.6]
.Задайте одну или несколько разделенных запятой пар Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
Примечание
Необходимо задать по крайней мере один аргумент значения имени.
Вместо того, чтобы использовать аргументы name-value, можно также использовать структуру, содержащую соответствующие зарегистрированные имена и значения. Например, можно получить такую структуру при помощи getEntry
функция.
Name
— Новое имя записиНовое имя записи в виде разделенной запятой пары, состоящей из 'Name'
и вектор символов или строка.
Пример: 'Name','k_forward'
Типы данных: char |
string
Content
— Новое содержимоеНовое содержимое в виде разделенной запятой пары, состоящей из 'Content'
и числовой вектор, вектор из RepeatDose
или ScheduleDose
объекты или вектор из variant
объекты.
Пример: 'Content',[0.1 0.5 0.9]
Типы данных: double
Name
— Новые имена записиНовая запись называет в виде разделенной запятой пары, состоящей из 'Name'
и вектор символов, строка, представляет в виде строки вектор или массив ячеек из символьных векторов.
Пример: ["kel","Cl"]
Типы данных: char |
string
| cell
Content
— Вероятностные распределенияВероятностные распределения в виде разделенной запятой пары, состоящей из 'Content'
и вектор из объектов вероятностного распределения. Если запись имеет только одно распределение, задайте скалярный объект вероятностного распределения. Использование makedist
(Statistics and Machine Learning Toolbox), чтобы создать объект.
Пример: 'Content',[pd1,pd2]
Mean
— Ожидаемые значенияОжидаемые значения нормальных распределений в виде разделенной запятой пары, состоящей из 'Mean'
и числовой вектор. Если запись имеет только одно распределение, задайте числовой скаляр. Эта пара "имя-значение" допустима для нормальных распределений только.
Количество средних значений должно быть равно количеству распределений, заданных в 'Content'
.
Пример: 'Mean',[0.5,0.8]
Типы данных: double
Number
— Количество отсчетов[]
(значение по умолчанию) | положительная скалярная величинаКоличество отсчетов, чтобы чертить от вероятностных распределений в виде разделенной запятой пары, состоящей из 'Number'
и положительная скалярная величина. Значение по умолчанию []
средние значения, что функция выводит количество отсчетов из других записей. Если номер не может быть выведен, номер определяется к 2
.
Пример: 'Number',5
RankCorrelation
— Матрица порядковой корреляции[]
(значение по умолчанию) | числовая матрицаМатрица порядковой корреляции для объединенного вероятностного распределения в виде разделенной запятой пары, состоящей из 'RankCorrelation'
и числовая матрица. Поведение по умолчанию - это когда оба 'RankCorrelation'
и 'Covariance'
установлены в []
, SimBiology.Scenarios
чертит некоррелированые выборки от объединенного вероятностного распределения.
Вы не можете задать 'RankCorrelation'
если 'Covariance'
установлен. Количество столбцов в матрице должно совпадать с количеством заданных распределений. Матрица должна быть симметричной с диагональными значениями 1. Все его собственные значения должны также быть положительными.
Пример: 'RankCorrelation',[1 0.3;0.3 1]
Covariance
— Ковариационная матрица[]
(значение по умолчанию) | числовая матрицаКовариационная матрица для объединенного вероятностного распределения в виде разделенной запятой пары, состоящей из 'Covariance'
и числовая матрица. Поведение по умолчанию - это если оба 'RankCorrelation'
и 'Covariance'
установлены в []
, SimBiology.Scenarios
чертит некоррелированые выборки от объединенного вероятностного распределения. Вы не можете задать 'Covariance'
если вы задаете 'RankCorrelation'
.
Можно задать ковариационную матрицу для нормальных распределений только. Количество столбцов в матрице должно совпадать с количеством заданных распределений. Все его собственные значения должны также быть неотрицательными.
Пример: 'Covariance',[0.25 0.15;0.15 0.25]
SamplingMethod
— Выборка метода'random'
(значение по умолчанию) | 'lhs'
| 'copula'
| 'sobol'
| 'halton'
Выборка метода в виде разделенной запятой пары, состоящей из 'SamplingMethod'
и вектор символов или строка. В зависимости от ли вероятностные распределения с 'RankCorrelation'
или нормальные распределения с 'Covariance'
заданы, методы выборки отличаются.
Если запись содержит (объединенное) нормальное распределение с Covariance
заданный, методы выборки:
'random'
– Чертите случайные выборки от заданного использования нормального распределения mvnrnd
(Statistics and Machine Learning Toolbox).
'lhs'
– Чертите латинские выборки гиперкуба от заданного использования нормальных распределений lhsnorm
(Statistics and Machine Learning Toolbox). Для получения дополнительной информации смотрите Генерирующиеся Квазислучайные числа (Statistics and Machine Learning Toolbox).
Если запись содержит (объединенное) распределение без Covariance
заданный, методы выборки:
'random'
– Чертите случайные выборки от заданного использования вероятностных распределений random
(Statistics and Machine Learning Toolbox).
'lhs'
– Чертите латинские выборки гиперкуба от заданных вероятностных распределений с помощью алгоритма, похожего на lhsdesign
(Statistics and Machine Learning Toolbox). Этот подход является более систематическим заполняющим пространство подходом, чем случайная выборка. Для получения дополнительной информации смотрите Генерирующиеся Квазислучайные числа (Statistics and Machine Learning Toolbox).
'copula'
– Чертите случайные выборки с помощью связки (Statistics and Machine Learning Toolbox). Используйте эту опцию, чтобы наложить корреляции между выборками с помощью связок.
'sobol'
– Используйте sobol последовательность (sobolset
(Statistics and Machine Learning Toolbox)), который преобразовывается с помощью обратной кумулятивной функции распределения (icdf
(Statistics and Machine Learning Toolbox)) заданных вероятностных распределений. Используйте этот метод для очень систематического заполнения. Для получения дополнительной информации смотрите Генерирующиеся Квазислучайные числа (Statistics and Machine Learning Toolbox).
'halton'
– Используйте последовательность Холтона (haltonset
(Statistics and Machine Learning Toolbox)), который преобразовывается с помощью обратной кумулятивной функции распределения (icdf
(Statistics and Machine Learning Toolbox)) заданных вероятностных распределений. Для получения дополнительной информации смотрите Генерирующиеся Квазислучайные числа (Statistics and Machine Learning Toolbox).
Если никакой Covariance
задан, SimBiology.Scenarios
по существу выполняет два шага. Первый шаг должен сгенерировать выборки с помощью одного из вышеупомянутых методов выборки. Для lhs
, sobol
, и halton
методы, сгенерированные универсальные выборки преобразовываются к выборкам от заданного распределения с помощью обратной кумулятивной функции распределения icdf
(Statistics and Machine Learning Toolbox). Затем как второй шаг, выборки коррелируются с помощью алгоритма Iman-Коновера если RankCorrelation
задан. Для random
, выборки чертятся непосредственно от заданных распределений, и выборки затем коррелируются с помощью алгоритма Iman-Коновера.
Пример: 'SamplingMethod','lhs'
SamplingOptions
— Опции для выборки методаОпции для метода выборки в виде скалярного struct. Опции отличаются в зависимости от метода выборки: sobol
, halton
, или lhs
.
Для sobol
и halton
, задайте каждое имя поля и значение структуры согласно каждому аргументу значения имени sobolset
(Statistics and Machine Learning Toolbox) или haltonset
(Statistics and Machine Learning Toolbox) функция. SimBiology использует значение по умолчанию 1
для Skip
аргумент для обоих методов. Для всех других аргументов name-value программное обеспечение использует те же значения по умолчанию sobolset
или haltonset
. Например, настройте структуру для Leap
и Skip
опции со значениями не по умолчанию можно следующим образом.
s1.Leap = 50; s1.Skip = 0;
Для lhs
, существует три сэмплера, которые поддерживают различные опции выборки.
Если вы задаете ковариационную матрицу, использование SimBiology lhsnorm
(Statistics and Machine Learning Toolbox) для выборки. SamplingOptions
аргумент не позволен.
В противном случае используйте имя поля UseLhsdesign
выбрать сэмплер.
Если значением является true
, Использование SimBiology lhsdesign
(Statistics and Machine Learning Toolbox). Можно использовать аргументы name-value lhsdesign
задавать имена полей и значения.
Если значением является false
(значение по умолчанию), SimBiology использует неконфигурируемый латинский сэмплер гиперкуба, который отличается от lhsdesign
. Этот сэмплер не требует Statistics and Machine Learning Toolbox™. SamplingOptions
не может содержать никакие другие опции, кроме UseLhsdesign
.
Например, настройте структуру, чтобы использовать lhsdesign
с Criterion
и Iterations
опции.
s2.UseLhsdesign = true;
s2.Criterion = "correlation";
s2.Iterations = 10;
Пример: 'SamplingOptions',struct("Skip",5)
Типы данных: struct
Name
— Новое имя подзаписиНовое имя подзаписи в виде разделенной запятой пары, состоящей из 'Name'
и вектор символов или строка.
Пример: 'Name','pd2'
Типы данных: char |
string
Content
— Вероятностное распределениеВероятностное распределение в виде разделенной запятой пары, состоящей из 'Content'
и объект вероятностного распределения. Использование makedist
(Statistics and Machine Learning Toolbox), чтобы создать такой объект.
Пример: 'Content',pd2
Mean
— Ожидаемое значениеОжидаемое значение нормального распределения в виде разделенной запятой пары, состоящей из 'Mean'
и числовой скаляр. Эта пара "имя-значение" допустима для нормальных распределений только.
Пример: 'Mean',0.5
Типы данных: double
sObj
— Сценарии симуляцииScenarios
объектСценарии симуляции, возвращенные как Scenarios
объект.
SimBiology.Scenarios
| SimFunction object
| createSimFunction (model)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.