Extrachromosomal DNA (ecDNA) seems to play an important role in fostering cancer progression. We expand the mathematical and computational model developed in Lange et al. 2022 to study the ecDNA dynamics during tumour progression.
To study the impact of the ecDNAs in tumour progression we use agent-based stochastic simulations. We use a Gillespie algorithm to simulate the proliferation and death of cancer cells at each time step proportional to pre-defined proliferation and death rates.
The goal of this project is to two-fold:
- to study the evolution of ecDNA dynamics in cancer using a computational model based stochastic simulations
- to fit this model to patient's data by inferring the proliferative advantage (i.e. selection strength) present in tumours with ecDNAs.
We implemented a command line interface used to configure and run the simulations.
The simulations can be ran in Linux, Windows and macOS.
Install the rust package either from the pre-built binaries or from source, see below.
Pre-built binaries for macOS, Windows and Linux can also be downloaded from the GitHub releases page.
For older version of Linux or is something does not work, install from source.
Need rust to be installed. Download
the source code and compile with cargo with the --release
flag;
git clone git@github.com:fraterenz/ecdna-evo.git
cargo build --release -- --help
When building from source, the /path/to/ecdna
(see usage) will be
/path/to/ecdna-evo/target/release/ecdna
.
There are two main usages: TODO.
- study the dynamics of ecDNA by simulating an exponentially growing tumor
population carrying ecDNA copies:
/path/to/ecdna simulate --help
, see also here. - infer the proliferation advantage of cells with ecDNA copies (
$\rho_1$ ) from data using approximate Bayesian computation (ABC):/path/to/ecdna abc --help
, see also here.
When prebuilt binaries are used, replace in the example
./target/release/ecdna
by /path/to/ecdna
, where /path/to/ecdna
is the
path to the ecdna binaries. TODO.
- Simulate 10 tumour growths (10000 cells each) with
$\rho_1$ equals to 1 (neutral case) using the code compiled from source (see./target/release/ecdna simulate --help
):
# simulate tumour growth
./target/release/ecdna simulate --cells 10000 --runs 10 --rho1 1 --dynamics nplus nminus --patient example
- Prepare the data for the abc inference, add to the patient
example
one samplesample1
defined by the ecdna distributionresults/example/10000samples10000cells/0/ecdna/0.json
, this sample having an estimated population of 10000 tumour cells (see./target/release/preproces --help
):
./target/release/ecdna preprocess example sample1 10000 --distribution results/example/10000samples10000cells/0/ecdna/0.json
- Now perform the bayesian inference.
Performing the bayesian inference with more the runs will generate more
accurate results, but will also take more time.
Infer the proliferation advantage and the initial copy number using 1000 runs
for the patient
example
(see./target/release/ecdna abc --help
):
./target/release/ecdna abc --runs 1000 --rho1-range 1 3 --rho2-range 1 --delta1-range 0 --delta2-range 0 --copies-range 1 20 --patient results/preprocessed/example.json
See here for the first usage and here for the bayesian inference framework.