# Evolvix vision

Why does Evolvix exist? In a nutshell, its vision says it all:

**Evolvix exists to make rigorous modeling easy**

In more detail:

**Modeling***Mission: Help to describe good computational models of reality and help interpret them by enabling their automated simulation, analysis and visualization.*

**Rigorous**For a method to be rigorous, it needs to:*Mission*: Make sure computed output is of research quality and produced by mathematically rigorous methods, either selected from the best available ones or an improvement especially*developed*for Evolvix.**Separate**clearly the method of analysis from any explicitly defined model that it analyzes- Ensure that all models are
**free from internal contradictions** - Respect important
**modeling assumptions**and explicitly name them - Produce
**clearly visible and helpful warnings**providing automated problem analyses when the method is misused by contradictory models, violated assumptions, etc. - Pass
**scientific peer review**to catch fundamental flaws by being published in an appropriate journal*and*by being recommended by scientific advisors to Evolvix - Pass
**independent tests**against implementation errors (usually by testing if another independent method that*should*produce the same results*actually does*) - Pass
**automated tests**for each release to continuously assure that quality is being maintained as implemented by appropriately designed test cases - Pass
**coding peer review**for clarity and rigor to catch as many implementation errors as possible by computationally savvy developers that understand the method implemented, the implementation language and the Evolvix coding guidelines - Provide appropriate
**documentation**of all proper use, its limits and all known misuses, with examples - Be published as
**open source**code to enable long-term independent analyses of its quality

**Easy**Ideally, your grandmother will be able to understand at least basic Evolvix code with minimal introduction. This makes Evolvix an excellent tool for teaching modeling. Each syntactic element that makes it into Evolvix and all produced output needs to:*Mission*: Find syntactic representations for the model, related simulation tasks and results that are so easy to understand that researchers can get the main meaning without learning Evolvix.- Say
**accurately**what it means and mean what it says for an audience of quantitatively skilled experts in the field - Say what it means
**in the easiest possible words**and mean what it says for an audience of unskilled undergraduate students - Say what it means and mean what it says
**without using unnecessary jargon**form one discipline that might unnecessarily shut out researchers from another discipline - Say what it means and mean what it says
**in the plainest possible English**(let's worry about translations later...) - Say what it means and mean what it says and
**not go back on it**so that the meaning of Evolvix code does not change when using the latest release of a given version of Evolvix (this goal of backwards compatibility will only start once Evolvix Version 1 is released, and will only last until Evolvix Version 2 will be released, which lasts until Version 3, etc.) - Say what it means and mean what it says
**when something went wrong**by providing excellent error analyses understandable to non-experts **When visualizing results, be precise about imprecision**to say what a result means and mean what a result says, avoiding deceptive statistics; showing results as publication ready quality plots with appropriate numerical and statistical error analyses that visually indicate wherever possible the reliability of point estimates obtained from a given analysis- Help where possible to make it easy to
**include quality wet-lab data for estimating parameters**of models such that measurement errors are appropriately propagated - Help where possible to make it easy to
**distribute computation of results**to as many compute resources as are available, while setting good priorities for the given computing time limits - Help where possible to
**store all data necessary in an organized way**on as many servers as necessary making it easy to stay within allocated space and use the data for further analyses

**The role of Biology in Evolvix**

*Priorities: As biologists with biological research questions we are focussing on implementing the features of Evolvix that we need most. Once we decided to implement a feature, we do it in such a way that it becomes easy for us and others to reuse in other more complex automated workflows. We are careful to stay as independent as possible of the jargon of particular fields in biology,*

*as the same mathematical techniques can often be applied to very different fields in biology.*It turns out that this is a great foundation for making Evolvix accessible to multiple other disciplines as well, but we don't have the resources to develop this potential of Evolvix*fully*at the moment.In light of our interests and our limited resources we currently focus on the following types of models that help us with our research:

- "Continuous Time Markov Chain" (CTMC) models, which (i) enable the construction of stochastic and deterministic models, (ii) run in continuous time, and (iii) have "no memory", meaning that the next step of the system can be predicted if we know the current amounts of all parts
- CTMC models of molecules in cells, analyzing biochemical reaction networks
- CTMC models of individuals in populations, analyzing questions in population genetics and ecology
- Basic analyses motivated by our own questions in the nascent field of evolutionary systems biology
- Find a system that makes it very easy for different people to work on different parts of the Evolvix code, mostly because we want different people in our group to be able to work on different parts productively; we have found a way to make this happen so far; there are some infrastructural changes that we are working on that will eventually enable a broader group of researchers to implement simulators in Evolvix that focus on more priorities than we can possibly cover

Postponed priorities:

- Complicated spatial structures: we plan to integrate these at some point in the future, but other than collecting ideas, we will not be working on this any time soon. We will do simpler compartmentalization if we need it sooner

- Develop the use for other fields: Evolvix is in principle very useful for modeling in many disciplines and we work to keep Evolvix as discipline-independent as we can by carefully avoiding any artificial limits to the applicability of Evolvix in other fields. This broad view of the applicability of Evolvix is supported by the underlying mathematical techniques that are mostly independent from the fields they are applied to. However, this conceptual independence is different from making Evolvix particularly useful for a certain field (e.g. by defining useful defaults, examples, libraries of models, etc). While we work on doing this for our bits of biology right now, we do not have the capacity to do this for other disciplines

Contact us if you want to know more.