Пример #1
0
 def test_import_combined(self):
     test_file = "data/input/processed_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_(expected_tree == tree)
     test_file = "data/input/processed_tree_translate.tre"
     tree = import_tree(test_file)
     expected_tree = "(Cettia_fortipes, ((((Garrulax_squamatus, Minla_ignotincta), ((Stachyris_chrysaea, Stachyris_ruficeps), Stachyris_nigriceps)), (((((Stachyris_whiteheadi, ((Zosterops_erythropleurus, Zosterops_japonicus), Zosterops_palpebrosus)), ((Yuhina_bakeri, Yuhina_flavicollis), (Yuhina_gularis, Yuhina_occipitalis))), (Yuhina_castaniceps, Yuhina_everetti)), (Yuhina_brunneiceps, Yuhina_nigrimenta)), Yuhina_diademata)), Yuhina_zantholeuca));"
     self.assert_(expected_tree == tree)
Пример #2
0
 def test_import_trees(self):
     """ Test reading all trees from a file """
     test_file = "data/input/multiple_trees.tre"
     tree = import_tree(test_file, tree_no=0)
     expected_tree = "(Coracias_caudata, (Gallus_gallus, Apus_affinis), (Acanthisitta_chloris, ((Formicarius_colma, Thamnophilus_nigrocinereus, Furnarius_rufus), (Tyrannus_tyrannus, (Pipra_coronata, Rupicola_rupicola)), (Pitta_guajana, (Smithornis_rufolateralis, (Philepitta_castanea, Psarisomus_dalhousiae)))), (Menura_novaehollandiae, (Climacteris_picumnus, Ptilonorhynchus_violaceus), (Aegithalos_iouschensis, Callaeas_cinerea, Notiomystis_cincta, Tregellasia_leucops, Troglodytes_aedon, Regulus_calendula, Sitta_pygmaea, Pycnonotus_barbatus, Picathartes_gymnocephalus, Parus_inornatus, Orthonyx_spaldingii, Petrochelidon_pyrrhonota, Cisticola_anonymus, Certhia_familiaris, Bombycilla_garrulus, Alauda_arvensis, (Ficedula_strophiata, Turdus_falklandii), (Meliphaga_analoga, Pardalotus_striatus), (Malurus_melanocephalus, Pomatostomus_isidorei), (Dicaeum_melanoxanthum, Nectarinia_olivacea), (Toxorhamphus_novaeguineae, (Melanocharis_nigra, Oedistoma_iliolophum)), (Sylvia_nana, (Garrulax_milleti, Zosterops_senegalensis)), (Cinclus_cinclus, (Mimus_patagonicus, Sturnus_vulgaris)), (Chloropsis_cochinchinensis, Irena_cyanogaster, (Cardinalis_cardinalis, Passer_montanus, Fringilla_montifringilla, (Motacilla_cinerea, Ploceus_cucullatus, Prunella_collaris), (Emberiza_schoeniclus, Thraupis_cyanocephala, Parula_americana, Icterus_parisorum))), ((Artamus_leucorynchus, (Aegithina_tiphia, Vanga_curvirostris)), ((Oriolus_larvatus, (Pachycephala_soror, Vireo_philadelphicus)), (Corvus_corone, Paradisaea_raggiana, (Monarcha_axillaris, Dicrurus_adsimilis), (Coracina_lineata, Lanius_ludovicianus))))))));"
     self.assert_(expected_tree == tree)
     tree = import_tree(test_file, tree_no=1)
     expected_tree2 = "(Coracias_caudata, Gallus_gallus, Apus_affinis, (Acanthisitta_chloris, ((Formicarius_colma, Thamnophilus_nigrocinereus, Furnarius_rufus), (Tyrannus_tyrannus, (Pipra_coronata, Rupicola_rupicola)), (Pitta_guajana, (Smithornis_rufolateralis, (Philepitta_castanea, Psarisomus_dalhousiae)))), (Menura_novaehollandiae, (Climacteris_picumnus, Ptilonorhynchus_violaceus), (Aegithalos_iouschensis, Callaeas_cinerea, Notiomystis_cincta, Tregellasia_leucops, Troglodytes_aedon, Regulus_calendula, Sitta_pygmaea, Pycnonotus_barbatus, Picathartes_gymnocephalus, Parus_inornatus, Orthonyx_spaldingii, Petrochelidon_pyrrhonota, Cisticola_anonymus, Certhia_familiaris, Bombycilla_garrulus, Alauda_arvensis, (Ficedula_strophiata, Turdus_falklandii), (Meliphaga_analoga, Pardalotus_striatus), (Malurus_melanocephalus, Pomatostomus_isidorei), (Dicaeum_melanoxanthum, Nectarinia_olivacea), (Toxorhamphus_novaeguineae, (Melanocharis_nigra, Oedistoma_iliolophum)), (Sylvia_nana, (Garrulax_milleti, Zosterops_senegalensis)), (Cinclus_cinclus, (Mimus_patagonicus, Sturnus_vulgaris)), (Chloropsis_cochinchinensis, Irena_cyanogaster, (Cardinalis_cardinalis, Passer_montanus, Fringilla_montifringilla, (Motacilla_cinerea, Ploceus_cucullatus, Prunella_collaris), (Emberiza_schoeniclus, Thraupis_cyanocephala, Parula_americana, Icterus_parisorum))), ((Artamus_leucorynchus, (Aegithina_tiphia, Vanga_curvirostris)), ((Oriolus_larvatus, (Pachycephala_soror, Vireo_philadelphicus)), (Corvus_corone, Paradisaea_raggiana, (Monarcha_axillaris, Dicrurus_adsimilis), (Coracina_lineata, Lanius_ludovicianus))))))));"
     self.assert_(expected_tree2 == tree)
     trees = import_trees(test_file)
     self.assert_(expected_tree == trees[0])
     self.assert_(expected_tree2 == trees[1])
