How to introduce a delay in a simbiology model?
6 views (last 30 days)
Show older comments
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/962840/image.jpeg)
I have a model here for transcription and translation which I am trying to fit to data containing a column for mRNA and for protein.
TsR and TlR are transcription and translation resources.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/962845/image.jpeg)
The data has a delay and is pretty sigmoidal. The michaelis-menten based ODEs I used don't fit. How do a introduce that delay time factor so that it fits by recognizing the t-t0 time delay? (mS or GDmS is the protein)
Data attached.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/962850/image.jpeg)
0 Comments
Answers (1)
Arthur Goldsipe
on 13 Apr 2022
SimBiology does not directly support delays. One approach would be a more mechanistic model of the delay. For exampe, you might try switching to Hill kinetics to see if that can reproduce the sigmoidal response. Alternatively, you could implement the model with basic MATLAB code and use dde23 to solve the equations.
2 Comments
Jeremy Huard
on 14 Apr 2022
One way to do this in SimBiology would be to approximate the delay with a chain of reactions of type
with a reaction rate
where ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/964535/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/964525/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/964530/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/964535/image.png)
sbioloadproject('timeDelay_reactionchain.sbproj')
cs = getconfigset(m1);
cs.SolverOptions.OutputTimes = 0:0.05:25;
simdata = sbiosimulate(m1);
[time,data] = selectbyname(simdata,{'y','ydelay'});
plot(time, data(:,1), time, data(:,2));
xlabel('Time [hrs]');
legend('y','y_{delay}');
title('Delay = 2.5 hrs');
grid on;
set(gca, XLimitMethod="padded", YLimitMethod="padded");
Alternatively, one could write a function that keep tracks of the previous values of y and interpolate between them to find
.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/964545/image.png)
I hope this helps.
Jérémy
Communities
More Answers in the SimBiology Community
See Also
Categories
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!