code: def _orthogonalize(X):
      """Orthogonalize every column of design `X` w.r.t preceding columns
  
      Parameters
      ----------
      X: array of shape(n, p), the data to be orthogonalized
  
      Returns
      -------
      X: after orthogonalization
  
      Notes
      -----
      X is changed in place. the columns are not normalized
      """
      if X.size == X.shape[0]:
          return X
      from numpy.linalg import pinv
  
      for i in range(1, X.shape[1]):
          X[:, i] -= np.dot(X[:, i], np.dot(X[:, :i], pinv(X[:, :i])))
      return X
  
file_path: nipy/nipy/modalities/fmri/hemodynamic_models.py
imports: import warnings
  import numpy
  from scipy.stats import gamma
label_desc: Use image node_id 9 for calling a global function with example usage: _orthogonalize(X) and returns: X, X