Пример #3
0
 def test_create_tnt_matrix_with_taxonomy(self):
     XML = etree.tostring(etree.parse('data/input/create_matrix.phyml',
                                      parser),
                          pretty_print=True)
     taxonomy = import_tree('data/input/paup_tree.tre')
     matrix = create_matrix(XML, taxonomy=taxonomy)
     self.assertRegexpMatches(matrix, 'Mimus_gilvus')
Пример #4
0
def handle_click(xml, xpath, path=None):
    from lxml import etree

    xml_root = etree.fromstring(xml)

    if (path == None):
        path = os.getcwd()

    filter_names_and_patterns = {}
    filter_names_and_patterns['Trees'] = ["*.tre","*nex","*.nwk","*.tnt"]
   
    filename = dialogs.get_filename(title = "Choose tree file", action = gtk.FILE_CHOOSER_ACTION_OPEN, 
            filter_names_and_patterns = filter_names_and_patterns,
            folder_uri = path)

    if filename == None:
        return

    # Track back along xpath to find the source element where we're going to set the name
    element = xml_root.xpath(xpath+"/string_value")
    try:
        tree = stk.import_tree(filename,gui=True)
    except TreeParseError as detail:
        msg = "Failed to import tree - can't parse tree.\n"+detail.msg
        dialogs.error(self.main_window,msg)
    source_tree_ele = element[0].getparent().getparent().getparent()
    tree_name = stk.create_tree_name(xml,source_tree_ele)
    print tree_name
    element[0].text = tree
    source_tree_ele.attrib['name'] = tree_name

    
    stk_gui.interface.plugin_xml = etree.tostring(xml_root)
    stk_gui.interface.pluginSender.emit('plugin_changed_xml')
    return
Пример #5
0
def main():

    # do stuff
    parser = argparse.ArgumentParser(
        prog="supertree_support",
        description="Add supertree support measures to your supertree.",
    )
    parser.add_argument('-v',
                        '--verbose',
                        action='store_true',
                        help="Verbose output: mainly progress reports.",
                        default=False)
    parser.add_argument(
        '--measure',
        choices=['v', 'v+', 'v-', 'wv', 'wv+', 'wv-'],
        default='v+',
        help=
        "Choose measure to add to the supertree output. The w version weight against the length of the source tree."
    )
    parser.add_argument('input_file',
                        metavar='input_file',
                        nargs=1,
                        help="Your Phyml")
    parser.add_argument('input_supertree',
                        metavar='input_supertree',
                        nargs=1,
                        help="Your supertree")
    parser.add_argument(
        'output_file',
        metavar='output_file',
        nargs=1,
        help="The output stub for all the various output files")
    args = parser.parse_args()
    verbose = args.verbose
    measure = args.measure
    input_file = args.input_file[0]
    input_supertree = args.input_supertree[0]
    output_stub = args.output_file[0]

    if measure == 'wv+':
        measure = 10
    elif measure == 'wv':
        measure = 9
    elif measure == 'wv-':
        measure = 11
    elif measure == 'v+':
        measure = 7
    elif measure == 'v':
        measure = 6
    elif measure == 'v-':
        measure = 8
    else:
        print "Unknown metric"
        sys.exit(-1)


