oracle_mis_vec: Returns the oracle misclassification rates for each genotype.

View source: R/RcppExports.R

oracle_mis_vecR Documentation

Returns the oracle misclassification rates for each genotype.


Given perfect knowledge of the data generating parameters, oracle_mis_vec calculates the misclassification error rate at each genotype. This differs from oracle_mis in that this will not average over the genotype distribution to get an overall misclassification error rate. That is, oracle_mis_vec returns a vector of misclassification error rates conditional on each genotype.


oracle_mis_vec(n, ploidy, seq, bias, od, dist)



The read-depth.


The ploidy of the individual.


The sequencing error rate.


The allele-bias.


The overdispersion parameter.


The distribution of the alleles.


This is an ideal level of the misclassification error rate and any real method will have a larger rate than this. This is a useful approximation when you have a lot of individuals.

To come up with dist, you need some additional assumptions. For example, if the population is in Hardy-Weinberg equilibrium and the allele frequency is alpha then you could calculate dist using the R code: dbinom(x = 0:ploidy, size = ploidy, prob = alpha). Alternatively, if you know the genotypes of the individual's two parents are, say, ref_count1 and ref_count2, then you could use the get_q_array function from the updog package: get_q_array(ploidy)[ref_count1 + 1, ref_count2 + 1, ].


A vector of numerics. Element i is the oracle misclassification error rate when genotyping an individual with actual genotype i + 1.


David Gerard


  • Gerard, D., Ferrão, L. F. V., Garcia, A. A. F., & Stephens, M. (2018). Genotyping Polyploids from Messy Sequencing Data. Genetics, 210(3), 789-807. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1534/genetics.118.301468")}.


## Hardy-Weinberg population with allele-frequency of 0.75.
## Moderate bias and moderate overdispersion.
ploidy <- 4
dist <- stats::dbinom(0:ploidy, ploidy, 0.75)
om <- oracle_mis_vec(n = 100, ploidy = ploidy, seq = 0.001,
                     bias = 0.7, od = 0.01, dist = dist)

## Get same output as oracle_mis this way:
sum(dist * om)
oracle_mis(n = 100, ploidy = ploidy, seq = 0.001,
           bias = 0.7, od = 0.01, dist = dist)

updog documentation built on Nov. 17, 2023, 9:06 a.m.