sim.genot.metapop.t: Simulate genetic data from a metapopulation model

View source: R/simgenot_new.R

sim.genot.metapop.tR Documentation

Simulate genetic data from a metapopulation model

Description

This function allows to simulate genetic data from a metapopulation model, where each population can have a different size and a different inbreeding coefficient, and migration between each population is given in a migration matrix.

This function simulates genetic data under a migration matrix model. Each population i sends a proportion of migrant alleles m_{ij} to population j and receives a proportion of migrant alleles m_{ji} from population j.

Usage

sim.genot.metapop.t(size=50,nbal=4,nbloc=5,nbpop=3,N=1000,
mig=diag(3),mut=0.0001,f=0,t=100)

Arguments

size

the number of sampled individuals per population

nbal

the number of alleles per locus (maximum of 99)

nbloc

the number of loci to simulate

nbpop

the number of populations to simulate

N

the effective population sizes of each population. If only one number, all populations are assumed to be of the same size

mig

a matrix with nbpop rows and columns giving the migration rate from population i (in row) to population j (in column). Each row must sum to 1.

mut

the mutation rate of the loci

f

the inbreeding coefficient for each population

t

the number of generation since the islands were created

Details

In this model, \theta_t can be written as a function of population size N_i, migration rate m_{ij}, mutation rate \mu and \theta_{(t-1)}.

The rational is as follows:

With probability \frac{1}{N_i}, 2 alleles from 2 different individuals in the current generation are sampled from the same individual of the previous generation:

-Half the time, the same allele is drawn from the parent;

-The other half, two different alleles are drawn, but they are identical in proportion \theta_{(t-1)}.

-With probability 1-\frac{1}{N_i}, the 2 alleles are drawn from different individuals in the previous generation, in which case they are identical in proportion \theta_{(t-1)}.

This holds providing that neither alleles have mutated or migrated. This is the case with probability m_{ii}^2 \times (1-\mu)^2. If an allele is a mutant, then its coancestry with another allele is 0.

Note also that the mutation scheme assumed is the infinite allele (or site) model. If the number of alleles is finite (as will be the case in what follows), the corresponding mutation model is the K-allele model and the mutation rate has to be adjusted to \mu'=\frac{K-1}{K}\mu.

Continue derivation

Value

A data frame with size*nbpop rows and nbloc+1 columns. Each row is an individual, the first column contains the identifier of the population to which the individual belongs, the following nbloc columns contain the genotype for each locus.

Author(s)

Jerome Goudet jerome.goudet@unil.ch

Examples


#2 populations
psize<-c(10,1000)
mig.mat<-matrix(c(0.99,0.01,0.1,0.9),nrow=2,byrow=TRUE)
dat<-sim.genot.metapop.t(nbal=10,nbloc=100,nbpop=2,N=psize,mig=mig.mat,mut=0.00001,t=100)
betas(dat)$betaiovl # Population specific estimator of FST

#1D stepping stone
## Not run: 
np<-10
m<-0.2
mig.mat<-diag(np)*(1-m)
diag(mig.mat[-1,-np])<-m/2
diag(mig.mat[-np,-1])<-m/2
mig.mat[1,1:2]<-c(1-m/2,m/2)
mig.mat[np,(np-1):np]<-c(m/2,1-m/2)
dat<-sim.genot.metapop.t(nbal=10,nbloc=50,nbpop=np,mig=mig.mat,t=400)
pcoa(as.matrix(genet.dist(dat))) # principal coordinates plot

## End(Not run)


jgx65/hierfstat documentation built on April 20, 2023, 8:34 a.m.