A system with multiple functions might reveal features of a complex system. Evolutionary methods were used to construct reaction networks with multiple functions. The networks were analyzed for modularity – regions in the network that are utilized by different functions. Individual molecular species were removed as well as perturbed to see how each species affects the rest of the network.
Reaction network capable of performing chemotaxis was also evolved in hopes to construct a complex network. The chemotaxis was given multiple functions to see whether that gives rise to modularity.
Research conducted by Deepak Chandran
Biological systems are inherently complex in nature. One can dissect this complexity by transforming a biological system in to an equivalent engineering system. Once we are done with this transformation we can use the well established engineering principles to gain a better understanding of the biological systems. So the problem now lies in identifying the components in biological systems akin to engineering systems. To address this problem we are constructing a library of biological motifs (e.g., oscillators, filters, toggle switches etc.) by using in silico evolution techniques.
Research conducted by Sri Rama Krishna Paladugu
The program Lakhesis was developed to evolve chemical networks with the ability to perform simple mathematical computations. In the future the program will be used to develop novel networks and to investigate the evolution of regulated networks.
Read more: Lakhesis
Research conducted by Anastasia Deckard
A C based library specifically designed to evolve biochemical networks is under development. Further details can be found at:
Evolution Library
Source forge site itself:
Source Forge Site
This is a simple Jarnac script that models an evolved XOR gate based on a mass-action network. The solution involves 2 AND gates, 1 OR gate and 1 NOT gate (See http://www.art-sci.udel.edu/ghw/phys245/05S/classpages/logic-example.html for the circuit diagram). It is the most efficient design possible.
p = defn cell
$x -> z; k0*x;
$y -> z; k0*y;
$x + $y -> w; k2*x*y;
z + 2w -> 2w; k3*w^2*z;
z -> $w1; k5 * z;
w -> $w2; k6 * w;
end;
p.k0 = 2.0
p.k2 = 1.0
p.k3 = 0.1
p.k5 = 1.0
p.k6 = 1.0
p.x = 0;
p.y = 0;
// High level is indicated by a concentration of 10
// Low level by 0
m1 = p.sim.eval (0, 20, 100, [<p.Time>, <p.x>, <p.Y>, <p.z>]);
// Apply 0, 1
p.x = 0;
p.y = 10;
m2 = p.sim.eval (20, 40, 100, [<p.Time>, <p.x>, <p.Y>, <p.z>]);
// Apply 1, 0
p.x = 10;
p.y = 0;
m3 = p.sim.eval (40, 60, 100, [<p.Time>, <p.x>, <p.Y>, <p.z>]);
// Apply 1,1
p.x = 10;
p.y = 10;
m4 = p.sim.eval (60, 80, 100, [<p.Time>, <p.x>, <p.Y>, <p.z>]);
m = augr(m1,m2);
m = augr(m,m3);
m = augr(m,m4);
graph (m);
Network diagram is shown below. x and y are the inputs and z the output. The two our arcs collectively represent the OR function, the bimolecular reaction in the left center is the AND function and the bimolecular reaction to the right center is the NOT function.
Deepak Chandran
p = defn cell
s4 + s1 -> s4; s4*s1*2;
s4 + s5 -> s6; s4*s5*1;
s6 -> s1; s6*1;
s1 + s3 -> s6 + s5; s1*s3*1;
s4 -> s3; s4*1;
$n6 -> s4; n6*1;
end;
p.s1 = 0.0;
p.s3 = 0.0;
p.s4 = 0;
p.s5 = 0;
p.s6 = 0.5;
p.n6 = 4;
m = p.sim.eval (0, 100, 500, [<p.time>, <p.s1>, <p.s3>, <p.s4>, <p.s5>, <p.s6>]);
graph (m);