Skip to content

tmichoel/BranchingProcesses.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BranchingProcesses

Dev Build Status

BranchingProcesses is a Julia package for modelling branching stochastic processes, also known as branching particle systems.

Branching stochastic processes are processes where "particles" (which could represent cells, individuals, or species depending on the context) have one or more degrees of freedom $X(t)$ whose dynamics is described by a stationary Markov process. After a certain lifetime, a particle splits into $k\geq 0$ identical, independent offspring particles with probability $p_k$. This process is repeated indefinitely, producing a collection of $N(t)$ particles at time $t$. Splitting happens with a rate function $\gamma(t)$ that may depend on the age $t$ of the particle.

Examples of such processes are:

Although the package can probably be used or extended for generic phylodynamic analyses, the dedicated PhyloTraits package will probably be more appropriate for that purpose.

The primary motivation for this package is to provide a framework for the analysis of a "memory" phenomenon that can occur in branching stochastic processes if the relaxation rate of the single-particle dynamics is slow relative to the branching rate. In this case the system can remember its initial state, or, put differently, large fluctuations early in the expansion can have a long-lasting effect on the state of the system. The study of this phenomenon implicitly traces its roots (no pun intended) to Luria and Delbrück's fluctuation analysis. More recently, it has been

Studying this phenomenon requires the analysis of fluctuations across multiple independent realizations of the branching process. This is in contrast to the more common use of branching processes in population and phylogenetics, where the focus is on the evolution of a single lineage.

Supported stochastic processes

The aim is to support any process that can be implemented as a stochastic differential equation, jump process, or jump diffusion equation.

Specific branching process constructors will be implemented for the following stochastic processes:

For now, see the examples in the documentation for how to construct branching processes.

Supported lifetime distributions

A branching rate function $\gamma(t)$ defines a lifetime distribution $w(t)=\exp(-\int_0^t ds\gamma(s))$, and vice versa, where $w(t)$ is the probability of a particle to reach age $t$ without splitting. The package uses the lifetime distribution representation and supports any univariate distribution with positive support.

Supported splitting distributions

Any discrete univariate distribution (default: Dirac with parameter 2, that is, all particles split into two offspring particles).

About

A julia package for modelling branching stochastic processes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages