^{1}

^{2}

^{1}

^{3}

^{1}

^{1}

^{2}

Samuel H. Friedman was employed at Opto-Knowledge Systems, Inc. (OKSI) during the review and revision of the manuscript. This work was not funded, evaluated, approved, or owned in any manner by OKSI, and there are no competing interests in OKSI. Furthermore, OKSI has no patents, commercial products, products in development, or marketed products related to this work. The other authors have declared that no competing interests exist.

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—physics-based multicellular simulator—is an open source agent-based simulator that provides both the stage and the players for studying many interacting cells in dynamic tissue microenvironments. It builds upon a multi-substrate biotransport solver to link cell phenotype to multiple diffusing substrates and signaling factors. It includes biologically-driven sub-models for cell cycling, apoptosis, necrosis, solid and fluid volume changes, mechanics, and motility “out of the box.” The C++ code has minimal dependencies, making it simple to maintain and deploy across platforms. PhysiCell has been parallelized with OpenMP, and its performance scales linearly with the number of cells. Simulations up to 10^{5}-10^{6} cells are feasible on quad-core desktop workstations; larger simulations are attainable on single HPC compute nodes. We demonstrate PhysiCell by simulating the impact of necrotic core biomechanics, 3-D geometry, and stochasticity on the dynamics of hanging drop tumor spheroids and ductal carcinoma in situ (DCIS) of the breast. We demonstrate stochastic motility, chemical and contact-based interaction of multiple cell types, and the extensibility of PhysiCell with examples in synthetic multicellular systems (a “cellular cargo delivery” system, with application to anti-cancer treatments), cancer heterogeneity, and cancer immunology. PhysiCell is a powerful multicellular systems simulator that will be continually improved with new capabilities and performance improvements. It also represents a significant independent code base for replicating results from other simulation platforms. The PhysiCell source code, examples, documentation, and support are available under the BSD license at

This paper introduces PhysiCell: an open source, agent-based modeling framework for 3-D multicellular simulations. It includes a standard library of sub-models for cell fluid and solid volume changes, cycle progression, apoptosis, necrosis, mechanics, and motility. PhysiCell is directly coupled to a biotransport solver to simulate many diffusing substrates and cell-secreted signals. Each cell can dynamically update its phenotype based on its microenvironmental conditions. Users can customize or replace the included sub-models. PhysiCell runs on a variety of platforms (Linux, OSX, and Windows) with few software dependencies. Its computational cost scales linearly in the number of cells. It is feasible to simulate 500,000 cells on quad-core desktop workstations, and millions of cells on single HPC compute nodes. We demonstrate PhysiCell by simulating the impact of necrotic core biomechanics, 3-D geometry, and stochasticity on hanging drop tumor spheroids (HDS) and ductal carcinoma in situ (DCIS) of the breast. We demonstrate contact- and chemokine-based interactions among multiple cell types with examples in synthetic multicellular bioengineering, cancer heterogeneity, and cancer immunology. We developed PhysiCell to help the scientific community tackle multicellular systems biology problems involving many interacting cells in multi-substrate microenvironments. PhysiCell is also an independent, cross-platform codebase for replicating results from other simulators.

This is a PLoS Computational Biology Software paper.

