import unittest import alignementseq_multiple from Bio.SeqRecord import SeqRecord from Bio.Seq import Seq class MultipleAlignTestCase(unittest.TestCase): """ Unit test for multiple alignments. Since alignment algorithm is allowed to reorder sequences at will, aligned sequences are sorted before comparison. """ def test_align_from_tree(self): aseqs = [ s.seq for s in alignementseq_multiple.multiple_align_from_tree( (("CHAT", "CAT"), "HER") )] aseqs.sort() self.assertEqual( aseqs, [Seq(s) for s in ('C-AT', 'CHAT', 'H-ER')] ) def test_align_from_linkage_matrix(self): import tree_generator import alignementseq seqs = [ SeqRecord(s) for s in ("CHAT", "CAT", "HER") ] tree = tree_generator.tree_build(seqs, alignementseq.vec_align) aseqs = alignementseq_multiple.multiple_align_from_linkage_matrix( seqs, tree ) aseqs_ref = [ Seq(s) for s in ("CHAT", "C-AT", "H-ER") ] aseqs_ref.sort() aseqs = [ s.seq for s in aseqs ] aseqs.sort() self.assertEqual(aseqs_ref, aseqs)