Drexel dragonThe Math ForumDonate to the Math Forum

Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.

Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Help to write a loop for SimBiology
Replies: 1   Last Post: Nov 22, 2012 10:56 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Ricardo Paxson

Posts: 5
Registered: 4/10/08
Re: Help to write a loop for SimBiology
Posted: Nov 22, 2012 10:56 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply


There are a few ways to do this, I will show you the most straight forward way:

function results = scanParameters(model, values, parameterNames)

MParam= sbioselect (model, 'Type', 'parameter', 'Where', 'Name', '==', ...

for i = 1:size(values, 1)
for j = 1:numel(MParam)
MParam(j).Value = values(i, j);

results(i) = sbiosimulate(model);
sprintf('Simulation failed for values %d', values(i, :));

This can be improved a bit but I hope it show how you can do this. It can be improved by doing some error checking, for example I assumed that values for the parameters are in rows but did not check.

Note that it is possible that a simulation will fail for some parameter values so I wrapped the call to sbiosimulate in a try catch.

The returned value is an array of objects that have your simulation values.

For example if the return is called 'results' you can plot things like this for the first simulation:

t = results(1).time;
x = results(1).data;

plot(t, x)

I hope this helps. Let me know if you have further questions.


"Jerry " <jerrycholo@gmail.com> wrote in message <k8isu4$nij$1@newscl01ah.mathworks.com>...
> Hello,
> I do have a model composed of 10 components and 16 parameters. I simulated the model and I got the outputs. But, in the next runs I would like to modify only three out of 16 parameters, including {'kn','ko','kp'}.
> Here is the command line that considers only parameters that need to be modified
> MParam= sbioselect (model, 'Type', 'parameter', 'Where', 'Name', '==', ...
> {'kn','ko','kp'});
> So there are 17 different values:
> values = [0 5e-07 1e-06 5e-06 1e-05 5e-05 0.0001 0.0005 0.001 0.005 0.01 0.05 0.1 0.5 1 5 10];
> Now, I would like to create all possible three combinations of these values:
> AllParams = nchoosek(values, 3)
> At each run, the parameters {'kn','ko','kp'} would take any given row of "AllParams" so at the end there should be 680 or ["1:size(AllParams, 1)"] different runs.
> May someone help me to write this loop and create 680 different "sbiosimulate"?
> Thanks,
> Jerry

Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© The Math Forum 1994-2015. All Rights Reserved.