PhysiCell: an open source physics-based cell simulator
Many multicellular systems problems can only be understood by studying how cells move, grow, divide, interact, and die. Tissue-scale dynamics emerge from systems of many interacting cells as they respond to and influence their microenvironment. The ideal "virtual laboratory" for such multicellular systems simulates both the biochemical microenvironment (the "stage") and many mechanically and biochemically interacting cells (the "players" upon the stage). PhysiCell was developed to work in concert with BioFVM to fill this role as a virtual laboratory.
PhysiCell aims to provide a robust, scalable code for simulating large systems of cells in 3-D tissues on standard desktop computers. Among our design goals:
- Scalable: Capable of simulating at least 500,000 cells on modern quad-core desktops.
- Physics-based: Cells are not constrained by lattice positions, but instead move according to biomechanical forces. Cells change fluid and solid (biomass) volumes according to physical processes.
- Calibration to digital cell lines: We will be able to read MultiCellDS-formatted digital cell lines to initialize cell phenotypes and their sensitivities to the microenvironment.
- Calibration by snapshots: Reading in a simulation snapshot (or in the future, a properly-annotated experimental/clinical image) will arrange cells and configure the tissues.
- Realistic cell cycle: Cells go through G0/G1, S, G2, and M phases, along with realistic rates of volumetric growth.
- Realistic apoptosis: Apoptotic cell death includes volume loss rates and adhesive changes to mimic experimental observations.
- Realistic necrosis: Necrotic cell death includes volume loss rates and adhesive changes to mimic early cell swelling, lysis, pyknosis, calcification (where appropriate, such as ductal carcinoma in situ), and other in vivo observations.
- Microenvironment coupling: Cell cycle progression, apoptosis, and necrosis are all microenvironment-dependent. We use BioFVM for the microenvironment modeling.
- Heterogeneity: Cells choose their phenotypic parameters according to the ranges indicated in their digital cell lines. If heterogeneity has been experimentally recorded, it will be reproduced in the cells.
- Open source and cross-platform compatible: Use standard, compliant C++ (targeting GCC and Intel C++ Compiler) with minimal external dependencies.
- Iterative progress: The first release will focus on getting good performance with reasonable accuracy; later releases will improve accuracy, increase performance, and add new capabilities.
What's New Back to top
November 4, 2017: We released PhysiCell 1.2.2, which focused on simplifying Makefiles (especially for OSX users), unifying the structure of sample projects (including the 2D and 3D template projects), and numerous minor bugfixes. See the README for a full list of changes.
September 1, 2017: We released PhysiCell 1.2.1, which
includes four major new sample projects in multicellular bioengineering,
cancer heterogeneity, and cancer immunology. It also includes improved MultiCellDS
outputs, new Matlab routines for reading and processing saved data, and bugfixes.
See the README
for a full list of changes.
This is the version we used for our resubmission to PLoS Computational Biology. Preprint available at: https://doi.org/10.1101/088773.
July 30, 2017: We released PhysiCell 1.2.0, which contains a reworked Phenotype that should be much easier to use. Motility is now extensively improved, allowing implementation of both We include an all new user manual on all the main functions and classes; see the documentation folder in your download. Lastly, this is the first version to include a Virtual Machine appliance version: if you have a virtual machine like VirtualBox installed, you can import the PhysiCell virtual machine to get a complete graphical Linux OS, compiler, and latest version of PhysiCell. See the README for a full list of changes.
May 17, 2017: We released PhysiCell 1.1.0, which contains numerous simplifications for creating new projects, fast SVG (scalable vector graphics) cross-sections (as virtual pathology), and preliminary MultiCellDS outputs. See the README for a full list of changes.
September 27, 2016: We submitted PhysiCell to PLoS Computational Biology as a software article. As part of that submission, PhysiCell is now available as open source, under the BSD license.
Method, accuracy, and performance Back to top
PhysiCell extends the agent-based model from Macklin et al. (2012) to 3D, with improved sub-models for cell volume regulation, cell cycling, apoptosis, and necrosis. It uses cross-platform compatible C++ (tested on OSX, Linux, and Windows), and it has been parallelized using OpenMP. More details will be available once the method is fully published.
Computational cost scales linearly with the number of simulated cells, and we have tested all the major software components for numerical accuracy and convergence. Simulations up to 1 million cells are feasible on a modern Intel i7 processor with 16-32 GB of system memory. Larger simulations are feasible on HPC compute nodes.
We'll post some updated examples once PhysiCell is published. In the meantime, please enjoy this early simulation test of a 3-D hanging-drop tumor spheroid.
Licensing and disclaimers Back to top
PhysiCell is licensed under the (3-Clause) BSD License. It is GPL v2 and v3 compatible, and suitable for commercial use in many circumstances.
PhysiCell is an academic/scientific code, and it should not be used as the basis for individual medical decisions. (That's what peer review, clinical trials, and FDA oversight are for!) Always consult your physician when making medical decisions.
Downloads Back to top
PhysiCell is available for download at SourceForge. Each download includes a tutorial and code examples.
Most recent versions
|Version||Release Date||Download links|
|1.2.2||4 November 2017||Download source from SourceForge (zipped source)|
|Mirrored source on GitHub (zipped source)|
|Notes: Simpler Makefiles, more unified sample project structure, brand new Quickstart guide, updated user manual, and minor bugfixes. d|
|1.2.1||1 September 2017||Download source from SourceForge (zipped source)|
|Mirrored source on GitHub (zipped source)|
|http://bit.ly/2wCC3ol [sf.net] (virtual appliance)|
|Notes: New code samples for multicellular bioengineering, cancer heterogeneity, cancer immunology. Bugfixes. Improved MultiCellDS output.|
|1.2.0||30 July 2017||Download source from SourceForge (zipped source)|
|Mirrored source on GitHub (zipped source)|
|http://bit.ly/2vY51P1 [sf.net] (virtual appliance)|
|Notes: Major Phenotype rewrite, usability improvements, new motility, full user guide.|
|1.1.1||18 May 2017||http://bit.ly/2pTwgup [sf.net]|
|Notes: Minor bugfixes|
|1.1.0||16 May 2017||http://bit.ly/2pPmERw [sf.net]|
|Notes: Usability, visualization, and MultiCellDS improvements|
|1.0.0||12 September 2016||http://bit.ly/2cqoAob [sf.net]|
|Notes: First public release|
- User Manual
A full user manual is included with every PhysiCell download.
You can also download the user manual here.
- Quick Start Guide
Assuming you have a working C++11 environment (with OpenMP support), this quick start will get
you up and running your first PhysiCell sample code in under an hour. It is included
in every PhysiCell download.
You can also download the quick start guide here.
- Tutorials and blog posts
- We have posted tutorials on setting up a compatible g++ development, common compiling problems, and using PhysiCell. Please visit:
- PhysiCell Method Paper:
Ghaffarizadeh et al. (2017, in revision) published the original version of PhysiCell.
It is under review and revision at PLoS Computational Biology.
bioRxiv preprint: https://doi.org/10.1101/088773
- PhysiCell Method Paper: Supplementary Materials
- The supplementary materials to Ghaffarizadeh et al. (2017, in revision) includes more information on the underlying algorithms, reference parameter values, and extensive testing results.
Support Back to top
For support, please contact Paul Macklin.
If you plan to use PhysiCell in a grant proposal or a project, please consider including Paul Macklin as a Co-I or consultant for more dedicated support.
We are creating numerous tutorials on using PhysiCell. Please visit:
New users should particularly note the tutorials on preparing your development environment for C++ programs with OpenMP.
Please note that OSX by default uses "fake" gcc (an alias that substitutes LLVM/Clang, often without OpenMP suppport) in their command line. Those users should install a full version gcc if they can't compile PhysiCell. See this tutorial.
Bugs and Support Requests
Users can submit bug reports and support requests at:
Development Roadmap Back to top
How to Cite PhysiCell Back to top
PhysiCell is under review and revision at PLoS Computational Biology. For now, please reference our bioRxiv preprint:
We built our model using PhysiCell (Version 1.2.2). 
 A. Ghaffarizadeh, S.H. Friedman, S.M. Mumenthaler, and P. Macklin, PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D Multicellular Systems, bioRxiv 088773, 2016. DOI: 10.1101/088773.
We will update this citation information once PhysiCell has been accepted for publication.
You can also cite an earlier (2-D) version of the model by our 2012 paper in the Journal of Theoretical Biology:
P. Macklin, M.E. Edgerton, A.M. Thompson, and V. Cristini. Patient-calibrated agent-based modelling of ductal carcinoma in situ (DCIS): From microscopic measurements to macroscopic predictions of clinical progression. J. Theor. Biol. 301:122-40, 2012. DOI: 10.1016/j.jtbi.2012.02.002.
Some Publications and Projects that cite PhysiCell
Nothing just yet. :-)
Additional topics Back to top
- BioFVM: Our lab's finite volume solver for biological problems.
Link: More information is available here.
- MultiCellDS: PhysiCell will use the MultiCellDS data format once released.
As the first major continuum code to commit to the standard, our data structures
should influence the structuring of cell data elements in the standard.