Many significant multicellular systems problems—such as tissue engineering, evolution in bacterial colonies, and tumor metastasis—can only be understood by studying how individual cells grow, divide, die, move, and interact [

Several major computational frameworks are available for studying 3-D multicellular systems. CompuCell3D [^{5} or more) of cells. TiSim (part of the CellSys package [^{5} or more cells. However, its complex codebase has many dependencies that can impede participation by new developers; it is only cross-platform compatible by virtual machines. Biocellion [^{9} cells on high-performance supercomputers [

These platforms typically require users to write their own code for all cell activities, by scripting basic built-in functions. (e.g., build a cell cycle model from API functions to overwrite cell volume and duplicate agents when appropriate.) As configured “out of the box,” none have built-in models for cell cycling, apoptosis, and necrosis, even though these fundamental behaviors are needed in many multicellular simulations. Only CompuCell3D and Morpheus have built-in volume regulation features. Most of these packages include PDE solvers that can simulate 3-D biotransport of one or more diffusible factors in the microenvironment, but generally they are applied sequentially to one PDE at a time, meaning that solving 10 PDEs requires 10 times more computational work than solving a single PDE. This approach is not expected to efficiently scale to 3-D simulations with many diffusible factors—a key requirement in reconciling secretomics with single-cell and multicellular systems biology, particularly as we work to understand cell-cell communication involving many cell-secreted factors.

We aim to create a framework for building multicellular simulations that investigate the relationship between (diffusional) substrate limitations, multicellular biochemical communication, and essential phenotypic processes: cell cycling/division, death, volume changes, motility, adhesion, and volume exclusion/“repulsion” [

While PhysiCell was originally developed for problems in cancer [

Thus, PhysiCell is designed to be a general-purpose toolkit for exploring multicellular systems, and the multicellular behaviors that emerge from a user-implemented set of cell phenotypic rules (i.e., a set of hypotheses). Other potential uses include simulation-generated synthetic datasets that investigate the meaning and shortcomings of experimental measurements [

PhysiCell aims to balance computational speed, built-in standard functionality, flexibility, and codebase simplicity. It includes a built-in library of standardized cell cycle and cell death models co-developed with biologists and modelers here and in the MultiCellDS standardization process [^{5}-10^{6} cells on desktop workstations, and 10^{6} or more cells on single HPC compute nodes. All this functionality and performance is achieved with only two external dependencies, and a fully cross-platform C++ codebase that we have compiled and tested on Linux, OSX, and Windows. We also distribute PhysiCell as a virtual appliance—with a full Linux desktop, 64-bit

PhysiCell is designed to study the dynamics and interactions of thousands or millions of cells in 3-D microenvironments, with microenvironment-dependent phenotypes. It uses a lattice-free, physics-based approach to reduce grid-based artifacts. It provides optimized, biologically realistic functions for key cell behaviors, including: cell cycling (multiple models for

We note that for many problems in cancer biology and tissue engineering that drove development of PhysiCell, diffusive biotransport occurs at relatively fast time scales (on the order of 0.1 min or faster) compared to cell mechanics (∼ 1 min) and cell processes (∼ 10 to 100 min or slower). PhysiCell takes advantage of this by using three separate time step sizes (Δ_{diff}, Δ_{mech}, and Δ_{cells}). In particular, the cell phenotypes and arrangement (operating on slow time scales) can be treated as quasi-static when advancing the solution to the biotransport PDEs, so BioFVM can be called without modification with the cell arrangements fixed. See

PhysiCell was built by extending the

The code has been parallelized in OpenMP to make use of multi-core desktop workstations and single HPC compute nodes. In testing, its performance (the computational time to simulate a fixed amount of time on a fixed domain) scales linearly in the number of cells present in the simulation. Simulations of up to 10^{6} cells are feasible on desktop workstations, and simulations beyond 10^{6} cells are possible on typical HPC compute nodes.

After initializing the microenvironment (through BioFVM [_{mech} (the next time at which cell mechanics functions are run), _{cells} (the next time at which cell processes are run), and _{save} (the next simulation data output time), with output frequency Δ_{save}. Initially, we set:

Save the simulation state if _{save}. Set _{save} = _{save} + Δ_{save}.

Run BioFVM to update the biochemical microenvironment for cell-based secretions and uptake, and reaction-diffusion, for the current fixed cell positions. See

For the fixed cell positions and chemical substrate fields, if _{cells}, run the cell processes for each cell:

Update cell parameters using the cell’s

Advance the cell cycle (or death) model. See

Advance the cell’s volume (and sub-volumes) using the

Then set _{cells} = _{cells} + Δ_{cells}.

If _{mech}, then:

For each cell, calculate the force-based cell velocities via

For each cell, update the position using the Adams-Bashforth method. See

Set _{mech} = _{mech} + Δ_{mech}.

Update the current simulation time by _{diff}. Return to Step 1.

Steps 3a-c can be combined in a parallelized OpenMP loop; we flag cells for division and removal and process these queues serially after the parallel loop to avoid data corruption. Step 4a can be parallelized across the cells by OpenMP (because cell velocities are location-dependent, and the cell positions are fixed throughout 4a), and then Step 4b can be parallelized across the cells with these computed velocities.

We use BioFVM to simulate the chemical microenvironment with a vector of reaction-diffusion PDEs with both bulk source/sinks and cell-centered sources and sinks [_{k} is the ^{th} cell’s position, _{k} is its volume, _{k} is its vector of source rates, _{k} is its vector of uptake rates, and

Numerically, we solve for the solution at time _{diff} by a first-order operator splitting: we first solve the bulk source/sink terms across the domain (and overwrite the stored solution), then solve the cell-centered source/sink terms (and overwrite the solution), and then the reaction-diffusion terms (again, overwriting the stored solutions). As we detailed and verified in [

After this operator splitting, the bulk source/sink terms are a decoupled set of systems of ODEs (one vector of ODEs in each computational voxel), which we solve by the backwards Euler method for first-order accuracy and numerical stability. This is trivially parallelized by OpenMP by dividing the voxels across the processor cores. Similarly, we solve the cell-based source/sink equations (one system of ODEs per cell) by backwards-Euler, overwriting the solution in the voxel containing the cell’s center. As we showed in [

To solve the vector of diffusion-decay PDEs, we use the locally one-dimensional method: a specialized operator splitting that turns the 3-D PDEs into a sequence of one-dimensional PDEs. In each _{diff} = 0.01 min and Δ

PhysiCell implements key cell-scale processes—cell cycling and death, volume changes, mechanics, and motility—and lets users link the parameters of these processes to microenvironmental conditions. PhysiCell then scales these basic cell-scale hypotheses to simulate thousands or millions of cells, from which tissue-scale behavior emerges. Here, we summarize the key functions. For each sub-model, see

Cell agents have a variety of phenotypic properties, including position (_{i}), volume (and sub-volumes), cell cycle or death status, and mechanics (adhesive, deformation, and motility) parameters. Each cell has a hierarchically-structured, independent

Each cell tracks _{F} (total fluid volume), _{S} (total solid volume), _{NS} (nuclear solid volume), _{CS} (cytoplasmic solid volume), _{N} (total nuclear volume), and _{C} (total cytoplasmic volume). Key parameters include nuclear solid, cytoplasmic solid, and fluid rate change parameters (_{N}, _{C}, and _{F}), the cell’s “target” fluid fraction _{F}, target solid volume _{CN}. For each cell, these volumes are modeled with a system of ODEs:
_{F}, _{C}, and _{N} based on key apoptosis time scales. See

Each cell can set its own persistence time (_{per}), migration speed (_{mot}), migration bias direction (_{bias}, a unit vector), and a migration bias _{bias}). When updating the cell’s velocity, its migration velocity _{mot} is added to the currently velocity (as calculated by mechanics; see _{mech} with probability
_{bias}, _{mot}. The migration velocity _{mot} is then updated according to

We model cell mechanics and motion as in our prior work [_{i} by calculating its current velocity _{i} based upon the balance of forces acting upon it. The main forces include cell motility, drag-like forces, and cell-cell and cell-matrix interaction forces: adhesion and “repulsion” (resistance to deformation and/or volume exclusion [_{i} is given by
_{n,R}(_{n,R}(^{th} cell’s cell-cell adhesion and repulsion parameters, _{i} is its radius, and _{i,A} is its maximum adhesion distance (typically a fixed multiple of _{i}). Note that if cell _{cca} and _{ccr}, then the cell-cell interaction coefficients simplify to the form we published in [

Also, _{i})_{i}) points from the cell’s position _{i} to the nearest point on the basement membrane, located at _{i} − _{i})_{i}). (See [

The cell’s position is updated using the second-order Adam’s Bashforth discretization:

PhysiCell includes a cell cycle modeling framework, where each cell cycle model is a collection of phases {_{i}}, transition rates {_{ij}} between the phases, and a cell division phase transition. As of Version 1.2.0, users can also set phase entry and exit functions (associated with the phases _{i}) that are executed at entry into or exit from the phase; these can be used to model processes such as mutation of cell parameters. The framework also allows users to set arrest functions (associated with the transition rates _{ij}) that block the transition. This is useful for modeling effects like volume restrictions. See the User Guide (_{i} to phase _{j} in this time interval is given by

Users can set individual transitions _{ij} to have deterministic duration, with duration 1/_{ij}. See the User Guide (

Each cell agent tracks its current cell cycle phase _{k}). Users can change the transition rates at any time, in part based upon microenvironmental conditions (e.g., based upon oxygenation or cell contact).

As a concrete example, consider the “Ki67 Advanced” model from our prior work calibrating oxygen-dependent growth to Ki67 data in ductal carcinoma in situ (DCIS) [_{1} (Ki67+ cycling cells, prior to cell division), _{2} (Ki67+ cycling cells, after cell division), and _{1} and _{2} have stochastic durations (with means _{1} and _{2}). We model the transition rate from _{1} as
_{1} (to double their nuclear content), and they halve _{1} → _{2} transition. The full set of supported cell cycle models—along with reference parameter values—is given in

PhysiCell currently includes models for two types of cell death: apoptosis (programmed cell death) and necrosis (unprogrammed cell death) [_{A,i} for apoptosis, and _{N,i} for necrosis), which can be continually updated. For any death rate _{i} and any time interval [_{i}:
_{CN} = 0 (to simulate shrinking and blebbing of the cytoplasm), _{F} = 0 (to simulate the active elimination of water from the cell). The rates _{N}, _{F}, and _{C} are set to match time scales of cell volume loss in apoptotic cells. The cell is removed once its volume drops below a user-set threshold, or after mean duration of _{A}.

_{F} = 1. (Note that some regard oncosis as the actual death process, and necrosis as post-mortem cell degradation [_{F} = 0. The rate parameters _{F}, _{N}, and _{C} are set to match expected time scales throughout necrosis [

_{2} drops below a threshold value pO_{2,threshold}, as in our earlier work [_{N} → ∞.

_{2} < pO_{2,threshold}, and the death rate ramps linearly until saturating at a maximum rate _{N,max} for pO_{2} < pO_{2,crit}. Equivalently, cells survive on average 1/_{N,max} time in very low oxygen conditions [

PhysiCell has three time steps to model (fast) diffusive biotransport processes (Δ_{diff}; default 0.01 min), cell movement (Δ_{mech}; default 0.1 min), and (relatively slow) cell processes (Δ_{cells}; default 6 min). We use these time steps to set how frequently biotransport processes, cell movement processes, and cell phenotype processes are updated. See

PhysiCell uses BioFVM to update the microenvironment at the short green tick marks, corresponding to Δ_{diff}. It updates cell mechanics (including cell position) less frequently at the medium black tick marks (Δ_{mech}), and it runs the cell volume and cycle/death models least frequently at the long red tick marks (Δ_{cell}). Note that the time steps shown are for illustrative purpose; the default step sizes are given in

The default Δ_{diff} was chosen for diffusion, decay, and uptake/secretion parameter values typical for the cancer and tissue engineering problems that drove PhysiCell’s development. In prior testing, relative errors did not exceed 5% for this value [_{mech} = 0.1 min gave solutions that converged at first-to-second order accuracy, had relative errors 5% or less, and avoided spurious oscillations and other artifacts for cell velocities under ∼ 1 _{cells} = 6 min. See _{cells} for problems with faster phenotypic processes. Users anticipating faster cell movement (e.g., motile bacteria) should reduce Δ_{mech}. We recommend setting

Mathematically, this time scale separation allows us to hold cell positions fixed (quasi-static) when updating the PDE solutions, and then hold the chemical fields fixed when updating cell positions and phenotypes. We have used similar techniques in nonlinear continuum models of tumor growth (slow time scale) in heterogeneous biochemical microenvironments (fast time scale) [

We now assess the computational effort needed for each iteration in the main program loop. (See

Step 4a (update velocities) is the most computationally expensive step. In straightforward implementations, each cell tests for mechanical interaction with

In _{max} cells. Thus, Step 4b has a fixed maximum cost for each cell, and the cost of the loop scales linearly in

To prevent computational costs from scaling quadratically in the number of cells, we designed a cell-cell interaction data structure (IDS) that efficiently estimates a set

PhysiCell uses OpenMP to parallelize most loops over the list of cells. This includes sampling the microenvironment, updating cell phenotype parameters, advancing the cell cycle or death model, advancing the volume model, running any custom function, and calculating the cell velocity. We do not parallelize loops that change the IDS: cell division, cell removal, and updating the cell position.

As discussed above, we defined three separate computational step sizes (Δ_{diff} < Δ_{mech} < Δ_{cells}) to take advantage of the multiple time scales of the multicellular system. As indicated in the overall program flow above, we update each process according to its own time step, rather than at each simulation step.

Most of the simulation steps have computational cost that scales linearly in the number of cells. (See

We estimate an upper bound on the of cells in any voxel _{i} by
_{mech} is the fixed volume of the voxels in the interaction testing data structure. For cycling cells with “mature” volume

We performed convergence testing on all the major components of PhysiCell. BioFVM was previously tested as first-order accurate in Δ_{diff} = 0.01 to 0.05 min for tumor growth problems [_{mech} ∼ 0.1 min gives sufficient accuracy for typical cancer problems.

We simulated the volume model for a single proliferating, apoptotic, and necrotic cell, and measured the sub-volumes at multiple times. It converged with first-order accuracy in Δ_{cell} = 6 min gave sufficient accuracy. We tested the stochastic transition codes by simulating the Ki67-advanced cell cycle model and the apoptosis death model (with stochastic duration), and measuring the sub-population counts and population fractions over time for several values of Δ_{cell}. For each Δ_{cell} = 6 min and 60 min both gave an excellent match between the PhysiCell behavior and theory for all the compared curves. See

By our testing, recent quad-core desktop workstations (with hyperthreading, for 8 total execution threads) can simulate 10-30 days in systems of up to 10^{5} to 10^{6} cells in 3 days or less (wall time). Single HPC compute nodes (typically two 6-8 core processors, with hyperthreading and 24-32 execution threads) can simulate larger systems up to ∼ 2 million cells in about 2 days. Future releases of PhysiCell will address current performance bottlenecks; see

We demonstrated PhysiCell’s potential to simulate large multicellular systems—and its ability to test the emergent tissue-scale effects of cell-scale hypotheses—on several examples arising from cancer biology and synthetic multicellular systems bioengineering. For the first two examples, we compared the impact of the deterministic and stochastic necrosis models. (See _{1}, _{2}, and

The

Hanging drop spheroids (HDS)—a 3-D cell culture model where a small cluster or aggregate of tumor cells is suspended in a drop of growth medium by surface tension—are increasingly used to approximate 3-D

We simulated HDS growth by placing an initial cluster of ∼ 2300 cells in an 8 mm^{3} fluid domain, with Dirichlet conditions pO_{2} = 38 mmHg (5% oxygen: physioxic conditions [^{6} cells by 18 days. See the simulation videos

Videos are available at _{1}) and magenta afterwards (_{2}). Pale blue cells are Ki67- (

Both models yielded similar dynamics. Hypoxic gradients emerged quickly, limiting (pO_{2}-dependent) cell division to the outermost portions of the tumors. This, in turn, lead the tumor diameters to grow linearly (at similar rates); see

In both models, the innermost portion of the necrotic core developed a network of fluid voids or cracks. This phenomenon emerges from competing biophysical effects of the multicellular system and its cell-scale mechanical details: necrotic cells lose volume, even as they continue to adhere, leading to the formation of cracks. To our knowledge, this is the only model that has predicted this necrotic tumor microarchitecture, which would be very difficult to simulate by continuum methods except with very high-resolution meshes comparable to the ∼ 1 to 10

There were notable differences between the models. The deterministic model had a sharp perinecrotic boundary between the viable and necrotic tissues, whereas the stochastic model demonstrated a perinecrotic transition zone with substantial mixing of viable and necrotic cells. Because cells do not immediately necrose in the stochastic model, it retained a center of quiescent viable cells longer than the deterministic model. The growth curves for the deterministic and stochastic models appear to diverge after approximately 8 days, when the deterministic necrotic core is better defined with more cracks than the stochastic core. This may be due to differences in hypoxic gradients (the tumor with more void spaces will have shallower oxygen gradients, and hence more cell cycle entry), but further simulations would be required to rule out stochastic effects. Interestingly, the stochastic model’s growth curve appears to run parallel to the deterministic curve for later times, once its necrotic core becomes better defined.

Throughout the simulations, the computational cost (the wall time required to simulate one hour) scaled approximately linearly with the number of agents present in the simulation, on both the desktop workstation and the HPC node; see

The simulations reached ∼ 10^{6} cells on our HPC tests after 67 hours (deterministic, 17 simulated days) to 76 hours (stochastic, 18.2 simulated days) of wall time, including saving full simulation output data once per simulated hour. See ^{6} cells if needed.

DCIS is a pre-malignant breast condition where epithelial cells (“tumor cells”) divide abnormally to fill the breast duct lumen. Oxygen can only reach the tumor cells by diffusion from outside the duct, leading to the emergence of hypoxia and an inner necrotic core. See [_{2} (see

In

Videos are available at

As in the HDS example, the deterministic model had a sharp, smooth perinecrotic boundary, whereas the stochastic model demonstrated a perinecrotic boundary region with mixed viable and necrotic cells. In the stochastic model, proliferation halted in the duct center, but necrosis appeared later. The perinecrotic mixing effect was most pronounced at the leading edge of the tumor, where tissue was transitioning from non-hypoxic/non-necrotic to necrotic. Areas with longer-term hypoxia had smoother necrotic boundaries. This effect did not emerge in the HDS example due to its symmetry.

Interestingly, the mechanical “cracks” seen in the tumor spheroids do not appear here, because the breast duct compresses the necrotic core to collapse any fluid-filled voids. This shows the importance of the 3-D geometry and the biophysical impact of the basement membrane, as well as the need to account for such effects when approximating

Both models gave approximately the same growth rate of ∼ 1 cm/year (

The deterministic and stochastic necrosis models both result in linear DCIS growth at approximately 1 cm/year (left), even while their cell counts differ by 21% by the end of the simulations (right).

In 3D, neither necrosis model reproduced the mechanical “tears” between the proliferative rim and the necrotic core predicted by earlier 2-D simulations [

In the following examples, we demonstrate PhysiCell in applications involving interactions via contact and chemical factors between multiple cell types, in 2-D and 3-D simulations. Most of the examples include cell motility, “custom” phenotype rules, additional “custom” mechanics, and custom data.

Please visit

The instructions can also be found in the User Guide (

First, we tested PhysiCell for its potential in aiding in the design of synthetic multicellular systems. We investigated rulesets to create a cellular cargo delivery system, including the following main components:

“Director” cells secrete a diffusible chemoattractant _{1} and are otherwise static. They use the typical cell-cell repulsion mechanics.

“Cargo” cells have a surface receptor 0 ≤ _{2}. When

“Worker” cells can either be adhered or not adhered to cargo cells.

When they are unadhered, they perform biased random migration towards gradients of ∇_{2}. Whenever they touch a cell, they test for presence of receptor

When they are adhered, they perform biased random migration towards ∇_{1}. When _{1} exceeds a threshold, they break their adhesive bond.

As a simple model of this targeted cell adhesion, we used a

Simulation outputs are shown in

Director cells (green) release a chemoattractant _{1} to guide worker cells (red). Cargo cells (blue) release a separate chemoattractant _{2}. Unadhered worker cells chemotax towards ∇_{2}, test for contact with cargo cells, form adhesive bonds, and then pull them towards the directors by following ∇_{1}. If _{1} exceeds a threshold, the worker cells release the cargo and return to seek more cargo cells, repeating the cycle. Bar: 200

This and the following examples also demonstrate the intended arrangement of projects: users do not modify the contents of

We adapted the “biorobots” to test their potential as an anti-cancer treatment. Many proposed cancer therapies attempt to target cancer cells by finding unique surface or other molecules to target, so that drugs can be conjugated to custom antibodies or encapsulated in custom nanoparticles. These still generally rely upon passive delivery of the therapeutics, even though cancers are often poorly perfused. See e.g. [

There are no “director” cells. Instead, cancer cells consume oxygen (as in prior examples), which creates an oxygen gradient that can be leveraged for worker cell “homing.”

Adhered “cargo” cells detach themselves from “worker” cells when pO_{2} < pO_{2,drop} and secrete a therapeutic compound [drug] that diffuses with the typical form given in

Adhered worker cells perform biased random migration along −∇pO_{2}.

In any time interval [_{cells}], cancer cells accumulate drug-induced damage according to:
_{damage} and _{repair} are the damage and repair rates. Each tumor cell agent tracks its own level of damage. In the same time interval the probability of a cell apoptosing due to the drug is
_{death} is the death rate when [damage] = 1.

Unadhered worker cells disabled motility if _{1} falls below a threshold value.

We simulated 1 week of tumor growth, “injected” a mixture of 10% worker cells and 90% cargo cells near the tumor, and set the parameter pO_{2,drop} to 10 mmHg. In the simulation (_{2} > pO_{2,drop} throughout the domain). Setting pO_{2,drop} = 15 mmHg reduced but did not eliminate this behavior. See

By modifying the worker cells in the previous example (_{2}) and drop their cargo in hypoxic zones, we can deliver cargo to a growing tumor. In this example, the cargo cells secrete a therapeutic that induces apoptosis in nearby tumor cells, leading to partial tumor regression. Bar: 200

Next, we applied PhysiCell to another area of interest in the cancer community: heterogeneity. We seeded an initial tumor, and assigned each cell a random expression of a mutant “oncoprotein” 0 ≤

Each cell has an independent expression of a mutant “oncoprotein”

We extended the heterogeneity example to 3D, and integrated a simple model of an immune attack on the heterogeneous tumor:

All cancer cells consume oxygen as before. They also secrete an immunostimulatory factor

As a simple model of immunogenicity, the mutant oncoprotein is assumed to increase immunogenicity proportionally to

Unadhered immune cells perform biased random migration (in our simulations _{adhesion} is the immune cell’s rate of forming new cell adhesions.

While adhered, immune cells attempt to induce apoptosis in the adhered cell with probability
_{kill} is the rate at which adhered immune cells kill tumor cells with

Adhered immune cells have a probability of detachment given by

In

In this 3-D example, each tumor cell secretes an immunostimulatory factor, and its immunogenicity is modeled as proportional to its mutant oncoprotein expression. (See the previous example in

In [

Users need a working

Mac OSX users should use the tutorials above; the version of

Alternatively, users can code within a virtual machine using the PhysiCell virtual appliance. See the tutorial at

Users can download a PhysiCell release at:

The green “download” button will download the most recent source file (as a zip file). You can get the most recent virtual appliance by browsing to:

Then browsing a recent release directory (e.g.,

Download either

PhysiCell is licensed under the (3-clause) BSD license, which is compatible with commercial products and can be included in GPL-licensed projects.

PhysiCell’s main project website can be found at

Each PhysiCell download comes with a Quickstart guide (

A full User Guide (see

Users creating their own simulation projects should start with the 2-D and 3-D template projects. User-created code should be placed in the

We post tutorials at our PhysiCell blog, available at

Check there for tips and tricks to building simulators, and visualizing results. We also frequently post updates on PhysiCell on Twitter, under the hashtag

We welcome new functionality and bug fix contributions from the community. No special tools or libraries are required for PhysiCell development aside from a C++11/OpenMP compliant compiler,

Project coding conventions can be found at

Users encountering problems in compiling PhysiCell projects should first consult the FAQ page at:

Users (and developers) can join the PhysiCell mailing list to ask the community questions or discuss ideas, at

BioFVM does not implement advective transport as of Version 1.1.7, and so PhysiCell cannot readily be applied to advection-dominated problems without user-supplied advection solvers. We also have not yet written a model of extracellular matrix; users could add this effect by introducing custom data that (1) “anchors” each cell to a position in space beyond cell-cell mechanical operations, and (2) slowly evolve these “anchor points” to model ECM rearrangement. We are currently exploring this approach to model liver parenchyma, and we will post sample codes as the work progresses. Alternatively, users could introduce an independent finite element mesh for the ECM, evolve it under (e.g., viscoelastic) laws, and attach cells to the nearest lattice site. As a simpler approach, users could include a non-diffusing ECM substrate (in BioFVM), which could be used to reduce the cells’ velocities (as extra drag). Vary the cell-cell mechanics parameters in

PhysiCell’s cell-centered approach may not be ideal for application to some morphogenesis problems; see the recent work by Osborne and co-workers that compared several discrete modeling frameworks in morphogenesis test problems [

We note that PhysiCell can manually implement molecular-scale biology as ODEs (e.g., as in the drug damage example) via custom functions and data, but this is currently difficult to scale to large systems of ODEs with many parameters. Moreover, while we have provided examples of user-defined cell cycle models and other custom functions in the User Guide, sample codes, and tutorials, we do not provide templates for such functions beyond the documentation. We are currently testing methods to support SBML specification of ODE models in the cell agents (e.g., via libRoadrunner [

PhysiCell does not currently provide direct methods to model contact-based cell-cell interactions; these can be manually implemented as we did in the immune and biorobots examples. We also do not yet provide alternative mechanics models (e.g., viscoelastic) out-of-the-box, but users can design their own cell velocity functions as needed to replace the default mechanics. We have not yet implemented direct calculations of cell pressures and strains, so this could hinder some applications in mechanobiology. Users could implement this by creating a custom velocity update function that calculates pressures and strains from the potential functions. A preliminary version—calculated from the “resistance” potential functions similarly to [

PhysiCell is intended to function as a modular engine and to interact with standardized data (e.g., MultiCellDS [

The biggest performance bottleneck is cell-cell interaction testing: cell volume can vary by a factor of 100, and hence the cell diameter (and interaction distance) can vary by a factor of 50. The number of cells in the list of interacting neighbors ^{8}-10^{9} cells, extension to supercomputers by wrapping the code in MPI with appropriate data mirroring could be useful. Likewise, the algorithms used in BioFVM could be implemented on a graphics card via OpenCL or OpenACC. We will explore these approaches in the future.

We will develop SBML (systems biology markup language) importers for molecular-scale biology, most likely by the C code generation features in COPASI [

In the coming months, we will continue publishing blog posts and code samples at

Extensive supplemental information including: full mathematical model details, supporting literature, and reference parameter values for breast epithelial cells; expanded numerical implementation details; convergence and validation testing results; full parameter values for the main tests; and an expanded feature comparison of PhysiCell and other 3-D multicellular simulation platforms.

(PDF)

User Guide for PhysiCell 1.2.2. Includes full API documentation and examples.

(PDF)

A fast guide to building, running, and visualizing your first PhysiCell simulations. We recommend that new users start with this guide.

(PDF)

3-D simulation of 18 days of hanging drop tumor spheroid growth from 2300 cells to 1.2 million cells, using the deterministic necrosis model. HD (1080p) videos available at:

(MP4)

3-D simulation of 18 days of hanging drop tumor spheroid growth from 2300 cells to 1 million cells, using the stochastic necrosis model. HD (1080p) videos available at:

(MP4)

3-D simulation video of 30 days of DCIS growth in a 1 mm length of breast duct, using the deterministic necrosis model. HD (1080p) videos available at:

(MP4)

3-D simulation video of 30 days of DCIS growth in a 1 mm length of breast duct, using the stochastic necrosis model. HD (1080p) videos available at:

(MP4)

2-D simulation of the “biorobots” example, showing a synthetic multicellular cargo delivery system. HD (1080p) videos available at:

(MP4)

2-D simulations of the “biorobots” adapted for use as a cancer treatment, where cargo cells detach and secrete a therapeutic once reaching hypoxic tissues. HD (1080p) videos available at:

(MP4)

2-D simulation of a tumor whose heterogeneous oncoprotein expression drives proliferation and selection. 4K-resolution (2160p) videos available at:

(MP4)

3-D simulation of immune cells attacking a tumor with heterogeneous proliferation and immunogenicity. 4K-resolution (2160p) videos available at:

(MP4)

We thank Margy Villa for her assistance in early testing, and Edwin Juarez and Rishi Rawat for useful discussions. We greatly appreciate the deep discussions with the MultiCellDS review panel in developing standardized cell cycle and death models. We thank Jakob Kather and Jan Poleszczuk for discussions on cancer immunology. We thank Nathan Choi for his 3-D hanging drop spheroid work in