Creating a cell growth model using SimBiology.

22 views (last 30 days)
I have been watching a few webinars and step-by-step tutorials on MathWorks on how to build models using SimBiology. Most of them relate to PK/PD models and there is one on the COVID-19 SIR model. All are very interesting and I even tweaked the model from the uploaded files. However, I am more interested with the cell growth model that involves a cell (which concentration changes with time) and within the cell compartment (which represented by a compartment in SimBiology) are the nutrients, proteins and enzymes that work to produce the energy required by the cell. Thus, the results of the simulation would be an increase in the number of cells (i.e the compartment) and the reduction of nutrients (species). Could we actually make the compartment as one of the active species, where the species also change with time? Hope any of the MathWorks consultants could help. Much thanks.

Accepted Answer

Arthur Goldsipe
Arthur Goldsipe on 14 Dec 2020
Hi,
The capacity of a compartment can vary during the course of a simulation. To do this, you must set the Constant property to false (or the ConstantCapacity property in SimBiology versions before R2019b). Then, you can change the compartment capacity using things like repeated assignment rules, rate rules, and events.
You cannot add additional components of any time (compartments, species, parameters, reactions, etc.) during the course of a simulation. So you cannot directly simulate an increasing number of cells if you need to treat each of them as distinct entitites in your model.
However, you may still be able to model cell growth in SimBiology. The feasibility and exact approach will depend on your goals, but let me offer an example:
Create a SimBiology model of a single growing cell and add a parameter to the model that counts the number of times the cell has divided. Add an event to implement cell division. This event divides each compartment volume and the amount of each species by 2, and increments the counter for the number of cell divisions. Then, simulate your model for the desired time and analyze the results.
  3 Comments
Arthur Goldsipe
Arthur Goldsipe on 15 Dec 2020
I should have mentioned that compartment dimensions must be volume, area, or length. And the dimensions of each species in a compartment must be amount or concentration, where concentration is amount per volume if the compartment dimensions are volume, and so forth.
I do see how it could be useful to normalize a model in some other way (such as by mass or number). The SimBiology team is considering this enhancement for the future. In the mean time, you can still build your model on the basis of 1 gram or 1 cell, even though you can't explicitly include this information in the units.
Mohamad Uzir
Mohamad Uzir on 16 Dec 2020
Thanks for the info. I'll bear in mind on the different units used in the model and it'll be great if the team could also include the unit of mass for the compartment. Cheers.

Sign in to comment.

More Answers (1)

Achal Mahajan
Achal Mahajan on 1 Jun 2022
Edited: Achal Mahajan on 1 Jun 2022
Hi Mohamad,
Here is the sample implementation of the idea that Arthur has outlined above. Creating a SimBiology model with an event that model the cell division. In the code as soon as the time hits t = 2 in the simulation, the volume/area of the cell and it constituent's amount is divided by 2 mimicking cell division.
%Testing the solution that Arthur has specified by adding an event where
%the compartment and specie volume is halved when the cell undergoes
%division where cell is a compartment and there are organelles inside the
%cells which are treated as species in SimBio.
clear all;clc;close all;
model = sbiomodel('example');
model.addcompartment('cell', 1, 'CapacityUnits', 'liter', 'Constant', false);
model.addspecies('A', 'InitialAmount', 1);
r1 = addreaction(model,'A -> B');
kl = addkineticlaw(r1,'MassAction');
p1 = addparameter(model,'p1',0.5);
kl.ParameterVariableNames = 'p1';
% Adding the event
e1 = addevent(model,'time>=2','cell = cell/2');
e1 = addevent(model,'time>=2','A = A/2');
e1 = addevent(model,'time>=2','B = B/2');
sd = sbiosimulate(model);
sbioplot(sd);

Communities

More Answers in the  SimBiology Community

Categories

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

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!