diff --git a/DESCRIPTION b/DESCRIPTION index f2f68f8..06d621b 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: rrBLUP Title: Ridge regression and other kernels for genomic selection -Version: 3.6 +Version: 3.7 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-04-03 15:31:52 UTC; jeffendelman +Packaged: 2012-04-09 20:10:22 UTC; jeffendelman Repository: CRAN -Date/Publication: 2012-04-03 21:02:09 +Date/Publication: 2012-04-10 04:27:07 diff --git a/MD5 b/MD5 index 6495072..a940a58 100644 --- a/MD5 +++ b/MD5 @@ -1,10 +1,10 @@ -909f5f0706ea232931f64ee54eccdd1f *DESCRIPTION +c0676cc86141fd4e7f05f71b45b6d238 *DESCRIPTION 9983baa53027ec7ecc5c44dc94318515 *NAMESPACE -76fb9f9fdc5f599f1e738375331e9fc1 *NEWS +564add1473e8322fc4fec2d6a89648d1 *NEWS 3426a5afa2b38e987e53b354c267f488 *R/A.mat.R 48dcf02533fd05c528f6c6ea2cd022fb *R/GWA.R f9b894abb6a3158ebfabe61486dccd94 *R/kinship.BLUP.R -0d21c26c501e27b2d61363e369edb57c *R/mixed.solve.R +60346207605422f7ea47a9848a817498 *R/mixed.solve.R b74e4e9e2c643e550a83c5ee4eb7e905 *inst/CITATION fbaf1e01452ed907bdb412ff35f3b067 *man/A.mat.Rd 89ab7c69f6c5dbfca37b5220dd14525b *man/GWA.Rd diff --git a/NEWS b/NEWS index 555cc83..fcd452b 100755 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Changes in 3.7: + +* Improved handling of positive semi-definite kinship matrix in mixed.solve. + Changes in 3.6: * Improved error handling in mixed.solve. diff --git a/R/mixed.solve.R b/R/mixed.solve.R index 378d9c9..1efb8df 100755 --- a/R/mixed.solve.R +++ b/R/mixed.solve.R @@ -44,23 +44,12 @@ if (n <= m + p) { } else { spectral.method <- "cholesky" if (!is.null(K)) { + diag(K) <- diag(K) + 1e-6 B <- try(chol(K),silent=TRUE) - if (class(B)=="try-error") { - # K not positive definite - eig.K <- eigen(K,symmetric=TRUE) - if (min(eig.K$values) < -1e-6) { - stop("K not positive semi-definite") - } else { - # use pivoting - options(warn=-1) #disable warning - B <- chol(K,pivot=TRUE) - options(warn=0) - pivot <- attr(B,"pivot") - B <- B[,order(pivot)] - } #if min(eig.K) - } #if class(B) + if (class(B)=="try-error") {stop("K not positive semi-definite.")} } # if is.null } + if (spectral.method=="cholesky") { if (is.null(K)) { ZBt <- Z