code: def general_stats_addcols(self, data, headers=None, namespace=None):
          
          if headers is None:
              headers = {}
          # Use the module namespace as the name if not supplied
          if namespace is None:
              namespace = self.name
  
          # Guess the column headers from the data if not supplied
          if headers is None or len(headers) == 0:
              hs = set()
              for d in data.values():
                  hs.update(d.keys())
              hs = list(hs)
              hs.sort()
              headers = OrderedDict()
              for k in hs:
                  headers[k] = dict()
  
          # Add the module name to the description if not already done
          keys = headers.keys()
          for k in keys:
              if 'namespace' not in headers[k]:
                  headers[k]['namespace'] = namespace
              if 'description' not in headers[k]:
                  headers[k]['description'] = headers[k].get('title', k)
  
          # Append to report.general_stats for later assembly into table
          report.general_stats_data.append(data)
          report.general_stats_headers.append(headers)
docs: Helper function to add to the General Statistics variable.
          Adds to report.general_stats and does not return anything. Fills
          in required config variables if not supplied.
          :param data: A dict with the data. First key should be sample name,
                       then the data key, then the data.
          :param headers: Dict / OrderedDict with information for the headers,
                          such as colour scales, min and max values etc.
                          See docs/writing_python.md for more information.
          :return: None