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)