Team:BCCS-Bristol/Modeling/Antos

From 2009.igem.org

Revision as of 17:28, 12 August 2009 by Amaty (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contents

Notes

ODE Solvers and Libraries already in existence

Looking around the web it seems that (slightly surprisingly) ODE solvers are not readily available. Maybe this is because everyone loves C, I don't know, nonetheless there were some Java examples available...

OdeToJava

link here...

ok but too complicated

ImageJ, BIJ

notes notes notes...

http://bij.isi.uu.nl/

Similarly

http://www.ee.ucl.ac.uk/~mflanaga/java/RungeKutta.html

In Conclusion...

I had already coded the Runge Kutta part of the BSim solvers by the time I found these, but it is interesting to see how other people have incorporated this standard algorithm. As it is essentially a simple piece of code I would say that our implementation is currently sufficient. As BSim gets more advanced, it may be necessary to incorporate some of these more complex libraries and routines, but with the custom features we require I think it is best to stick with coding our own methods.

  • Most of the available libraries start with 4th order runge kutta and get more complicated (stiffness, predictor-corrector, variable time steps), which is too advanced for our currnt needs.
  • BSim operates on a fixed time step basis, therefore all we really require is an algorithm for numerically solving an ODE or system of ODEs for a single time step. I suppose we could just re-use certain methods from other libraries rather than the parts which iterate over a longer period of time, however:
  • From what I have seen, GRNs and the sort of chemical reactions we are currently concerned with operate over a time scale of tens of minutes (less than this is quite rare) to a few hours. In contrast BSim uses a small time step of maximum 0.01s (even this is considered large). If we are integrating GRN equations with such a small time-step I believe a complicated ODE algorithm is not really necessary (apart from maybe to optimise speed, however this should be a later step).
  • We would like to make GRNs interact with the chemical field, so it would seem wise to adapt our own simple code to fit nicely with what is already there rather than figuring out new code.
  • We would like to simulate stochasticity in our GRNs, and none of the libraries I found could do this natively. This is another layer of complexity and is a fairly varied field so I think it is best to implement a solution for our specific situation. Also we already have some built in functions for random variables which we can reuse.
  • ODEs are not just for GRNs! We can use a very simple and adaptable ODE implementation to help us model other aspects of biological systems, in fact we have already thought about how this sort of approach affects the modelling of vesicles (though this would interact with the GRN approach).