# see p4.SuperTreeSupport for indices.
#        if non stadard decoration, what metric to use
#        [S,  P,  R,  Q,  WS, WP, V,  V+, V-, wV, wV+,wV-]
#         0   1   2   3   4   5   6   7   8   9   10  11

# grab taxa in dataset
    if (verbose):
        print "Parsing PHYML"
    XML = stk.load_phyml(input_file)
    taxa = stk.get_all_taxa(XML)

    # load supertree
    supertree_data = stk.import_tree(input_supertree)
    supertree = stk._parse_tree(supertree_data)
    terminals = supertree.getAllLeafNames(supertree.root)

    if (not len(taxa) == len(terminals)):
        # this happens if the supertree has been pruned to remove dodgy taxa
        if (verbose):
            print "Warning: supertree contains different number of taxa to your input data. Pruning input data"
        taxa.sort()
        terminals.sort()
        delete_me = []
        # create subs file
        for t in taxa:
            if not t in terminals:
                delete_me.append(t)
        # strip from phyml
        if (verbose):
            print "Deleting: " + str(len(delete_me)) + " from original " + str(
                len(taxa))
        try:
            XML = stk.substitute_taxa(XML, delete_me, ignoreWarnings=True)
            # do we need a clean data to check for non-informative trees here?
        except TreeParseError as detail:
            msg = "***Error: failed to parse a tree in your data set.\n" + detail.msg
            print msg
            return

    # get all trees from phyml
    input_trees = stk.obtain_trees(XML)
    source_trees = []
    for t in input_trees:
        source_trees.append(stk._parse_tree(input_trees[t]))
    sts = SuperTreeSupport(input_supertree, source_trees)

    sts.doSaveDecoratedTree = True
    sts.doStandardDecoration = False
    sts.decorationMetric = measure
    sts.decoratedFilename = output_stub + '_dec_st.nex'
    sts.doSaveIndexTree = True
    sts.indexFilename = output_stub + '_index.nex'
    sts.csvFilename = output_stub + '_index.csv'
    sts.doDrawTree = False
    sts.verbose = 1

    sts.superTreeSupport()
Пример #6
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))
Пример #7
0
 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))
Пример #8
0
 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))
Пример #9
0
 def test_import_mesquite(self):
     test_file = "data/input/mesquite_test.tre"
     expected_tree = "((Taxon_c, (Taxon_a, Taxon_b)), (Taxon_d, Taxon_e));"
     tree = import_tree(test_file)
     self.assert_(expected_tree == tree)
Пример #10
0
 def test_import_tutorial_tree(self):
     test_file = "../../doc/tutorial/5.3_DataEntry/HallThatje_2009.tre"
     e_tree = "((Aegla_sp., (Pagurus_bernhardus, Pagurus_hirsutiusculus)), (((Cryptolithodes_sitchensis, Cryptolithodes_typicus), (Phyllolithodes_papillosus, (Lopholithodes_mandtii, (Glyptolithodes_cristatipes, (Paralomis_formosa, Paralomis_spinosissima))), (Neolithodes_brodiei, (Paralithodes_camtschaticus, Paralithodes_brevipes), (Lithodes_confundens, Lithodes_ferox)))), (Oedignathus_inermis, (Hapalogaster_dentata, Hapalogaster_mertensii))));"
     tree = import_tree(test_file)
     self.assert_(e_tree == tree)
Пример #11
0
 def test_import_quoted_tree(self):
     test_file = "data/input/quoted_taxa.tre"
     e_tree = "(('Taxon (c)', (Taxon_a, Taxon_b)), (Taxon_d, Taxon_e));"
     tree = import_tree(test_file)
     self.assert_(e_tree == tree)