exponenta event banner

Заметный

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

Описание

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

Имя каждого наблюдаемого объекта в модели SimBiology ® должно быть уникальным, т.е. ни один наблюдаемый объект не может иметь то же имя, что и другой наблюдаемый объект, вид, отсек, параметр, реакция, вариант или доза в модели. Наблюдаемый объект может ссылаться на любые количества модели, которые зарегистрированы ( вStatesToLog). Он также может ссылаться на другие активные наблюдаемые объекты при условии, что выражения не содержат алгебраических циклов. Выражение объекта может ссылаться на время моделирования, используя переменное время. Следуйте рекомендациям для оценки выражений. Например, если имя количества не является допустимым именем переменной 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