Learn R Programming

bnpsd (version 1.1.1)

make_p_ind_admix: Construct individual-specific allele frequency matrix under the PSD admixture model

Description

Here \(m\) is the number of loci, \(n\) the number of individuals, and \(k\) the number of intermediate subpopulations. The \(m \times n\) individual-specific allele frequency matrix \(P\) is constructed from the \(m \times k\) intermediate subpopulation allele frequency matrix \(B\) and the \(n \times k\) admixture proportion matrix \(Q\) using $$P = B Q^T.$$ This function is a wrapper around tcrossprod, but also ensures the output allele frequencies are in [0, 1], as this is not guaranteed by tcrossprod due to limited machine precision.

Usage

make_p_ind_admix(p_subpops, admix_proportions)

Arguments

p_subpops

The \(m \times k\) matrix of intermediate subpopulation allele frequencies.

admix_proportions

The \(n \times k\) matrix of admixture proportions.

Value

The \(m \times n\) matrix of individual-specific allele frequencies.

Examples

Run this code
# NOT RUN {
# data dimensions
# number of loci
m_loci <- 10
# number of individuals
n_ind <- 5
# number of intermediate subpops
k_subpops <- 2

# FST values for k = 2 subpops
inbr_subpops <- c(0.1, 0.3)

# non-trivial admixture proportions
admix_proportions <- admix_prop_1d_linear(n_ind, k_subpops, sigma = 1)

# random vector of ancestral allele frequencies
p_anc <- draw_p_anc(m_loci)

# matrix of intermediate subpop allele freqs
p_subpops <- draw_p_subpops(p_anc, inbr_subpops)

# matrix of individual-specific allele frequencies
p_ind <- make_p_ind_admix(p_subpops, admix_proportions)

# }

Run the code above in your browser using DataLab