Переименуйте observables в SimData
Загрузите модель Установленного целью расположения препарата (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');
Постобработайте результаты симуляции. Узнайте, какие суммарные дозы являются эффективными, соответствуя 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
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');
sdin
— Введите данные моделированияSimData
возразите | массив SimData
объектыВведите данные моделирования в виде SimData
объект или массив объектов.
oldNames
— Существующие имена observablesСуществующие имена observables в виде вектора символов, строки, представляют в виде строки вектор или массив ячеек из символьных векторов.
Пример: {'max_drug','mean_drug'}
Типы данных: char |
string
| cell
newNames
— Новые имена для observablesНовые имена для observables в виде вектора символов, строки, представляют в виде строки вектор или массив ячеек из символьных векторов. Количество новых имен должно совпадать с количеством старых названий.
Каждое новое имя должно быть уникальным в SimData
объект, означая его не может совпадать с именем никакого другого заметного, разновидности, отсек, параметр или реакция, на которую ссылаются в SimData
объект.
Пример: {'MAX','MEAN'}
Типы данных: char |
string
| cell
sdout
— Данные моделирования заметными результатамиSimData
возразите | массив SimData
объектыДанные моделирования заметными результатами, возвращенными как SimData
объект или массив объектов.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.