def scan(self, M):
from numpy_sugar.linalg import ddot<EOL>from numpy_sugar import is_all_finite<EOL>M = asarray(M, float)<EOL>if M.shape[<NUM_LIT:1>] == <NUM_LIT:0>:<EOL><INDENT>return {<EOL>"<STR_LIT>": self.null_lml(),<EOL>"<STR_LIT>": self.null_beta,<EOL>"<STR_LIT>": self.null_beta_se,<EOL>"<STR_LIT>": empty((<NUM_LIT:0>)),<EOL>"<STR_LIT>": empty((<NUM_LIT:0>)),<EOL>"<STR_LIT>": self.null_scale,<EOL>}<EOL><DEDENT>if not is_all_finite(M):<EOL><INDENT>raise ValueError("<STR_LIT>")<EOL><DEDENT>MTQ = [dot(M.T, Q) for Q in self._QS[<NUM_LIT:0>] if Q.size > <NUM_LIT:0>]<EOL>yTBM = [dot(i, j.T) for (i, j) in zip(self._yTQDi, MTQ)]<EOL>XTBM = [dot(i, j.T) for (i, j) in zip(self._XTQDi, MTQ)]<EOL>D = self._D<EOL>MTBM = [ddot(i, <NUM_LIT:1> / j) @ i.T for i, j in zip(MTQ, D) if j.min() > <NUM_LIT:0>]<EOL>return self._multicovariate_set(yTBM, XTBM, MTBM)<EOL>
LML, fixed-effect sizes, and scale of the candidate set.

Parameters
----------
M : array_like
    Fixed-effects set.

Returns
-------
lml : float
    Log of the marginal likelihood.
effsizes0 : ndarray
    Covariates fixed-effect sizes.
effsizes0_se : ndarray
    Covariates fixed-effect size standard errors.
effsizes1 : ndarray
    Candidate set fixed-effect sizes.
effsizes1_se : ndarray
    Candidate fixed-effect size standard errors.
scale : ndarray
    Optimal scale.