Code for forward population genetic simulation in asexual populations, with special focus on cancer progression. Fitness can be an arbitrary function of genetic interactions between multiple genes or modules of genes, including epistasis, order restrictions in mutation accumulation, and order effects. Mutation rates can differ between genes, and we can include mutator/antimutator genes (to model mutator phenotypes). Simulations so far use continuous-time models and can include driver and passenger genes and modules. Also included are functions for: simulating random DAGs of the type found in Oncogenetic Tress, Conjunctive Bayesian Networks, and other tumor progression models; plotting and sampling from single or multiple realizations of the simulations, including single-cell sampling; plotting the parent-child relationships of the clones; generating random fitness landscapes (Rough Mount Fuji, House of Cards, and additive models) and plotting them.
The /OncoSimulR directory contains the code for the BioConductor package OncoSimulR. The /miscell-files directory contains additional files so far only related to the above.
A former version of this code has been used in the paper "Identifying restrictions in the order of accumulation of mutations during tumor progression: effects of passengers, evolutionary models, and sampling", BMC Bioinformatics, 2015, 16:41. OncoSimulR has also been used extensively in the simulations reported in the Bioinformatics paper "Cancer Progression Models And Fitness Landscapes: A Many-To-Many Relationship" and the bioRxiv preprint "Every which way? On predicting tumor evolution using cancer progression models".
You can also find
OncoSimulR
on the Genetic Simulation Resources
catalogue.
To use the most recent code in BioConductor, install the devel version.
if (!require("BiocManager"))
install.packages("BiocManager")
BiocManager::install("OncoSimulR", version = "devel")
To start using it:
library(OncoSimulR)
You can directly install from github (and this might be newer than the BioC code)
install.packages("devtools") ## if you don't have it already
library(devtools)
install_github("rdiaz02/OncoSimul/OncoSimulR")
But sometimes the latest additions in this repo could be broken (see Software status). And you can of course clone this repo, and install from there.
The github repository for this package is this one: https://github.com/rdiaz02/OncoSimul . Since mid-2017 BioConductor is maintained using git, but since this directory contains other files and directories in addition to the OncoSimulR package itself, I have not used option "Sync an existing GitHub repository with Bioconductor". Instead, I continue using this github repo, but then locally update a Bioconductor-only repository of just the OncoSimulR code (as explained in Maintain a Bioconductor-only repository for an existing package).
As any R/BioConductor package, OncoSimulR comes with documentation for its
user-visible functions and data sets (using the help is just standard R
usage). From
OncoSimulR's BioConductor page
you have access to the standard documentation both the manual and overview
---the vignette. The best place to start is the vignette (created from the
OncoSimulR/vignettes/OncoSimulR.Rnw
file that includes both text and
code).
You can view the vignette from R itself doing
browseVignettes("OncoSimulR")
and this gives you access to the HTML, the Rmd file (markdown + R), and the R code.
From these two links you can also browse the HTML vignette and get a PDF version.
These files correspond to the most recent, github version, of the package (i.e., they might include changes not yet available from the BioConudctor package).
This paper published in Bioinformatics gives a quick overview of OncoSimulR (a former version is available as a bioRxiv preprint). You can also take a look at this poster presented at ECCB 2016.
If you use the package in publications please cite the Bioinformatics paper.
The R/BioConductor OncoSimulR package is licensed under the GPLv3
license. All of the code for the OncoSimulR BioConductor package, except
for functions plot.stream
and plot.stacked
, is Copyright 2012-2016 by
Ramon Diaz-Uriarte. plot.stream
and plot.stacked
are Copyright
2013-2016 by Marc Taylor (see also https://github.com/marchtaylor/sinkr
and
http://menugget.blogspot.com.es/2013/12/data-mountains-and-streams-stacked-area.html).
The code in miscell-files/randutils.h
is copyright Melissa E. O'Neill,
and is licensed under "The MIT License (MIT)" in the terms explained in
the file itself. This is a license that is
compatible with the GPL.
The file randutils.hpp was downloaded from
https://gist.github.com/imneme/540829265469e673d045 on 2015-06-20 and is
also referenced from the main article [Ease of Use without Loss of Power]
(http://www.pcg-random.org/posts/ease-of-use-without-loss-of-power.html). I
renamed it to randutils.h to conform to R's requirements (and changed the
auto exit_func = hash(&_Exit);
line to keep R from complaining about the
Exit function). I had to disable usage of randutils for now, since I could
not get it to compile with gcc-4.6 (since version 3.3 of R,
the official Rtools for Windows now support C++-11, so I might change
this in the near future).
The file under gitinfo-hooks is Copyright 2011 Brent Longborough, is part of the gitinfo package, and is under the LaTeX Project Public License 1.3, which is incompatible with the GPL. Note this file is not part of the OncoSimulR BioConductor package.
The files under miscell-files/AParramon_discrete_time are copyright Alberto Parramon, unless otherwise specified. This is an implementation of a discrete-time version of OncoSimulR.
Bioconductor (multiple platforms) | Travis CI (Linux) | Appveyor (Windows) | |
---|---|---|---|
R CMD check | |||
Test coverage |
(Note: Appveyor can fail for reasons that have nothing to do with the package, such as R not being downloaded correctly, etc. Look at the details of each failure. Similarly, some of the errors in BioConductor, specially in the development branch, can be caused, specially in Windows, by some required packages not being yet available, often "car" and _"igraph".
Again, look at the details of each failure.)