exponenta event banner

rename

Переименуйте запись от SimBiology.Scenarios объект

Описание

пример

sObj = rename(sObj,entryNameOrIndex,newName) переименовывает запись (или подзапись) entryNameorIndex к newName.

пример

sObj = rename(sObj,entryIndex,subIndex,newName) переименовывает подзапись subIndex к newName.

Примеры

свернуть все

Загрузите модель ответа инсулина глюкозы. Для получения дополнительной информации о модели, смотрите раздел Background в Симуляции Ответа Инсулина Глюкозы.

sbioloadproject('insulindemo','m1');

Модель содержит различные значения параметров и начальные условия, который представляет различные нарушения инсулина (такие как диабет 2 типа, низкая чувствительность инсулина, и так далее) сохраненный в пяти вариантах.

variants = getvariant(m1)
variants = 
   SimBiology Variant Array

   Index:  Name:             Active:
   1       Type 2 diabetic   false
   2       Low insulin se... false
   3       High beta cell... false
   4       Low beta cell ... false
   5       High insulin s... false

Подавите информационное предупреждение, которое выдано во время симуляций.

warnSettings = warning('off','SimBiology:DimAnalysisNotDone_MatlabFcn_Dimensionless');

Выберите дозу, которая представляет одну еду 78 граммов глюкозы.

singleMeal = sbioselect(m1,'Name','Single Meal');

Создайте Scenarios объект представлять различные начальные условия, объединенные с дозой. Таким образом, создайте scenario возразите, где каждый вариант соединен (или объединен) с дозой, для в общей сложности пяти сценариев симуляции.

sObj = SimBiology.Scenarios;
add(sObj,'cartesian','variants',variants);
add(sObj,'cartesian','dose',singleMeal)
ans = 
  Scenarios (5 scenarios)

                   Name            Content          Number
                 ________    ___________________    ______

    Entry 1      variants    SimBiology variants      5   
    x Entry 2    dose        SimBiology dose          1   

  See also Expression property.

sObj содержит две записи. Используйте generate функционируйте, чтобы объединить записи и сгенерировать пять сценариев. Функция возвращает таблицу сценариев, где каждая строка представляет сценарий, и каждый столбец представляет запись Scenarios объект.

scenariosTbl = generate(sObj)
scenariosTbl=5×2 table
            variants                       dose            
    ________________________    ___________________________

    [1×1 SimBiology.Variant]    [1×1 SimBiology.RepeatDose]
    [1×1 SimBiology.Variant]    [1×1 SimBiology.RepeatDose]
    [1×1 SimBiology.Variant]    [1×1 SimBiology.RepeatDose]
    [1×1 SimBiology.Variant]    [1×1 SimBiology.RepeatDose]
    [1×1 SimBiology.Variant]    [1×1 SimBiology.RepeatDose]

Поменяйте имя записи первой записи.

rename(sObj,1,'Insulin Impairements')
ans = 
  Scenarios (5 scenarios)

                         Name                  Content          Number
                 ____________________    ___________________    ______

    Entry 1      Insulin Impairements    SimBiology variants      5   
    x Entry 2    dose                    SimBiology dose          1   

  See also Expression property.

Создайте SimFunction объект симулировать сгенерированные сценарии. Используйте Scenarios возразите как вход и задайте плазменные концентрации глюкозы и инсулина как reponses (выходные параметры функции, которая будет построена). Задайте [] для входного параметра дозы начиная с Scenarios объект уже имеет информацию о дозировании.

f = createSimFunction(m1,sObj,{'[Plasma Glu Conc]','[Plasma Ins Conc]'},[])
f = 
SimFunction

