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');

Добавьте два скаляра 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');
Введенный в R2020a
Для просмотра документации необходимо авторизоваться на сайте