我正在使用Simbiology来构建模型。我实际上是从SBML文件中读取模型。这是我加载模型后得到的结果
M1
SimBiology模型 - Model1
模型组件: 隔间:1 事件:0 参数:200 反应:200 规则:0 物种:100
然而,
m1.Parameters给出
ans =
空矩阵:0乘1
我相信的原因是因为所有参数都有“反应”范围。如何通过命令行使所有这些“模型”范围?
另外,我无法通过Reaction Object访问参数(值或范围)。如何访问参数值和范围(如果它的范围是反应)?
非常感谢任何帮助。
谢谢! 阿霞
P.S。 - 我还在Mathworks新闻阅读器(用户论坛)上发布了相同的查询。希望有人从那里或这里回复。
答案 0 :(得分:2)
Pramod还在用户论坛上发布了答案,但我想在此处复制以获得完整性。
-Arthur
以下代码说明了如何将参数范围从反应更改为模型。
%加载lotka。 m1 = sbmlimport(' lotka')
%模型级别没有参数 m1.Parameters
%将参数从反应复制到模型 对于i = 1:numel(m1.Reactions) p = m1.Reactions(i).KineticLaw.Parameters; copyobj(P,M1) 删除(P) 端
m1.Parameters
请注意,如果有多个具有相同名称的参数,则会出现错误,因为模型需要参数的唯一名称。
如上面的代码所示,您可以通过
访问反应范围参数reaction.KineticLaw.Parameters
答案 1 :(得分:1)
您可能不希望将参数的范围更改为模型只是为了查看它们 - 这会改变模型的结构并可能使其无法模拟。
您可以使用命令
查看模型中的所有参数sbioselect(m1, 'Type', 'parameter')
当参数的范围限定为Reaction而不是模型时,其父级是Reaction的KineticLaw,而不是Reaction本身。因此,如果r
是您感兴趣的反应,则可以使用r.KineticLaw.Parameters
获取其参数。
希望有所帮助!