def run(self, results_file):
        runtimes = collections.defaultdict(dict)

        sequences, lengths = self.generate_training_sequences()

        for implementation in ["scaling", "log"]:
            model = self.new_model(implementation)
            LOG.info(f"{model.__class__.__name__}: testing {implementation}")
            key = f"{model.__class__.__name__}|EM|hmmlearn-{implementation}"
            elapsed = self.benchmark(sequences, lengths, model, key)
            runtimes[key]["mean"] = elapsed.mean()
            runtimes[key]["std"] = elapsed.std()

        with open(results_file, mode="w") as fd:
            fd.write("configuration,mean,std,n_iterations,repeat\n")
            for key, value in runtimes.items():
                fd.write(f"{key},{value['mean']},{value['std']},"
                         f"{self.n_iter},{self.repeat}\n")