Skip to content. | Skip to navigation

Personal tools

Sections
You are here: Home

 

Evolvix: accurate modeling made easier


Evolvix is the first general-purpose programming language that is being designed by biologists for biologists.
This means one thing for us as language designers.
Simplify.

A lot. Then find ways to do more with less. Rework to make things easier. It even cuts coding time, like the relevant books say.
When you think you can't improve, write a small sample of code, and ask a few potential users to interpret it for you and explain why.
You will probably be surprised. And if you care about creating a user-friendly language, this is likely to send you back to the drawing board.
With good, justifiable reasons. This is not about fuzzy perfectionism or trying to please everybody. This is about hard-nosed values.
Like accuracy, correctness, functionality, performance, expressivity, security, efficiency, maintainability, stability, provenance.
Or about reducing how the hidden costs of poor software design waste the time of our lives, and a fortune on top.

Biology is the ultimate science of complexity.
It's diversity is so staggering, that one can ask, how much of it we will ever comprehend.
Wherever the limits, this is certain: We have more than enough to do with biology's inherent complexity.
We do not need the complications added by unnecessarily complex software.

 

How do we know?
Most of us are biologists. We would love to understand more of the biology we study.
Experiments are a great way of answering many questions. That is, once we've analyzed the new data.
Which usually requires more than a pocket calculator these days. Still, many are impossible to decide by experiment.
 They could be addressed by simulations. That is, if these were not so hard to put together. "Use the right language for the right task."
That is what professional programmers often say. The hard-core programmers among us know from painful experience, how very true that is.
Trivial tasks in the "right" language, can become impossibly hard, error prone, and time consuming in the "wrong" one.
Only which general-purpose programming language was made for biology? Many of us thought, some of us should know.
But some of us didn't, and so started some years ago to ask anybody who looked like they might know. Still nothing.
We found special-purpose languages. We found dedicated code libraries for certain areas in biology.
We did not find a general-purpose programming language made for biology.
We are the Evolvix Thinkers, and we will change that.

 

What makes Evolvix unique?

 

 Evolvix is a new model description language and modeling platform that is shaped by Evolvix Thinkers using an approach specifically developed for this purpose: the Flipped Programming Language Design approach.

In the cartoon-comparison below we highlight the differences between Evolvix and a more traditional approach to programming language design:

 

A brief overview of the unconventional approach to designing the general-purpose programming capabilities of Evolvix.

 

More on what Evolvix is     |     What can Evolvix do for you?     |    Evolvix vision
Evolvix is not your typical programming language, and this is not your typical programming language website. The aim to enable general-purpose programming does not mean that you can make assumptions. Biology is different. In fact (almost) everything in biology is different from (almost) everything else. As a rule of thumb, if you can think it, it probably exists somewhere in biology, if only as a rare special case. And if it exists, then simulating it efficiently will eventually become a goal for Evolvix. This is a tall order, we know. It requires handling an extraordinarily broad diversity of types and exceptionally many exceptions. Therefore, we cannot make many assumptions either during development. Whenever we try, most shortcuts we hope for turn into box-canyons we have to return from. Life is too short for this. Therefore, we changed the approach.
The Evolvix software development approach has a name that captures what it stands for. Software evolved, it is evolving, and will keep evolving. So we better get used to software evolution and organize our systems accordingly to avoid the equivalent of mass-extinctions whenever a new (incompatible) must-have product is introduced. Here mass-extinction is not only referring to unnecessarily early abandonment of perfectly usable systems because the new product has features. Mass-extinction is also referring to the dependencies that become obsolete. The new software that requires you to buy a new PC not only kills your (working) old PC and your scanner that refuses to speak to your new PC. A much more hidden part of these mass-extinctions affects valuable information in your brain: all the carefully trained neurons that manage for you the compiled details of how to use "your computer", they have now also become obsolete and their information will eventually die. Luckily, the neurons in your brain don't have to die; you can re-train them to learn something new. However, that takes time, and you might want to use your time for better things than constantly re-programming your neurons to keep up with the latest Silicon Valley hype. What does this have to do with Evolvix?
Evolvix is being architected a very specific purpose. It might be useful for a million other things and we might even help you with some of them. After all, Evolvix is a genuine general-purpose programming language. However, that should never obscure the fact that it serves a very special purpose:
Evolvix aims to enable researchers to build on the results of other researchers in mechanistic Evolutionary Systems Biology (EvoSysBio) in ways that are long-term stable.

These special requirements have made it necessary to pioneer an entirely new methodology for developing Evolvix. We call it the Flipped Programming Language Design Approach. It places an extra-ordinary emphasis on asking potential future users of a programming language, what they might want to see in that language and how they might interpret its syntax if they saw it today. As authors of texts for a broad audience know, it takes much effort to find words to communicate clearly. In the context of programing languages, "clear" more than anything means "unambiguous" for compilers (that's the computer science part) and humans (that's what we have come to call "debugging code2brain interfaces").
This approach is possibly unique, as a reviewer stated, even though other language designers also ask for input from users. The Evolvix DesignFlip takes the idea to 'ask users' to a new level. We design Evolvix with potential future users. This is essential for refining Evolvix tools to the high quality standard required for their long-term tasks in the context of EvoSysBio research. Else we will never get to simulate those cancer cells in a mouse. What we need is:
  • Long-term backwards compatibility
  • User-friendly syntax that provides an ease of use for experimental biologists that is unheard of
  • Integrated data management, reliable enough so experimental biologists will want to put their data into Evolvix
  • Built-in capabilities for easing coding challenges unique to biology

We have built a prototype that helped us to get a better grasp of what Evolvix really needs to accomplish the goals above.You can download it. It has some useful functionality (see below). However, the main thrust of our work has been directed towards architecting the design for a much more stable and general version of Evolvix.

Current Prototype


The current prototype of Evolvix makes it easy to efficiently record time series from simulations. For example, the following two time series plots are produced by the same Evolvix model, but simulated by two different modeling methods. 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.
The plot on the left was produced by a method assuming half an organism is alive (as in deterministic ordinary differential equations).
The plot on the right is from a method that assumes in-divisible 'individual' organisms (as in stochastic simulation algorithms that treat half an organism as dead - making random effects unavoidable).

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.

 

 

What makes Evolvix unique?

 

 Evolvix is a new model description language and modeling platform that is shaped by Evolvix Thinkers using an approach specifically developed for this purpose: the Flipped Programming Language Design approach.

In the cartoon-comparison below we highlight the differences between Evolvix and a more traditional approach to programming language design:

 

A brief overview of the unconventional approach to designing the general-purpose programming capabilities of Evolvix.

 

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

 

 

Sponsor Logo - National Science Foundation