PopVar (version 1.3.0)

pop.predict: A genome-wide procedure for predicting genetic variance and correlated response in bi-parental breeding populations

Description

pop.predict uses phenotypic and genotypic data from a set of individuals known as a training population (TP) and a set of candidate parents, which may or may not be included in the TP, to predict the mean (\(\mu\)), genetic variance (V_G), and superior progeny values (\(\mu\)_sp) of the half-diallel, or a defined set of pairwise bi-parental crosses between parents. When multiple traits are provided pop.predict will also predict the correlated responses and correlation between all pairwise traits. See Mohammadi, Tiede, and Smith (2015) for further details.

         NOTE - \code{pop.predict} writes and reads files to disk so it is highly recommended to set your working directory

Usage

pop.predict(
  G.in = NULL,
  y.in = NULL,
  map.in = NULL,
  crossing.table = NULL,
  parents = NULL,
  tail.p = 0.1,
  nInd = 200,
  map.plot = F,
  min.maf = 0.01,
  mkr.cutoff = 0.5,
  entry.cutoff = 0.5,
  remove.dups = T,
  impute = "EM",
  nSim = 25,
  frac.train = 0.6,
  nCV.iter = 100,
  nFold = NULL,
  nFold.reps = 1,
  nIter = 12000,
  burnIn = 3000,
  models = c("rrBLUP", "BayesA", "BayesB", "BayesC", "BL", "BRR"),
  return.raw = F
)

Arguments

G.in

Matrix of genotypic data. First row contains marker names and the first column contains entry (taxa) names. Genotypes should be coded as follows:

  • 1: homozygous for minor allele

  • 0: heterozygous

  • -1: homozygous for major allele

  • NA: missing data

  • Imputed genotypes can be passed, see impute below for details

TIP - Set header=FALSE within read.table or read.csv when importing a tab-delimited file containing data for G.in.

y.in

Matrix of phenotypic data. First column contains entry (taxa) names found in G.in, regardless of whether the entry has a phenotype for any or all traits. Additional columns contain phenotypic data; column names should reflect the trait name(s). TIP - Set header=TRUE within read.table or read.csv when importing a tab-delimited file containing data for y.in.

map.in

Matrix of genetic map data, three columns total. Column 1 contains marker names, column 2 contains chromosome number, and column 3 contains cM positions. TIP - Set header=TRUE within read.table or read.csv when importing a tab-delimited file contianing data for map.in.

crossing.table

Optional matrix specifying which crosses are to be simulated, two columns total. Column 1 contains the first parent of the cross (Par1) and column 2 contains the second parent of the cross (Par2).

parents

Optional character vector. If parents="TP" then only the entries (taxa) within the training population (i.e. are phenotyped for the trait) are considered as parents; all pairwise crosses will be simulated for these. User could otherwise provide a character vector of entry names; all pairwise crosses will be simulated for these.

tail.p

Optional numeric indicating the percentile of the simulated progeny to be included into the calculation of \(\mu\)_sp and correlated response. Default is 0.10.

nInd

Optional integer indicating the number of progeny simulated per cross, per iteration, using sim.cross in R/qtl (Broman et al., 2003). Default is 200.

map.plot

Optional logical. If TRUE then a plot of the genetic map will be generated by plot.map. Default is FALSE.

min.maf

Optional numeric indicating a minimum minor allele frequency (MAF) when filtering G.in. Markers with an MAF < min.maf will be removed. Default is 0.01 to remove monomorphic markers. Set to 0 for no filtering.

mkr.cutoff

Optional numeric indicating the maximum missing data per marker when filtering G.in. Markers missing > mkr.cutoff data will be removed. Default is 0.50. Set to 1 for no filtering.

entry.cutoff

Optional numeric indicating the maximum missing genotypic data per entry allowed when filtering G.in. Entries missing > entry.cutoff marker data will be removed. Default is 0.50. Set to 1 for no filtering.

remove.dups

Optional logical. If TRUE duplicate entries in the genotype matrix, if present, will be removed. This step may be necessary for missing marker imputation (see impute below). Default is TRUE.

impute

Options include c("EM", "mean", "pass"). By default (i.e. "EM"), after filtering missing genotypic data will be imputed via the EM algorithm implemented in rrBLUP (Endelman, 2011; Poland et al., 2012). If "mean" missing genotypic data will be imputed via the 'marker mean' method, also implemented in rrBLUP. Enter "pass" if a pre-filtered and imputed genotype matrix is provided to G.in.

