Skip to content. | Skip to navigation

Personal tools

Sections
You are here: Home

 

Evolvix: simplify accurate modeling


To the best of our knowledge and long search, Evolvix seems to become
the first general-purpose programming language that
is being designed by biologists for biologists.
Thus, three priorities guide language design:
Simplify
a lot
to
:

Simplify being user-friendly,

Simplify being extensible,

Simplify being stable.



Why?


Because biology is the discipline of diversity and complexity.
Without a programming language focus on simplicity, it is not possible
to write a programming, modeling, or data language that
works across all of biology and thus is a
true general-purpose language. 

 

How?


By DesignFlip.
This new programming language development methodology was designed for the purpose
of improving the efficiency of the architectural work required for developing
any long-term stable extensible user-friendly language.
To find out more about it, see an overview
 here, and more details here, and here.

 

 

But does Evolvix work? What does it do now? 

The thoughts and discussions required for adding long-term stability and general-purpose programming facilities to Evolvix in the simplest possible way are not everybody's cup of tea. Some of it is easy for those who like it, which often includes non-programmers with a general interest in what computers do. Some of it is very abstract, in particular, when working out the inner connections between diverse concepts. Some of it is very mathematical, or very discipline-oriented aiming to retrieve required insights and approaches already developed by one of the 16 or so disciplines from which Evolvix development has been informed by now. However, sometimes people ask about something concrete among all those abstractions: what does Evolvix do?

Right now, the downloadable Evolvix prototype can simulate a certain, broadly-useful type of biological interaction models and simplifies the efficient recording of time series from those simulations. It can switch between different underpinning assumptions for such simulations, namely whether a simulation should treat half an individual as dead or as alive. It sounds simple, but the mathematical and computational implications are huge, and the results generated can be very different. For example, the following two time series plots are produced by the same Evolvix model, but simulated by two different modeling methods that differ in their basic assumptions about the divisibility of individuals. The two plots represent a predator-prey model that predicts how many predators and prey organisms will exist at any point in the future. Simulations are based on rates of birth and death of predators and prey and their interactions.

  • Forecast of averages only: The plot on the left was produced by a method assuming that half an organism is alive - as done in deterministic ordinary differential equations.
  • Forecast of variability too: The plot on the right is from a method that assumes in-divisible 'individual' organisms - as done in stochastic simulation algorithms that treat half an organism as dead. Such simulations must roll the dice to determine when events happen during a simulation, because they are no longer as flexible as the math assumes in the other model

 

Oscillating systems are frequent in biology, from molecular circadian clocks to predator-prey systems. This time series is computed as if the system was deterministic, ignoring all possible sources of variability.Oscillations in stochastic systems can deviate substantially from what would be expected in an equivalent deterministic system

 

Evolvix greatly simplifies switching between these two methods of simulation for any given model.

 

These results are from the initial prototype of Evolvix. It simplifies building models of systems with parts and actions that are well described by a formalism, which might be described as 'pure mass-action without use of concentrations'. The prototypic Evolvix compiler produces simulation code it can run for arbitrary models of this type as specified in a user-friendly syntax. It can efficiently record time series that are then stored in a form that simplifies the visualization of their useful parts with external tools.

So, does Evolvix work? Yes, in principle, and it is reasonably user-friendly for the things it does. But it turns out that it is neither as extensible nor as long-term stable a language, as biologists in general rightly expect of tools that belong to a modern IT infrastructure. For example, it would be very useful to teach the compiler a bit of arithmetics and to deliver better error messages. Both would be very simple to implement in isolation, or if long-term stability was not important. However, long-term backwards compatibility has been a vital part of the Evolvix vision, and combining these seemingly simple requirements with the level of Evolvix user-friendly language design that some of the working parts of Evolvix already deliver in this prototype, that creates conundrums, which eventually resulted in the development of the new approach to programming language design, which has been tested and is now used for Evolvix. There are many unexpected aspects to this and solid reasons for why things are that way, but they are not easy to explain fast. It turns out that simplicity is easy to consume, but not easy to produce. Details are discussed elsewhere. Progress on the abstract work required for long-term stability has been phenomenal and is ongoing; turning each iteration into a full downloadable implementation would greatly slow down overall development. Simplicity is key. Finding it is hard. 

That is why Evolvix keeps evolving. And in order to avoid frustrating everybody who writes code, the DesignFlip, Evolvix' new paradigm for programming language development, is being used for developing a solid foundation for supporting its future evolution. Once sufficiently stabilized, the functionality of the downloadable initial prototype of Evolvix will be moved to this new foundation. It can then test there a more sustainable way of evolving code designed to make Evolvix work over the long-term. Current work uses prefactoring to focus on defining an evolutionary software architecture design that allows Evolvix to keep evolving - and no longer breaking the code of each new generation of biologists. Insights from how evolution works in biology are being included along the way. In due time the current prototypic functionality will be moved to the new underpinning versioning system that has been designed for supporting the long-term evolution of code towards greater stability. Then one general-purpose programming paradigm after another will be added to make Evolvix as useful and general a tool as biology deserves (and everybody else). Until then, you can initial prototype of Evolvix can be downloaded here

 

More on what Evolvix is     |     What can Evolvix do for you?     |    Evolvix vision

 

 

Sponsor Logo - National Science Foundation