Learn R Programming

SITH (version 1.1.0)

simulateTumor: Spatial simulation of tumor growth

Description

Simulate the spatial growth of a tumor with a multi-type branching process on the three-dimensional integer lattice.

Usage

simulateTumor(
  max_pop = 250000,
  div_rate = 0.25,
  death_rate = 0.18,
  mut_rate = 0.01,
  driver_prob = 0.003,
  selective_adv = 1.05,
  disease_model = NULL,
  verbose = TRUE
)

Arguments

max_pop

Number of cells in the tumor.

div_rate

Cell division rate.

death_rate

Cell death rate.

mut_rate

Mutation rate. When a cell divides, both daughter cell acquire \(Pois(u)\) genetic alterations

driver_prob

The probability that a genetic alteration is a driver mutation.

selective_adv

The selective advantage conferred to a driver mutation. A cell with k driver mutations is given birth rate \(bs^k\).

disease_model

Edge list for a directed acyclic graph describing possible transitions between states. See progressionChain() for an example of a valid input matrix.

verbose

Whether or not to print simulation details to the R console.

Value

A list with components

  • cell_ids - A data frame containing the information for the simulated cells. (x,y,z) position, allele ID number (note that 0 is the wild-type allele), number of genetic alterations, and Euclidean distance from origin are included.

  • muts - A data frame consisting of the mutation ID number, the count of the mutation within the population, and the mutation allele frequency (which is the count divided by N).

  • phylo_tree - A data frame giving all of the information necessary to determine the order of mutations. The parent of a mutation is defined to be the most recent mutation that precedes it. Since the ID 0 corresponds to the initial mutation, 0 does not have any parents and is thus the root of the tree.

  • genotypes - A data frame containing the information about the mutations that make up each allele. The \(i\)-th row of this data frame corresponds to the allele ID \(i-1\). The positive numbers in each row correspond to the IDs of the mutations present in that allele, while a -1 is simply a placeholder and indicates no mutation. The count column gives the number of cells which have the specific allele.

  • color_scheme - A vector containing an assignment of a color to each allele.

  • drivers - A vector containing the ID numbers for the driver mutations.

  • time - The simulated time (in days).

  • params - The parameters used for the simulation.

Details

The model is based upon Waclaw et. al. (2015), although the simulation algorithm used is different. A growth of a cancerous tumor is modeled using an exponential birth-death process on the three-dimensional integer lattice. Each cell is given a birth rate \(b\) and a death rate \(d\) such that the time until cell division or cell death is exponentially distributed with parameters \(b\) and \(d\), respectively. A cell can replicate if at least one of the six sites adjacent to it is unoccupied. Each time cell replication occurs, both daughter cells receive \(Pois(u)\) genetic alterations. Each alteration is a driver mutation with some probability \(du\). A cell with k driver mutations is given birth rate \(bs^k\). The simulation begins with a single cell at the origin at time \(t = 0\).

The model is simulated using a Gillespie algorithm. See the package vignette for details on how the algorithm is implemented.

References

B. Waclaw, I. Bozic, M. Pittman, R. Hruban, B. Vogelstein and M. Nowak. A spatial model predicts that dispersal and cell turnover limit intratumor heterogeneity. Nature, pages 261-264, 2015.

D. Gillespie. Exact stochastic simulation of coupled chemical reactions. The Journal of Physical Chemistry, volume 81, pages 2340-2361, 1970.

Examples

Run this code
# NOT RUN {
out <- simulateTumor(max_pop = 1000)
#Take a look at mutants in order of decreasing MAF
sig_muts <- out$muts[order(out$muts$MAF, decreasing = TRUE),]

#Specify the disease model
out <- simulateTumor(max_pop = 1000, disease_model = progressionChain(3))

# }

Run the code above in your browser using DataLab