code: def posterior_parameter(self):
          
          if self.__posterior_parameter is not None:
              return self.__posterior_parameter
          else:
              self.clean()
              self.log("Schur's complement")
              try:
                  pinv = self.parcov.inv
                  r = self.xtqx + pinv
                  r = r.inv
              except Exception as e:
                  self.xtqx.to_binary("xtqx.err.jcb")
                  pinv.to_ascii("parcov_inv.err.cov")
                  self.logger.warn("error forming schur's complement: {0}".
                                  format(str(e)))
                  self.logger.warn("problemtic xtqx saved to xtqx.err.jcb")
                  self.logger.warn("problematic inverse parcov saved to parcov_inv.err.cov")
                  raise Exception("error forming schur's complement: {0}".
                                  format(str(e)))
              assert r.row_names == r.col_names
              self.__posterior_parameter = Cov(r.x, row_names=r.row_names,
                                               col_names=r.col_names)
              self.log("Schur's complement")
              return self.__posterior_parameter
docs: get the posterior parameter covariance matrix.  If Schur.__posterior_parameter
          is None, the posterior parameter covariance matrix is calculated via
          Schur compliment before returning
  
          Returns
          -------
          posterior_parameter : pyemu.Cov
              the posterior parameter covariance matrix
  
          Note
          ----
          returns a reference
  
          Example
          -------
          ``>>>import pyemu``
  
          ``>>>sc = pyemu.Schur(jco="pest.jcb")``
  
          ``>>>post_cov = sc.posterior_parameter``
  
          ``>>>post_cov.to_ascii("post.cov")``