Parameters:

                Name                Value         Type                            Units                   
    ____________________________    ______    _____________    ___________________________________________

    {'Plasma Volume (Glu)'     }      1.88    {'parameter'}    {'deciliter'                              }
    {'k1'                      }     0.065    {'parameter'}    {'1/minute'                               }
    {'k2'                      }     0.079    {'parameter'}    {'1/minute'                               }
    {'Plasma Volume (Ins)'     }      0.05    {'parameter'}    {'liter'                                  }
    {'m1'                      }      0.19    {'parameter'}    {'1/minute'                               }
    {'m2'                      }     0.484    {'parameter'}    {'1/minute'                               }
    {'m4'                      }    0.1936    {'parameter'}    {'1/minute'                               }
    {'m5'                      }    0.0304    {'parameter'}    {'minute/picomole'                        }
    {'m6'                      }    0.6469    {'parameter'}    {'dimensionless'                          }
    {'Hepatic Extraction'      }       0.6    {'parameter'}    {'dimensionless'                          }
    {'kmax'                    }    0.0558    {'parameter'}    {'1/minute'                               }
    {'kmin'                    }     0.008    {'parameter'}    {'1/minute'                               }
    {'kabs'                    }    0.0568    {'parameter'}    {'1/minute'                               }
    {'kgri'                    }         0    {'parameter'}    {'1/minute'                               }
    {'f'                       }       0.9    {'parameter'}    {'dimensionless'                          }
    {'a'                       }         0    {'parameter'}    {'1/milligram'                            }
    {'b'                       }      0.82    {'parameter'}    {'dimensionless'                          }
    {'c'                       }         0    {'parameter'}    {'1/milligram'                            }
    {'d'                       }      0.01    {'parameter'}    {'dimensionless'                          }
    {'Stomach Glu After Dosing'}        78    {'parameter'}    {'gram'                                   }
    {'kp1'                     }       2.7    {'parameter'}    {'milligram/minute'                       }
    {'kp2'                     }    0.0021    {'parameter'}    {'1/minute'                               }
    {'kp3'                     }     0.009    {'parameter'}    {'(milligram/minute)/(picomole/liter)'    }
    {'kp4'                     }    0.0618    {'parameter'}    {'(milligram/minute)/picomole'            }
    {'ki'                      }    0.0079    {'parameter'}    {'1/minute'                               }
    {'[Ins Ind Glu Util]'      }         1    {'parameter'}    {'milligram/minute'                       }
    {'Vm0'                     }    2.5129    {'parameter'}    {'milligram/minute'                       }
    {'Vmx'                     }     0.047    {'parameter'}    {'(milligram/minute)/(picomole/liter)'    }
    {'Km'                      }    225.59    {'parameter'}    {'milligram'                              }
    {'p2U'                     }    0.0331    {'parameter'}    {'1/minute'                               }
    {'K'                       }      2.28    {'parameter'}    {'picomole/(milligram/deciliter)'         }
    {'alpha'                   }      0.05    {'parameter'}    {'1/minute'                               }
    {'beta'                    }      0.11    {'parameter'}    {'(picomole/minute)/(milligram/deciliter)'}
    {'gamma'                   }       0.5    {'parameter'}    {'1/minute'                               }
    {'ke1'                     }    0.0005    {'parameter'}    {'1/minute'                               }
    {'ke2'                     }       339    {'parameter'}    {'milligram'                              }
    {'Basal Plasma Glu Conc'   }     91.76    {'parameter'}    {'milligram/deciliter'                    }
    {'Basal Plasma Ins Conc'   }     25.49    {'parameter'}    {'picomole/liter'                         }

Observables: 

            Name                Type                 Units         
    _____________________    ___________    _______________________

    {'[Plasma Glu Conc]'}    {'species'}    {'milligram/deciliter'}
    {'[Plasma Ins Conc]'}    {'species'}    {'picomole/liter'     }

Dosed: 

    TargetName       TargetDimension   
    __________    _____________________

     {'Dose'}     {'Mass (e.g., gram)'}

Симулируйте модель в течение 24 часов и постройте данные моделирования. Данные содержат пять запусков, где каждый запуск представляет сценарий в объекте Scenarios.

sd = f(sObj,24);
sbioplot(sd)

ans = 
  Axes (SbioPlot) with properties:

             XLim: [0 25]
             YLim: [0 450]
           XScale: 'linear'
           YScale: 'linear'
    GridLineStyle: '-'
         Position: [73.8000 47.2000 342.2000 342.8000]
            Units: 'pixels'

  Show all properties

Если у вас есть Statistics and Machine Learning Toolbox™, можно также чертить демонстрационные значения для количеств модели от различных вероятностных распределений. Например, предположите что параметры Vmx и kp3, которые известны низкой и высокой чувствительностью инсулина, следуют за логарифмически нормальным распределением. Можно сгенерировать демонстрационные значения для этих параметров от такого распределения и выполнить сканирование, чтобы исследовать поведение модели.

Задайте логарифмически нормальный объект вероятностного распределения для Vmx.

pd_Vmx = makedist('lognormal')
pd_Vmx = 
  LognormalDistribution

  Lognormal distribution
       mu = 0
    sigma = 1

По определению, параметр mu среднее значение логарифмических значений. Чтобы варьироваться значение параметров вокруг основного значения (модели) параметра, установите mu к log(model_value). Установите стандартное отклонение на 0,2.

Vmx = sbioselect(m1,'Name','Vmx');
pd_Vmx.mu = log(Vmx.Value);
pd_Vmx.sigma = 0.2
pd_Vmx = 
  LognormalDistribution

  Lognormal distribution
       mu = -3.05761
    sigma =      0.2

Так же задайте вероятностное распределение для kp3.

pd_kp3 = makedist('lognormal');
kp3 = sbioselect(m1,'Name','kp3');
pd_kp3.mu = log(kp3.Value);
pd_kp3.sigma = 0.2
pd_kp3 = 
  LognormalDistribution

  Lognormal distribution
       mu = -4.71053
    sigma =      0.2

Теперь задайте объединенное вероятностное распределение, чтобы чертить демонстрационные значения для Vmx и kp3 с порядковой корреляцией, чтобы задать некоторую корреляцию между этими двумя параметрами. Обратите внимание на то, что это предположение корреляции в целях рисунка этого примера только и не может быть биологически релевантным.

Сначала удалите запись вариантов (запись 1) от sObj.

