Author: bugman Date: Thu Jan 29 13:33:32 2015 New Revision: 27348 URL: http://svn.gna.org/viewcvs/relax?rev=27348&view=rev Log: Renamed the Test_align_protein.test_align_multiple_from_pairwise unit test. This is now the Test_msa.test_central_star unit test of the _lib._sequence_alignment.test_msa unit test module (it was originally in the _lib._sequence_alignment.test_align_protein unit test module). This is in preparation for converting the lib.sequence_alignment.align_protein.align_multiple_from_pairwise() function into the lib.sequence_alignment.msa.central_star() function. Added: trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_msa.py - copied, changed from r27346, trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py Modified: trunk/test_suite/unit_tests/_lib/_sequence_alignment/__init__.py trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py Modified: trunk/test_suite/unit_tests/_lib/_sequence_alignment/__init__.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/unit_tests/_lib/_sequence_alignment/__init__.py?rev=27348&r1=27347&r2=27348&view=diff ============================================================================== --- trunk/test_suite/unit_tests/_lib/_sequence_alignment/__init__.py (original) +++ trunk/test_suite/unit_tests/_lib/_sequence_alignment/__init__.py Thu Jan 29 13:33:32 2015 @@ -21,5 +21,6 @@ __all__ = [ - 'test___init__' + 'test___init__', + 'test_msa' ] Modified: trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py?rev=27348&r1=27347&r2=27348&view=diff ============================================================================== --- trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py (original) +++ trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py Thu Jan 29 13:33:32 2015 @@ -29,80 +29,6 @@ class Test_align_protein(TestCase): """Unit tests for the lib.sequence_alignment.align_protein relax module.""" - - def test_align_multiple_from_pairwise(self): - """Test the multiple protein sequence, fusing pairwise alignments via lib.sequence_alignment.align_protein.align_multiple_from_pairwise(). - - This uses the sequences: - - - 'TEEQVDADGGT', - - 'ADQLTEEQVDADGNGTIDFPEFLTMMARKM', - - 'LTEEQMINEVDAGNGTIDFPEFLTMMAR'. - - The result should be:: - - Pairwise protein alignment. - Substitution matrix: BLOSUM62 - Gap opening penalty: 5.0 - Gap extend penalty: 1.0 - - Input sequence 1: TEEQVDADGGT - Input sequence 2: ADQLTEEQVDADGNGTIDFPEFLTMMARKM - - Aligned sequence 1: ----TEEQVDADG-GT-------------- - Aligned sequence 2: ADQLTEEQVDADGNGTIDFPEFLTMMARKM - ********* ** - - - Pairwise protein alignment. - Substitution matrix: BLOSUM62 - Gap opening penalty: 5.0 - Gap extend penalty: 1.0 - - Input sequence 1: TEEQVDADGGT - Input sequence 2: LTEEQMINEVDAGNGTIDFPEFLTMMAR - - Aligned sequence 1: -TEEQ----VDADGGT------------ - Aligned sequence 2: LTEEQMINEVDAGNGTIDFPEFLTMMAR - **** *** ** - - ----TEEQ----VDADG-GT-------------- - ADQLTEEQ----VDADGNGTIDFPEFLTMMARKM - ---LTEEQMINEVDA-GNGTIDFPEFLTMMAR-- - """ - - # The sequences. - seq1 = 'TEEQVDADGGT' - seq2 = 'ADQLTEEQVDADGNGTIDFPEFLTMMARKM' - seq3 = 'LTEEQMINEVDAGNGTIDFPEFLTMMAR' - print(seq1) - print(seq2) - print(seq3) - - # Perform the alignment. - strings, gaps = align_multiple_from_pairwise(seq1, [seq2, seq3], matrix='BLOSUM62', gap_open_penalty=5.0, gap_extend_penalty=1.0) - print(strings[0]) - print(strings[1]) - print(strings[2]) - print(gaps) - - # Check the alignment. - self.assertEqual(strings[0], '----TEEQ----VDADG-GT--------------') - self.assertEqual(strings[1], 'ADQLTEEQ----VDADGNGTIDFPEFLTMMARKM') - self.assertEqual(strings[2], '---LTEEQMINEVDA-GNGTIDFPEFLTMMAR--') - - # The gap matrix. - real_gaps = zeros((3, 34), int16) - for i in (range(4) + range(8, 12) + [17] + range(20, 34)): - real_gaps[0, i] = 1 - for i in range(8, 12): - real_gaps[1, i] = 1 - for i in (range(3) + [15, 33, 34]): - real_gaps[2, i] = 1 - for i in range(3): - for j in range(34): - self.assertEqual(gaps[i, j], real_gaps[i][j]) - def test_align_pairwise_PAM250(self): """Test the Needleman-Wunsch sequence alignment for two protein sequences using the PAM250 substitution matrix. Copied: trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_msa.py (from r27346, trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py) URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_msa.py?p2=trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_msa.py&p1=trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py&r1=27346&r2=27348&rev=27348&view=diff ============================================================================== --- trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_align_protein.py (original) +++ trunk/test_suite/unit_tests/_lib/_sequence_alignment/test_msa.py Thu Jan 29 13:33:32 2015 @@ -24,14 +24,14 @@ from unittest import TestCase # relax module imports. -from lib.sequence_alignment.align_protein import align_multiple_from_pairwise, align_pairwise +from lib.sequence_alignment.msa import central_star -class Test_align_protein(TestCase): - """Unit tests for the lib.sequence_alignment.align_protein relax module.""" +class Test_msa(TestCase): + """Unit tests for the lib.sequence_alignment.msa relax module.""" - def test_align_multiple_from_pairwise(self): - """Test the multiple protein sequence, fusing pairwise alignments via lib.sequence_alignment.align_protein.align_multiple_from_pairwise(). + def test_central_star(self): + """Test the central star multiple sequence alignment function lib.sequence_alignment.msa.central_star(). This uses the sequences: @@ -80,7 +80,7 @@ print(seq3) # Perform the alignment. - strings, gaps = align_multiple_from_pairwise(seq1, [seq2, seq3], matrix='BLOSUM62', gap_open_penalty=5.0, gap_extend_penalty=1.0) + strings, gaps = central_star([seq1, seq2, seq3], matrix='BLOSUM62', gap_open_penalty=5.0, gap_extend_penalty=1.0) print(strings[0]) print(strings[1]) print(strings[2]) @@ -102,158 +102,3 @@ for i in range(3): for j in range(34): self.assertEqual(gaps[i, j], real_gaps[i][j]) - - - def test_align_pairwise_PAM250(self): - """Test the Needleman-Wunsch sequence alignment for two protein sequences using the PAM250 substitution matrix. - - This uses the sequences: - - - 'IHAAEEKDWKTAYSYbgFYEAFEGYdsidspkaitslkymllckimlntpedvqalvsgkla', - - 'LHAADEKDFKTAFSYabiggapFYEAFEGYdsvdekvsaltalkymllckvmldlpdevnsllsakl'. - - From online servers, the results with a gap open penalty of 5 and gap extend of 0.5 should be:: - - https://www.ebi.ac.uk/Tools/psa/emboss_needle/ - EMBOSS_001 IHAAEEKDWKTAYSYb--g---FYEAFEGYdsidspk--aitslkymllckimlntpedvqalvsgkla - :|||:|||.|||:||. | ||||||||||:|. | |:|:||||||||:||:.|::|::|:|:|| - EMBOSS_001 LHAADEKDFKTAFSYabiggapFYEAFEGYdsvde-kvsaltalkymllckvmldlpdevnsllsakl- - - http://web.expasy.org/cgi-bin/sim/sim.pl?prot - UserSeq1 IHAAEEKDWKTAYSYBG-----FYEAFEGYDSIDSPK--AITSLKYMLLCKIMLNTPEDVQALVSGKL - UserSeq2 LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDE-KVSALTALKYMLLCKVMLDLPDEVNSLLSAKL - *** *** *** ** ********** * * * * ******** ** * * * * ** - """ - - # The sequences. - seq1 = 'IHAAEEKDWKTAYSYbgFYEAFEGYdsidspkaitslkymllckimlntpedvqalvsgkla' - seq2 = 'LHAADEKDFKTAFSYabiggapFYEAFEGYdsvdekvsaltalkymllckvmldlpdevnsllsakl' - print(seq1) - print(seq2) - - # Perform the alignment. - align1, align2, gaps = align_pairwise(seq1, seq2, matrix='PAM250', gap_open_penalty=5.0, gap_extend_penalty=0.5) - print(align1) - print(align2) - print(gaps) - - # Check the alignment. - self.assertEqual(align1, 'IHAAEEKDWKTAYSYB--G---FYEAFEGYDSIDSPK--AITSLKYMLLCKIMLNTPEDVQALVSGKLA') - self.assertEqual(align2, 'LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDE-KVSALTALKYMLLCKVMLDLPDEVNSLLSAKL-') - - # The gap matrix. - real_gaps = zeros((2, 69), int16) - real_gaps[0, 16] = 1 - real_gaps[0, 17] = 1 - real_gaps[0, 19] = 1 - real_gaps[0, 20] = 1 - real_gaps[0, 21] = 1 - real_gaps[0, 37] = 1 - real_gaps[0, 38] = 1 - real_gaps[1, 35] = 1 - real_gaps[1, 68] = 1 - for i in range(2): - for j in range(68): - self.assertEqual(gaps[i, j], real_gaps[i][j]) - def test_align_pairwise(self): - """Test the Needleman-Wunsch sequence alignment for two protein sequences. - - This uses the sequences: - - - 'IHAAEEKDWKTAYSYbgFYEAFEGYdsidspkaitslkymllckimlntpedvqalvsgkla', - - 'LHAADEKDFKTAFSYabiggapFYEAFEGYdsvdekvsaltalkymllckvmldlpdevnsllsakl'. - - From online servers, the results with a gap open penalty of 5 and gap extend of 1 should be:: - - https://www.ebi.ac.uk/Tools/psa/emboss_needle/ - EMBOSS_001 IHAAEEKDWKTAYSY-B-G---FYEAFEGYDSIDSP-KAITSLKYMLLCKIMLNTPEDVQALVSGKLA - :|||:|||:|||:|| | | ||||||||||:|.. .|:|:||||||||:||:.|::|.:|:|.|| - EMBOSS_001 LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDEKVSALTALKYMLLCKVMLDLPDEVNSLLSAKL- - - http://web.expasy.org/cgi-bin/sim/sim.pl?prot - UserSeq1 IHAAEEKDWKTAYSY-B-G---FYEAFEGYDSIDSP-KAITSLKYMLLCKIMLNTPEDVQALVSGKL - UserSeq2 LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDEKVSALTALKYMLLCKVMLDLPDEVNSLLSAKL - *** *** *** ** * * ********** * * * ******** ** * * * * ** - """ - - # The sequences. - seq1 = 'IHAAEEKDWKTAYSYbgFYEAFEGYdsidspkaitslkymllckimlntpedvqalvsgkla' - seq2 = 'LHAADEKDFKTAFSYabiggapFYEAFEGYdsvdekvsaltalkymllckvmldlpdevnsllsakl' - print(seq1) - print(seq2) - - # Perform the alignment. - align1, align2, gaps = align_pairwise(seq1, seq2, matrix='BLOSUM62', gap_open_penalty=5.0, gap_extend_penalty=1.0) - print(align1) - print(align2) - print(gaps) - - # Check the alignment. - self.assertEqual(align1, 'IHAAEEKDWKTAYSY-B-G---FYEAFEGYDSIDSP-KAITSLKYMLLCKIMLNTPEDVQALVSGKLA') - self.assertEqual(align2, 'LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDEKVSALTALKYMLLCKVMLDLPDEVNSLLSAKL-') - - # The gap matrix. - real_gaps = zeros((2, 68), int16) - real_gaps[0, 15] = 1 - real_gaps[0, 17] = 1 - real_gaps[0, 19] = 1 - real_gaps[0, 20] = 1 - real_gaps[0, 21] = 1 - real_gaps[0, 36] = 1 - real_gaps[1, 67] = 1 - for i in range(2): - for j in range(68): - self.assertEqual(gaps[i, j], real_gaps[i][j]) - - - def test_align_pairwise_PAM250(self): - """Test the Needleman-Wunsch sequence alignment for two protein sequences using the PAM250 substitution matrix. - - This uses the sequences: - - - 'IHAAEEKDWKTAYSYbgFYEAFEGYdsidspkaitslkymllckimlntpedvqalvsgkla', - - 'LHAADEKDFKTAFSYabiggapFYEAFEGYdsvdekvsaltalkymllckvmldlpdevnsllsakl'. - - From online servers, the results with a gap open penalty of 5 and gap extend of 0.5 should be:: - - https://www.ebi.ac.uk/Tools/psa/emboss_needle/ - EMBOSS_001 IHAAEEKDWKTAYSYb--g---FYEAFEGYdsidspk--aitslkymllckimlntpedvqalvsgkla - :|||:|||.|||:||. | ||||||||||:|. | |:|:||||||||:||:.|::|::|:|:|| - EMBOSS_001 LHAADEKDFKTAFSYabiggapFYEAFEGYdsvde-kvsaltalkymllckvmldlpdevnsllsakl- - - http://web.expasy.org/cgi-bin/sim/sim.pl?prot - UserSeq1 IHAAEEKDWKTAYSYBG-----FYEAFEGYDSIDSPK--AITSLKYMLLCKIMLNTPEDVQALVSGKL - UserSeq2 LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDE-KVSALTALKYMLLCKVMLDLPDEVNSLLSAKL - *** *** *** ** ********** * * * * ******** ** * * * * ** - """ - - # The sequences. - seq1 = 'IHAAEEKDWKTAYSYbgFYEAFEGYdsidspkaitslkymllckimlntpedvqalvsgkla' - seq2 = 'LHAADEKDFKTAFSYabiggapFYEAFEGYdsvdekvsaltalkymllckvmldlpdevnsllsakl' - print(seq1) - print(seq2) - - # Perform the alignment. - align1, align2, gaps = align_pairwise(seq1, seq2, matrix='PAM250', gap_open_penalty=5.0, gap_extend_penalty=0.5) - print(align1) - print(align2) - print(gaps) - - # Check the alignment. - self.assertEqual(align1, 'IHAAEEKDWKTAYSYB--G---FYEAFEGYDSIDSPK--AITSLKYMLLCKIMLNTPEDVQALVSGKLA') - self.assertEqual(align2, 'LHAADEKDFKTAFSYABIGGAPFYEAFEGYDSVDE-KVSALTALKYMLLCKVMLDLPDEVNSLLSAKL-') - - # The gap matrix. - real_gaps = zeros((2, 69), int16) - real_gaps[0, 16] = 1 - real_gaps[0, 17] = 1 - real_gaps[0, 19] = 1 - real_gaps[0, 20] = 1 - real_gaps[0, 21] = 1 - real_gaps[0, 37] = 1 - real_gaps[0, 38] = 1 - real_gaps[1, 35] = 1 - real_gaps[1, 68] = 1 - for i in range(2): - for j in range(68): - self.assertEqual(gaps[i, j], real_gaps[i][j])