Level 3 function that selects colonies from MultiColony object based on colony ID or random selection. Whilst user can provide all three arguments ID, p and n, there is a priority list: ID takes first priority. If no ID is provided, p takes precedence over n.
selectColonies(
multicolony,
ID = NULL,
n = NULL,
p = NULL,
by = NULL,
selectTop = TRUE,
simParamBee = NULL
)character or numeric, ID of a colony (one or more) to be selected
numeric, number of colonies to select
numeric, percentage of colonies selected (takes precedence
over n)
matrix, matrix of values to select by with names being
colony IDs (can be obtained with calcColonyValue.
If NULL, the colonies are selected at random.
This parameter is used in combination
with n or p to determine the number of selected colonies, and
selectTop to determine whether to select the best or the worst colonies.
logical, selects highest (lowest) values if TRUE (FALSE)
SimParamBee, global simulation parameters
MultiColony-class with selected colonies
founderGenomes <- quickHaplo(nInd = 5, nChr = 1, segSites = 100)
SP <- SimParamBee$new(founderGenomes)
SP$nThreads = 1L
mean <- c(10, 10 / SP$nWorkers)
varA <- c(1, 1 / SP$nWorkers)
corA <- matrix(data = c(
1.0, -0.5,
-0.5, 1.0
), nrow = 2, byrow = TRUE)
varE <- c(3, 3 / SP$nWorkers)
varA / (varA + varE)
#> [1] 0.25 0.25
SP$addTraitADE(nQtlPerChr = 100,
mean = mean,
var = varA, corA = corA,
meanDD = 0.1, varDD = 0.2, corD = corA,
relAA = 0.1, corAA = corA)
SP$setVarE(varE = varE)
basePop <- createVirginQueens(founderGenomes)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
drones <- createDrones(x = basePop[1:4], nInd = 100)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
droneGroups <- pullDroneGroupsFromDCA(drones, n = 10, nDrones = 10)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
apiary <- createMultiColony(basePop[2:5], n = 4)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
apiary <- cross(apiary, drones = droneGroups[1:4])
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
apiary <- buildUp(apiary)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
getId(apiary)
#> Error in eval(expr, envir, enclos): object 'apiary' not found
getId(selectColonies(apiary, ID = 1))
#> Error in eval(expr, envir, enclos): object 'apiary' not found
getId(selectColonies(apiary, ID = c("3", "4")))
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# ... alternative
getId(apiary[1])
#> Error in eval(expr, envir, enclos): object 'apiary' not found
getId(apiary[["4"]])
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# Select a random number of colonies
selectColonies(apiary, n = 3)
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# Select a percentage of colonies
selectColonies(apiary, p = 0.2)
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# Since selection is random, you would get a different set of colonies with
# each function call
getId(selectColonies(apiary, p = 0.5))
#> Error in eval(expr, envir, enclos): object 'apiary' not found
getId(selectColonies(apiary, p = 0.5))
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# How to select colonies based on colony values?
# Obtain colony phenotype
colonyPheno <- calcColonyPheno(apiary)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
# Select the best colony
selectColonies(apiary, n = 1, by = colonyPheno)
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# Select the worst 2 colonies
selectColonies(apiary, n = 2, by = colonyPheno, selectTop = FALSE)
#> Error in eval(expr, envir, enclos): object 'apiary' not found
# Select best colony based on queen's genetic value for trait 1
queenGv <- calcColonyGv(apiary, FUN = mapCasteToColonyGv, workersTrait = NULL)
#> Error in get(x = "SP", envir = .GlobalEnv): object 'SP' not found
selectColonies(apiary, n = 1, by = queenGv)
#> Error in eval(expr, envir, enclos): object 'apiary' not found