Моделируйте и оцените адаптированную модель SimBiology
[ynew,parameterEstimates]=
predict(resultsObj)
[ynew,parameterEstimates]=
predict(resultsObj,data,dosing)
[ возвращает результаты симуляцииynew,parameterEstimates]=
predict(resultsObj), ynew и параметр оценивают parameterEstimates подходящей модели SimBiology®.
[ возвращает результаты симуляции ynew,parameterEstimates]=
predict(resultsObj,data,dosing)ynew и оцененные значения параметров parameterEstimates от оценки подходящей модели SimBiology с помощью заданного data и информации о dosing.
Во время симуляций predict использует значения параметров в свойстве resultsObj.ParameterEstimates. Используйте этот метод когда это необходимо, чтобы оценить подобранную модель и предсказать ответы с помощью новых данных и/или дозируя информацию.
resultsObj — Результаты оценкиOptimResults | объект NLINResultsРезультаты оценки, заданные как OptimResults object или NLINResults object, который содержит результаты оценки, возвращенные sbiofit. Это должен быть скалярный объект.
данные Выведите времена или сгруппированные данныеgroupedDataВыведите времена или сгруппированные данные, заданные как вектор, или массив ячеек векторов выходных времен или groupedData object.
Если это - вектор моментов времени, predict моделирует модель с новыми моментами времени с помощью оценок параметра от объекта resultsObj результатов.
Если это - массив ячеек векторов моментов времени, predict моделирует времена модели n с помощью выходных времен от каждого временного вектора, где n является длиной data.
Если это - объект groupedData, это должно иметь независимую переменную, такую как Время. Это должно также иметь переменную группы, если данные тренировки, используемые для подбора кривой, имеют такую переменную. Можно использовать объект groupedData запросить различные комбинации категорий, если resultsObj содержит оценки параметра для каждой категории. predict моделирует модель для каждой группы с заданными категориями. Например, предположите, что у вас есть набор оценок параметра для сексуальной категории (штекеры по сравнению с розетками) и категории возраста (молодой по сравнению со старым) в ваших данных тренировки. Можно использовать predict, чтобы моделировать ответы старого штекера (или любая другая комбинация) несмотря на то, что такой пациент не может существовать в данных тренировки.
Если resultsObj от оценки специфичных для категории параметров, data должен быть объектом groupedData.
Если UnitConversion включен для базовой модели SimBiology, которая использовалась для подбора кривой, и data является объектом groupedData, data должен задать модули действительной переменной через свойство data.Properties.VariableUnits. Если это - числовой векторный массив или массив ячеек векторов моментов времени, predict использует TimeUnits модели.
dosing — Дозирование информации[] | 2D матрица объектов дозы SimBiologyДозирование информации, указанной как пустой массив [] или 2D матрица объектов дозы SimBiology (ScheduleDose object или RepeatDose object). Если dosing является матрицей объектов дозы, матрица должна содержать дозы по умолчанию или сопоставима с исходными данными о дозировании, используемыми с sbiofit. Таким образом, объекты дозы в dosing должны иметь те же значения для свойств дозы (таких как TargetName) или должны быть параметризованы таким же образом как исходные данные о дозировании. Например, предположите, что исходная матрица дозирования имеет два столбца доз, где дозы в первом столбце предназначаются для разновидностей x и тех во вторых целевых разновидностях y столбца. Затем dosing должен иметь дозы в первом столбце, предназначающемся для разновидностей x и тех во втором столбце, предназначающемся для разновидностей y.
Если пустой, никакие дозы не применяются во время симуляции, даже если модель имеет активные дозы.
Если не пустой, матрица должна иметь одну строку или одну строку на группу во входных данных. Если это имеет одну строку, те же дозы применяются ко всем группам во время симуляции. Если это имеет несколько строк, каждая строка применяется к отдельной группе в том же порядке, как группы появляются во входных данных. Если некоторые группы (или временные векторы) требуют большего количества доз, чем другие, то заполняют матрицу с (фиктивными) дозами по умолчанию.
Несколько столбцов позволены так, чтобы можно было применить несколько объектов дозы к каждой группе или временному вектору. Все дозы в столбце должны быть дозами по умолчанию или должны сослаться на те же компоненты в модели (например, дозы должны иметь ту же цель дозы TargetName), и должен иметь сопоставимые параметризованные свойства как в исходных данных о дозировании, используемых с sbiofit. Например, если свойство Amount дозы, используемой в исходном вызове sbiofit, параметризовано к ограниченному по объему моделью параметру 'A', всем дозам для соответствующей группы (столбец) в dosing нужно было параметризовать свойство Amount к 'A'.
Доза по умолчанию имеет значения по умолчанию для всех свойств, за исключением свойства Name. Создайте дозу по умолчанию можно следующим образом.
d1 = sbiodose('d1');В дополнение к ручному построению объектов дозы с помощью sbiodose, если входные данные объект groupedData и имеет информацию о дозировании, можно использовать метод createDoses, чтобы создать дозы из нее.
Количество строк в матрице dosing и количество групп или выходных временных векторов в data определяют общее количество результатов симуляции в выводе ynew. Для получения дополнительной информации см. таблицу в описании аргумента ynew.
Если UnitConversion включен для базовой модели SimBiology, которая использовалась для подбора кривой, dosing должен задать допустимую сумму и единицы измерения времени.
ynew — Результаты симуляцииSimDataРезультаты симуляции, возвращенные как вектор объектов SimData. Состояния, о которых сообщают в ynew, являются состояниями, которые были включены во входной параметр responseMap sbiofit, а также любых других состояний, перечисленных в свойстве StatesToLog опций во время выполнения (RuntimeOptions) модели SimBiology.
Общее количество результатов симуляции в ynew зависит от количества групп или выходных временных векторов в data и количества строк в матрице dosing.
Количество групп или выходных временных векторов в data | Количество строк в матрице dosing | Результаты симуляции |
|---|---|---|
1 |
| Общее количество объектов Никакие дозы не применяются во время симуляции. |
1 | 1 | Общее количество объектов Данная строка доз применяется во время симуляции. |
1 | N | Общим количеством объектов Каждая строка |
N |
| Общим количеством объектов Никакие дозы не применяются во время симуляции. |
N | 1 | Общим количеством объектов Та же строка доз применяется к каждой симуляции. |
| N | N | Общим количеством объектов Каждая строка |
| M | N | Функция выдает ошибку когда M ≠ N. |
parameterEstimates — Предполагаемые значения параметровПредполагаемые значения параметров, возвращенные как таблица. Это идентично свойству resultsObj.ParameterEstimates. Метод predict использует эти значения параметров во время симуляции.
Этот пример использует дрожжи гетеротримерные данные модели белка G и экспериментальные данные, о которых сообщают [1]. Для получения дополнительной информации о модели, смотрите раздел Background в Сканировании Параметра, Оценке Параметра и Анализе чувствительности в Дрожжах Гетеротримерный Цикл Белка G.
Загрузите модель белка G.
sbioloadproject gproteinВведите экспериментальные данные, содержащие курс времени для части активного белка G, как сообщается в ссылочной газете [1].
time = [0;10;30;60;110;210;300;450;600]; GaFracExpt = [0;0.35;0.4;0.36;0.39;0.33;0.24;0.17;0.2];
Создайте groupedData, основанный на объектах на экспериментальных данных.
tbl = table(time,GaFracExpt); grpData = groupedData(tbl);
Сопоставьте соответствующий компонент модели с экспериментальными данными. Другими словами, укажите, которому разновидность в модели соответствует который переменная отклика в данных. В этом примере сопоставьте параметр модели GaFrac с переменной GaFracExpt экспериментальных данных из grpData.
responseMap = 'GaFrac = GaFracExpt'; Используйте объект estimatedInfo задать параметр модели kGd в качестве параметра, чтобы быть оцененными.
estimatedParam = estimatedInfo('kGd');Выполните оценку параметра.
fitResult = sbiofit(m1,grpData,responseMap,estimatedParam);
Просмотрите предполагаемое значение параметров kGd.
fitResult.ParameterEstimates
ans =
Name Estimate StandardError
_____ ________ _____________
'kGd' 0.11 3.683e-05
Предположим, что вы хотите моделировать подобранную модель с помощью различных выходных времен, чем те в данных тренировки. Можно использовать метод predict, чтобы сделать так.
Создайте новую переменную T с различными выходными временами.
T = [0;10;50;80;100;150;300;350;400;450;500;550];
Используйте метод predict, чтобы моделировать подобранную модель на новых моментах времени. Никакое дозирование не было задано, когда вы сначала запустили sbiofit. Следовательно, вы не можете использовать информацию о дозировании с методом predict, и пустой массив должен быть задан как третий входной параметр.
ynew = predict(fitResult,T,[]);
Отобразите моделируемые данные на графике с новыми выходными временами.
sbioplot(ynew)

