Exemple #1
0
def estimate_tree_from_assemblage_leafsets(
    taxon_namespace,
    assemblage_memberships,
    membership_element_type=dendropy.Taxon,
    only_include_taxa=None,
):
    d = collections.OrderedDict()
    blank = ["0" for i in range(len(assemblage_memberships))]
    exclude_from_taxa_blocks = set()
    for taxon in taxon_namespace:
        if not only_include_taxa or taxon in only_include_taxa:
            d[taxon] = list(blank)
        else:
            exclude_from_taxa_blocks.add(taxon)
    for idx, taxa in enumerate(assemblage_memberships):
        if membership_element_type is dendropy.Taxon:
            for taxon in taxa:
                d[taxon][idx] = "1"
        elif membership_element_type is dendropy.Node:
            for node in taxa:
                d[node.taxon][idx] = "1"
        else:
            raise TypeError(membership_element_type)
    # for membership_idx, membership in enumerate(assemblage_memberships):
    #     for element in membership:
    #         if membership_element_type is dendropy.Taxon:
    #             taxon = element
    #     elif membership_element_type is dendropy.Node:
    #             taxon = element.taxon
    #     else:
    #         raise TypeError(membership_element_type)
    char_matrix = dendropy.StandardCharacterMatrix.from_dict(
        source_dict=d, taxon_namespace=taxon_namespace)
    try:
        tree = paup.estimate_tree(
            char_matrix=char_matrix,
            tree_est_criterion="parsimony",
            num_states=len(assemblage_memberships),
            char_matrix_writing_kwargs={
                "exclude_from_taxa_blocks": exclude_from_taxa_blocks
            },
            timeout=60,
        )
    except subprocess.TimeoutExpired:
        raise error.SummaryStatisticCalculationExternalProcessTimeoutExpired
    return tree
 def write_nexus(self):
     d = dendropy.StandardCharacterMatrix(taxon_set=self.tree.taxon_set)
     sa = dendropy.StateAlphabet()
     sa.append(dendropy.StateAlphabetElement(symbol="0"))
     sa.append(dendropy.StateAlphabetElement(symbol="1"))
     col = dendropy.CharacterType(state_alphabet=sa, label="occurs")
     d.state_alphabets = [sa]
     d.default_state_alphabet = sa
     for t in self.tree.taxon_set:
         v = dendropy.CharacterDataVector(taxon=t)
         for r in self.regions:
             if r in t.regions:
                 v.append(dendropy.CharacterDataCell(value=sa.state_for_symbol(symbol="1"), character_type=col))
             else:
                 v.append(dendropy.CharacterDataCell(value=sa.state_for_symbol(symbol="0"), character_type=col))
         d[t] = v
     area_tree = paup.estimate_tree(char_matrix=d, tree_est_criterion="parsimony")
     area_tree.label = "areas"
     trees = dendropy.TreeList([self.tree, area_tree], taxon_set=self.tree.taxon_set)
     dataset = dendropy.DataSet(d, trees)
     dataset.write_to_path(self.output_prefix + "." + self.run_title + ".nex", "nexus")
Exemple #3
0
#! /usr/bin/env python
# -*- coding: utf-8 -*-

import dendropy
from dendropy.interop import paup

data = dendropy.DnaCharacterMatrix.get(path="pythonidae.nex", schema="nexus")
tree = paup.estimate_tree(data,
                          tree_est_criterion='likelihood',
                          num_subst=2,
                          unequal_base_freqs=True,
                          gamma_rates=False,
                          prop_invar=False)
print(tree.as_string(schema="newick"))
#! /usr/bin/env python
# -*- coding: utf-8 -*-

import dendropy
from dendropy.interop import paup

data = dendropy.DnaCharacterMatrix.get(
    path="pythonidae.nex",
    schema="nexus")
tree = paup.estimate_tree(data,
        tree_est_criterion='likelihood',
        num_states=2,
        unequal_base_freqs=True,
        gamma_rates=False,
        prop_invar=False)
print tree.as_string(schema="newick")
#! /usr/bin/env python

import dendropy
from dendropy.interop import paup

data = dendropy.DnaCharacterMatrix.get(
    path="pythonidae.nex",
    schema="nexus")
tree = paup.estimate_tree(data,
        tree_est_criterion='nj')
est_tree, est_model = paup.estimate_model(data,
        tree,
        num_states=2,
        unequal_base_freqs=True,
        gamma_rates=False,
        prop_invar=False)
for k, v in est_model.items():
    print("{}: {}".format(k, v))
#! /usr/bin/env python

import dendropy
from dendropy.interop import paup

data = dendropy.DnaCharacterMatrix.get_from_path("pythonidae.nex", "nexus")
tree = paup.estimate_tree(data, tree_est_criterion='nj')
print tree.as_string("newick")