Can be used with optimize_design to improve convergence speed.
shuffle_with_constraints(src =TRUE, dst =TRUE)
Arguments
src: Expression to define possible source locations in the samples/locations table. Usually evaluated based on BatchContainer$get_samples(include_id = TRUE, as_tibble = FALSE) as an environment (see also with()). A single source location is selected from rows where the expression evaluates toTRUE.
dst: Expression to define possible destination locations in the samples/locations table. Usually evaluated based on BatchContainer$get_samples() as an environment. Additionally a special variable .src is available in this environment which describes the selected source row from the table.
Returns
Returns a function which accepts a BatchContainer and an iteration number (i). This function returns a list with two names: src vector of length 2 and dst vector of length two. See BatchContainer$move_samples().
Examples
set.seed(43)samples <- data.frame( id =1:100, sex = sample(c("F","M"),100, replace =TRUE), group = sample(c("treatment","control"),100, replace =TRUE))bc <- BatchContainer$new( dimensions = c("plate"=5,"position"=25))scoring_f <-function(samples){ osat_score( samples,"plate", c("sex","group"))$score
}# in this example we treat all the positions in the plate as equal.# when shuffling we enforce that source location is non-empty,# and destination location has a different plate numberbc <- optimize_design( bc, scoring = scoring_f, samples, shuffle_proposal = shuffle_with_constraints(# source is non-empty location!is.na(.sample_id),# destination has a different plate plate != .src$plate
), max_iter =10)