A few years back, researchers at CERN started the BioDynaMo project with the goal in mind to develop a sustainable HPC runtime for computational biology. Under the technical lead of Fons Rademakers (one of the inventors of ROOT),L. Breitwieser and A. Hesam designed and implemented a highly efficient and modular C++ software allowing quick prototyping while guaranteeing to get the most out of your hardware. The software supports everything from "simple" notebooks to complicated compute nodes. This year marks an important milestone in BioDynaMo's history because the team finalised the first major v1.0 release emphasising the move from a fast-evolving API to a stable and reliable software tool.
BioDyanMo supports very efficient agent-based modelling (ABM). Some of you might have heard of agent-based modelling, some of you might have not. For ABM, one expresses the properties and behaviours of individuals (or agents) and simulates a system of thousands or millions thereof on the computer. While the individual agents may be simpel, the emerging collective behaviours can be tremendously complex. A great example for this is flocking. Flocking describes the process of individuals gathering in space and staring to move collectively. One may think of fish shoals in the ocean or bird flock covering the sky in autumn. In this project, you will use BioDynaMo to model a flocking system with an agent-based approach. The rules governing the individual are long know and the so-called "noids-model" forms the basis for the project. The three main behaviours defined for the boids are: separation, alignment, cohesion. Once a working boids model has been established, there are many tasks that we can think of (see Weekend Goals).
We are convinced that this project offers a great opportunity for people to improve their C++ skills and possibly discover interesting programming techniques in BioDynaMo's source code. Furthermore, the participants will get impression of the very versatile methodology of agent based modelling that has led to scientific publications in basically all fields of science. While we are aware that this is only a small project for a weekend, we see the possibility for people to tackle interesting research questions in the long run and would be happy if students might feel inspired to follow up on this with student projects, bachelor's, or even master's thesises. Such projects might try to find a computational answer to the questions of how a fish population is affected by different fishing startegies, how birds are affected by changing winds in the atmosphere, or if a plague of locust is deterministic or just bad luck and very sensitive to some small parameters.
Keep us posted beyond the project!
1) A working boids model with BioDynaMo in a public repository hosted on GitHub.
2) A visualisation based on ParaView (BioDynaMo can easily export the positions for each timestep).
3) GitHub Actions to ensure that the boids code compiles and runs on Ubuntu/CentOS/macOS.
some (optionals) suggestions:
a) Implement different boundary conditions, e.g. avoid them, use periodic boundaries, ...
b) Create obstacles and make the boids avoid them
c) Intersted in computational performance? Test different environments for neighbour relations and measure the effects on the runtime
d) Implement (or integrate) a density based clustering algorithm (e.g. DBSCAN) to track the number and sizes of the flock over time (BioDynaMo already has features to visualise time series data). Maybe see if you can come up with a very efficient implementation by using BioDynaMo's implemented Neighbour relations.
e) Experience with ML? Generate your own data set, e.g. boids parameter (alignment, cohesion, separation) vs flock size and see if models can successfully forecast these quantities
f) Experience with Computer Graphics? Surprise us by visualising the simulation results with a dedicated visualisation engine! How many boids can you handle in real time?
g) Come up with different behavioural models than the boids model, search the literature!
h) Build predator-agents into your simulation
i) Come up with your own suggestion, we're curious what comes to your mind!
Programming (C++ experience advantageous),
Broad interest in science,
Interested in learning.