R/computeQs_from_segments.R
computeQs_from_segments.Rd
This operates on the output of segregate to add up the lengths of all the segments segregated to different individuals to thus compute the admixture fractions of each sampled individual.
computeQs_from_segments(S, check_total_length = TRUE)
the tibble output from segregate
TRUE means it checks the total genome length in each individual to make sure it checks out.
This function returns a tibble with the following columns:
gpp
: the genomic simulation pedigree within which the individual sample was
simulated.
index
: the index which gives which instance of the GSP the sample is from
ped_sample_id
: the id number of that the sampled individual had in the
genomic simulation pedigree.
samp_index
: the index of the sample taken. Some individuals in some
genomic simulation pedigrees can produce more than one sample. This number
tells you which sample it is.
pop_origin
: the "pedigree" population of origin of the segments that contributed
to the group_length
. These are
the simple "A", "B", "C", etc. designations given in the genomic simulation
pedigree.
group_origin
: Which group of samples the segments contributing to
the group_length
originated from. These are the groups of samples
that were mapped onto the simple pedigree pop_origin
s by the reppop
request.
group_length
: the total length of segments from this group in this individual
in this reppop index from this gpp (in bases).
tot_length
: the total number of bases from all origins carried by this
individual.
admixture_fraction
: the fraction of all bases in the simulated individual
that originate from the group in group_origin
.
#### 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 computeQs_from_segments() ####
Qs <- computeQs_from_segments(simSegs)
Qs
#> # A tibble: 12 × 9
#> gpp index ped_sample_id samp_index pop_origin group_origin group_length
#> <int> <int> <chr> <int> <chr> <chr> <dbl>
#> 1 1 1 4 1 A grp3 194086448
#> 2 1 1 4 1 B grp1 194086448
#> 3 1 1 5 1 A grp3 372323876.
#> 4 1 1 5 1 B grp1 15849020.
#> 5 1 1 5 2 A grp3 209935468.
#> 6 1 1 5 2 B grp1 178237428.
#> 7 1 2 4 1 A grp3 194086448
#> 8 1 2 4 1 B grp2 194086448
#> 9 1 2 5 1 A grp3 325654769.
#> 10 1 2 5 1 B grp2 62518127.
#> 11 1 2 5 2 A grp3 256604575.
#> 12 1 2 5 2 B grp2 131568321.
#> # ℹ 2 more variables: tot_length <dbl>, admixture_fraction <dbl>