addobservable

Добавьте заметные выражения в SimData

Описание

пример

sdout = addobservable(sdin,obsNames,obsExpressions) возвращает новый SimData объект (или массив объектов) sdout после добавления заданного observables к входу SimData sdin. Входные параметры obsNames и obsExpressions заметные имена и их соответствующие выражения. Количество выражений должно совпадать с количеством заметных имен.

пример

sdout = addobservable(sdin,obsNames,obsExpressions,'Units',units) задает units для заметных выражений. Количество модулей должно совпадать с количеством заметных имен.

Примеры

свернуть все

Загрузите модель Установленного целью расположения препарата (TMDD).

sbioloadproject tmdd_with_TO.sbproj

Установите целевое заполнение (TO) как ответ.

cs = getconfigset(m1);
cs.RuntimeOptions.StatesToLog = 'TO';

Получите информацию дозирования.

d = getdose(m1,'Daily Dose');

Добавьте два скаляра observables, которые представляют пороги безопасности и эффективности для TO. В этом примере предположите что любой TO значение выше 0.85 небезопасно, и любой TO значение ниже 0.15 не имеет никакой эффективности.

safetyTO = addobservable(m1,'SafetyThreshold','0.85','Unit','dimensionless');
efficacyTO = addobservable(m1,'EfficacyThreshold','0.15','Unit','dimensionless');

Отсканируйте по различным суммарным дозам с помощью SimBiology.Scenarios объект. Для этого сначала параметрируйте Amount свойство дозы. Затем варьируйтесь соответствующее значение параметров с помощью Scenarios объект.

amountParam = addparameter(m1,'AmountParam','Units',d.AmountUnits);
d.Amount = 'AmountParam';
d.Active = 1;
doseSamples = SimBiology.Scenarios('AmountParam',linspace(0,300,31));

Создайте SimFunction симулировать модель. Установите TO и два порога (observables) как симуляция выходные параметры.

% Suppress informational warnings that are issued during simulation.
warning('off','SimBiology:SimFunction:DOSES_NOT_EMPTY');
f = createSimFunction(m1,doseSamples,{'TO','SafetyThreshold','EfficacyThreshold'},d)
f = 
SimFunction

Parameters:

         Name          Value        Type            Units    
    _______________    _____    _____________    ____________

    {'AmountParam'}      1      {'parameter'}    {'nanomole'}

Observables: 

            Name                  Type               Units      
    _____________________    ______________    _________________

    {'TO'               }    {'parameter' }    {'dimensionless'}
    {'SafetyThreshold'  }    {'observable'}    {'dimensionless'}
    {'EfficacyThreshold'}    {'observable'}    {'dimensionless'}

Dosed: 

      TargetName                 TargetDimension                  Amount         AmountValue    AmountUnits 
    _______________    ___________________________________    _______________    ___________    ____________

    {'Plasma.Drug'}    {'Amount (e.g., mole or molecule)'}    {'AmountParam'}         1         {'nanomole'}

warning('on','SimBiology:SimFunction:DOSES_NOT_EMPTY');

Симулируйте модель с помощью суммарных доз, сгенерированных Scenarios объект. В этом случае объект генерирует 31 различную дозу; следовательно модель симулирована 31 раз и генерирует SimData массив.

doseTable = getTable(d);
sd = f(doseSamples,cs.StopTime,doseTable)
 
   SimBiology Simulation Data Array: 31-by-1
 
   ModelName:        TMDD
   Logged Data:
     Species:        0
     Compartment:    0
     Parameter:      1
     Sensitivity:    0
     Observable:     2
 

Постройте результаты симуляции. Две горизонтальных линии представляют пороги безопасности и эффективности. Обратите внимание на то, что определенный TO ответы или превышают порог безопасности или падение ниже порога эффективности.

sbioplot(sd);

Постобработайте результаты симуляции. Узнайте, какие суммарные дозы являются эффективными, соответствуя TO ответы в порогах безопасности и эффективности. Для этого добавьте заметное выражение в данные моделирования.

% Suppress informational warnings that are issued during simulation.
warning('off','SimBiology:sbservices:SB_DIMANALYSISNOTDONE_MATLABFCN_UCON');
newSD = addobservable(sd,'stat1','max(TO) < 0.85 & min(TO) > 0.15','Units','dimensionless')
 
   SimBiology Simulation Data Array: 31-by-1
 
   ModelName:        TMDD
   Logged Data:
     Species:        0
     Compartment:    0
     Parameter:      1
     Sensitivity:    0
     Observable:     3
 

addobservable функция выполняет новое заметное выражение для каждого SimData в sd и возвращает оцененные результаты как новый SimData массив. newSD имеет три observables. Первые два соответствуют порогам безопасности и эффективности. Третьим является добавленное заметное (stat1).

SimBiology хранит заметные результаты в двух различных свойствах SimData объект. Если результаты со скалярным знаком, они хранятся в SimData.ScalarObservables. В противном случае они хранятся в SimData.VectorObservables. В этом примере, stat1 заметное выражение со скалярным знаком.

Извлеките скалярные заметные значения и постройте их против суммарных доз.

scalarObs = vertcat(newSD.ScalarObservables);
doseAmounts = generate(doseSamples);
plot(doseAmounts.AmountParam,scalarObs.stat1,'o','MarkerFaceColor','b')

График показывает, что суммарные дозы в пределах от 50 - 180 нанородинок обеспечивают TO ответы, которые лежат в целевых порогах эффективности и безопасности.

Можно обновить заметное выражение с различными пороговыми суммами. Функция повторно вычисляет выражение и возвращает результаты в новый SimData objectArray.

newSD2 = updateobservable(newSD,'stat1','max(TO) < 0.75 & min(TO) > 0.30');

Переименуйте заметное выражение. Функция переименовывает заметное, обновляет любые выражения, которые ссылаются на переименованное заметное (если применимо), и возвращает результаты в новый SimData objectArray.

newSD3 = renameobservable(newSD2,'stat1','EffectiveDose');

Восстановите настройки предупреждения.

warning('on','SimBiology:sbservices:SB_DIMANALYSISNOTDONE_MATLABFCN_UCON');

Входные параметры

свернуть все

Введите данные моделирования в виде SimData объект или массив объектов.

Имена заметных выражений в виде вектора символов, строки, представляют в виде строки вектор или массив ячеек из символьных векторов.

Каждое имя должно быть уникальным в SimData объект, означая его не может совпадать с именем никакого другого заметного, разновидности, отсек, параметр или реакция, на которую ссылаются в SimData объект.

Пример: {'max_drug','mean_drug'}

Типы данных: char | string | cell

Заметные выражения в виде вектора символов, строки, представляют в виде строки вектор или массив ячеек из символьных векторов. Количество выражений должно совпадать с количеством заметных имен.

Пример: {'max(drug)','mean(drug)'}

Типы данных: char | string | cell

Модули для заметных выражений в виде вектора символов, строки, представляют в виде строки вектор или массив ячеек из символьных векторов. Количество модулей должно совпадать с количеством заметных имен.

Пример: {'nanomole/liter','nanomole/liter'}

Типы данных: char | string | cell

Выходные аргументы

свернуть все

Данные моделирования заметными результатами, возвращенными как SimData объект или массив объектов.

Смотрите также

| |

Введенный в R2020a
Для просмотра документации необходимо авторизоваться на сайте