def test_get_neighbors(self): tree = Phylo.read('./TreeConstruction/upgma.tre', 'newick') alphabet = ['A', 'T', 'C', 'G'] step_matrix = [[0], [2.5, 0], [2.5, 1, 0], [1, 2.5, 2.5, 0]] matrix = _Matrix(alphabet, step_matrix) scorer = ParsimonyScorer(matrix) searcher = NNITreeSearcher(scorer) trees = searcher._get_neighbors(tree) self.assertEqual(len(trees), 2 * (5 - 3)) Phylo.write(trees, './TreeConstruction/neighbor_trees.tre', 'newick')
def test_get_neighbors(self): tree = Phylo.read("./TreeConstruction/upgma.tre", "newick") alphabet = ["A", "T", "C", "G"] step_matrix = [[0], [2.5, 0], [2.5, 1, 0], [1, 2.5, 2.5, 0]] matrix = _Matrix(alphabet, step_matrix) scorer = ParsimonyScorer(matrix) searcher = NNITreeSearcher(scorer) trees = searcher._get_neighbors(tree) self.assertEqual(len(trees), 2 * (5 - 3)) Phylo.write(trees, os.path.join(temp_dir, "neighbor_trees.tre"), "newick")
def NNITreeSurgery(treeStr, schema="newick"): tree = Phylo.read(StringIO(treeStr), schema) nniTreeSearcher = NNITreeSearcher(Scorer()) treeList = nniTreeSearcher._get_neighbors(tree) allTreeList = [] for t in treeList: tstr = t.format("newick") tstr.strip() allTreeList.append("[&R] " + tstr[0:len(tstr) - 6] + ";") return allTreeList
def test_get_neighbors(self): tree = Phylo.read('./TreeConstruction/upgma.tre', 'newick') alphabet = ['A', 'T', 'C', 'G'] step_matrix = [[0], [2.5, 0], [2.5, 1, 0], [ 1, 2.5, 2.5, 0]] matrix = _Matrix(alphabet, step_matrix) scorer = ParsimonyScorer(matrix) searcher = NNITreeSearcher(scorer) trees = searcher._get_neighbors(tree) self.assertEqual(len(trees), 2 * (5 - 3)) Phylo.write(trees, './TreeConstruction/neighbor_trees.tre', 'newick')
def create_tree_parsimony_impl(msa): calculator = DistanceCalculator('identity') constructor = DistanceTreeConstructor(distance_calculator=calculator, method='nj') starting_tree = constructor.build_tree(msa) scorer = ParsimonyScorer() searcher = NNITreeSearcher(scorer) constructor = ParsimonyTreeConstructor(searcher=searcher,starting_tree=starting_tree) tree = constructor.build_tree(msa) Phylo.write(tree, "../../data/created/tree" + str(random.randint(0,10000000)) + ".nex", "nexus") Phylo.draw(tree,do_show=False) plt.savefig("../../data/created/createdTree_parsimony.png") return "../../data/created/createdTree_parsimony.png"
def test_build_tree(self): aln = AlignIO.read('TreeConstruction/msa.phy', 'phylip') tree1 = Phylo.read('./TreeConstruction/upgma.tre', 'newick') tree2 = Phylo.read('./TreeConstruction/nj.tre', 'newick') alphabet = ['A', 'T', 'C', 'G'] step_matrix = [[0], [2.5, 0], [2.5, 1, 0], [1, 2.5, 2.5, 0]] matrix = _Matrix(alphabet, step_matrix) scorer = ParsimonyScorer(matrix) searcher = NNITreeSearcher(scorer) constructor = ParsimonyTreeConstructor(searcher, tree1) best_tree = constructor.build_tree(aln) Phylo.write(best_tree, './TreeConstruction/pars1.tre', 'newick') constructor.starting_tree = tree2 best_tree = constructor.build_tree(aln) Phylo.write(best_tree, './TreeConstruction/pars2.tre', 'newick') constructor.starting_tree = None best_tree = constructor.build_tree(aln) Phylo.write(best_tree, './TreeConstruction/pars3.tre', 'newick')
def test_build_tree(self): aln = AlignIO.read("TreeConstruction/msa.phy", "phylip") tree1 = Phylo.read("./TreeConstruction/upgma.tre", "newick") tree2 = Phylo.read("./TreeConstruction/nj.tre", "newick") alphabet = ["A", "T", "C", "G"] step_matrix = [[0], [2.5, 0], [2.5, 1, 0], [1, 2.5, 2.5, 0]] matrix = _Matrix(alphabet, step_matrix) scorer = ParsimonyScorer(matrix) searcher = NNITreeSearcher(scorer) constructor = ParsimonyTreeConstructor(searcher, tree1) best_tree = constructor.build_tree(aln) Phylo.write(best_tree, os.path.join(temp_dir, "pars1.tre"), "newick") constructor.starting_tree = tree2 best_tree = constructor.build_tree(aln) Phylo.write(best_tree, os.path.join(temp_dir, "pars2.tre"), "newick") constructor.starting_tree = None best_tree = constructor.build_tree(aln) Phylo.write(best_tree, os.path.join(temp_dir, "pars3.tre"), "newick")
def plot_phylo_tree_pars(align: MultipleSeqAlignment, accession_numbers: dict): """ Plots a phylogenetic tree :param align: MultipleSeqAlignment with the alignment result to be plotted :param accession_numbers: dict of accession numbers and their translation to human-understandable names :return: figure-handle of the plotted phylogenetic tree """ scorer = ParsimonyScorer() searcher = NNITreeSearcher(scorer) constructor = ParsimonyTreeConstructor(searcher) tree = constructor.build_tree(align) print(Phylo.draw_ascii(tree)) # plot the tree fig, ax = plt.subplots(1, 1) # remove the names for the non-terminals for better visual appeal for non_terminal in tree.get_nonterminals(): non_terminal.name = '' # draw the resulting tree Phylo.draw(tree, show_confidence=False, axes=ax, do_show=False) ax.set_xlim(right=0.8) return fig
def build_parsimony_tree(alignment): scorer = ParsimonyScorer() searcher = NNITreeSearcher(scorer) constructor = ParsimonyTreeConstructor(searcher) return constructor.build_tree(alignment)
stdout, stderr = cline() # print(stdout, stderr) # print(cline) aln = AlignIO.read('outAlign.aln', 'clustal') # print(aln) calculator = DistanceCalculator('identity') dm = calculator.get_distance(aln) print(dm) constructor = DistanceTreeConstructor(calculator, 'nj') tree = constructor.build_tree(aln) print(tree) scorer = ParsimonyScorer() searcher = NNITreeSearcher(scorer) constructor = ParsimonyTreeConstructor(searcher, tree) pars_tree = constructor.build_tree(aln) egfr_phy = pars_tree.as_phyloxml() print(pars_tree) print(egfr_phy) print(list(pars_tree.find_elements('Inner3'))) for clade in egfr_phy.get_terminals(): key = clade.name accession = PhyloXML.Accession(key, 'NCBI') mol_seq = PhyloXML.MolSeq(lookup[key], is_aligned=True) sequence = PhyloXML.Sequence(type='aa', accession=accession,