diff --git a/tests/testFiles/fasttree/tree_1000_1199.xml b/tests/testFiles/fasttree/tree_1000_1199.xml new file mode 100644 index 00000000..e92f94e7 --- /dev/null +++ b/tests/testFiles/fasttree/tree_1000_1199.xml @@ -0,0 +1,26 @@ + + + + + ON134852 + 0.0 + + + OM739053 + 0.0 + + + ON129429 + 0.0 + + + OU471040 + 0.0 + + + OL989074 + 0.0 + + + + \ No newline at end of file diff --git a/tests/testFiles/fasttree/tree_200_399.xml b/tests/testFiles/fasttree/tree_200_399.xml new file mode 100644 index 00000000..e92f94e7 --- /dev/null +++ b/tests/testFiles/fasttree/tree_200_399.xml @@ -0,0 +1,26 @@ + + + + + ON134852 + 0.0 + + + OM739053 + 0.0 + + + ON129429 + 0.0 + + + OU471040 + 0.0 + + + OL989074 + 0.0 + + + + \ No newline at end of file diff --git a/tests/testFiles/fasttree/tree_400_599.xml b/tests/testFiles/fasttree/tree_400_599.xml new file mode 100644 index 00000000..e9b26602 --- /dev/null +++ b/tests/testFiles/fasttree/tree_400_599.xml @@ -0,0 +1,29 @@ + + + + + 0.00252 + + ON134852 + 0.0 + + + OM739053 + 0.0 + + + OU471040 + 0.0 + + + OL989074 + 0.0 + + + + ON129429 + 0.00252 + + + + \ No newline at end of file diff --git a/tests/testFiles/fasttree/tree_600_799.xml b/tests/testFiles/fasttree/tree_600_799.xml new file mode 100644 index 00000000..441fb9cd --- /dev/null +++ b/tests/testFiles/fasttree/tree_600_799.xml @@ -0,0 +1,29 @@ + + + + + 0.00027 + + ON134852 + 0.0 + + + OM739053 + 0.0 + + + ON129429 + 0.0 + + + OU471040 + 0.0 + + + + OL989074 + 0.00027 + + + + \ No newline at end of file diff --git a/tests/testFiles/fasttree/tree_800_999.xml b/tests/testFiles/fasttree/tree_800_999.xml new file mode 100644 index 00000000..7e22a155 --- /dev/null +++ b/tests/testFiles/fasttree/tree_800_999.xml @@ -0,0 +1,29 @@ + + + + + 0.00504 + + ON134852 + 0.0 + + + OM739053 + 0.0 + + + OL989074 + 0.0 + + + + ON129429 + 0.00504 + + + OU471040 + 0.00055 + + + + \ No newline at end of file diff --git a/tests/test_genetic.py b/tests/test_genetic.py index f401e70d..c911c64c 100644 --- a/tests/test_genetic.py +++ b/tests/test_genetic.py @@ -8,8 +8,10 @@ from Bio.Phylo.PhyloXML import Phylogeny from aphylogeo import utils +from aphylogeo.alignement import Alignment from aphylogeo.alignement import AlignSequences from aphylogeo.params import Params +from aphylogeo.utils import fasttree current_file = os.path.dirname(__file__) @@ -211,4 +213,45 @@ def test_mafft(self): expected = {rec.id: str(rec.seq) for rec in records} # Assert - assert muscle_alignment == expected \ No newline at end of file + assert muscle_alignment == expected + + def test_fasttree(self): + """ + This test is used to test the fastTree function. + """ + Params.load_from_file(params_file = "tests/clustal_align.yaml") + + # load parameters + ref_gene_dir = Params.reference_gene_dir + ref_gene_file = Params.reference_gene_file + sequences_very_small = utils.loadSequenceFile(os.path.join(ref_gene_dir, ref_gene_file)) + + # Build AlignSequence object + sequences = sequences_very_small.copy() + seq_alignment = AlignSequences(sequences) + + # Call clustal Alignment and msa + clustal_alignment = seq_alignment.clustalAlign() + [os.remove(file) for file in glob.glob("bin/tmp/*.fasta")] + windowed = self.seq_alignment.slidingWindow(clustal_alignment) + msa = self.seq_alignment.makeMSA(windowed) + alignment = Alignment(Params.alignment_method, msa) + + # Generate Tree using fasttree algorithm + trees = fasttree(alignment.msa, Params.bootstrap_amount, True) + + # To generate test files (keep commented out unless another batch of test files needs to be generated) + # [Phylo.write(tree, f"tests/testFiles/fasttree/tree_{window}.xml", "phyloxml") for window, tree in trees.items()] + + # Assert + for window, tree in trees.items(): + + expected = Phylo.read(f"tests/testFiles/fasttree/tree_{window}.xml", "phyloxml") + expected_str = str(expected).split("\n")[1:] + expected_strip = list(map(str.strip, expected_str)) + + tree_str = str(tree).split("\n")[1:] + tree_str_strip = list(map(str.strip, tree_str)) + + for tree in tree_str_strip: + assert tree in expected_strip