Добавление наблюдаемых выражений в SimData
возвращает новое sdout = addobservable(sdin,obsNames,obsExpressions)SimData объект (или массив объектов) sdout после добавления указанных наблюдаемых на вход SimData
sdin. Исходные данные obsNames и obsExpressions являются наблюдаемыми именами и их соответствующими выражениями. Число выражений должно соответствовать числу наблюдаемых имен.
Загрузить модель распределения лекарств, опосредованных мишенью (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');

Выполните постобработку результатов моделирования. Узнайте, какие количества доз эффективны, соответствующие 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')

График показывает, что количества доз в диапазоне от 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');
sdin - Входные данные моделированияSimData объект | массив SimData объектыВходные данные моделирования, указанные как SimData объект или массив объектов.
obsNames - Названия наблюдаемых выраженийИмена наблюдаемых выражений, указанных как символьный вектор, строка, строковый вектор или массив ячеек символьных векторов.
Каждое имя должно быть уникальным в SimData объект, что означает, что он не может совпадать с именем любого другого наблюдаемого, вида, отделения, параметра или реакции, на которые ссылается SimData объект.
Пример: {'max_drug','mean_drug'}
Типы данных: char | string | cell
obsExpressions - Наблюдаемые выраженияНаблюдаемые выражения, указанные как символьный вектор, строка, строковый вектор или массив ячеек символьных векторов. Число выражений должно соответствовать числу наблюдаемых имен.
Пример: {'max(drug)','mean(drug)'}
Типы данных: char | string | cell
units - Единицы измерения для наблюдаемых выраженийЕдиницы измерения для наблюдаемых выражений, указанных как символьный вектор, строка, строковый вектор или массив ячеек символьных векторов. Количество единиц должно соответствовать количеству наблюдаемых имен.
Пример: {'nanomole/liter','nanomole/liter'}
Типы данных: char | string | cell
sdout - данные моделирования с наблюдаемыми результатами;SimData объект | массив SimData объектыДанные моделирования с наблюдаемыми результатами, возвращенные как SimData объект или массив объектов.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.