nSim

Optional integer indicating the number of iterations a population should be simulated for each pairwise cross. Returned values are reported as means of parameters estimated in each of nSim simulations. Default is 25.

frac.train

Optional numeric indicating the fraction of the TP that is used to estimate marker effects (i.e. the prediction set) under cross-validation (CV) method 1 (see Details in x.val). The remaining \((1-frac.trait)\) of the TP will then comprise the prediction set.

nCV.iter

Optional integer indicating the number of times to iterate CV method 1 (see Details in x.val). Default is 100.

nFold

Optional integer. If a number is provided, denoting the number of "folds", then CV will be conducted using CV method 2 (see Details in x.val). Default is NULL, resulting in the default use of the CV method 1.

nFold.reps

Optional integer indicating the number of times CV method 2 is repeated. The CV accuracy returned is the average r of each rep. Default is 1.

nIter, burnIn

Optional integer arguments used by BGLR (de los Compos and Rodriguez, 2014) when fitting Bayesian models to estimate marker effects. The defaults are 12000 and 3000, respectively. These values when conducting CV are fixed 1500 and 500, respectively, for computational efficiency.

models

Optional Character vector of the regression models to be used in CV and to estimate marker effects. Options include rrBLUP, BayesA, BayesB, BayesC, BL, BRR, one or more may be included at a time. CV will be conducted regardless of how many models are included. By default all models are tested.

return.raw

Optional logical. If TRUE then pop.predict will return the results of each simulation in addition to the summarized dataframe. Default is FALSE.

Value

A list containing:

  • predictions A list of dataframes containing predictions of (\(\mu\)), (V_G), and (\(\mu\)_sp). When multiple traits are provided the correlated responses and correlation between all pairwise traits is also included. More specifically, for a given trait pair the correlated response of the secondary trait with both the high and low superior progeny of the primary trait is returned since the favorable values cannot be known by PopVar.

  • preds.per.sim If return.raw is TRUE then a dataframe containing the results of each simulation is returned. This is useful for calculating dispersion statistics for traits not provided in the standard predictions dataframe.

  • CVs A dataframe of CV results for each trait/model combination specified.

  • models.chosen A matrix listing the statistical model chosen for each trait.

  • markers.removed A vector of markers removed during filtering for MAF and missing data.

  • entries.removed A vector of entries removed during filtering for missing data and duplicate entries.

Details

pop.predict can be used to predict the mean (\(\mu\)), genetic variance (V_G), superior progeny values (\(\mu\)\(_sp\)), as well as the predicted correlated response and correlations between all pairwise traits. The methodology and procedure to do so has been described in Bernardo (2014) and Mohammadi, Tiede, and K.P. Smith (2015). Users familiar with genome-wide prediction, association mapping, and/or linkage mapping will be familiar with the required inputs of pop.predict. G.in includes all of the entries (taxa) in the TP as well as additional entries to be considered as parent candidates. Entries included in G.in that do have a phenotype for any or all traits in y.in are considered TP entries for those respective traits. G.in is filtered according to min.maf, mkr.cutoff, entry.cutoff, and remove.dups; remaining missing marker data is imputed using the EM algorithm (Poland et al., 2012) when possible, and the marker mean otherwise, both implemented in rrBLUP. For each trait, the TP (i.e. entries with phenotype) is used to:

  1. Perform CV to select a regression model. NOTE - Using the model with the highest CV accuracy is expected to result in the most accurate marker effect estimates (Bernardo, 2014). This expectation, however, is yet to be empirically validated and the user is encouraged to investigate the various models in order to make an educated decision about which one to ultimately use.

  2. Estimate marker effects using the model resulting in the highest CV accuracy

