SimFunctionSensitivity object

Объект SimFunctionSensitivity, подкласс SimFunction объект

Описание

The SimFunctionSensitivity объект является подклассом SimFunction object. Это позволяет вам вычислить чувствительность.

Синтаксис

The SimFunctionSensitivity объект совместно использует все синтаксисы SimFunction объект. Он имеет следующий дополнительный синтаксис.

[T,Y,SensMatrix] = F(___) возвращает T, массив ячеек с числовым вектором, Y, массив ячеек из 2-D числовых матриц и SensMatrix, массив ячеек 3-D числовой матрицы, содержащий вычисленные чувствительности величин модели. SensMatrix содержит матрицу размера TimePoints x Outputs x Inputs. TimePoints - общее количество временных точек, Outputs - общее количество выхода факторов, а Inputs - общее количество входа факторов.

Если вы задаете один выходной аргумент, объект возвращает SimData объект или массив SimData объекты с информацией о чувствительности.

Свойства

The SimFunctionSensitivity объект совместно использует все свойства SimFunction object. Он имеет следующие дополнительные свойства.

SensitivityOutputs

table с переменными с именем:

  • 'Name'

  • 'Type'

  • 'Units' (только если UnitConversion включен)

Эта таблица содержит информацию о величинах модели (видах или параметрах), для которых необходимо вычислить чувствительности. Выходные факторы чувствительности являются числителями зависящих от времени производных, описанных в Sensitivity Analysis in SimBiology. Это свойство доступно только для чтения.

SensitivityInputs

table с переменными с именем:

  • 'Name'

  • 'Type'

  • 'Units' (только если UnitConversion включен)

Эта таблица содержит информацию о величинах модели (видах, отсеках или параметрах), относительно которых необходимо вычислить чувствительности. Входные факторы чувствительности являются знаменателями зависящих от времени производных, описанных в Sensitivity Analysis in SimBiology. Это свойство доступно только для чтения.

SensitivityNormalizationВектор символов, задающий метод нормализации для вычисленных чувствительности. Следующие примеры показывают, как чувствительности вида, x относительно k параметра, вычисляются для каждого типа нормализации.
  • 'None' - Нормализация отсутствует.

    x(t)k

  • 'Half' - Нормализация только к числителю.

    (1x(t))(x(t)k)

  • 'Full' - Полная дедименсионизация

    (kx(t))(x(t)k)

Примеры

свернуть все

Этот пример показывает, как вычислить чувствительность некоторых видов в модели Лотки-Вольтерры с помощью SimFunctionSensitivity объект.

Загрузите образец проекта.

sbioloadproject lotka;

Определите входные параметры.

params = {'Reaction1.c1', 'Reaction2.c2'};

Определите наблюдаемые виды, которые являются выходами симуляции.

observables  = {'y1', 'y2'};

Создайте SimFunctionSensitivity объект. Установите выходные коэффициенты чувствительности ко всем видам (y1 и y2), указанный в observables аргумент и входные коэффициенты для тех, кто в params аргумент (c1 и c2) путем установки аргумента пары "имя-значение" 'all'.

f = createSimFunction(m1,params,observables,[],'SensitivityOutputs','all','SensitivityInputs','all','SensitivityNormalization','Full')
f = 
SimFunction

Parameters:

          Name          Value        Type     
    ________________    _____    _____________

    {'Reaction1.c1'}      10     {'parameter'}
    {'Reaction2.c2'}    0.01     {'parameter'}

Observables: 

     Name        Type    
    ______    ___________

    {'y1'}    {'species'}
    {'y2'}    {'species'}

Dosed: None

Sensitivity Input Factors: 

          Name              Type     
    ________________    _____________

    {'Reaction1.c1'}    {'parameter'}
    {'Reaction2.c2'}    {'parameter'}

Sensitivity Output Factors: 

     Name        Type    
    ______    ___________

    {'y1'}    {'species'}
    {'y2'}    {'species'}

Sensitivity Normalization: 

Full

Вычислим чувствительности путем выполнения объекта с c1 и c2 установите значение 10 и 0,1 соответственно. Установите время выхода от 1 до 10. t содержит временные точки, y содержит данные моделирования и sensMatrix - матрица чувствительности, содержащая чувствительности y1 и y2 относительно c1 и c2.

[t,y,sensMatrix] = f([10,0.1],[],[],1:10);

Извлеките информацию о чувствительности в момент времени 5.

temp = sensMatrix{:};
sensMatrix2 = temp(t{:}==5,:,:);
sensMatrix2 = squeeze(sensMatrix2)
sensMatrix2 = 2×2

   37.6987   -6.8447
  -40.2791    5.8225

Строки sensMatrix2 представляют факторы выхода (y1 и y2). Столбцы представляют входные факторы (c1 и c2).

sensMatrix2=[y1c1y2c1y1c2y2c2]

Установите время остановки равным 15, не задавая время выхода. В этом случае выход является временными точками решателя по умолчанию.

sd = f([10,0.1],15);

Извлеките вычисленные чувствительности из SimData sd объекта.

[t,y,outputs,inputs] = getsensmatrix(sd);

Постройте график чувствительности видов y1 и y2 относительно c1.

figure;
plot(t,y(:,:,1));
legend(outputs);
title('Sensitivities of species y1 and y2 with respect to parameter c1');
xlabel('Time');
ylabel('Sensitivity');

Figure contains an axes. The axes with title Sensitivities of species y1 and y2 with respect to parameter c1 contains 2 objects of type line. These objects represent y1, y2.

Постройте график чувствительности видов y1 и y2 относительно c2.

figure;
plot(t,y(:,:,2));
legend(outputs);
title('Sensitivities of species y1 and y2 with respect to parameter c2');
xlabel('Time');
ylabel('Sensitivity');

Figure contains an axes. The axes with title Sensitivities of species y1 and y2 with respect to parameter c2 contains 2 objects of type line. These objects represent y1, y2.

Также можно использовать sbioplot.

sbioplot(sd);

Figure contains an axes. The axes with title States versus Time contains 6 objects of type line. These objects represent y1, y2, d[y1]/d[Reaction1.c1], d[y2]/d[Reaction1.c1], d[y1]/d[Reaction2.c2], d[y2]/d[Reaction2.c2].

Можно также построить график матрицы чувствительности с помощью интеграла времени для вычисленных чувствительности y1 и y2. График указывает y1 и y2 более чувствительны к c1 чем c2.

[~, in, out] = size(y);
result = zeros(in, out);
for i = 1:in
    for j = 1:out
        result(i,j) = trapz(t(:),abs(y(:,i,j)));
    end
end
figure;
hbar = bar(result);
haxes = hbar(1).Parent;
haxes.XTick = 1:length(outputs);
haxes.XTickLabel = outputs;
legend(inputs,'Location','NorthEastOutside');
ylabel('Sensitivity');

Figure contains an axes. The axes contains 2 objects of type bar. These objects represent Reaction1.c1, Reaction2.c2.

Введенный в R2015a