This takes the output of segregate() and deals with the multiple gpp's and reps to come up with a unique index for each found haplotype, so that those haplotypes can all, eventually, be accessed easily out of the genotype matrix. Along the way, this function does some light checking to make sure that the rs_founder_haplo values are dense within gpp and index as they should be.

sim_level_founder_haplos(S)

Arguments

S

tibble of segments like that produced by segregate.

Value

This function returns a result that is basically the output of segregate() with an additional column added to it: sim_level_founder_haplo. This is the index of the haplotype within each group_origin that should be used. For details of the other columns in the output tibble, see the documentation for segregate.

Examples

#### Get output from segregate to use as input ####
# We construct an example here where we will request segregation
# down a GSP with two F1s and F1B backcrosses between two hypothetical
# populations, A and B.
gsp_f1f1b <- create_GSP("A", "B", F1 = TRUE, F1B = TRUE)

# We will imagine that in our marker data there are three groups
# labelled "grp1", "grp2", and "grp3", and we want to create the F1Bs with backcrossing
# only to grp3.
reppop <- tibble::tibble(
  index = as.integer(c(1, 1, 2, 2)),
  pop = c("A", "B", "A", "B"),
  group = c("grp3", "grp1", "grp3", "grp2")
)

# combine those into a request
request <- tibble::tibble(
  gpp = list(gsp_f1f1b),
  reppop = list(reppop)
)

# now run it through segregate()
set.seed(5)  # just for reproducibility in example...
simSegs <- segregate(request, RecRates)

#### Now we can run those through sim_level_founder_haplos() ####
fh <- sim_level_founder_haplos(simSegs)
fh
#> # A tibble: 52 × 15
#>    chrom_f   gpp index chrom ped_sample_id samp_index gamete_index
#>    <fct>   <int> <int> <chr> <chr>              <int>        <dbl>
#>  1 12          1     1 12    4                      1            1
#>  2 17          1     1 17    4                      1            1
#>  3 18          1     1 18    4                      1            1
#>  4 12          1     1 12    4                      1            2
#>  5 17          1     1 17    4                      1            2
#>  6 18          1     1 18    4                      1            2
#>  7 12          1     1 12    5                      1            1
#>  8 17          1     1 17    5                      1            1
#>  9 18          1     1 18    5                      1            1
#> 10 12          1     1 12    5                      1            2
#> # ℹ 42 more rows
#> # ℹ 8 more variables: gamete_segments <list>, pop_origin <chr>,
#> #   rs_founder_haplo <int>, start <dbl>, end <dbl>, group_origin <chr>,
#> #   sim_level_founder_haplo.x <int>, sim_level_founder_haplo.y <int>