Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup, include = FALSE---------------------------------------------------
library(Ease)
## -----------------------------------------------------------------------------
DL <- list(dl = c("A", "a"))
HL <- list(hl = c("B", "b"))
genomeObj <- setGenome(listHapLoci = HL, listDipLoci = DL)
## -----------------------------------------------------------------------------
genomeObj
## -----------------------------------------------------------------------------
print(genomeObj)
## -----------------------------------------------------------------------------
mutMatrixObj <- setMutationMatrix(
genomeObj = genomeObj,
mutHapLoci = list(matrix(c(
0.95, 0.05,
0.03, 0.97
), 2, byrow = TRUE)),
mutDipLoci = list(matrix(c(
0.9, 0.1,
0.09, 0.91
), 2, byrow = TRUE))
)
mutMatrixObj
## -----------------------------------------------------------------------------
mutMatrixObj <- setMutationMatrix(genomeObj = genomeObj, forwardMut = 0.01)
mutMatrixObj
## -----------------------------------------------------------------------------
mutMatrixObj <- setMutationMatrix(
genomeObj = genomeObj,
mutations = list(
mutation(from = "A", to = "a", rate = 0.01),
mutation(from = "B", to = "b", rate = 0.01)
)
)
mutMatrixObj
## -----------------------------------------------------------------------------
selectionObj <- setSelectNeutral(genomeObj = genomeObj)
## -----------------------------------------------------------------------------
selectionObj
## -----------------------------------------------------------------------------
print(selectionObj)
## -----------------------------------------------------------------------------
indFit <- list(
1 - h * s ~ a:b,
1 - s ~ h(a):b
)
s <- 0.8
h <- 0.5
selectionObj <- setSelectOnInds(
genomeObj = genomeObj,
indFit = indFit
)
## -----------------------------------------------------------------------------
selectionObj
## -----------------------------------------------------------------------------
print(selectionObj)
## -----------------------------------------------------------------------------
indProdFit <- list(
1 - h * s ~ a:b,
1 - s ~ h(a):b
)
s <- 0.8
h <- 0.5
selectionObj <- setSelectOnGametesProd(
genomeObj = genomeObj,
indProdFit = indProdFit
)
## -----------------------------------------------------------------------------
gamFit <- list(
1 - s ~ a:b
)
s <- 0.8
h <- 0.5
selectionObj <- setSelectOnGametes(
genomeObj = genomeObj,
gamFit = gamFit
)
## -----------------------------------------------------------------------------
indFit <- list(
1 - h * s ~ a:b,
1 - s ~ h(a):b
)
indProdFit <- list(
1 - h * s ~ a:b,
1 - s ~ h(a):b
)
gamFit <- list(
1 - s ~ a:b
)
s <- 0.8
h <- 0.5
selectionObj <- setSelectOnInds(genomeObj = genomeObj, indFit = indFit)
selectionObj <- setSelectOnGametesProd(indProdFit = indProdFit, selectionObj = selectionObj)
selectionObj <- setSelectOnGametes(femaleFit = gamFit, selectionObj = selectionObj)
print(selectionObj)
## -----------------------------------------------------------------------------
DL <- list(dl = c("A", "a"))
HL <- list(hl = c("B", "b"))
mutations <- list(
mutation(from = "A", to = "a", rate = 1e-3),
mutation(from = "B", to = "b", rate = 1e-3)
)
genomeObj <- setGenome(listHapLoci = HL, listDipLoci = DL)
pop <- setPopulation(
name = "A",
size = 1000,
dioecy = TRUE,
genomeObj = genomeObj,
selectionObj = setSelectNeutral(genomeObj),
mutMatrixObj = setMutationMatrix(genomeObj, mutations = mutations)
)
pop
## -----------------------------------------------------------------------------
print(pop)
## -----------------------------------------------------------------------------
customOutFunct <- function(pop) {
if (pop$freqAlleles[4] < 0.1 | pop$freqAlleles[4] > 0.9) {
return(list(TRUE, a = list(gen = pop$gen, freq = pop$freqAlleles[4])))
}
return(list(FALSE))
}
## -----------------------------------------------------------------------------
DL <- list(dl = c("A", "a"))
genomeObj <- setGenome(listDipLoci = DL)
print(genomeObj)
## -----------------------------------------------------------------------------
mutMatrixObj <- setMutationMatrix(
genomeObj = genomeObj,
forwardMut = 1e-3,
backwardMut = 1e-3
)
print(mutMatrixObj)
## -----------------------------------------------------------------------------
# Selection in population 1
indFit <- list(
1 + h * s ~ a,
1 + s ~ h(a)
)
h <- 0.5
s <- 0.05
selectionObj1 <- setSelectOnInds(
genomeObj = genomeObj,
indFit = indFit
)
print(selectionObj1)
# Selection in population 2
indFit <- list(
1 + h * s ~ A,
1 + s ~ h(A)
)
h <- 0.5
s <- 0.05
selectionObj2 <- setSelectOnInds(
genomeObj = genomeObj,
indFit = indFit
)
print(selectionObj2)
## -----------------------------------------------------------------------------
migMat <- matrix(c(
0.995, 0.005,
0.005, 0.995
), 2, 2)
## -----------------------------------------------------------------------------
metapop <- setMetapopulation(
populations = list(
setPopulation(
name = "pop1", size = 500, dioecy = F, genomeObj = genomeObj,
selectionObj = selectionObj1, mutMatrixObj = mutMatrixObj, selfRate = 0.5
),
setPopulation(
name = "pop2", size = 500, dioecy = F, genomeObj = genomeObj,
selectionObj = selectionObj2, mutMatrixObj = mutMatrixObj, selfRate = 0.5
)
),
migMat = migMat
)
metapop
## -----------------------------------------------------------------------------
print(metapop)
## -----------------------------------------------------------------------------
nsim <- 100
metapop <- simulate(metapop,
nsim = nsim, seed = 123,
recording = TRUE, recordGenGap = 50,
threshold = 800
)
metapopDeterminist <- simulate(metapop,
drift = FALSE, seed = 123,
recording = TRUE, threshold = 800
)
## -----------------------------------------------------------------------------
rec <- getRecords(metapop)
recMean <- Reduce(
function(x, y) {
x$pop1 <- x$pop1 + y$pop1
x$pop2 <- x$pop2 + y$pop2
x
},
rec
)
recMean$pop1 <- recMean$pop1 / nsim
recMean$pop2 <- recMean$pop2 / nsim
recDeterminist <- getRecords(metapopDeterminist)$s1
## ---- dpi = 100, fig.width = 7, fig.asp = 2-----------------------------------
par(mfrow = c(2, 1))
### Allelic frequency
plot(c(),
xlim = c(0, 800), ylim = c(0, 1), col = "blue",
xlab = "Generation\n(blue for A, red for B)",
ylab = "Frequency of a"
)
# Stochastic
for (i in seq_len(nsim)) {
lines(rec[[i]]$pop1$gen, rec[[i]]$pop1$a, lty = "longdash", col = "lightblue")
lines(rec[[i]]$pop2$gen, rec[[i]]$pop2$a, lty = "longdash", col = "lightpink")
}
lines(recMean$pop1$gen, recMean$pop1$a, lty = "longdash", col = "blue")
lines(recMean$pop2$gen, recMean$pop2$a, lty = "longdash", col = "red")
# Deterministic
lines(recDeterminist$pop1$gen, recDeterminist$pop1$a, lty = "longdash", col = "blue", lwd = 2)
lines(recDeterminist$pop2$gen, recDeterminist$pop2$a, lty = "longdash", col = "red", lwd = 2)
# Mean stochastic
lines(recMean$pop1$gen, recMean$pop1$a, col = "blue")
lines(recMean$pop2$gen, recMean$pop2$a, col = "red")
### Mean fitness
plot(c(),
xlim = c(0, 800), ylim = c(1, 1 + s), col = "blue",
xlab = "Generation\n(blue for A, red for B)",
ylab = "Frequency of a"
)
# Stochastic
for (i in seq_len(nsim)) {
lines(rec[[i]]$pop1$gen, rec[[i]]$pop1$indMeanFit, lty = "longdash", col = "lightblue")
lines(rec[[i]]$pop2$gen, rec[[i]]$pop2$indMeanFit, lty = "longdash", col = "lightpink")
}
lines(recMean$pop1$gen, recMean$pop1$indMeanFit, lty = "longdash", col = "blue")
lines(recMean$pop2$gen, recMean$pop2$indMeanFit, lty = "longdash", col = "red")
# Deterministic
lines(recDeterminist$pop1$gen, recDeterminist$pop1$indMeanFit, lty = "longdash", col = "blue", lwd = 2)
lines(recDeterminist$pop2$gen, recDeterminist$pop2$indMeanFit, lty = "longdash", col = "red", lwd = 2)
# Mean stochastic
lines(recMean$pop1$gen, recMean$pop1$indMeanFit, col = "blue")
lines(recMean$pop2$gen, recMean$pop2$indMeanFit, col = "red")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.