Models include ridge regression BLUP implemented in rrBLUP (Endelman, 2011) and BayesA, BayesB, BayesC\(\pi\), Bayesian lasso (BL), and Bayesian ridge regression (BRR) implemented in BGLR (de los Compos and Rodriguez, 2014). Information from the map.in is then used to simulate chromosomal recombination expected in a recombinant inbred line (i.e. F-infinity) (Broman et al., 2003) population (size=nInd). A function then converts the recombined chromosomal segments of the generic RIL population to the chromosomal segments of the population's respective parents and GEBVs of the simulated progeny are calculated. The simulation and conversion process is repeated s times, where s = nSim, to calculate dispersion statistics for \(\mu\) and V_G; the remainder of the values in the predictions output are means of the s simulations. During each iteration the correlation (r) and correlated response of each pairwise combination of traits is also calculated and their mean across n simulations is returned. The correlated response of trait.B when predicting trait.A is the mean of trait.B for the (\(\mu\)\(_sp\)) of trait.A, and vice-versa; a correlated response for the bottom tail.p and upper \(1-tail.p\) is returned for each trait.

     A dataset \code{\link{think_barley.rda}} is provided as an example of the proper formatting of input files and also for users to become familiar with \code{pop.predict}.

References

 Bernardo, R. 2014. Genomewide Selection of Parental Inbreds: Classes of Loci and Virtual Biparental Populations. Crop Sci. 55:2586-2595.

Broman, K. W., H. Wu, S. Sen and G.A. Churchill. 2003. R/qtl: QTL mapping in experimental crosses. Bioinformatics 19:889-890.

Endelman, J. B. 2011. Ridge regression and other kernels for genomic selection with R package rrBLUP. Plant Genome 4:250-255. doi: 10.3835/plantgenome2011.08.0024

Gustavo de los Campos and Paulino Perez Rodriguez, (2014). BGLR: Bayesian Generalized Linear Regression. R package version 1.0.3. http://CRAN.R-project.org/package=BGLR

Mohammadi M., T. Tiede, and K.P. Smith. 2015. PopVar: A genome-wide procedure for predicting genetic variance and correlated response in bi-parental breeding populations. Crop Sci. \emph{Accepted}.

Munoz-Amatriain, M., M. J. Moscou, P. R. Bhat, J. T. Svensson, J. Bartos, P. Suchankova, H. Simkova, T. R. Endo, R. D. Fenton, S. Lonardi, A. M. Castillo, S. Chao, L. Cistue, A. Cuesta-Marcos, K. L. Forrest, M. J. Hayden, P. M. Hayes, R. D. Horsley, K. Makoto, D. Moody, K. Sato, M. P. Valles, B. B. H. Wulff, G. J. Muehlbauer, J. Dolezel, and T. J. Close. 2011 An improved consensus linkage map of barley based on flow-sorted chromosomes and single nucleotide polymorphism markers. Plant Gen. 4:238-249.

Poland, J., J. Endelman, J. Dawson, J. Rutkoski, S. Wu, Y. Manes, S. Dreisigacker, J. Crossa, H. Sanches-Villeda, M. Sorrells, and J.-L. Jannink. 2012. Genomic Selection in Wheat Breeding using Genotyping-by-Sequencing. Plant Genome 5:103-113.

Examples

Run this code
# NOT RUN {
## View formatting
## Use View() in RStudio or R GUI with X11 forwarding
## Use head() in R GUI without X11 forwarding
View(G.in_ex)
View(y.in_ex)
View(map.in_ex)
View(cross.tab_ex)

## setwd() - pop.predict writes and reads files to disk
##   so it is recommended to set your working directory

## nSim and nFold are set to low values in the
## examples for sake of computing time

## Ex. 1 - Predict a defined set of crosses
## This example uses CV method 1 (see Details of x.val() function)
ex1.out <- pop.predict(G.in = G.in_ex, y.in = y.in_ex, 
   map.in = map.in_ex, crossing.table = cross.tab_ex,
   nSim=5, nCV.iter=10)
ex1.out$predictions  ## Predicted parameters
ex1.out$CVs          ## CV results
               
## Ex. 2 - Predict all pairwise crosses between a list of parents
## This example uses CV method 2 (see Details of x.val() function)
par.list <- sample(y.in_ex[,1], size = 10, replace = F)
ex2.out <- pop.predict(G.in = G.in_ex, y.in = y.in_ex,
   map.in = map.in_ex, parents = par.list, 
   nSim=5, nFold=5, nFold.reps=2)
       
## Ex. 3 - Use only rrBLUP and Bayesian lasso (BL) models
ex3.out <- pop.predict(G.in = G.in_ex, y.in = y.in_ex,
   map.in = map.in_ex, crossing.table = cross.tab_ex,
   models = c("rrBLUP", "BL"), nSim=5, nCV.iter=10)  
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab