Skip to content
Snippets Groups Projects
Verified Commit 8c5f0801 authored by Etienne MORICE's avatar Etienne MORICE
Browse files

Fixed type, multiple align now uses SeqRecords

parent b110234a
No related branches found
No related tags found
No related merge requests found
from alignementseq import score
from Bio.SeqRecord import SeqRecord
from Bio.Seq import Seq
def multiple_align_from_tree(tree):
"""Multiple alignmnent from a SeqRecord tree
......@@ -133,5 +135,9 @@ def join_alignments(aleft, aright, _mscore=_mscore, gap=-8):
for jseq in range(len(aright)):
aseqs[len(aleft)+jseq] += aright[jseq][nextj]
i,j = nexti,nextj
return [s[::-1] for s in aseqs]
ret = [ SeqRecord(s) for s in aleft ] + [ SeqRecord(s) for s in aright ]
for rec, seq in zip(ret, aseqs):
rec.seq = Seq(seq[::-1])
return ret
......@@ -3,13 +3,27 @@ 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(
alignementseq_multiple.multiple_align_from_tree((("CHAT", "CAT"), "HER")),
['CHAT', 'C-AT', 'H-ER']
aseqs,
[Seq(s) for s in ('C-AT', 'CHAT', 'H-ER')]
)
def test_align_from_linkage_matrix(self):
import tree_generator
import alignementseq
......@@ -20,8 +34,9 @@ class MultipleAlignTestCase(unittest.TestCase):
seqs,
tree
)
aseqs_ref = [ "CHAT", "C-AT", "H-ER" ]
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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment