code: def runner(self):
          
  
          vir_report = os.path.join(self.reportpath, 'virulence.csv')
          if os.path.isfile(vir_report):
              self.report_parse(vir_report)
          else:
              logging.info('Starting {} analysis pipeline'.format(self.analysistype))
              if not self.pipeline:
                  general = None
                  for sample in self.runmetadata.samples:
                      general = getattr(sample, 'general')
                  if general is None:
                      # Create the objects to be used in the analyses
                      objects = Objectprep(self)
                      objects.objectprep()
                      self.runmetadata = objects.samples
              # Run the analyses
              Sippr(self, self.cutoff)
              # Create the reports
              self.reporter()
              # Print the metadata
              MetadataPrinter(self)
docs: Run the necessary methods in the correct order