Search All of the Math Forum:

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

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

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

 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

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

Date Subject Author
11/21/12 Jerry
11/22/12 Ricardo Paxson