# CompuCell3D

CompuCell3D (CC3D) is an open source software problem solving environment for constructing two- and three-dimensional multiscale agent-based models of multicellular biology, including morphogenesis, homeostasis, disease, therapy and tissue engineering. CompuCell3D was designed to make the development, execution and analysis of complex biological models accessible to non-experts. CompuCell3D is written in C++ and Python. CC3D supports a number of different object classes and modeling methodologies including the cellular Potts model (CPM) or Glazier-Graner-Hogeweg model (GGH) (originally developed by James A. Glazier, François Graner and Paulien Hogeweg) of the dynamic reorganization of generalized cells (clusters of cells, volumes of extracellular matrix, cells and their subregions) which can model cell clustering, growth, division, death, adhesion, and volume and surface area constraints; as well as partial differential equation solvers for modeling the diffusion equation and reaction–diffusion of chemical fields, and biochemical transport, signaling, regulatory and metabolic networks solved with chemical kinetics rate equations or stochastic Boolean network approaches. By integrating these submodels CompuCell3D enables modeling of cellular reactions to external chemical fields such as secretion or resorption, and responses such as chemotaxis and haptotaxis, differentiation in response to external signals, cell polarization and motility and other basic biological mechanisms.

## Model Definition and Scripting

Users can rapidly define highly complex simulations using the CompuCell3D Markup [XML] language, CC3DML and Python scripts called steppables. CompuCell3D provides high-level Python classes and functions based on common biological processes to simplify the development of modular, reusable and compact model specifications. Users can also write C++ steppables to improve execution speed.
CompuCell3D includes a GUI model editor, Twedit++ which provides a model specification Wizard for rapid definition of model architectures as well as customized editors for CC3DML, Python and C++ which contains code-snippet templates for most commonly used functions.

## Model Execution Support

CompuCell3D supports exploration and testing of biological models by providing a flexible and extensible package, with many different levels of control. High-level steering is possible through CompuCell Player, an interactive desktop GUI built upon Qt threads which execute in parallel with the computational back end. Player provides functionality such as playing and pausing simulations, changing parameter values during execution (steering) and the on-the-fly creation of two-dimensional and three-dimensional rendering windows showing cell configurations and chemical fields. Users can interactively zoom, rotate and change the color and cross-sections for rendered images, define movie exports and save screenshots and rotation of rendered images of the simulation geometry, set colors and viewing cross sections. A sample screenshot is shown below.
CompuCell3D also can be run in batch mode on clusters and as a callable Python library in Jupyter Notebook, Colab or other Python environments.

## Extensibility

Extending the back end is possible with C++ extensions in the form of steppables and plugins. The back end uses object-oriented design patterns which contribute to extensibility, reducing coupling between independently operating modules. Optional functionality can be encapsulated through plugins, which are dynamically loaded at runtime through an XML configuration file reference.
As a Python library, CompuCell3D can call and be called by other modeling tools and frameworks.

## Applications

CompuCell3D can model several different phenomena, including avian limb development, in vitro capillary development, adhesion-driven cell sorting, Dictyostelium discoideum, and fluid flows. The binaries and source code, as well as documentation and examples, are available at the CompuCell3D Website
For a list of more than 150 publications that used CompuCell3D please visit the CompuCell3D Publications page.