Observable

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

Описание

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

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

SimBiology выполняет объектное выражение с помощью целого курса времени любых состояний, на которые ссылаются, или observables. Результатом заметного выражения должен быть числовой скаляр или вектор. Если это - вектор, это должно иметь ту же длину как вектор времени симуляции. Результат хранится в возвращенном 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

Типы данных: логический

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

Пример: 'AUC'

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

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

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

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

Пример: 'Drug AUC'

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

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

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

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

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

Тип объекта в виде 'observable'.

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

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

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

copyobjСкопируйте объект SimBiology и его дочерние элементы
findUsagesУзнайте, как заметный объект используется в модели SimBiology
getПолучите свойства объектов SimBiology
setУстановите свойства объектов SimBiology
deleteОбъект 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'}


TimeUnits: day
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 object. The axes object 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 object. The axes object contains an object of type line.

График показывает, что суммарные дозы в пределах от 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');
Введенный в R2020a