From 47706ce52831bfe599d654c28ca711bcee98a6d6 Mon Sep 17 00:00:00 2001 From: Danilo Horta Date: Wed, 5 Jul 2017 16:49:28 +0100 Subject: [PATCH] Redundant covariates ok --- glimix_core/lmm/core.py | 8 ++++++-- glimix_core/lmm/test/test_lmm.py | 3 +++ setup.py | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/glimix_core/lmm/core.py b/glimix_core/lmm/core.py index fba27ccd..850b82a1 100644 --- a/glimix_core/lmm/core.py +++ b/glimix_core/lmm/core.py @@ -2,7 +2,7 @@ from numpy import dot, log, maximum, sqrt, zeros from numpy_sugar import epsilon -from numpy_sugar.linalg import ddot, economic_svd, solve +from numpy_sugar.linalg import ddot, economic_svd, rsolve, solve from .scan import FastScanner @@ -23,6 +23,7 @@ def get_fast_scanner(self): @property def X(self): + # m = self.m return dot(self._svd[0], ddot(self._svd[1], self._svd[2], left=True)) @X.setter @@ -54,7 +55,10 @@ def _tbeta(self, value): @property def beta(self): - return solve(self._svd[2].T, self._tbeta / sqrt(self._svd[1])) + SVs = ddot(self._svd[0], sqrt(self._svd[1]), left=False) + z = rsolve(SVs, self.m) + VsD = ddot(sqrt(self._svd[1]), self._svd[2], left=True) + return rsolve(VsD, z) @beta.setter def beta(self, value): diff --git a/glimix_core/lmm/test/test_lmm.py b/glimix_core/lmm/test/test_lmm.py index 0b4b2d63..f1a569ba 100644 --- a/glimix_core/lmm/test/test_lmm.py +++ b/glimix_core/lmm/test/test_lmm.py @@ -113,6 +113,9 @@ def test_fastlmm_fast_scan_redundant(): # pylint: disable=R0914 ], rtol=1e-5) + lmm.beta + pass + def test_lmm_learn(): random = RandomState(9458) diff --git a/setup.py b/setup.py index c7398625..4817b9cb 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ def setup_package(): metadata = dict( name='glimix-core', - version='1.2.17', + version='1.2.18', maintainer="Limix Developers", maintainer_email="horta@ebi.ac.uk", license="MIT",