def test_types_scalar_listen(): a = Scalar(1.0) class Listener(object): def __init__(self): self.value = None def __call__(self): self.value = 3.0 l = Listener() a.listen(l) a.value = 3.0 assert_(l.value == 3.0)
def test_types_scalar_listen_indirect(): a = Scalar(1.0) class Listener(object): def __init__(self): self.value = None def __call__(self): self.value = 3.0 l = Listener() a.listen(l) value = a.value value.itemset(3.0) assert_(l.value == 3.0)
def __init__(self, y, X, QS=None, restricted=False): """ Constructor. Parameters ---------- y : array_like Outcome. X : array_like Covariates as a two-dimensional array. QS : tuple Economic eigendecompositon in form of ``((Q0, ), S0)`` of a covariance matrix ``K``. restricted : bool ``True`` for restricted maximum likelihood optimization; ``False`` otherwise. Defaults to ``False``. """ from numpy_sugar import is_all_finite logistic = Scalar(0.0) logistic.listen(self._delta_update) logistic.bounds = (-numbers.logmax, +numbers.logmax) Function.__init__(self, "LMM", logistic=logistic) self._logistic = logistic y = asarray(y, float).ravel() if not is_all_finite(y): raise ValueError("There are non-finite values in the outcome.") if len(y) == 0: raise ValueError("The outcome array is empty.") X = atleast_2d(asarray(X, float).T).T if not is_all_finite(X): raise ValueError("There are non-finite values in the covariates matrix.") self._optimal = {"beta": False, "scale": False} if QS is None: QS = economic_qs_zeros(len(y)) self._B = B(QS[0][0], QS[1], 0.0, 1.0) self.delta = 1.0 logistic.fix() else: self._B = B(QS[0][0], QS[1], 0.5, 0.5) self.delta = 0.5 if QS[0][0].shape[0] != len(y): msg = "Sample size differs between outcome and covariance decomposition." raise ValueError(msg) if y.shape[0] != X.shape[0]: msg = "Sample size differs between outcome and covariates." raise ValueError(msg) self._y = y self._Q0 = QS[0][0] self._S0 = QS[1] self._Xsvd = SVD(X) self._tbeta = zeros(self._Xsvd.rank) self._scale = 1.0 self._fix = {"beta": False, "scale": False} self._restricted = restricted