Team:BCCS-Bristol/Modeling/Antos

From 2009.igem.org

(Difference between revisions)
(New page: =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 everyon...)
(ODE Solvers and Libraries already in existence)
Line 1: Line 1:
=Notes=
=Notes=
==ODE Solvers and Libraries already in existence==
==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...  
+
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====
====OdeToJava====
-
link here...
+
Really nice, but seems too advanced for what we need, would also require a few changes. Many people seem to use this, in fact it seems pretty standard across the board and appears to have been implemented in many scientific projects (need to check this, they might just have the same name).
-
ok but too complicated
+
ODE section on [http://www.netlib.org/ode/ Netlib] and [http://www.netlib.org/ode/odeToJava.tgz OdeToJava].
 +
[www.cs.usask.ca/~spiteri/students/mpatterson_bcs_thesis.ps  The thesis] (Murray D Patterson) which documents the creation of this library.
 +
 
 +
OK [http://magnet.systemsbiology.net/software/ISBJava/ this group] seem to use parts of it and are in fact modelling GRNs (handy). Why do I find these things when I'm writing rather than a week ago?
====ImageJ, BIJ====
====ImageJ, BIJ====
-
notes notes notes...
+
Good descriptions, Javadoc etc but I think there was a problem that they use OdeToJava and don't actually include the source code, so its not really a new library as such.
 +
 
 +
Links:
 +
 
 +
[http://rsb.info.nih.gov/ij/ ImageJ]
-
http://bij.isi.uu.nl/
+
[http://bij.isi.uu.nl/ BIJ]
====Similarly====
====Similarly====
 +
I really like this but again it goes into some advanced methods which are not really necessary for our current purposes.
http://www.ee.ucl.ac.uk/~mflanaga/java/RungeKutta.html
http://www.ee.ucl.ac.uk/~mflanaga/java/RungeKutta.html

Revision as of 17:48, 12 August 2009

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

Really nice, but seems too advanced for what we need, would also require a few changes. Many people seem to use this, in fact it seems pretty standard across the board and appears to have been implemented in many scientific projects (need to check this, they might just have the same name).

ODE section on Netlib and OdeToJava. [www.cs.usask.ca/~spiteri/students/mpatterson_bcs_thesis.ps The thesis] (Murray D Patterson) which documents the creation of this library.

OK this group seem to use parts of it and are in fact modelling GRNs (handy). Why do I find these things when I'm writing rather than a week ago?

ImageJ, BIJ

Good descriptions, Javadoc etc but I think there was a problem that they use OdeToJava and don't actually include the source code, so its not really a new library as such.

Links:

ImageJ

BIJ

Similarly

I really like this but again it goes into some advanced methods which are not really necessary for our current purposes.

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).