code: def _make_summary_tables(self):
          
          try:
              self._Bhat
          except:
              raise Exception("Regression hasn't been fit yet.  run .fit()")
          else:
              # check degrees of freedom
              num_pcs = self._basis_object.get_params()['num_components']
              total_dof = self._X.shape[0] - self._X.shape[1] - num_pcs
              if total_dof <= 0.0:
                  raise ValueError("degrees of freedom <= 0, Hotellings T2 not defined")
  
              # print catalog and basis info
              cat_table = self._catalog_object.get_params().items()
              bas_table = self._basis_object.get_params().items()
              print tabulate(cat_table+bas_table,tablefmt='plain')
  
              # then print pvalues
              # make T^2 & pvalue table
              headers = self._results[0]
              table   = self._results[1:]
              print tabulate(table, headers, tablefmt="rst")
              print "Formula Used: %s" % self._designmatrix_object._formula
              print "Degrees of Freedom (n - p - k): %s" % str(total_dof)
              print "Condition Number of X^T*X: %.2f" % np.linalg.cond(np.dot(self._X.T, self._X))
docs: prints the summary of the regression.  It shows
          the waveform metadata, diagnostics of the fit, and results of the
          hypothesis tests for each comparison encoded in the design matrix