Simbiology interface: only plot time course simulations? or, it is possible to plot, for example, binding curves without leaving the interface?

The question arises because I simulated equilibrium binding isotherm of the Exclusive/Monod-Wyman-Changeaux model for cooperativity in Simbiology interface. The result of the simulation is a Datasheet that contain the simulating data (concentration of all complexes between ligand and receptor in equilibrium, values of binding density and free ligand concentration at each total ligand concentration). Binding density and free ligand concentration data (to plot binding curve or binding isoterm) are exported to the Matlab workspace and then we construct the plot from the workspace of the principal program. Can I plot, for example, this data directly from the sSmbiolgy interface without the need to export them to the workspace? How?
I attached a file that shows the Simbiology protocol of such an example, the Datasheet image and the plot obtained from the Matlab workspace.
Thanks, a lot
Luis B.

 Accepted Answer

the definition of your observables let me think that they will change over time and thus, that they are not scalar observables. But I see that you simulate with stopTime=0. Is this what you intended to do?
But let me address your specific question about creating this plot in the Model Analyzer App.
This type if plot is created by default after a scan whenever an observable returns scalar values. SimBiology creates a scatter plot for each observable vs each scan parameter. But again the observables need to be scalar. In you specific case, the observable data will contain only one value because stopTime is set to 0 but if you were to simulate for a larger stopTime, your observable data will be a time-dependent vector. So, SimBiology sees your observables as time-dependent and not scalar.
I recommend you add a new observable nu_0 = nu(end). nu_0 will be a scalar and SimBiology will create a plots nu_0 vs L after running the scan program.
I hope this helps.
Jérémy

4 Comments

Note that if you do have scalar observables in a scan progran, you can also create this plot manually by selecting the scalar entry in the LastRun folder of your program in the Model Analyzer App and then select the 'plot matrix' plot in the plot gallery.
Thanks a lot, Jérémy,
Here are my comments:
1) the definition of your observables let me think that they will change over time and thus, that they are not scalar observables.
1') I considered that the steady state concentration of each complex (RL,RL1, RL2, etc.) (which is identical to the equilibrium concentration) are time independent because, in that condition, (for example, for the binary complex RL) [d(RL)/ dt]=0. That's why I thought that by setting ‘steady-state’ in the app, Matlab only calculates the concentrations that satisfy the algebraic equations (from setting the differential equations equal to zero instead of numerically resolve the differential equations of each complex and obtaining the vector of concentrations over time).
2) But I see that you simulate with stopTime=0. Is this what you intended to do?
2') Yes, right. That's what I did. Because for the steady state condition, it is the same to set Time=0, as any number or time interval, because it is time independent.
3)This type of plot is created by default after a scan whenever an observable returns scalar values. SimBiology creates a scatter plot for each observable vs each scan parameter. But again the observables need to be scalar. In you specific case, the observable data will contain only one value because stopTime is set to 0 but if you were to simulate for a larger stopTime, your observable data will be a time-dependent vector. So, SimBiology sees your observables as time-dependent and not scalar.
3') In our case, the observable is nu (binding density) and the scan parameter is [Lo] (total, or initial, concentration of L that is setting in ‘GENERATE SAMPLES’). However, we need to plot nu vs [L] (the concentration of L in equilibrium -or steady-state- when the total concentration is [Lo]) whose value is provided in LastRun folder.
On the other hand, it would be interesting that Simbiology distinguish with a different nomenclature, between [Lo] (initial concentration of L, setting in 'generate samples') from [L] that is the instantaneous free concentration of L.
In our case, I built the observable Lo= L + RL + 2* RL2 + 3* RL3 + 4* RL4, to obtain the [Lo] values as a series of the Datasheet.
4) I recommend you add a new observable nu_0 = nu(end). nu_0 will be a scalar and SimBiology will create a plots nu_0 vs L after running the scan program.
4') Dear Jérémy, I followed your recommendation and built the observables nu_f =nu(end) and L_f= L(end) as seen in the attached images. Effectively, both are scalars. However, the app does not allow to graph them right there. As can be seen in the image, the Plot Matrix is not enabled when select both observables.
Best
Luis B.
there are a couple of points I would like to address:
Steady state computation:
you are correct that when a system reaches steady state at , . But if the concentrations were not carefully chosen for the system to be at steady state from the start.
So, simulating your system with stopTime=0 will not necessarily give you steady state values.
The steady state computation in SimBiology does the right thing: it will try to solve the system of equation algebraically. It it fails, it will run a simulation until a steady state is detected with some tolerance.
Nomenclature in SimBiology:
If a species was named L, you can use L in a repeated assignment, which will correspond to its time-dependent value L(t). If you use L in a initial assignment, it will denote its initial value L(0).
Now, when you choose a quantity in a scan program, SimBiology will set its value at the beginning of each simulation using the sampled values. So, if L is one of the quantities sampled in the scan program, you will effectively sample its initial value L(0).
Likewise, when you run a fit program and choose to estimate L, you will estimate the initial value of L.
Your model:
From what I see, the total concentration of L seems constant. There is no synthesis nor any elimination.
So, I would recommend to add a parameter Ltot which denotes the total concentration of L in the system.
Now, you can define L with a repeated assignment:
L = Ltot - RL - 2*RL2 - 3*RL3 - 4*RL4
Since L is determined by this equation, you can remove its associated ODE to avoid overdetermination. For that you can set its BoundaryCondition property to true. Please refer to this post for more information.
Plot:
Instead of selecting the two observables in the Browser individually, you need to select the row:
scalars, 1x1, table
Best,
Jérémy

Sign in to comment.

More Answers (0)

Communities

More Answers in the  SimBiology Community

Categories

Community Treasure Hunt

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

Start Hunting!