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

Hello,

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', '==', ...
parameterNames);

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

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

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.

-pax

"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]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.