Esempio n. 1
0
def test_main_fastme(capsys):
    """
    Test that when giving the alignment file, running with fastme, no bootstraps,
    it creates expected files
    """
    outdir = GENEPATH
    soft = "fastme"
    model = None
    threads = None
    boot = 100
    cmd = "cmd: test_main_quicktree"
    tree.main(cmd,
              ALIGNMENT,
              outdir,
              soft,
              model,
              threads,
              boot=boot,
              verbose=16,
              write_boot=True)
    # Check output files
    # phylip alignments
    phylip = os.path.join(outdir, "exp_pers4genomes.grp.aln.phylip")
    assert os.path.isfile(phylip)
    # fastme logfile
    log_file = phylip + ".fastme.log"
    assert os.path.isfile(log_file)
    with open(log_file, "r") as logf:
        fastme_lines = logf.readlines()
    assert "Input data type  DNA" in " ".join(fastme_lines)
    assert "evolutionary model  TN93" in " ".join(fastme_lines)
    # tree file
    tree_file = phylip + ".fastme_tree.nwk"
    assert os.path.isfile(tree_file)
    assert not tutils.is_tree_lengths(tree_file)
    assert tutils.is_tree_bootstrap(tree_file)
    # bootstrap file
    tree_boot_file = phylip + ".fastme_bootstraps.nwk"
    assert os.path.isfile(tree_boot_file)
    with open(tree_boot_file, "r") as tbf:
        lines = tbf.readlines()
    assert len(lines) == boot
    # log files
    logs_base = os.path.join(outdir, "PanACoTA-tree-fastme.log")
    assert os.path.isfile(logs_base)
    assert os.path.isfile(logs_base + ".details")
    assert os.path.isfile(logs_base + ".debug")
    assert os.path.isfile(logs_base + ".err")
    # Check logs
    out, err = capsys.readouterr()
    assert "Converting fasta alignment to PHYLIP-relaxed format." in out
    assert "Running FastME..." in out
    assert (
        "fastme -i test/data/tree/generated_by_func_tests/exp_pers4genomes.grp.aln.phylip "
        "-dT -nB -s  -b 100 -o test/data/tree/generated_by_func_tests/"
        "exp_pers4genomes.grp.aln.phylip.fastme_tree.nwk "
        "-I test/data/tree/generated_by_func_tests/exp_pers4genomes.grp.aln.phylip.fastme.log "
        "-B test/data/tree/generated_by_func_tests/"
        "exp_pers4genomes.grp.aln.phylip.fastme_bootstraps.nwk") in out
    assert "END" in out
Esempio n. 2
0
def test_main_quicktree_notverbose(capsys):
    """
    Test that when giving the alignment file, running with quicktree, no bootstraps,
    it creates expected files
    """
    outdir = GENEPATH
    soft = "quicktree"
    model = None
    threads = 1
    cmd = "cmd: test_main_quicktree"
    tree.main(cmd, ALIGNMENT, outdir, soft, model, threads)
    # Check output files
    # stockholm alignments
    stockholm = os.path.join(outdir, "exp_pers4genomes.grp.aln.stockholm")
    assert os.path.isfile(stockholm)
    # quicktree logfile
    log_file = stockholm + ".quicktree.log"
    assert os.path.isfile(log_file)
    with open(log_file, "r") as logf:
        assert logf.readlines() == []
    # tree file
    tree_file = stockholm + ".quicktree_tree.nwk"
    assert os.path.isfile(tree_file)
    assert tutils.is_tree_lengths(tree_file)
    assert not tutils.is_tree_bootstrap(tree_file)
    # log files
    logs_base = os.path.join(outdir, "PanACoTA-tree-quicktree.log")
    assert os.path.isfile(logs_base)
    assert os.path.isfile(logs_base + ".details")
    assert os.path.isfile(logs_base + ".err")
    # Check logs
    out, err = capsys.readouterr()
    assert "Converting fasta alignment to stockholm format." in out
    assert "Running Quicktree..." in out
    assert "END" in out
Esempio n. 3
0
def test_main_from_parse(capsys):
    """
    Test main when we give the output of the parser
    run fastme with K2P model, no bootstrap
    """
    import argparse
    args = argparse.Namespace()
    args.alignment = ALIGNMENT
    args.boot = None
    args.outdir = GENEPATH
    args.soft = "iqtree"
    args.model = "HKY"
    args.write_boot = False
    args.threads = 1
    args.verbose = 2
    args.quiet = False
    args.memory = False
    args.fast = False
    args.argv = "PanACoTA tree test_main_from_parse"
    tree.main_from_parse(args)
    # Check output files
    # iqtree log file
    iq_log_file = os.path.join(GENEPATH,
                               "exp_pers4genomes.grp.aln.iqtree_tree.log")
    assert os.path.isfile(iq_log_file)
    with open(iq_log_file, "r") as logf:
        iq_lines = logf.readlines()
    assert (
        "Command: iqtree -s test/data/align/exp_files/exp_pers4genomes.grp.aln -nt 1 "
        "-m HKY -st DNA -pre test/data/tree/generated_by_func_tests/"
        "exp_pers4genomes.grp.aln.iqtree_tree -quiet") in " ".join(iq_lines)
    assert ("Alignment has 4 sequences with 6438 columns, "
            "81 distinct patterns") in " ".join(iq_lines)
    assert "Analysis results written to:" in " ".join(iq_lines)
    # Tree file
    tree_file = os.path.join(GENEPATH,
                             "exp_pers4genomes.grp.aln.iqtree_tree.treefile")
    assert os.path.isfile(tree_file)
    assert tutils.is_tree_lengths(tree_file)
    assert not tutils.is_tree_bootstrap(tree_file)
    # Panacota log file
    logs_base = os.path.join(GENEPATH, "PanACoTA-tree-iqtree.log")
    assert os.path.isfile(logs_base)
    assert os.path.isfile(logs_base + ".err")
    # Check logs
    out, err = capsys.readouterr()
    assert "Running IQtree..." in out
    assert (
        "IQtree command: iqtree -s test/data/align/exp_files/exp_pers4genomes.grp.aln "
        "-nt 1 -m HKY    -st DNA -pre test/data/tree/generated_by_func_tests/"
        "exp_pers4genomes.grp.aln.iqtree_tree -quiet") in out
    assert "END" in out
Esempio n. 4
0
def test_main_fasttree(capsys):
    """
    Test that when giving the alignment file, running with fasttree, no bootstraps,
    it creates expected files
    """
    outdir = GENEPATH
    soft = "fasttree"
    model = "-gtr"
    threads = 1
    boot = 100
    cmd = "cmd: test_main_fasttree"
    tree.main(cmd,
              ALIGNMENT,
              outdir,
              soft,
              model,
              threads,
              boot=boot,
              verbose=2)
    # Check output files
    # fastme logfile
    log_file = os.path.join(outdir, "exp_pers4genomes.grp.aln.fasttree.log")
    assert os.path.isfile(log_file)
    with open(log_file, "r") as logf:
        fasttree_lines = logf.readlines()
    assert "Read 4 sequences, 6438 positions" in " ".join(fasttree_lines)
    assert "TreeCompleted" in " ".join(fasttree_lines)
    assert ("Nucleotide distances: Jukes-Cantor Joins: balanced Support: "
            "Local boot 100") in " ".join(fasttree_lines)
    # tree file
    tree_file = os.path.join(outdir,
                             "exp_pers4genomes.grp.aln.fasttree_tree.nwk")
    assert os.path.isfile(tree_file)
    assert not tutils.is_tree_lengths(tree_file)
    assert tutils.is_tree_bootstrap(tree_file)
    # log files
    logs_base = os.path.join(outdir, "PanACoTA-tree-fasttree.log")
    assert os.path.isfile(logs_base)
    assert os.path.isfile(logs_base + ".details")
    assert not os.path.isfile(logs_base + ".debug")
    assert os.path.isfile(logs_base + ".err")
    # Check logs
    out, err = capsys.readouterr()
    print(out)
    assert "Running FasttreeMP..." in out
    assert (
        "Fasttree command: FastTreeMP -nt -gtr -noml -nocat -boot 100 "
        "-log test/data/tree/generated_by_func_tests/exp_pers4genomes.grp.aln.fasttree.log "
        "test/data/align/exp_files/exp_pers4genomes.grp.aln") in out
    assert "END" in out
