class_docstr: A simple ordinary least squares model.
  
  Parameters
  ----------
  design : array-like
      This is your design matrix.  Data are assumed to be column ordered
      with observations in rows.
  
  Methods
  -------
  model.__init___(design)
  model.logL(b=self.beta, Y)
  
  Attributes
  ----------
  design : ndarray
      This is the design, or X, matrix.
  
  whitened_design : ndarray
      This is the whitened design matrix.
      `design` == `whitened_design` by default for the OLSModel,
      though models that inherit from the OLSModel will whiten the design.
  
  calc_beta : ndarray
      This is the Moore-Penrose pseudoinverse of the whitened design matrix.
  
  normalized_cov_beta : ndarray
      ``np.dot(calc_beta, calc_beta.T)``
  
  df_residuals : scalar
      Degrees of freedom of the residuals.  Number of observations less the
      rank of the design.
  
  df_model : scalar
      Degrees of freedome of the model.  The rank of the design.
docstr: Whiten design matrix.
  
  Parameters
  ----------
  X : array
      design matrix
  
  Returns
  -------
  whitened_X : array
      This matrix is the matrix whose pseudoinverse is ultimately
      used in estimating the coefficients. For OLSModel, it is
      does nothing. For WLSmodel, ARmodel, it pre-applies
      a square root of the covariance matrix to X.
docstr_tok: ["Whiten","design","matrix",".","Parameters","--","--","--","--","--","X",":","array","design","matrix","Returns","--","--","--","-","whitened_X",":","array","This","matrix","is","the","matrix","whose","pseudoinverse","is","ultimately","used","in","estimating","the","coefficients",".","For","OLSModel",",","it","is","does","nothing",".","For","WLSmodel",",","ARmodel",",","it","pre-applies","a","square","root","of","the","covariance","matrix","to","X","."]
code: def whiten(self, X):
      """Whiten design matrix.
  
      Parameters
      ----------
      X : array
          design matrix
  
      Returns
      -------
      whitened_X : array
          This matrix is the matrix whose pseudoinverse is ultimately
          used in estimating the coefficients. For OLSModel, it is
          does nothing. For WLSmodel, ARmodel, it pre-applies
          a square root of the covariance matrix to X.
  
      """
      return X
  
imports: import numpy
  import scipy.linalg
  from nibabel.onetime import auto_attr
  from numpy.linalg import matrix_rank
  from nilearn.glm._utils import positive_reciprocal
  from nilearn.glm.model import LikelihoodModelResults
label_desc: Use image node_id 4 for calling the OLSModel obj's underlying member method code with example usage: obj.whiten(X) and returns: X