exponenta event banner

Объект SimFuncitySensitivity

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

Описание

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

Синтаксис

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

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

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

Свойства

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)

Примеры

свернуть все

В этом примере показано, как рассчитать чувствительность некоторых видов в модели Lotka-Volterra с помощью 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