Esempio n. 5
0
def test_main_default(capsys):
    """
    Test that when giving the alignment file, and all default parameters, it runs iqtree,
    and returns expected files
    """
    outdir = GENEPATH
    soft = "iqtree"
    model = "GTR"
    threads = 1
    verbose = 3

    cmd = "cmd test_main_default"
    tree.main(cmd, ALIGNMENT, outdir, soft, model, threads, verbose=verbose)
    # Check output files
    iq_log_file = os.path.join(outdir,
                               "exp_pers4genomes.grp.aln.iqtree_tree.log")
    assert os.path.isfile(iq_log_file)
    with open(iq_log_file, "r") as logf:
        iq_lines = logf.readlines()
    assert (
        "Command: iqtree -s test/data/align/exp_files/exp_pers4genomes.grp.aln -nt 1 "
        "-m GTR -st DNA -pre test/data/tree/generated_by_func_tests/"
        "exp_pers4genomes.grp.aln.iqtree_tree -quiet") in " ".join(iq_lines)
    assert ("Alignment has 4 sequences with 6438 columns, "
            "81 distinct patterns") in " ".join(iq_lines)
    assert "Analysis results written to:" in " ".join(iq_lines)
    tree_file = os.path.join(outdir,
                             "exp_pers4genomes.grp.aln.iqtree_tree.treefile")
    assert os.path.isfile(tree_file)
    assert tutils.is_tree_lengths(tree_file)
    assert not tutils.is_tree_bootstrap(tree_file)
    logs_base = os.path.join(outdir, "PanACoTA-tree-iqtree.log")
    assert os.path.isfile(logs_base)
    assert os.path.isfile(logs_base + ".err")
    # Check logs
    out, err = capsys.readouterr()
    print(out)
    assert "Running IQtree..." in out
    assert (
        "IQtree command: iqtree -s test/data/align/exp_files/exp_pers4genomes.grp.aln "
        "-nt 1 -m GTR    -st DNA -pre test/data/tree/generated_by_func_tests/"
        "exp_pers4genomes.grp.aln.iqtree_tree -quiet") in out
    assert "END" in out
Esempio n. 6
0
def test_main_iqtree2_test_model(capsys):
    """
    Test that when giving the alignment file, and all default parameters, it runs iqtree2,
    and returns expected files
    """
    outdir = os.path.join(GENEPATH, "test_iqtree2_testmodel")
    soft = "iqtree2"
    model = "TEST"
    threads = 1

    cmd = "cmd test_main_default"
    tree.main(cmd,
              ALIGNMENT,
              outdir,
              soft,
              model,
              threads,
              boot=1000,
              write_boot=True,
              verbose=2)
    # Check output files
    # Check iqtree logfile
    iq_log_file = os.path.join(outdir,
                               "exp_pers4genomes.grp.aln.iqtree_tree.log")
    assert os.path.isfile(iq_log_file)
    with open(iq_log_file, "r") as logf:
        iq_lines = logf.readlines()
    assert (
        "Command: iqtree2 -s test/data/align/exp_files/exp_pers4genomes.grp.aln "
        "-T 1 -m TEST -B 1000 --boot-trees --seqtype DNA "
        "--prefix test/data/tree/generated_by_func_tests/"
        "test_iqtree2_testmodel/exp_pers4genomes.grp.aln.iqtree_tree "
        "--quiet") in " ".join(iq_lines)
    assert ("Alignment has 4 sequences with 6438 columns, "
            "81 distinct patterns") in " ".join(iq_lines)
    assert "Analysis results written to:" in " ".join(iq_lines)
    assert "ModelFinder will test up to" in " ".join(iq_lines)
    # Check treefile
    tree_file = os.path.join(outdir,
                             "exp_pers4genomes.grp.aln.iqtree_tree.treefile")
    assert os.path.isfile(tree_file)
    assert not tutils.is_tree_lengths(tree_file)
    assert tutils.is_tree_bootstrap(tree_file)
    # Check bootstrap tree file
    boot_file = os.path.join(outdir,
                             "exp_pers4genomes.grp.aln.iqtree_tree.ufboot")
    assert os.path.isfile(tree_file)
    with open(boot_file, "r") as tbf:
        lines = tbf.readlines()
    assert len(lines) == 1000
    # Check panacota logfile
    logs_base = os.path.join(outdir, "PanACoTA-tree-iqtree2.log")
    assert os.path.isfile(logs_base)
    assert os.path.isfile(logs_base + ".err")
    assert os.path.isfile(logs_base + ".details")
    # Check logs
    out, err = capsys.readouterr()
    assert "Running IQtree..." in out
    assert (
        "IQtree command: iqtree2 -s test/data/align/exp_files/exp_pers4genomes.grp.aln "
        "-T 1 -m TEST  -B 1000 --boot-trees --seqtype DNA --prefix test/data/tree/"
        "generated_by_func_tests/test_iqtree2_testmodel/exp_pers4genomes.grp.aln.iqtree_tree "
        "--quiet") in out
    assert "END" in out