addobservable

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

Описание

пример

sdout = addobservable(sdin,obsNames,obsExpressions) возвращает новое SimData объект (или массив объектов) sdout после добавления к входу заданных наблюдаемых 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');

Сканируйте различные суммарные дозы с помощью 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 как выход симуляции.

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

Parameters:

         Name          Value        Type            Units    
    _______________    _____    _____________    ____________

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

Observables: 

     Name         Type               Units      
    ______    _____________    _________________

    {'TO'}    {'parameter'}    {'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:     0
 

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

h = sbioplot(sd);
time = sd(1).Time;
h.NextPlot = 'add';
safetyThreshold = plot(h,[min(time), max(time)],[0.85, 0.85],'DisplayName','Safety Threshold');
efficacyThreshold = plot(h,[min(time), max(time)],[0.15, 0.15],'DisplayName','Efficacy Threshold');

Figure contains an axes. The axes with title States versus Time contains 33 objects of type line. These objects represent Run 1 - TO, Run 2 - TO, Run 3 - TO, Run 4 - TO, Run 5 - TO, Run 6 - TO, Run 7 - TO, Run 8 - TO, Run 9 - TO, Run 10 - TO, Run 11 - TO, Run 12 - TO, Run 13 - TO, Run 14 - TO, Run 15 - TO, Run 16 - TO, Run 17 - TO, Run 18 - TO, Run 19 - TO, Run 20 - TO, Run 21 - TO, Run 22 - TO, Run 23 - TO, Run 24 - TO, Run 25 - TO, Run 26 - TO, Run 27 - TO, Run 28 - TO, Run 29 - TO, Run 30 - TO, Run 31 - TO, Safety Threshold, Efficacy Threshold.

Постпроцессируйте результаты симуляции. Узнайте, какие суммарные дозы эффективны, соответствуют 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:     1
 

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

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

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

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

Figure contains an axes. The axes contains an object of type line.

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

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

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

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

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