Calculate -log10(p) of epistatic effects by LR test (multi-cores)
score.calc.epistasis.LR.MC(
M.now,
y,
X.now,
ZETA.now,
package.MM = "gaston",
eigen.SGS = NULL,
eigen.G = NULL,
n.core = 2,
parallel.method = "mclapply",
optimizer = "nlminb",
map,
haplotype = TRUE,
num.hap = NULL,
window.size.half = 5,
window.slide = 1,
chi0.mixture = 0.5,
gene.set = NULL,
dominance.eff = TRUE,
skip.self.int = FALSE,
min.MAF = 0.02,
count = TRUE
)
-log10(p) of epistatic effects for each SNP-set
A \(n \times m\) genotype matrix where \(n\) is sample size and \(m\) is the number of markers.
A \(n \times 1\) vector. A vector of phenotypic values should be used. NA is allowed.
A \(n \times p\) matrix. You should assign mean vector (rep(1, n)) and covariates. NA is not allowed.
A list of variance (relationship) matrix (K; \(m \times m\)) and its design matrix (Z; \(n \times m\)) of random effects. You can use only one kernel matrix. For example, ZETA = list(A = list(Z = Z, K = K)) Please set names of list "Z" and "K"!
The package name to be used when solving mixed-effects model. We only offer the following three packages:
"RAINBOWR", "MM4LMM" and "gaston". Default package is `gaston`.
See more details at EM3.general
.
A list with
Eigen values
Eigen vectors
The result of the eigen decompsition of \(SGS\), where \(S = I - X(X'X)^{-1}X'\), \(G = ZKZ'\). You can use "spectralG.cpp" function in RAINBOWR. If this argument is NULL, the eigen decomposition will be performed in this function. We recommend you assign the result of the eigen decomposition beforehand for time saving.
A list with
Eigen values
Eigen vectors
The result of the eigen decompsition of \(G = ZKZ'\). You can use "spectralG.cpp" function in RAINBOWR. If this argument is NULL, the eigen decomposition will be performed in this function. We recommend you assign the result of the eigen decomposition beforehand for time saving.
Setting n.core > 1 will enable parallel execution on a machine with multiple cores. This argument is not valid when `parallel.method = "furrr"`.
Method for parallel computation. We offer three methods, "mclapply", "furrr", and "foreach".
When `parallel.method = "mclapply"`, we utilize pbmclapply
function in the `pbmcapply` package
with `count = TRUE` and mclapply
function in the `parallel` package with `count = FALSE`.
When `parallel.method = "furrr"`, we utilize future_map
function in the `furrr` package.
With `count = TRUE`, we also utilize progressor
function in the `progressr` package to show the progress bar,
so please install the `progressr` package from github (https://github.com/HenrikBengtsson/progressr).
For `parallel.method = "furrr"`, you can perform multi-thread parallelization by
sharing memories, which results in saving your memory, but quite slower compared to `parallel.method = "mclapply"`.
When `parallel.method = "foreach"`, we utilize foreach
function in the `foreach` package
with the utilization of makeCluster
function in `parallel` package,
and registerDoParallel
function in `doParallel` package.
With `count = TRUE`, we also utilize setTxtProgressBar
and
txtProgressBar
functions in the `utils` package to show the progress bar.
We recommend that you use the option `parallel.method = "mclapply"`, but for Windows users, this parallelization method is not supported. So, if you are Windows user, we recommend that you use the option `parallel.method = "foreach"`.
The function used in the optimization process. We offer "optim", "optimx", and "nlminb" functions.
Data frame of map information where the first column is the marker names, the second and third column is the chromosome amd map position, and the forth column is -log10(p) for each marker.
If the number of lines of your data is large (maybe > 100), you should set haplotype = TRUE. When haplotype = TRUE, haplotype-based kernel will be used for calculating -log10(p). (So the dimension of this gram matrix will be smaller.) The result won't be changed, but the time for the calculation will be shorter.
When haplotype = TRUE, you can set the number of haplotypes which you expect. Then similar arrays are considered as the same haplotype, and then make kernel(K.SNP) whose dimension is num.hap x num.hap. When num.hap = NULL (default), num.hap will be set as the maximum number which reflects the difference between lines.
This argument decides how many SNPs (around the SNP you want to test) are used to calculated K.SNP. More precisely, the number of SNPs will be 2 * window.size.half + 1.
This argument determines how often you test markers. If window.slide = 1, every marker will be tested. If you want to perform SNP set by bins, please set window.slide = 2 * window.size.half + 1.
RAINBOWR assumes the tdeviance is considered to follow a x chisq(df = 0) + (1 - a) x chisq(df = r). where r is the degree of freedom. The argument chi0.mixture is a (0 <= a < 1), and default is 0.5.
If you have information of gene, you can use it to perform kernel-based GWAS. You should assign your gene information to gene.set in the form of a "data.frame" (whose dimension is (the number of gene) x 2). In the first column, you should assign the gene name. And in the second column, you should assign the names of each marker, which correspond to the marker names of "geno" argument.
If this argument is TRUE, dominance effect is included in the model, and additive x dominance and dominance x dominance are also tested as epistatic effects. When you use inbred lines, please set this argument FALSE.
As default, the function also tests the self-interactions among the same SNP-sets. If you want to avoid this, please set `skip.self.int = TRUE`.
Specifies the minimum minor allele frequency (MAF). If a marker has a MAF less than min.MAF, it is assigned a zero score.
When count is TRUE, you can know how far RGWAS has ended with percent display.
Listgarten, J. et al. (2013) A powerful and efficient set test for genetic markers that handles confounders. Bioinformatics. 29(12): 1526-1533.
Lippert, C. et al. (2014) Greater power and computational efficiency for kernel-based association testing of sets of genetic variants. Bioinformatics. 30(22): 3206-3214.
Jiang, Y. and Reif, J.C. (2015) Modeling epistasis in genomic selection. Genetics. 201(2): 759-768.