remove(sObj,1)
ans = 
  Scenarios (1 scenarios)

               Name        Content        Number
               ____    _______________    ______

    Entry 1    dose    SimBiology dose      1   

  See also Expression property.

Добавьте запись, которая задает объединенное вероятностное распределение с матрицей порядковой корреляции.

add(sObj,'cartesian',["Vmx","kp3"],[pd_Vmx, pd_kp3],'RankCorrelation',[1,0.5;0.5,1])
ans = 
  Scenarios (2 scenarios)

                    Name           Content              Number   
                    ____    ______________________    ___________

    Entry 1         dose    SimBiology dose           1          
    x (Entry 2.1    Vmx     Lognormal distribution    2 (default)
    + Entry 2.2)    kp3     Lognormal distribution    2 (default)

  See also Expression property.

По умолчанию номер выборок, чтобы чертить от совместного распределения определяется к 2. Увеличьте число выборок.

updateEntry(sObj,2,'Number',100)
ans = 
  Scenarios (100 scenarios)

                    Name           Content            Number
                    ____    ______________________    ______

    Entry 1         dose    SimBiology dose            1    
    x (Entry 2.1    Vmx     Lognormal distribution     100  
    + Entry 2.2)    kp3     Lognormal distribution     100  

  See also Expression property.

Проверьте что Scenarios объект может быть симулирован с моделью. verify функционируйте выдает ошибку, если какая-либо запись не решает исключительно к объекту в модели, или содержимое записи имеет противоречивые длины (объемы выборки). Функция выдает предупреждение, если многократные въезды решают к тому же объекту в модели.

verify(sObj,m1)

Сгенерируйте сценарии симуляции. Постройте демонстрационные значения с помощью plotmatrix. Вы видите значение Vmx варьируется вокруг его значения модели 0.047 и тот из kp3 приблизительно 0,009.

sTbl = generate(sObj);
[s,ax,bigax,h,hax] = plotmatrix([sTbl.Vmx,sTbl.kp3]);
ax(1,1).YLabel.String = "Vmx";
ax(2,1).YLabel.String = "kp3";
ax(2,1).XLabel.String = "Vmx";
ax(2,2).XLabel.String = "kp3";

Симулируйте сценарии с помощью того же SimFunction, который вы создали ранее. Вы не должны создавать новый объект SimFunction даже при том, что объект Scenarios был обновлен.

sd2 = f(sObj,24);
sbioplot(sd2);

По умолчанию SimBiology использует случайный метод выборки. Можно изменить его в латинскую выборку гиперкуба (или sobol или Холтон) для более систематического заполняющего пространство подхода.

entry2struct = getEntry(sObj,2)
entry2struct = struct with fields:
               Name: {'Vmx'  'kp3'}
            Content: [2×1 prob.LognormalDistribution]
             Number: 100
    RankCorrelation: [2×2 double]
         Covariance: []
     SamplingMethod: 'random'

entry2struct.SamplingMethod = 'lhs'
entry2struct = struct with fields:
               Name: {'Vmx'  'kp3'}
            Content: [2×1 prob.LognormalDistribution]
             Number: 100
    RankCorrelation: [2×2 double]
         Covariance: []
     SamplingMethod: 'lhs'

Можно теперь использовать обновленную структуру, чтобы изменить запись 2.

updateEntry(sObj,2,entry2struct)
ans = 
  Scenarios (100 scenarios)

                    Name           Content            Number
                    ____    ______________________    ______

    Entry 1         dose    SimBiology dose            1    
    x (Entry 2.1    Vmx     Lognormal distribution     100  
    + Entry 2.2)    kp3     Lognormal distribution     100  

  See also Expression property.

Визуализируйте демонстрационные значения.

sTbl2 = generate(sObj);
[s,ax,bigax,h,hax] = plotmatrix([sTbl2.Vmx,sTbl2.kp3]);
ax(1,1).YLabel.String = "Vmx";
ax(2,1).YLabel.String = "kp3";
ax(2,1).XLabel.String = "Vmx";
ax(2,2).XLabel.String = "kp3";

Симулируйте сценарии.

sd3 = f(sObj,24);
sbioplot(sd3);

Восстановите предупреждение настроек.

warning(warnSettings);

Входные параметры

свернуть все

Сценарии симуляции, заданные как SimBiology.Scenarios объект.

Имя записи или индекс, заданный как вектор символов, строка или скалярное положительное целое число. Можно также задать имя подзаписи.

Если вы задаете индекс, это должно быть меньшим, чем или равным количеству записей в объекте.

Типы данных: double | char | string

Новое имя для записи, заданной как вектор символов или строка.

Пример: 'k2'

Типы данных: char | string

Индекс записи, заданный как скалярное положительное целое число. Индекс записи должен быть меньшим, чем или равным количеству записей в объекте.

Типы данных: double

Подындекс записи, заданный как скалярное положительное целое число. Подындекс должен быть меньшим, чем или равным количеству подзаписей в записи.

Типы данных: double

Выходные аргументы

свернуть все

Сценарии симуляции, возвращенные как Scenarios объект.

Введенный в R2019b