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")
#! /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")