haploGen  R Documentation 
The function haploGen
implements simulations of genealogies of
haplotypes. This forwardtime, individualbased simulation tool allows
haplotypes to replicate and mutate according to specified parameters,
and keeps track of their genealogy.
Simulations can be spatially explicit or not (see geo.sim
argument). In the first case, haplotypes are assigned to locations on
a regular grip. New haplotypes disperse from their ancestor's location
according to a random Poisson diffusion, or alternatively according to
a prespecified migration scheme. This tool does not allow for
simulating selection or linkage disequilibrium.
Produced objects are lists with the class haploGen
; see 'value'
section for more information on this class. Other functions are
available to print, plot, subset, sample or convert haploGen
objects. A seqTrack method is also provided for analysing
haploGen
objects.
Note that for simulation of outbreaks, the new tool simOutbreak
in the outbreaker
package should be used.
haploGen(seq.length=1e4, mu.transi=1e4, mu.transv=mu.transi/2, t.max=20, gen.time=function(){1+rpois(1,0.5)}, repro=function(){rpois(1,1.5)}, max.nb.haplo=200, geo.sim=FALSE, grid.size=10, lambda.xy=0.5, mat.connect=NULL, ini.n=1, ini.xy=NULL) ## S3 method for class 'haploGen' print(x, ...) ## S3 method for class 'haploGen' as.igraph(x, col.pal=redpal, ...) ## S3 method for class 'haploGen' plot(x, y=NULL, col.pal=redpal, ...) ## S3 method for class 'haploGen' x[i, j, drop=FALSE] ## S3 method for class 'haploGen' labels(object, ...) ## S3 method for class 'haploGen' as.POSIXct(x, tz="", origin=as.POSIXct("2000/01/01"), ...) ## S3 method for class 'haploGen' seqTrack(x, best=c("min","max"), prox.mat=NULL, ...) as.seqTrack.haploGen(x) plotHaploGen(x, annot=FALSE, date.range=NULL, col=NULL, bg="grey", add=FALSE, ...) sample.haploGen(x, n)
seq.length 
an integer indicating the length of the simulated haplotypes, in number of nucleotides. 
mu.transi 
the rate of transitions, in number of mutation per site and per time unit. 
mu.transv 
the rate of transversions, in number of mutation per site and per time unit. 
t.max 
an integer indicating the maximum number of time units to run the simulation for. 
gen.time 
an integer indicating the generation time, in number of time units. Can be a (fixed) number or a function returning a number (then called for each reproduction event). 
repro 
an integer indicating the number of descendents per haplotype. Can be a (fixed) number or a function returning a number (then called for each reproduction event). 
max.nb.haplo 
an integer indicating the maximum number of haplotypes handled at any time of the simulation, used to control the size of the produced object. Larger number will lead to slower simulations. If this number is exceeded, the genealogy is prunded to as to keep this number of haplotypes. 
geo.sim 
a logical stating whether simulations should be spatially explicit (TRUE) or not (FALSE, default). Spatiallyexplicit simulations are slightly slower than their nonspatial counterpart. 
grid.size 
the size of the square grid of possible locations for spatial simulations. The total number of locations will be this number squared. 
lambda.xy 
the parameter of the Poisson distribution used to determine dispersion in x and y axes. 
mat.connect 
a matrix of connectivity describing migration
amongts all pairs of locations. 
ini.n 
an integer specifying the number of (identical) haplotypes to initiate the simulation 
ini.xy 
a vector of two integers giving the x/y coordinates of the initial haplotype. 
x,object 

y 
unused argument, for compatibility with 'plot'. 
col.pal 
a color palette to be used to represent weights using
colors on the edges of the graph. See 
i,j, drop 

best, prox.mat 
arguments to be passed to the

annot,date.range,col,bg,add 
arguments to be passed to 
n 
an integer indicating the number of haplotypes to be retained in the sample 
tz, origin 
aguments to be passed to 
... 
further arguments to be passed to other methods; for
'plot', arguments are passed to 
=== Dependencies with other packages ===
 ape package is required as it implements efficient handling of DNA
sequences used in haploGen
objects. To install this package,
simply type:
install.packages("ape")
 for various purposes including plotting, converting genealogies to
graphs can be useful. From adegenet version 1.35 onwards, this is
achieved using the package igraph
. See below.
=== Converting haploGen objects to graphs ===
haploGen
objects can be converted to igraph
objects (package igraph
), which can in turn be plotted and manipulated using classical
graph tools. Simply use 'as.igraph(x)' where 'x' is a
haploGen
object. This functionality requires the igraph
package. Graphs are time oriented (top=old, bottom=recent).
=== haploGen class ===
haploGen
objects are lists containing the following slots:
 seq: DNA sequences in the DNAbin matrix format
 dates: dates of appearance of the haplotypes
 ances: a vector of integers giving the index of each haplotype's
ancestor
 id: a vector of integers giving the index of each haplotype
 xy: (optional) a matrix of spatial coordinates of haplotypes
 call: the matched call
=== misc functions ===
 as.POSIXct: returns a vector of dates with POSIXct format
 labels: returns the labels of the haplotypes
 as.seqTrack: returns a seqTrack object. Note that this object is not a
proper seqTrack analysis, but just a format conversion convenient for
plotting haploGen
objects.
Thibaut Jombart t.jombart@imperial.ac.uk
Jombart T, Eggo R, Dodd P, Balloux F (2010) Reconstructing disease outbreaks from genetic data: a graph approach. Heredity. doi: 10.1038/hdy.2010.78.
simOutbreak
in the package 'outbreaker' for simulating disease
outbreaks under a realistic epidemiological model.
## Not run: if(require(ape) && require(igraph)){ ## PERFORM SIMULATIONS x < haploGen(geo.sim=TRUE) x ## PLOT DATA plot(x) ## PLOT SPATIAL SPREAD plotHaploGen(x, bg="white") title("Spatial dispersion") ## USE SEQTRACK RECONSTRUCTION x.recons < seqTrack(x) mean(x.recons$ances==x$ances, na.rm=TRUE) # proportion of correct reconstructions g < as.igraph(x) g plot(g) plot(g, vertex.size=0) } ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.