From 9dfb1cd22e847f0cbaf412799a1981a529637c37 Mon Sep 17 00:00:00 2001 From: Jeffrey Endelman Date: Tue, 3 Apr 2012 00:00:00 +0000 Subject: [PATCH] version 3.6 --- DESCRIPTION | 6 +++--- MD5 | 6 +++--- NEWS | 4 ++++ R/mixed.solve.R | 13 ++++++++++--- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 7dcb9af..f2f68f8 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: rrBLUP Title: Ridge regression and other kernels for genomic selection -Version: 3.5 +Version: 3.6 Author: Jeffrey Endelman Maintainer: Jeffrey Endelman Description: One application is to estimate marker effects by ridge @@ -11,6 +11,6 @@ Description: One application is to estimate marker effects by ridge Suggests: multicore License: GPL-3 LazyLoad: yes -Packaged: 2012-02-10 20:05:57 UTC; jeffendelman +Packaged: 2012-04-03 15:31:52 UTC; jeffendelman Repository: CRAN -Date/Publication: 2012-02-14 07:20:59 +Date/Publication: 2012-04-03 21:02:09 diff --git a/MD5 b/MD5 index 102e087..6495072 100644 --- a/MD5 +++ b/MD5 @@ -1,10 +1,10 @@ -06639f9b86d7b7d138f356c360e8ed3a *DESCRIPTION +909f5f0706ea232931f64ee54eccdd1f *DESCRIPTION 9983baa53027ec7ecc5c44dc94318515 *NAMESPACE -c5119304691b321449950ff08d841a98 *NEWS +76fb9f9fdc5f599f1e738375331e9fc1 *NEWS 3426a5afa2b38e987e53b354c267f488 *R/A.mat.R 48dcf02533fd05c528f6c6ea2cd022fb *R/GWA.R f9b894abb6a3158ebfabe61486dccd94 *R/kinship.BLUP.R -b02c08fda6a873bb6a221650e7547a96 *R/mixed.solve.R +0d21c26c501e27b2d61363e369edb57c *R/mixed.solve.R b74e4e9e2c643e550a83c5ee4eb7e905 *inst/CITATION fbaf1e01452ed907bdb412ff35f3b067 *man/A.mat.Rd 89ab7c69f6c5dbfca37b5220dd14525b *man/GWA.Rd diff --git a/NEWS b/NEWS index 4ed1c08..555cc83 100755 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Changes in 3.6: + +* Improved error handling in mixed.solve. + Changes in 3.5: * Labels now transfer from input to output with mixed.solve. diff --git a/R/mixed.solve.R b/R/mixed.solve.R index 26df3dd..378d9c9 100755 --- a/R/mixed.solve.R +++ b/R/mixed.solve.R @@ -75,9 +75,15 @@ svd.SZBt <- svd(SZBt) QR <- qr(cbind(X,svd.SZBt$u)) Q <- qr.Q(QR,complete=TRUE)[,(p+1):n] R <- qr.R(QR)[p+1:m,p+1:m] -theta <- c(forwardsolve(t(R^2),svd.SZBt$d^2),rep(0,n-p-m)) +ans <- try(solve(t(R^2), svd.SZBt$d^2),silent=TRUE) +if (class(ans)=="try-error") { + spectral.method <- "eigen" } else { -# spectral.method is "eigen" + theta <- c(ans,rep(0, n - p - m)) +} +} + +if (spectral.method=="eigen") { offset <- sqrt(n) if (is.null(K)) { Hb <- tcrossprod(Z,Z) + offset*diag(n) @@ -92,7 +98,8 @@ SHbS <- S %*% Hb %*% S SHbS.system <- eigen(SHbS, symmetric = TRUE) theta <- SHbS.system$values[1:(n - p)] - offset Q <- SHbS.system$vectors[, 1:(n - p)] -} #if (n > m) +} + omega <- crossprod(Q, y) omega.sq <- omega^2 if (method == "ML") {