Объект Create SimFunction
F = createSimFunction(model,params,observables,dosed)
F = createSimFunction(model,params,observables,dosed, variants)
F = createSimFunction(___,Name,Value)
создает F
= createSimFunction(model
,params
,observables
,dosed
)F
SimFunction object
, который можно выполнить как указатель на функцию. Аргументы params
и observables
задают вводы и выводы функционального F
, когда он выполняется, и dosed
задает информацию о дозировании разновидностей. Смотрите SimFunction object
для получения дополнительной информации о том, как выполнить F
.
дополнительные опции использования заданы одним или несколькими аргументами пары F
= createSimFunction(___,Name,Value
)Name,Value
.
Активные дозы и варианты модели проигнорированы, когда F
выполняется.
F
является неизменяемым после того, как он будет создан.
F
автоматически ускоряется при первом функциональном выполнении. Однако вручную ускорьте объект, если вы хотите ускоренный в ваших приложениях развертывания.
model
— SimBiologyМодель SimBiology, заданная как model object
SimBiology.
params
— Входные параметры SimFunction F
{}
Входные параметры SimFunction F
, заданного как вектор символов, массив ячеек из символьных векторов или массив пустой ячейки {}
. Векторы символов представляют имена количеств модели (разновидности, отсеки или параметры), которые задают входные параметры F
. Используйте массив пустой ячейки {}
, чтобы создать SimFunction object
, который не имеет никаких параметров.
Чтобы однозначно назвать количество модели, используйте полностью определенное имя, которое включает имя отсека. Чтобы назвать ограниченный по объему реакцией параметр, используйте имя реакции, чтобы квалифицировать параметр. Если имя не является допустимым именем переменной MATLAB®, окружите его квадратными скобками, такими как [reaction 1].[parameter 1]
.
observables
— Выходные параметры SimFunction F
Выходные параметры SimFunction F
, заданного как вектор символов или массив ячеек из символьных векторов. Векторы символов представляют имена количеств модели (разновидности, отсеки или параметры), которые задают выходные параметры F
.
dosed
— Dosed или объекты дозы[]
Дозируемые разновидности или объекты дозы, заданные как вектор символов, массив ячеек из символьных векторов, вектор объектов дозы или пустой массив []
. Используйте []
, чтобы указать, что никакие разновидности не дозируются во время симуляции.
Если это - массив ячеек из символьных векторов, это должно быть 1 N массивом, где N является количеством дозируемых имен разновидностей. Можно использовать дублирующиеся имена разновидностей, если вы планируете использовать несколько доз для тех же разновидностей, когда вы запускаете SimFunction F
. Только Используя дозируемые разновидности имена не содержит информации о свойствах дозы. Если у вас есть объект дозы, который содержит параметризованные свойства, такие как Amount
, используйте объект дозы, как введено вместо только имен разновидностей, чтобы передать такую информацию о параметре созданному SimFunction F
.
Если это - вектор объектов дозы, это должно быть 1 N вектором, где N является количеством объектов дозы. Если объекты дозы имеют свойства с числовыми значениями не по умолчанию, эти значения проигнорированы, и предупреждение выдано. Только TargetName
, DurationParameterName
, LagParameterName
и параметризованные свойства используются, чтобы создать объект SimFunction F
, то есть, задать свойство Dosed
F
. Для получения дополнительной информации о том, как таблица свойства Dosed
заполняется, см. Сводные данные Свойства.
Количество дозируемых разновидностей, заданных здесь, то есть, свойство Dosed
созданного объекта SimFunction F
, должно быть сопоставимо с входным параметром дозы u
SimFunction F
, когда вы выполняете объект. Другими словами, число элементов (N) в свойстве Dosed
F
должно быть равно числу элементов (столбцы) в массиве ячеек u
. Порядок дозируемых разновидностей в Dosed
должен также совпадать с порядком таблиц дозы в u
.
variants
— AlternateАльтернативные значения модели, заданные как вариант или вектор различных объектов. Эти значения применяются как базовые значения модели, когда объект SimFunction
создается. Если существует несколько вариантов, относящихся к тому же элементу модели, последнее вхождение используется.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'UseParallel',true
задает, чтобы выполнить SimFunction F
параллельно.'UseParallel'
Отметьте, чтобы выполнить SimFunction F
параллельноfalse
(значение по умолчанию) | true
Отметьте, чтобы выполнить SimFunction F
параллельно, заданный как пара, разделенная запятой, состоящая из 'UseParallel'
и true
или false
. Если true
и Parallel Computing Toolbox™ доступны, SimFunction F
выполняется параллельно.
Пример: 'UseParallel'
, true
'SensitivityOutputs'
— Sensitivity факторы вывода{}
(значение по умолчанию) | массив ячеек из символьных векторов | 'all'
Sensitivity факторы вывода, заданные как пара, разделенная запятой, состоящая из 'SensitivityOutputs'
и массива ячеек из символьных векторов. Векторы символов являются именами количеств модели (разновидности и параметры), для которого вы хотите вычислить чувствительность. Значением по умолчанию является {}
, означающий, что нет никаких выходных факторов. Выходными факторами являются числители зависящих от времени производных, объясненных в Вычислении Чувствительности.
Используйте ключевое слово 'all'
, чтобы задать все количества модели, перечисленные в аргументе observables
как чувствительность выходные параметры. Однако {'all'}
означает количество модели под названием all
в модели.
Необходимо задать оба аргумента пары "имя-значение" 'SensitivityOutputs'
и 'SensitivityInputs'
для вычислений чувствительности.
Пример: 'SensitivityOutputs'
, 'all'
'SensitivityInputs'
— Sensitivity{}
(значение по умолчанию) | массив ячеек из символьных векторов | 'all'
Факторы входа Sensitivity, заданные как пара, разделенная запятой, состоящая из 'SensitivityInputs'
и массива ячеек из символьных векторов. Векторы символов являются именами количеств модели (разновидности, отсеки и параметры), относительно которого вы хотите вычислить чувствительность. Значением по умолчанию является {}
, означающий входные факторы. Входными факторами являются знаменатели зависящих от времени производных, объясненных в Вычислении Чувствительности.
Используйте ключевое слово 'all'
, чтобы задать все количества модели, перечисленные в аргументе params
как входные параметры чувствительности. Однако {'all'}
означает количество модели под названием all
в модели.
Необходимо задать оба аргумента пары "имя-значение" 'SensitivityOutputs'
и 'SensitivityInputs'
для вычислений чувствительности.
Пример: 'SensitivityInputs'
, {'Reaction1.c1','Reaction1.c2'}
'SensitivityNormalization'
— Нормализация для расчетной чувствительности'None'
(значение по умолчанию) | 'Half
| 'Full'
Нормализация для расчетной чувствительности, заданной как пара, разделенная запятой, состоящая из 'SensitivityNormalization'
и 'None'
, 'Half'
или 'Full'
.
'none'
Никакая нормализация (значение по умолчанию)
'Half'
— Нормализация относительно числителя только
полный
Полный dedimensionalization
Для получения дополнительной информации смотрите Normalization
.
Пример: 'SensitivityNormalization'
, 'Full'
F
SimFunctionSimFunction
| объект SimFunctionSensitivity
SimFunction, возвращенный как SimFunction object
или SimFunctionSensitivity object
. Можно выполнить F
как указатель на функцию.
F
является SimFunctionSensitivity object
, если вы задаете непустые аргументы пары "имя-значение" 'SensitivityOutputs'
и 'SensitivityInputs'
.
Этот пример использует радиоактивную модель затухания с реакцией первого порядка , где x
и z
являются разновидностями, и c
является постоянным форвардным курсом.
Загрузите демонстрационный проект, содержащий радиоактивную модель m1
затухания.
sbioloadproject radiodecay;
Создайте SimFunction object
, задав параметр Reaction1.c
, чтобы быть отсканированными, и разновидности x
как вывод функции без дозируемых разновидностей.
f = createSimFunction(m1, 'Reaction1.c','x', [])
f = SimFunction Parameters: Name Value Type Units _____________ _____ ___________ __________ 'Reaction1.c' 0.5 'parameter' '1/second' Observables: Name Type Units ____ _________ __________ 'x' 'species' 'molecule' Dosed: None
Если опция UnitConversion
была установлена в false
, когда объект SimFunction
, f
был создан, таблица, не отображает модули количеств модели.
Чтобы проиллюстрировать это, сначала установите опцию UnitConversion
на false
.
cs = getconfigset(m1); cs.CompileOptions.UnitConversion = false;
Создайте объект SimFunction
как прежде и обратите внимание, что переменная под названием Units
исчезает.
f = createSimFunction(m1, {'Reaction1.c'},{'x'}, [])
f = SimFunction Parameters: Name Value Type _____________ _____ ___________ 'Reaction1.c' 0.5 'parameter' Observables: Name Type ____ _________ 'x' 'species' Dosed: None
Если какая-либо из разновидностей в модели дозируется, задайте имена дозируемых разновидностей в качестве последнего аргумента. Например, если разновидность x
дозируется, задайте его в качестве последнего аргумента.
f = createSimFunction(m1, {'Reaction1.c'},{'x'}, 'x')
f = SimFunction Parameters: Name Value Type _____________ _____ ___________ 'Reaction1.c' 0.5 'parameter' Observables: Name Type ____ _________ 'x' 'species' Dosed: TargetName __________ 'x'
Если объект SimFunction
создается, можно выполнить его как указатель на функцию и выполнить сканирования параметра (параллельно, если Parallel Computing Toolbox™ доступен), симуляции Монте-Карло, и сканирует с несколькими или векторизованными дозами. См. SimFunction object
для большего количества примеров.
Этот пример создает объект SimFunction
с дозированием информации с помощью объекта RepeatDose
или ScheduleDose
или вектора этих объектов. Однако, если какой-либо объект дозы содержит данные, такие как StartTime
, Amount
и Rate
, такие данные проигнорированы, и предупреждение выдано. Только данными, при наличии, используемый является TargetName
, LagParameterName
и DurationParameterName
объекта дозы.
Загрузите демонстрационный проект, содержащий радиоактивную модель m1
затухания.
sbioloadproject radiodecay;
Создайте RepeatDose object
и задайте его свойства.
rdose = sbiodose('rd'); rdose.TargetName = 'x'; rdose.StartTime = 5; rdose.TimeUnits = 'second'; rdose.Amount = 300; rdose.AmountUnits = 'molecule'; rdose.Rate = 1; rdose.RateUnits = 'molecule/second'; rdose.Interval = 100; rdose.RepeatCount = 2;
Добавьте параметр задержки и параметр длительности к модели.
lagPara = addparameter(m1,'lp'); lagPara.Value = 1; lagPara.ValueUnits = 'second'; duraPara = addparameter(m1,'dp'); duraPara.Value = 1; duraPara.ValueUnits = 'second';
Установите эти параметры на объект дозы.
rdose.LagParameterName = 'lp'; rdose.DurationParameterName = 'dp';
Создайте объект SimFunction
f
с помощью объекта RepeatDose
rdose
, который вы только создали.
f = createSimFunction(m1,{'Reaction1.c'},{'x','z'},rdose)
Warning: Some Dose objects in DOSED had data. This data will be ignored. > In SimFunction>SimFunction.SimFunction at 847 In SimFunction>SimFunction.createSimFunction at 374 f = SimFunction Parameters: Name Value Type Units _____________ _____ ___________ __________ 'Reaction1.c' 0.5 'parameter' '1/second' Observables: Name Type Units ____ _________ __________ 'x' 'species' 'molecule' 'z' 'species' 'molecule' Dosed: TargetName TargetDimension __________ _______________________________ 'x' 'Amount(e.g. mole or molecule)' DurationParameterName DurationParameterValue _____________________ ______________________ 'dp' 1 DurationParameterUnits LagParameterName ______________________ ________________ 'second' 'lp' LagParameterValue LagParameterUnits _________________ _________________ 1 'second'
Предупреждающее сообщение появляется, потому что объект rdose
содержит данные (StartTime
, Amount
, Rate
), которые проигнорированы методом createSimFunction
.
Этот пример показывает, как выполнить различные подписи SimFunction object
, чтобы моделировать и отсканировать параметры Лотки - Вольтерры (добыча хищника) модель, описанная Гиллеспи [1].
Загрузите демонстрационный проект, содержащий модель m1
.
sbioloadproject lotka;
Создайте объект SimFunction f
с c1
и c2
как входные параметры, которые будут отсканированы, и y1
и y2
как вывод функции без дозируемых разновидностей.
f = createSimFunction(m1,{'Reaction1.c1', 'Reaction2.c2'},{'y1', 'y2'}, [])
f = SimFunction Parameters: Name Value Type ______________ _____ ___________ 'Reaction1.c1' 10 'parameter' 'Reaction2.c2' 0.01 'parameter' Observables: Name Type ____ _________ 'y1' 'species' 'y2' 'species' Dosed: None
Задайте входную матрицу, которая содержит значения для каждого параметра (c1
и c2
) для каждой симуляции. Количество строк указывает на общее количество симуляций, и каждая симуляция использует значения параметров, заданные в каждой строке.
phi = [10 0.01; 10 0.02];
Запустите симуляции, пока время остановки не равняется 5, и постройте результаты симуляции.
sbioplot(f(phi, 5));
Можно также задать вектор различных времен остановки для каждой симуляции.
t_stop = [3;6]; sbioplot(f(phi, t_stop));
Затем, задайте выходные времена как вектор.
t_output = 0:0.1:5; sbioplot(f(phi,[],[],t_output));
Задайте выходные времена как массив ячеек векторов.
t_output = {0:0.01:3, 0:0.2:6}; sbioplot(f(phi, [], [], t_output));
Этот пример показывает, как вычислить чувствительность некоторых разновидностей в модели Лотки-Вольтерры с помощью объекта SimFunctionSensitivity.
Загрузите демонстрационный проект.
sbioloadproject lotka;
Задайте входные параметры.
params = {'Reaction1.c1', 'Reaction2.c2'};
Задайте наблюдаемые разновидности, которые являются выходными параметрами симуляции.
observables = {'y1', 'y2'};
Создайте объект SimFunctionSensitivity
. Установите чувствительность выходные факторы на все разновидности (y1
и y2
) заданный в аргументе observables
и введите факторы тем в аргументе params
(c1
и c2
) при помощи ключевого слова 'все'.
f = createSimFunction(m1,params,observables,[],'SensitivityOutputs','all','SensitivityInputs','all','SensitivityNormalization','Full')
f = SimFunction Parameters: Name Value Type ______________ _____ ___________ 'Reaction1.c1' 10 'parameter' 'Reaction2.c2' 0.01 'parameter' Observables: Name Type ____ _________ 'y1' 'species' 'y2' 'species' Dosed: None Sensitivity Input Factors: Name Type ______________ ___________ 'Reaction1.c1' 'parameter' 'Reaction2.c2' 'parameter' Sensitivity Output Factors: Name Type ____ _________ 'y1' 'species' 'y2' 'species' Sensitivity Normalization: Full
Вычислите чувствительность путем выполнения объекта с c1
и набором c2
к 10 и 0.1 соответственно. Установите выходные времена от 1 до 10. t
содержит моменты времени, y
содержит данные моделирования, и sensMatrix является матрицей чувствительности, содержащей чувствительность y1
и y2
относительно c1
и c2
.
[t,y,sensMatrix] = f([10,0.1],[],[],1:10);
Получите информацию о чувствительности во времени симуляции = 5.
temp = sensMatrix{:}; sensMatrix2 = temp(t{:}==5,:,:); sensMatrix2 = squeeze(sensMatrix2)
sensMatrix2 = 2×2
37.6987 -6.8447
-40.2791 5.8225
Строки sensMatrix2
представляют выходные факторы (y1
и y2
). Столбцы представляют входные факторы (c1
и c2
).
Установите время остановки на 15, не задавая выходные времена. В этом случае выходные времена являются моментами времени решателя по умолчанию.
sd = f([10,0.1],15);
Получите расчетную чувствительность из объекта SimData sd
.
[t,y,outputs,inputs] = getsensmatrix(sd);
Постройте чувствительность разновидностей y1
и y2
относительно c1
.
figure; plot(t,y(:,:,1)); legend(outputs); title('Sensitivities of species y1 and y2 with respect to parameter c1'); xlabel('Time'); ylabel('Sensitivity');
Постройте чувствительность разновидностей y1
и y2
относительно c2
.
figure; plot(t,y(:,:,2)); legend(outputs); title('Sensitivities of species y1 and y2 with respect to parameter c2'); xlabel('Time'); ylabel('Sensitivity');
Также можно использовать sbioplot
. Расширьте Run1
, чтобы выбрать который симуляция или данные о чувствительности, чтобы отобразиться.
sbioplot(sd);
Можно также построить матрицу чувствительности использование интеграла времени для расчетной чувствительности y1
и y2
. График показывает, что y1
и y2
более чувствительны к параметру c1
, чем c2
.
[~, in, out] = size(y); result = zeros(in, out); for i = 1:in for j = 1:out result(i,j) = trapz(t(:),abs(y(:,i,j))); end end figure; hbar = bar(result); haxes = hbar(1).Parent; haxes.XTick = 1:length(outputs); haxes.XTickLabel = outputs; legend(inputs,'Location','NorthEastOutside'); ylabel('Sensitivity');
Этот пример показывает, как моделировать ответы инсулина глюкозы для нормальных и диабетических предметов.
Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел Background в Симуляции Ответа Инсулина Глюкозы.
sbioloadproject('insulindemo', 'm1')
Модель содержит различные начальные условия, сохраненные в различных вариантах.
variants = getvariant(m1);
Получите начальные условия для пациента диабетика типа 2.
type2 = variants(1)
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)
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)
SimBiology Variant - High insulin sensitivity (inactive) ContentIndex: Type: Name: Property: Value: 1 parameter Vmx Value 0.094 2 parameter kp3 Value 0.018
Оба варианта хранят альтернативные значения для параметров kp3
и Vmx
. Необходимо задать их как входные параметры, когда вы создаете объект 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);
[1] Гиллеспи, D.T. (1977). Точная стохастическая симуляция двойных химических реакций. Журнал физической химии. 81 (25), 2340–2361.
Чтобы запуститься параллельно, установите 'UseParallel'
на true
.
Для получения дополнительной информации смотрите аргумент пары "имя-значение" 'UseParallel'
.
SimFunction object
| SimFunctionSensitivity object
| model object
| sbiosampleerror
| sbiosampleparameters
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.