The CellBasedModels.jl package aims to help fastdesigning and simulation of agentbased models whith possibilities to be run in CPU and NVidia GPUs for the efficient computation of largescale systems.
The following methods can be implemented in the model:
 ODEs
 SDEs
 Division
 Death
 Coupling to continuum models evolving with PDEs
 Random events
Check the Examples to get an idea of the capabilities of the package.
Installation
Hopefully, soon we will make an official release in the Julia repository. For now, you can install the package from Github as:
julia> using Pkg
julia> Pkg.add(https://github.com/dsblab/CellBasedModels.jl)
or from the Pkg REPL
pkg> add https://github.com/dsblab/CellBasedModels.jl
Examples
Implementation of a patterning model as described by Corson et al. (2017).
In this example you learn how to:

Implementation of the development and commitment of the Inner Cell Mass of the embryo as proposed by Saiz et al. (2020).
In this example you learn how to:

Implementation of brownian particles with addesion properties and chack the aggregation transition.
In this example you learn how to:

Implementation of a bacterial interaction and growth model as described by Volfson et al. (2008).
In this example you learn how to:

Modification of the bacterial interaction model as described by Volfson et al. (2008) to be active bacteria with tumbleandrun dynamics and chemotaxis behavior.
In this example you learn how to:

Current Limitations
At the present stage of development, the library is not capable of working on batches of data. That means that the size of the simulated models will be limited by the memory disponibility in RAM or the GPU, depending on the platform in which the simulations are being tested.
Moreover, we can only use GPUs from NVidia as the GPU implementation is based on CUDA.jl.
Future work
We intend to extend the current version of the package with additional capabilities. Any help is welcome!
Short term
 Addition of coupling to continuum systems.
 Additions of inactive agents to make arbitrary shape boundaries.
 Add more examples
 Increase the number of implemented models.
Long term goals
 Extend GPU capabilities to be used also in other packages.
 Make optimization methods distributable among different CPU/GPUs.
Alternatives to CellBasedModels.jl
Many different packages and programs have been developed for constructing agentbased models.
NonJuliabased specific software:
 NetLogo is mostly focused on discrete dynamics. It is a bit outdated.
 Mason Developed in Java, it is discretestepbased software.
NonJuliabased generic software:
 yaa Software developed with CUDA/C++. It is fast as it is fully parallelized but apart from already written models, that are specific for the study of limb morphogenesis, advanced knowledge of CUDA and C++ is required for any customization.
 Mesa is developed in Python with a very intuitive framework. It is specialized in discrete dynamics in grid spaces.
Juliabased generic software:
 Agents.jl. To our knowledge, there is only one alternative package written in Julia for the construction and deployment of agentbased models. It is a mature library and is the way to go for agentbased models in Julia for discretetime dynamics. As another agentbased library, our library and the Agent.jl library overlaps in some of the capabilities and both can construct models in continuous space with similar capabilities. We focus our library on the simulation of continuous spaces with a continuous time that is described in terms of differential equations with the added value of being able to escalate the system to large amounts of agents by simulating in CUDA.