def load_cfg_and_run(pth, compare=True, fails=False):

    try:
        # This is a crappy way to do it, but it works
        if "DNA" in pth or "rerun" in pth:
            dt = "DNA"
        else:
            dt = "protein"
        cfg = config.Configuration(dt)
        cfg.load_base_path(pth)
        method = analysis_method.choose_method(cfg.search)
        rpt = reporter.TextReporter(cfg)
        meth = method(cfg, rpt, force_restart=False, threads=-1)
        results = meth.analyse()
        if compare:
            results.compare(cfg)

        # Note -- we only get here if everything completes
        # Failed tests leave shit around!
    finally:
        # If it fails, but we expect it to, then clean up
        if fails:
            cleanup(cfg)
        cfg.reset()

    if not fails: # Might already be done
        cleanup(cfg)
def load_cfg_and_run(name):
    try:
        pth = os.path.join(QUICK_PATH, name)
        cfg = config.Configuration()
        cfg.load_base_path(pth)
        method = analysis_method.choose_method(cfg.search)
        rpt = reporter.TextReporter(cfg)
        meth = method(cfg, rpt, True, False)
        results = meth.analyse()
    finally:
        # Always do this
        shutil.rmtree(cfg.full_output_path)
        cfg.reset()