Run the necessary methods in the correct order

def runner(self):
        """
        Run the necessary methods in the correct order
        """

        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)