
Visualize missing genotypes in genomic data set
Source:R/missing_visualization.R
missing_visualization.RdUse this function to visualize pattern of missing data.
Input file: various file formats are supported (see
dataargument below).IBM-PCoA: conduct identity-by-missingness analyses using Principal Coordinates Analysis, PCoA (also called Multidimensional Scaling, MDS).
RDA: Redundancy Analysis using the strata provided to test the null hypothesis of no pattern of missingness between strata.
FH measure vs missingness: missingness at the individual level is contrasted against FH, a new measure of IBDg (Keller et al., 2011; Kardos et al., 2015; Hedrick & Garcia-Dorado, 2016) FH is based on the excess in the observed number of homozygous genotypes within an individual relative to the mean number of homozygous genotypes expected under random mating. IBDg is a proxy measure of the realized proportion of the genome that is identical by descent. Within this function, we're using a modified version of the measure described in (Keller et al., 2011; Kardos et al., 2015). The new measure is population-wise and tailored for RADseq data (see
ibdg_fhfor details).Figures and Tables: figures and summary tables of missing information at the marker, individual and population level are generated.
Whitelists: create whitelists of markers based on desired thresholds of missing genotypes.
Blacklists: create blacklists of individuals based on desired thresholds of missing genotypes.
Tidy data: if the filename argument is used, the function also output the data in the directory in a tidy format (see details).
Usage
missing_visualization(
data,
strata = NULL,
strata.select = "POP_ID",
distance.method = "euclidean",
ind.missing.geno.threshold = c(2, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90),
filename = NULL,
parallel.core = parallel::detectCores() - 1,
write.plot = TRUE,
...
)Arguments
- data
A GDS filename or open
SeqVarGDSClassobject.- strata
(optional) The strata file is a tab delimited file with a minimum of 2 columns headers:
INDIVIDUALSandSTRATA. If astratafile is specified the strata argument will have precedence on the population groupings (POP_ID) used internally. TheSTRATAcolumn can be any hierarchical grouping. Formissing_visualizationfunction, use additional columns in the strata file to store metadata that you want to look for pattern of missingness. e.g. lanes, chips, sequencers, etc. Note that you need different values inside theSTRATAfor the function to work. Default:strata = NULL.- strata.select
(optional, character) Use this argument to select the column from the strata file to generate the PCoA-IBM plot. More than 1 column you want to visualize, use a string of character e.g.
strata.select = c("POP_ID", "LANES", "SEQUENCER", "WATERSHED")to test 4 grouping columns inside thestratafile. Default:strata.select = "POP_ID"- distance.method
(character) The distance measure to be used. This must be one of "euclidean", "maximum", "manhattan", "canberra", "binary" or "minkowski". The function uses
dist. Default:distance.method = "euclidean".- ind.missing.geno.threshold
(string) Percentage of missing genotype allowed per individuals (to create the blacklists). Default:
ind.missing.geno.threshold = c(10, 20, 30, 40, 50, 60, 70, 80, 90).- filename
(optional) Name of the tidy data set, written to the directory created by the function.
- parallel.core
Default:
parallel.core = parallel::detectCores() - 1.- write.plot
(optional, logical) When
write.plot = TRUE, the function will write to the directory created by the function the plots, except the heatmap that take longer to generate. For this, do it manually following example below. Default:write.plot = TRUE.- ...
(optional) Advance mode that allows to pass further arguments for fine-tuning the function. Also used for legacy arguments (see advance mode or special sections below).
Value
A list is created with several objects: the principal coordinates with eigenvalues of the PCoA, the identity-by-missingness plot, several summary tables and plots of missing information per individuals, populations and markers. Blacklisted ids are also included. Whitelists of markers with different level of missingness are also generated automatically. A heatmap showing the missing values in black and genotypes in grey provide a general overview of the missing data. The heatmap is usually long to generate, and thus, it's just included as an object in the list and not written in the folder.
Details
filename
The function uses write.fst,
to write the tidy data frame in the directory.
The file extension appended to
the filename provided is .rad.
The file is written with the
Lightning Fast Serialization of Data Frames for R package.
To read the tidy data file back in R use read.fst.
References
Legendre, P. and Legendre, L. (1998) Numerical Ecology, 2nd English edition. Amsterdam: Elsevier Science BV.
Keller MC, Visscher PM, Goddard ME (2011) Quantification of inbreeding due to distant ancestors and its detection using dense single nucleotide polymorphism data. Genetics, 189, 237–249.
Kardos M, Luikart G, Allendorf FW (2015) Measuring individual inbreeding in the age of genomics: marker-based measures are better than pedigrees. Heredity, 115, 63–72.
Hedrick PW, Garcia-Dorado A. (2016) Understanding Inbreeding Depression, Purging, and Genetic Rescue. Trends in Ecology and Evolution. 2016;31: 940-952. doi:10.1016/j.tree.2016.09.005
Author
Thierry Gosselin thierrygosselin@icloud.com and Eric Archer eric.archer@noaa.gov
Examples
if (FALSE) { # \dontrun{
#Using a VCF file, the simplest for of the function:
ibm.koala <- missing_visualization(
data = "batch_1.vcf",
strata = "population.map.strata.tsv"
)
# To see what's inside the list
names(ibm.koala)
# To view the heatmap:
ibm.koala$heatmap
# To save the heatmap
# move to the appropriate directory
ggplot2::ggsave(
filename = "heatmap.missing.pdf",
plot = ibm.koala$heatmap,
width = 15, height = 20,
dpi = 600, units = "cm", useDingbats = FALSE)
# To view the IBM analysis plot:
ibm.koala$ibm_plot
} # }