Multiple Stages in SimBiology Model?

4 views (last 30 days)
Patrick Lally
Patrick Lally on 22 Jul 2023
Answered: Fulden Buyukozturk on 24 Jul 2023
Hi All,
I have some experimental data monitoring protein-ligand binding in real time that I'd like to fit in SimBiology. For now I'm trying to set up my model and create simulations that exhibit the same behavior, and then fit the real data to that model. I have extensive MATLAB experience but am fairly new to SimBiology so I have a couple questions to get me started here.
1) Is there a way to create "stages" of a model in SimBiology? Perhaps some kind of time-based repeated assignment? More conceretely, our experimental data comes from 2 stages of an experiment, with different initial conditions. Can I create some kind of rule that says "if t == <stage 2 start time>, then set A = 0, B = 0, etc..."?
2) Is there a way to create rules that say certain rate constants must be related to each other somehow? For example, we've considered making an assumption that all forward rate constants are the same (e.g., kf1 = kf2 = kf3 = kf4). Does SimBiology allow this?
To provide some more detail, I've included a general schematic of the model we're currently looking at below. Essentially, we have a protein (A) that has 2 different ligand binding sites (one for B one for C).
In stage 1, we start in the upper-left corner of the schematic. A & B are non-zero (A is known but B is not necessarily known), and in this case, C = 0, so we really only observe the reaction on the left in the dashed box. At the end of stage 1, we move our sensor to a new location, where A & B are now 0, and C is some known concentration (potentially 0). In this case, AB should start at whatever it finished stage 1 at, so I'm wondering if there's a way I can do a repeated assignment to say "if t == <stage 2 start>, set A = B = 0, C = some value".
I think having those questions answered would get me a long way towards fitting this data. That said, when I do get to that point, I can imagine a third issue arising. In our case, we're using a single protein A, with several B ligands, and one C ligand (at different concentrations). Our expectation is that changing B will change the rates for the reactions on the left and right-sides of the schematics (since those involve A/B binding/unbinding), but not the top and bottom reactions (since those are only for A/C binding/unbinding).
If I have a few datasets for a single A/B pair, and several C concentrations, I know I can pool those to fit one parameter set to all of the data, but if I now expand to different A/B pairs, and C concentrations, is there a way to force the rates for reactions 3 & 4 to be fixed across all data, while making reactions 1 & 2 to be grouped by the A/B pair?
I hope that makes sense, if there's any more information I can provide to help clarify things please let me know.
And thanks in advance for any help offered!

Answers (1)

Fulden Buyukozturk
Fulden Buyukozturk on 24 Jul 2023
Hi Patrick,
1) You can use Events to implement such dicrete changes. Please see this page for details: "time" indicates simulation time and you can use that in your event trigger. For example, you an write your event trigger as time >= stage1EndTime, and event function as A=0; B=0; C=<somevalue> . Events are triggered when a condition becomes true from false, so you would need to write your time trigger with a "time >=" instead of "time <=".
2) You can use Initial Assignment rules to initialize quantity values and set them to be equal. You could write initial assignments as: kf2 = kf1; kf3 = kf1; kf4 = kf1. For example:
m = sbiomodel('m')
paramlist = {'kf1', 'kf2', 'kf3', 'kf4'}
for i:1:length(paramlist)
addparameter(m, paramlist{i})
addrule(m, 'kf2 = kf1', 'initialAssignment')
addrule(m, 'kf3 = kf1', 'initialAssignment')
addrule(m, 'kf4 = kf1', 'initialAssignment')
3) If I understand your third question correctly, you would like to estimate rate constants for rxn 1, 2, 4 individually per A/B pair group and pool the rate constants for rxn 3 across all groups. You can do this using a category specific fit. Please see this example:
If you're using the Model Analyzer app, you can configure the Estimated Parameters table's Category Variable column.


Find more on Scan Parameter Ranges in Help Center and File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!