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
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
)
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
.
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
.
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
.
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).
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.
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
.
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
.
Optional logical
. If TRUE
then a plot of the genetic map will be generated by plot.map
. Default is FALSE
.
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.
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.
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.
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
.
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
.
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
.
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.
Optional integer
indicating the number of times to iterate CV method 1 (see Details
in x.val
). Default is 100
.
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.
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
.
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.
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.
Optional logical
. If TRUE
then pop.predict
will return the results of each simulation in addition to the summarized dataframe. Default is FALSE
.
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.
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:
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.
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}.
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.
# 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