Расширьте Run1 и только выберите GaFrac, чтобы отобразить его моделируемые данные.

Этот пример показывает, как оценить специфичный для категории (такой как молодой по сравнению со старым, штекерным по сравнению с розеткой) параметры PK с помощью данных о профиле от нескольких человек, использующих модель 2D отсека. Параметры, чтобы оценить являются объемами центрального и периферийного отсека, разрешения и межразделенного на отсеки разрешения.
Синтетические данные, используемые в этом примере, содержат ход времени плазменных концентраций нескольких человек после дозы шарика (100 мг), измеренных в разное время и для центральных и для периферийных отсеков. Это также содержит категориальные переменные, а именно, Sex и Age.
clear load(fullfile(matlabroot,'examples','simbio','sd5_302RAgeSex.mat'));
Преобразуйте набор данных в объект groupedData, который является необходимым форматом данных для подходящего функционального sbiofit. Объект groupedData позволяет вам устанавливать независимую переменную и имена переменных группы (если они существуют). Установите модули ID, Time, CentralConc, PeripheralConc, Age и переменных Sex. Модули являются дополнительными и только необходимыми для функции UnitConversion, которая автоматически преобразовывает соответствие с физическими количествами в одну сопоставимую модульную систему.
gData = groupedData(data);
gData.Properties.VariableUnits = {'','hour','milligram/liter','milligram/liter','',''};
Свойства IndependentVariableName и GroupVariableName были автоматически установлены в переменные Time и ID данных.
gData.Properties
ans =
Description: ''
VariableDescriptions: {}
VariableUnits: {'' 'hour' 'milligram/liter' 'milligram/liter' '' ''}
DimensionNames: {'Row' 'Variable'}
UserData: []
RowNames: {}
VariableNames: {'ID' 'Time' 'CentralConc' 'PeripheralConc' 'Sex' 'Age'}
GroupVariableName: 'ID'
IndependentVariableName: 'Time'В целях рисунка используйте первые пять отдельных данных для обучения и 6-е отдельные данные для тестирования.
trainData = gData([gData.ID < 6],:); testData = gData([gData.ID == 6],:);
Отобразите данные об ответе для каждого человека в наборе обучающих данных.
sbiotrellis(trainData,'ID','Time',{'CentralConc','PeripheralConc'});

Пользуйтесь встроенной библиотекой PK, чтобы создать модель 2D отсека с дозированием вливания и устранением первого порядка, где уровень устранения зависит от разрешения и объема центрального отсека. Используйте объект configset включить модульное преобразование.
pkmd = PKModelDesign; pkc1 = addCompartment(pkmd,'Central'); pkc1.DosingType = 'Bolus'; pkc1.EliminationType = 'linear-clearance'; pkc1.HasResponseVariable = true; pkc2 = addCompartment(pkmd,'Peripheral'); model = construct(pkmd); configset = getconfigset(model); configset.CompileOptions.UnitConversion = true;
Примите, что каждый человек получает дозу шарика 100 мг во время = 0.
dose = sbiodose('dose','TargetName','Drug_Central'); dose.StartTime = 0; dose.Amount = 100; dose.AmountUnits = 'milligram'; dose.TimeUnits = 'hour';
Данные содержат измеренную плазменную концентрацию в центральных и периферийных отсеках. Сопоставьте эти переменные с соответствующими компонентами модели, которые являются Drug_Central и Drug_Peripheral.
responseMap = {'Drug_Central = CentralConc','Drug_Peripheral = PeripheralConc'};Задайте объемы центральных и периферийных отсеков Central и Peripheral, межразделенное на отсеки разрешение Q12 и разрешение Cl_Central как параметры, чтобы оценить. Объект estimatedInfo позволяет вам опционально указать, что параметр преобразовывает, начальные значения и границы параметра. С тех пор и Центральный и Периферийный ограничиваются быть положительным, задать логарифмическое преобразование для каждого параметра.
paramsToEstimate = {'log(Central)', 'log(Peripheral)', 'Q12', 'Cl_Central'};
estimatedParam = estimatedInfo(paramsToEstimate,'InitialValue',[1 1 1 1]);Используйте свойство 'CategoryVariableName' объекта estimatedInfo задать который категория использовать во время подбора кривой. Используйте 'Sex' в качестве группы к пригодному для разрешения параметры Q12 и Cl_Central. Используйте 'Age' в качестве группы к пригодному для параметров Peripheral и Central.
estimatedParam(1).CategoryVariableName = 'Age'; estimatedParam(2).CategoryVariableName = 'Age'; estimatedParam(3).CategoryVariableName = 'Sex'; estimatedParam(4).CategoryVariableName = 'Sex'; categoryFit = sbiofit(model,trainData,responseMap,estimatedParam,dose)
При подборе кривой по категориям (или группа), всегда возвращается sbiofit, каждый заканчивается объект, не один для каждого уровня категории. Это вызвано тем, что и штекерные и розеточные люди считаются частью той же оптимизации с помощью тех же ошибочных параметров модели и параметров ошибок, так же для молодых и старых людей.
categoryFit =
OptimResults with properties:
ExitFlag: 3
Output: [1x1 struct]
GroupName: []
Beta: [8x5 table]
ParameterEstimates: [20x6 table]
J: [40x8x2 double]
COVB: [8x8 double]
CovarianceMatrix: [8x8 double]
R: [40x2 double]
MSE: 0.1240
SSE: 8.9269
Weights: []
EstimatedParameterNames: {'Central' 'Peripheral' 'Q12' 'Cl_Central'}
ErrorModelInfo: [1x3 table]
EstimationFunction: 'lsqnonlin'
ErrorModel: 'constant'
ErrorParameters: [1x1 table]Постройте специфичные для категории предполагаемые результаты. Для Cl_Central и параметров Q12, все штекеры имели те же оценки, и так же для розеток. Для Central и параметров Peripheral, у всех молодых людей были те же оценки, и так же для старых людей.
plot(categoryFit);

