Complex systems in fields like System Biology can often be described as a set of differential equations. These differential equations represents how species like proteins and enzymes change over time during various circumstances, like differing initial conditions and parameters. The behavior of the system corresponds to various biological phenomena like cell differentiation. Usually one has a bunch of these equations, based on experiments, assumptions or both, and want to figure out how the system, say, a cell, behaves. XPP is a tool that makes this easy.

XPP is a quirky tool (the interface has barely changed since its MSDOS days), and I was skeptical when I first encountered it. It's apparently quite a common tool in System Biology though, and it seems useful for when you want to get an understanding of how complex systems behave over time. Here's a quick example of how XPP is used, and more specifically showing it's tremendous declarative and interactive nature. Some familiarity with ODEs is probably useful.

This is a simple two-species chain reaction (-> s1 -> s2 ->) modeled by two ODEs, a couple of parameters and some initial conditions. We save the follow in a text file with the .ode extension and open it in XPP.

par v0=5

par k1=3, k2=2

s1' = v0 - k1*s1

s2' = k1*s1 - k2*s2

init s1=1, s2=2

done

We can also easily do a phase plane graph (V 2) together with a direction fields (D D), null clines (N N) and naive linearized stability analysis (S M) in a couple of key presses. Not to mention all kinds of numerical tweaking, and things like bifurcation analysis.

While the program itself has many quirks, with such a declarative syntax and interactive workflow it's no wonder so many researchers in fields like System Biology use it.

The example has been adapted from the book Mathematical Modeling in Systems Biology by Brian Ingalls. XPP can be downloaded here: https://posthaven.com/www.math.pitt.edu/~bard/xpp/xpp.html