def test_generate_tree_edges(alb_resources, monkeypatch): mock_tmp_dir = br.TempDir() tmp_dir = br.TempDir() for root, dirs, files in os.walk("%smock_resources%stest_fasttree_inputs" % (RES_PATH, os.path.sep)): for _file in files: shutil.copyfile("%s%s%s" % (root, os.path.sep, _file), "%s%s%s" % (mock_tmp_dir.path, os.path.sep, _file)) monkeypatch.setattr(Pb.shutil, "which", lambda *_: True) monkeypatch.setattr(Pb, "Popen", MockPopen) monkeypatch.setattr(br, "TempDir", lambda: mock_tmp_dir) with pytest.raises(RuntimeError) as err: Pb.generate_tree(alb_resources.get_one("o d n"), 'fasttree', "--nonsense") assert "fasttree threw an error. Scroll up for more info." in str(err) with pytest.raises(FileExistsError) as err: Pb.generate_tree(alb_resources.get_one("o d n"), 'raxml', keep_temp=tmp_dir.path) assert "Execution of raxml was halted to prevent files in" in str(err) with pytest.raises(FileNotFoundError) as err: Pb.generate_tree(alb_resources.get_one("o d n"), 'Foo') assert 'Foo failed to generate a tree' in str(err) monkeypatch.setattr(Pb.shutil, "which", lambda *_: None) with pytest.raises(ProcessLookupError) as err: Pb.generate_tree(alb_resources.get_one("o d n"), 'Foo') assert "ProcessLookupError: #### Could not find Foo on your system. ####" in str(err) monkeypatch.setattr(Pb.Popen, "communicate", lambda *_: ["".encode(), "".encode()]) with pytest.raises(AttributeError) as err: Pb.generate_tree(alb_resources.get_one("o d n"), 'Foo') assert "Foo is not a recognized tree inference tool. Please check your spelling (case sensitive)" in str(err)
def test_fasttree_inputs(alb_resources, hf): temp_dir = br.TempDir() # Nucleotide alignbuddy = alb_resources.get_one("o d n") tester = Pb.generate_tree(Alb.make_copy(alignbuddy), 'FastTree', '-seed 12345') assert hf.buddy2hash(tester) in [ 'd7f505182dd1a1744b45cc326096f70c', 'da8a67cae6f3f70668f7cf04060b7cd8', '732c5e9a978cebb1cfce6af6d64950c2' ] tester = Pb.generate_tree(alignbuddy, 'fasttree', '-seed 12345', quiet=True) assert hf.buddy2hash(tester) in [ 'd7f505182dd1a1744b45cc326096f70c', 'da8a67cae6f3f70668f7cf04060b7cd8', '732c5e9a978cebb1cfce6af6d64950c2' ] alignbuddy = alb_resources.get_one("o p n") tester = Pb.generate_tree(alignbuddy, 'fasttree', '-seed 12345', keep_temp="%s%snew_dir" % (temp_dir.path, os.sep)) assert hf.buddy2hash(tester) in [ '57eace9bdd2074297cbd2692c1f4cd38', '82d5a9d4f44fbedf29565686a7cdfcaa', '682210ef16beedee0e9f43c05edac112' ]
def test_phyml_inputs(): # Nucleotide tester = Alb.AlignBuddy(resource("Mnemiopsis_cds.nex")) tester = Pb.generate_tree(tester, 'phyml', '-m GTR --r_seed 12345') assert phylo_to_hash(tester) == 'd3a4e7601998885f333ddd714ca764db' # Peptide tester = Alb.AlignBuddy(resource("Mnemiopsis_pep.nex")) tester = Pb.generate_tree(tester, 'phyml', '-m Blosum62 --r_seed 12345') assert phylo_to_hash(tester) == '52c7d028341b250bcc867d57a68c794c'
def test_raxml_inputs(): # Nucleotide tester = Alb.AlignBuddy(resource("Mnemiopsis_cds.nex")) tester = Pb.generate_tree(tester, 'raxml') assert phylo_to_hash(tester) == '706ba436f8657ef3aee7875217dd07c0' # Peptide tester = Alb.AlignBuddy(resource("Mnemiopsis_pep.nex")) tester = Pb.generate_tree(tester, 'raxml') assert phylo_to_hash(tester) == 'fc35569091eeba49ac4dcec7fc6890bf'
def test_fasttree_inputs(): temp_dir = MyFuncs.TempDir() # Nucleotide alignbuddy = Alb.AlignBuddy(resource("Mnemiopsis_cds.nex")) tester = Pb.generate_tree(alignbuddy, 'fasttree', '-seed 12345') assert phylo_to_hash(tester) == 'd7f505182dd1a1744b45cc326096f70c' alignbuddy = Alb.AlignBuddy(resource("Mnemiopsis_pep.nex")) tester = Pb.generate_tree(alignbuddy, 'fasttree', '-seed 12345', keep_temp="%s/new_dir" % temp_dir.path) assert phylo_to_hash(tester) == '57eace9bdd2074297cbd2692c1f4cd38'
def test_raxml_multiple_searches(alb_resources, hf): tester = alb_resources.get_one("o d py") tester = Pb.generate_tree(tester, 'raxml', '-N 3') assert hf.buddy2hash(tester) in [ '76356987f7e2368cdf13c42567cb7453', 'ee223e46a9f9753203553e6fd7473ec9', 'b3a8359c62e9d29b952782df53a4782a', '807de55171690b2af1b724d86390cbc7', '46e0a6d38e3c44b93a04d2b5b7f4aca1' ]
def test_raxml_inputs_quiet(alb_resources, hf): tester = alb_resources.get_one("o d n") tester = Pb.generate_tree(tester, 'raxml', quiet=True) assert hf.buddy2hash(tester) in [ '7569f9f6c7f8079579bfb77291b99616', '4e083fc6d8b4f4342674efd93d5e313c', '706ba436f8657ef3aee7875217dd07c0', '1cede6c576bb88125e2387d850f813ab', '3280f0b404d62fbedd2e6090cfd6fedc' ]
def test_phyml_pep(alb_resources, hf): # Peptide tester = alb_resources.get_one("o p py") tester = Pb.generate_tree(tester, 'phyml', '-m Blosum62 --r_seed 12345') assert hf.buddy2hash(tester) in ['7caa5c641fa83085c2980efca875112a', '2bf0a204b2de7bc5132aa7073ecfb011', '981d16e8f02989a8642095016c88af90', 'd8ee3631002b6603d08272c2b44fd21c'], print(tester)
def test_phyml_dna(alb_resources, hf): # Nucleotide tester = alb_resources.get_one("o d py") tester = Pb.generate_tree(tester, 'phyml', '-m GTR --r_seed 12345') assert hf.buddy2hash(tester) in ['b61e75e4706d35e92f2208d438f52771', 'b0bdb3f5bf1fb2e44bef3c16f80c38f2', 'b9d3f11e332c3589110322e939aa41cc', '754c38fab99c01c68a68c0a59248d242'], print(tester)
def test_raxml_inputs_pep(alb_resources, hf): tester = alb_resources.get_one("o p py") tester = Pb.generate_tree(tester, 'raxml') assert hf.buddy2hash(tester) in [ '3e6ab2efc088d5547fa8244462f7cc03', '832f3b301a2a320affb9864b4c6a3979', '41ccd8852002f3b98c032378403c38b0', '6443e4dddb9b64a783bd9e97b369e0d4', 'caff20f9bb5192a799ec18db0faa8569', '31218fd9e1b803df09fce22eee8da62e' ]
def test_raxml_multi_param(alb_resources, hf): tester = alb_resources.get_one("o d n") tester = Pb.generate_tree(tester, 'raxml', '-m GTRCAT -p 112358 -K MK -N 3') assert hf.buddy2hash(tester) in [ '08fa932a0cbb33d936ef4c8aef3c0095', '53ea2002e19d1d88c684f0ddc02de187', '02e5ea7b756b68b8622636ba7e28e15b', 'c24b5e9c1899246b9a459a61efe0aad5', '1999ef930c0d6cadbe5844b7c6355029', 'ead385a55d3cad48ecfdd1ebddb00b8b' ]
def test_raxml_multiple_searches(alb_resources, hf): tester = alb_resources.get_one("o d py") tester = Pb.generate_tree(tester, 'raxml', '-N 3') assert hf.buddy2hash(tester) in [ '76356987f7e2368cdf13c42567cb7453', 'ee223e46a9f9753203553e6fd7473ec9', 'b3a8359c62e9d29b952782df53a4782a', '807de55171690b2af1b724d86390cbc7', '46e0a6d38e3c44b93a04d2b5b7f4aca1', 'ecf0cabfab48bc2449ca3e43645b3d36', 'ce60f6627ff665994f0c6836d7469632', 'c8f5fe6c50150e55b43d545e44c7c5ce' ]
def test_raxml_inputs_quiet(alb_resources, hf): tester = alb_resources.get_one("o d n") tester = Pb.generate_tree(tester, 'raxml', quiet=True) assert hf.buddy2hash(tester) in [ '7569f9f6c7f8079579bfb77291b99616', '4e083fc6d8b4f4342674efd93d5e313c', '706ba436f8657ef3aee7875217dd07c0', '1cede6c576bb88125e2387d850f813ab', '3280f0b404d62fbedd2e6090cfd6fedc', 'b954440b4baa338eb4a63b0a5a7f7942', '629fa27f6e636c137257abc6a8a40956', '878e1ca74539e9b969c539bd8743c27e' ]
def test_generate_trees_edge_cases(alb_resources): temp_file = br.TempFile() tester = alb_resources.get_one("o d n") with pytest.raises(FileExistsError): Pb.generate_tree(tester, "raxml", keep_temp=temp_file.path) with pytest.raises(AttributeError): Pb.generate_tree(tester, "foo") with pytest.raises(FileNotFoundError): Pb.generate_tree(tester, "raxml", "-m BINCATLG") with pytest.raises(RuntimeError): Pb.generate_tree(tester, "fasttree", "-s 12345") # noinspection PyUnresolvedReferences with mock.patch.dict(os.environ, {"PATH": ""}): with pytest.raises(ProcessLookupError): Pb.generate_tree(tester, "raxml")
def test_generate_trees_edge_cases(): temp_file = MyFuncs.TempFile() tester = Alb.AlignBuddy(resource("Mnemiopsis_cds.nex")) with pytest.raises(FileExistsError): Pb.generate_tree(tester, "raxml", keep_temp=temp_file.path) with pytest.raises(AttributeError): Pb.generate_tree(tester, "foo") with pytest.raises(FileNotFoundError): Pb.generate_tree(tester, "raxml", "-m BINCATLG") with pytest.raises(RuntimeError): Pb.generate_tree(tester, "fasttree", "-s 12345") # noinspection PyUnresolvedReferences with mock.patch.dict(os.environ, {"PATH": ""}): with pytest.raises(ProcessLookupError): Pb.generate_tree(tester, "raxml")
def test_raxml_multi_param(alb_resources, hf): tester = alb_resources.get_one("o d n") tester = Pb.generate_tree(tester, 'raxml', '-m GTRCAT -p 112358 -K MK -N 3') assert hf.buddy2hash(tester) in [ '08fa932a0cbb33d936ef4c8aef3c0095', '53ea2002e19d1d88c684f0ddc02de187', '02e5ea7b756b68b8622636ba7e28e15b', 'c24b5e9c1899246b9a459a61efe0aad5', '1999ef930c0d6cadbe5844b7c6355029', 'ead385a55d3cad48ecfdd1ebddb00b8b', 'ae6e53a6e7c03786928b087a15e0435e', '135f244c3de9ba417fe685715fef6807', '886a9d841e68c2fd4c6052ad85c4eaf7' ]
def test_phyml_pep(alb_resources, hf): # Peptide tester = alb_resources.get_one("o p py") tester = Pb.generate_tree(tester, 'phyml', '-m Blosum62 --r_seed 12345') assert hf.buddy2hash(tester) in { '7caa5c641fa83085c2980efca875112a': "", '2bf0a204b2de7bc5132aa7073ecfb011': "", '981d16e8f02989a8642095016c88af90': "", 'd8ee3631002b6603d08272c2b44fd21c': "", '03acc8e899955f7e838852d7d71049ad': "", 'abe46f3bac533ad2f510bd4657aa9505': "", '06f5ec5db5e1a27c07e4e8b5f5850685': "3.3.20170530" }, print(tester)
def test_fasttree(alb_resources, hf, monkeypatch): mock_tmp_dir = br.TempDir() tmp_dir = br.TempDir() for root, dirs, files in os.walk("%smock_resources%stest_fasttree_inputs" % (RES_PATH, os.path.sep)): for _file in files: shutil.copyfile("%s%s%s" % (root, os.path.sep, _file), "%s%s%s" % (mock_tmp_dir.path, os.path.sep, _file)) monkeypatch.setattr(Pb.shutil, "which", lambda *_: True) monkeypatch.setattr(Pb, "Popen", MockPopen) monkeypatch.setattr(Pb, "check_output", mock_check_output) monkeypatch.setattr(br, "TempDir", lambda: mock_tmp_dir) # basic tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'fasttree') assert hf.buddy2hash( tester) == "4b2ab8c39f27b9871f9a370ca7d0c4b3", tester.write("temp.del") # quiet tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'fasttree', quiet=True) assert hf.buddy2hash( tester) == "4b2ab8c39f27b9871f9a370ca7d0c4b3", tester.write("temp.del") # params tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'fasttree', "-pseudo", quiet=True) assert hf.buddy2hash( tester) == "4b2ab8c39f27b9871f9a370ca7d0c4b3", tester.write("temp.del") # slight edges tester = alb_resources.get_one("m p s") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'fasttree-foo', quiet=True) assert hf.buddy2hash( tester) == "7692ee7edb8df4f91d2bdca6c3767796", tester.write("temp.del") # keep tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP Pb.generate_tree(tester, 'fasttree', keep_temp="%s%skeep_files" % (tmp_dir.path, os.path.sep)) root, dirs, files = next( os.walk("%s%skeep_files" % (tmp_dir.path, os.path.sep))) kept_output = "" for file in sorted(files): with open("%s%s%s" % (root, os.path.sep, file), "r") as ifile: kept_output += ifile.read() if os.name == "nt": assert hf.string2hash( kept_output) == "bcd034f0db63a7b41f4b3b6661200ef3" else: assert hf.string2hash( kept_output) == "10df99cd1696b002f841aa18b78477ca"
def test_phyml_dna(alb_resources, hf): # Nucleotide tester = alb_resources.get_one("o d py") tester = Pb.generate_tree(tester, 'phyml', '-m GTR --r_seed 12345') assert hf.buddy2hash(tester) in { 'b61e75e4706d35e92f2208d438f52771': "", 'b0bdb3f5bf1fb2e44bef3c16f80c38f2': "", 'b9d3f11e332c3589110322e939aa41cc': "", '754c38fab99c01c68a68c0a59248d242': "", '3ca772c34cdcf0a22c09e1592aba9ebf': "", 'd7ae1badd31d48487276495bad4522e5': "", 'e84fb949f1a6ed0296cda4e5a8422423': "3.3.20170530" }, print(tester)
def test_phyml(alb_resources, hf, monkeypatch): mock_tmp_dir = br.TempDir() tmp_dir = br.TempDir() for root, dirs, files in os.walk("%smock_resources%stest_phyml_inputs" % (RES_PATH, os.path.sep)): for _file in files: shutil.copyfile("%s%s%s" % (root, os.path.sep, _file), "%s%s%s" % (mock_tmp_dir.path, os.path.sep, _file)) monkeypatch.setattr(Pb.shutil, "which", lambda *_: True) monkeypatch.setattr(Pb, "Popen", MockPopen) monkeypatch.setattr(br, "TempDir", lambda: mock_tmp_dir) # basic tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'phyml') assert hf.buddy2hash( tester) == "9fbcfe1d565b9fd23e2c5fca86019f8e", tester.write("temp.del") # quiet tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'phyml', quiet=True) assert hf.buddy2hash( tester) == "9fbcfe1d565b9fd23e2c5fca86019f8e", tester.write("temp.del") # params tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'phyml', "--sequential", quiet=True) assert hf.buddy2hash( tester) == "9fbcfe1d565b9fd23e2c5fca86019f8e", tester.write("temp.del") # slight edges tester = alb_resources.get_one("o p n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'phyml-foo', tmp_dir.path, quiet=True) assert hf.buddy2hash( tester) == "9fbcfe1d565b9fd23e2c5fca86019f8e", tester.write("temp.del") # keep tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP Pb.generate_tree(tester, 'phyml', keep_temp="%s%skeep_files" % (tmp_dir.path, os.path.sep)) root, dirs, files = next( os.walk("%s%skeep_files" % (tmp_dir.path, os.path.sep))) kept_output = "" for file in sorted(files): with open("%s%s%s" % (root, os.path.sep, file), "r") as ifile: kept_output += ifile.read() if os.name == "nt": assert hf.string2hash( kept_output) == "a795da6869c5e3a34962a52ec35006ed" else: assert hf.string2hash( kept_output) == "5a3559c264cb4c4779f15a515aaf2286"
def test_raxml_multi_param(): tester = Alb.AlignBuddy(resource("Mnemiopsis_cds.nex")) tester = Pb.generate_tree(tester, 'raxml', '-m GTRCAT -p 112358 -K MK -N 2') assert phylo_to_hash(tester) == '2bce58a9c6756fa68fd828a307850d7d'
def test_raxml_inputs_pep(alb_resources, hf): tester = alb_resources.get_one("o p py") tester = Pb.generate_tree(tester, 'raxml') assert hf.buddy2hash(tester) in ['3e6ab2efc088d5547fa8244462f7cc03', '832f3b301a2a320affb9864b4c6a3979', '41ccd8852002f3b98c032378403c38b0', '6443e4dddb9b64a783bd9e97b369e0d4']
def test_raxml(alb_resources, hf, monkeypatch): mock_tmp_dir = br.TempDir() tmp_dir = br.TempDir() root, dirs, files = next(os.walk("%smock_resources%stest_raxml_inputs" % (RES_PATH, os.path.sep))) for _file in files: shutil.copyfile("%s%s%s" % (root, os.path.sep, _file), "%s%s%s" % (mock_tmp_dir.path, os.path.sep, _file)) monkeypatch.setattr(Pb.shutil, "which", lambda *_: True) monkeypatch.setattr(Pb, "Popen", MockPopen) monkeypatch.setattr(br, "TempDir", lambda: mock_tmp_dir) # basic tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml') assert hf.buddy2hash(tester) == "1cede6c576bb88125e2387d850f813ab", tester.write("temp.del") # quiet tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml', quiet=True) assert hf.buddy2hash(tester) == "1cede6c576bb88125e2387d850f813ab", tester.write("temp.del") # params tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml', "-w path{0}to{0}nowhere".format(os.path.sep), quiet=True) assert hf.buddy2hash(tester) == "1cede6c576bb88125e2387d850f813ab", tester.write("temp.del") # slight edges tester = alb_resources.get_one("o p n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml-HPC', tmp_dir.path, quiet=True) assert hf.buddy2hash(tester) == "1cede6c576bb88125e2387d850f813ab", tester.write("temp.del") # bootstraps tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml', "-b 1234 -N 4", quiet=True) assert hf.buddy2hash(tester) == "b8a3b6068aa06bd8a70fcc9bda0efad9", tester.write("temp.del") # keep tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP Pb.generate_tree(tester, 'raxml', keep_temp="%s%skeep_files" % (tmp_dir.path, os.path.sep)) root, dirs, files = next(os.walk("%s%skeep_files" % (tmp_dir.path, os.path.sep))) kept_output = "" for file in sorted(files): with open("%s%s%s" % (root, os.path.sep, file), "r") as ifile: kept_output += ifile.read() if os.name == "nt": assert hf.string2hash(kept_output) == "7f2fdfe55dbe805bd994f3f56c79bb1b" else: assert hf.string2hash(kept_output) == "393353fb47861460aecaefa69a6ec55c" # multi-run os.remove("%s%sRAxML_bestTree.result" % (mock_tmp_dir.path, os.path.sep)) tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml', "-N 3", quiet=True) assert hf.buddy2hash(tester) == "e8ce19bba744f0188df2ebb4ffced4d8", tester.write("temp.del") # bipartitions shutil.copy("{0}mock_resources{1}test_raxml_inputs{1}bipartitions{1}RAxML_bipartitions.result".format(RES_PATH, os.path.sep), "%s%s" % (mock_tmp_dir.path, os.path.sep)) tester = alb_resources.get_one("o d n") tester.hash_map = HASH_MAP tester = Pb.generate_tree(tester, 'raxml', "-f b -z {0}{1}RAxML_bootstrap.result " "-t {0}{1}RAxML_bestTree.result".format(tmp_dir.path, os.path.sep)) assert hf.buddy2hash(tester) == "457533ada8e987fd0c50a41aabe1700b"
def test_fasttree_multi_param(): temp_file = MyFuncs.TempFile() tester = Alb.AlignBuddy(resource("Alignments_cds.phyr")) tester = Pb.generate_tree(tester, 'fasttree', '-seed 12345 -wag -fastest -log %s' % temp_file.path) assert phylo_to_hash(tester) == '28debf1cc6a7ab69f94c69626fbe5db0'
def test_fasttree_multi_param(): temp_file = MyFuncs.TempFile() tester = Alb.AlignBuddy(resource("Alignments_cds.phyr")) tester = Pb.generate_tree(tester, 'fasttree', '-seed 12345 -wag -fastest -log %s' % temp_file.path) assert phylo_to_hash(tester) == '0877f4e8f46c3f77390dbf962d24ff71'
def test_phyml_multi_param(): tester = Alb.AlignBuddy(resource("Mnemiopsis_cds.nex")) tester = Pb.generate_tree(tester, 'phyml', '-m GTR -o tl -b 2 --r_seed 12345') assert phylo_to_hash(tester) == '5434f29509eab76dd52dd69d2c0e186f'