Что касается тестирования целей, моделируйте ответы 6-го человека, который является старым штекером. Поскольку вы оценили один набор параметров для категории Age (молодой по сравнению со старым) и другой набор для категории Sex (штекер по сравнению с розеткой), можно моделировать ответы старого штекера даже при том, что нет такого человека в данных тренировки.
Используйте метод predict, чтобы моделировать ответы. ynew содержит данные моделирования, и paramestim содержит оценки параметра, используемые во время симуляции.
[ynew,paramestim] = predict(categoryFit,testData,dose);
Постройте моделируемые ответы старого штекера.
sbioplot(ynew);

Переменная paramestim содержит предполагаемые параметры, используемые методом predict. Оценки параметра для соответствующих категорий были получены из свойства categoryFit.ParameterEstimates. А именно, Central и оценки параметра Peripheral получены из группы Old, и Q12 и оценки параметра Cl_Central получены из группы Male.
paramestim
paramestim =
Name Estimate StandardError Group CategoryVariableName CategoryValue
____________ ________ _____________ _____ ____________________ _____________
'Central' 1.1993 0.0050591 6 'Age' Old
'Peripheral' 0.5627 0.02908 6 'Age' Old
'Q12' 1.3119 0.062733 6 'Sex' Male
'Cl_Central' 0.56631 0.0079784 6 'Sex' Male Наложите результаты эксперимента на моделируемых данных.
figure; plot(testData.Time,testData.CentralConc,'LineStyle','none','Marker','d','MarkerEdgeColor','b'); hold on plot(testData.Time,testData.PeripheralConc,'LineStyle','none','Marker','d','MarkerEdgeColor','r'); plot(ynew.Time,ynew.Data(:,1),'b'); plot(ynew.Time,ynew.Data(:,2),'r'); hold off legend({'OBS1(CentralConc)','OBS2(PeripheralConc)',... 'PRED1(Central.Drug\_Central)','PRED2(Peripheral.Drug\_Peripheral)'});

[1] И, T-M., Kitano, H. и Саймон, M. (2003). Количественная характеристика дрожжей гетеротримерный цикл белка G. PNAS. 100, 10764–10769.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.