Observable

Объект, содержащий выражение для вычислений после постсимуляции

Описание

Наблюдаемый объект является математическим выражением, которое позволяет вам выполнять вычисления после постсимуляции. Например, можно задать наблюдаемую экспрессию, чтобы вычислить долю лиганда, которая связана с рецептором на каждом временном шаге, или вычислить некоторую статистику, такую как площадь под кривой (AUC) профиля концентрации лекарственного средства. Можно также использовать наблюдаемый объект как ответ в симуляции, подборе кривой данных и глобальном анализе чувствительности.

Имя каждого наблюдаемого объекта в SimBiology® модель должна быть уникальной, что означает, что ни один наблюдаемый объект не может иметь такого же имени, как другой наблюдаемый, вид, отсек, параметр, реакция, вариант или доза в модели. Наблюдаемый объект может ссылаться на любые величины модели, которые регистрируются (в StatesToLog). Он также может ссылаться на другие активные наблюдаемые объекты при условии, что выражения не содержат алгебраических циклов. Выражение объекта может ссылаться на время симуляции с помощью time переменной. Следуйте рекомендуемым рекомендациям для оценки выражения. Для образца, если имя количества не является допустимым MATLAB® имя переменной, заключайте имя в скобки [] при обращении к нему в выражении.

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

Примечание

  • Проверьте правильность векторизации выражений. Для примера используйте A./(A+B) вместо A/(A+B) если A и B являются матрицами.

  • Избегайте выражений жесткого кода, которые ожидают каких-либо конкретных чисел точек или времени. Например, вместо использования time(1:1000), использовать time(1:min(1000,numel(time))).

Создание

Создайте наблюдаемый объект с помощью addobservable.

Свойства

расширить все

Математическое выражение наблюдаемого объекта, заданное как вектор символов.

Пример: 'x.^2'

Типы данных: char

Модули измерения результатов наблюдаемого выражения, заданные как вектор символов.

Пример: 'gram'

Типы данных: char

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

Пример: false

Типы данных: logical

Имя объекта, заданное как вектор символов.

Пример: 'AUC'

Типы данных: char

Это свойство доступно только для чтения.

Родительский объект наблюдаемого объекта, заданный как объект модели.

Описание объекта, заданное как вектор символов.

Пример: 'Drug AUC'

Типы данных: char

Метка объекта, заданная как вектор символов.

Пример: 'area under the curve'

Типы данных: char

Это свойство доступно только для чтения.

Тип объекта, заданный как 'observable'.

Типы данных: char

Данные для связи с объектом, заданные как любой поддерживаемый тип данных MATLAB.

Функции объекта

copyobjСкопируйте объект SimBiology и его дети
findUsagesУзнайте, как наблюдаемый объект используется в модели SimBiology
getПолучите свойства объекта SimBiology
setУстановите свойства объекта SimBiology
deleteУдаление объекта SimBiology
displayОтображение сводных данных по объекту SimBiology
renameПереименуйте объект и обновите выражения

Примеры

свернуть все

Загрузите модель диспозиции лекарственных средств, опосредованных мишенью (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');
Введенный в R2020a