def test_permute_trees_3(self): XML = etree.tostring(etree.parse('data/input/permute_trees.phyml', parser), pretty_print=True) trees = obtain_trees(XML) # contains quoted taxa too output = permute_tree(trees['Hill_Davis_2011_2'], treefile="newick") self.assert_(_trees_equal(output, "(A, (B, (C, D, E_E, F, G)));"))
def test_permute_trees_2(self): XML = etree.tostring(etree.parse('data/input/permute_trees.phyml', parser), pretty_print=True) trees = obtain_trees(XML) output = permute_tree(trees['Davis_2011_1'], treefile="newick") temp_file_handle, temp_file = tempfile.mkstemp(suffix=".new") f = open(temp_file, "w") f.write(output) f.close() output_trees = import_trees(temp_file) expected_trees = import_trees("data/output/permute_trees_2.nex") os.remove(temp_file) self.assert_(len(output_trees) == len(expected_trees)) for i in range(0, len(output_trees)): self.assert_(_trees_equal(output_trees[i], expected_trees[i]))
def test_clean_data(self): XML = etree.tostring(etree.parse('data/input/clean_data.phyml', parser), pretty_print=True) XML = clean_data(XML) trees = obtain_trees(XML) self.assert_(len(trees) == 2) expected_trees = { 'Hill_2011_2': '(A,B,(C,D,E));', 'Hill_2011_1': '(A, B, C, (D, E, F));' } for t in trees: self.assert_(_trees_equal(trees[t], expected_trees[t])) # check only one source remains names = get_all_source_names(XML) self.assert_(len(names) == 1) self.assert_(names[0] == "Hill_2011")
def test_amalgamate_trees_tnt(self): XML = etree.tostring(etree.parse('data/input/old_stk_input.phyml', parser), pretty_print=True) output_string = amalgamate_trees(XML, format="tnt") trees = obtain_trees(XML) # save the file and read it back in. Then we check correct format (i.e. readable) and # we can check the trees are correct temp_file_handle, temp_file = tempfile.mkstemp(suffix=".tre") f = open(temp_file, "w") f.write(output_string) f.close() try: trees_read = import_trees(temp_file) except: self.assert_(False) # we should get no error os.remove(temp_file) self.assert_(len(trees) == len(trees_read)) names = trees.keys() for i in range(0, len(trees)): self.assert_(_trees_equal(trees_read[i], trees[names[i]]))
def test_utf_tree(self): test_file = "data/input/utf_tree.tre" trees = import_trees(test_file) expected_tree = """(Colletes_skinneri, ((((Melitta_eickworti, Hesperapis_larreae), ('Andrena (Callandrena) sp.', (Panurgus_calcaratus, (Calliopsis_fracta, Calliopsis_pugionis)))), ((Svastra_machaerantherae, Svastra_obliqua), ('Tetraloniella_sp.', (Melissodes_rustica, (Melissodes_desponsa, 'Melissodes_sp.'))))), ((((Dieunomia_heteropoda, Dieunomia_nevadensis), ((Ceratina_calcarata, ((Chelostoma_fuliginosum, (Hoplitis_biscutellae, (Hoplitis_albifrons, Hoplitis_pilosifrons))), (Megachile_pugnata, Coelioxys_alternata))), ((Paranthidium_jugatorium, Anthidiellum_notatum), (Anthidium_oblongatum, Anthidium_porterae)))), ((Oreopasites_barbarae, ((Holcopasites_calliopsidis, Holcopasites_ruthae), (Nomada_maculata, (Nomada_imbricata, Nomada_obliterta)))), ((Leiopodus_singularis, (Xeromelecta_californica, Zacosmia_maculata)), ((Paranomada_velutina, Triopasites_penniger), (Epeolus_scutellaris, ('Triepeolus "rozeni"', Triepeolus_verbesinae)))))), ((Anthophora_furcata, (Anthophora_montana, Anthophora_urbana)), (((Exomalopsis_completa, Exomalopsis_rufiventris), ('Ptilothrix_sp.', (Diadasia_bituberculata, Diadasia_nigrifrons, (Diadasia_diminuta, Diadasia_martialis)))), ((Xylocopa_tabaniformis, Xylocopa_virginica), (Centris_hoffmanseggiae, (Apis_dorsata, (Apis_mellifera, Apis_nigrocincta)), ((Euglossa_imperialis, (Eulaema_meriana, (Eufriesea_caerulescens, Exaerete_frontalis))), ((Bombus_avinoviellus, (Bombus_pensylvanicus, Bombus_terrestris)), ('Melipona_sp.', Scaptotrigona_depilis, Lestrimelitta_limao, (Trigona_dorsalis, Trigona_necrophaga)))))))))));""" self.assert_(_trees_equal(expected_tree, trees[0]))
def test_import_paup(self): test_file = "data/input/paup_tree.tre" tree = import_tree(test_file) expected_tree = "(Mimodes_graysoni, (Mimus_gilvus, Mimus_polyglottos), ((Mimus_gundlachii, (Nesomimus_macdonaldi, Nesomimus_melanotis, Nesomimus_parvulus, Nesomimus_trifasciatus)), ((Mimus_longicaudatus, ((Mimus_patagonicus, Mimus_thenca), (Mimus_saturninus, Mimus_triurus))), (Oreoscoptes_montanus, (Toxostoma_curvirostre, Toxostoma_rufum)))));" self.assert_(_trees_equal(expected_tree, tree))
def test_import_macclade(self): test_file = "data/input/macclade_test.tre" tree = import_tree(test_file) expected_tree = "((Taxon_c, (Taxon_a, Taxon_b)), (Taxon_d, Taxon_e));" self.assert_(_trees_equal(expected_tree, tree))
def test_import_dendroscope(self): test_file = "data/input/dendroscope_test.tre" tree = import_tree(test_file) expected_tree = "((Taxon_c:1, (Taxon_a:1, Taxon_b:1):0):0, (Taxon_d:1, Taxon_e:1):0);" self.assert_(_trees_equal(expected_tree, tree))
def test_collapse_with_quotes(self): tree = "(Proteroiulus_fuscus, (Craterostigmus_tasmanianus, ((Scolopendra_viridis,(Lithobius_variegatus, (Paralamyctes_validus, Anopsobius_neozelanicus))),(Sphendononema_guildingii, ((Scutigerina_weberi%1, (Scutigerina_weberi%2,(Scutigerina_malagassa, Scutigerina_hova))), (Scutigera_coleoptrata,((Thereuopoda_longicornis, 'Thereuopodina, sp. nov.', (Thereuonema_tuberculata,Thereuonema_turkestana, Thereuopoda_clunifera)), (Allothereua_bidenticulata,Allothereua_serrulata, Parascutigera_festiva, Parascutigera_latericia))))))));" output = permute_tree(tree, treefile="newick") expected_tree = "(Proteroiulus_fuscus, (Craterostigmus_tasmanianus,((Scolopendra_viridis,(Lithobius_variegatus,(Paralamyctes_validus,Anopsobius_neozelanicus))),(Sphendononema_guildingii,((Scutigerina_weberi,(Scutigerina_malagassa, Scutigerina_hova)), (Scutigera_coleoptrata,((Thereuopoda_longicornis, 'Thereuopodina, sp. nov.', (Thereuonema_tuberculata,Thereuonema_turkestana, Thereuopoda_clunifera)), (Allothereua_bidenticulata,Allothereua_serrulata, Parascutigera_festiva, Parascutigera_latericia))))))));" self.assert_(_trees_equal(output, expected_tree))
def test_trees_equal2(self): test_file = "data/input/equal_trees.new" trees = import_trees(test_file) self.assert_(_trees_equal(trees[1], trees[0]) == True) self.assert_(_trees_equal(trees[3], trees[2]) == False)
def test_trees_not_equal(self): test_file = "data/input/multiple_trees.tre" trees = import_trees(test_file) self.assert_(_trees_equal(trees[1], trees[0]) == False)
def test_sub_taxa_missing(self): t = "((A_1:1.00000,B_1:1.00000)0.00000:0.00000,F_1:1.00000,E_1:1.00000,(G_1:1.00000,H_1:1.00000)0.00000:0.00000)0.00000:0.00000;" new_tree = _sub_taxon("Fred", "Blah", t) self.assert_(_trees_equal(new_tree, "((A_1,B_1),F_1,E_1,(G_1,H_1));"))
def test_sub_taxa(self): t = "((A_1:1.00000,B_1:1.00000)0.00000:0.00000,F_1:1.00000,E_1:1.00000,(G_1:1.00000,H_1:1.00000)0.00000:0.00000)0.00000:0.00000;" new_tree = _sub_taxon("H_1", "blah", t) self.assert_(_trees_equal(new_tree, "((A_1,B_1),F_1,E_1,(G_1,blah));"))