code: def aggregate(self):
          for report in self.reportset:
              printtime('Processing {}'.format(report.split('.')[0]), self.start)
              header = '' if report != 'mlst.csv' else 'Strain,Genus,SequenceType,Matches,1,2,3,4,5,6,7\n'
              data = ''
              with open(os.path.join(self.reportpath, report), 'w') as aggregate:
                  for sample in self.runmetadata.samples:
                      try:
                          with open(os.path.join(sample.general.reportpath, report), 'r') as runreport:
                              if not header:
                                  header = runreport.readline()
                              else:
                                  for row in runreport:
                                      if not row.endswith('\n'):
                                          row += '\n'
                                      if row.split(',')[0] != header.split(',')[0]:
                                          data += row
                      except IOError:
                          pass
                  aggregate.write(header)
                  aggregate.write(data)