mailr27274 - /trunk/lib/sequence_alignment/needleman_wunsch.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on January 22, 2015 - 17:07:
Author: bugman
Date: Thu Jan 22 17:07:58 2015
New Revision: 27274

URL: http://svn.gna.org/viewcvs/relax?rev=27274&view=rev
Log:
Fix for the Needleman-Wunsch sequence alignment algorithm.

The start of the sequences are no longer truncated when starting gaps are 
encountered.


Modified:
    trunk/lib/sequence_alignment/needleman_wunsch.py

Modified: trunk/lib/sequence_alignment/needleman_wunsch.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/lib/sequence_alignment/needleman_wunsch.py?rev=27274&r1=27273&r2=27274&view=diff
==============================================================================
--- trunk/lib/sequence_alignment/needleman_wunsch.py    (original)
+++ trunk/lib/sequence_alignment/needleman_wunsch.py    Thu Jan 22 17:07:58 
2015
@@ -26,7 +26,7 @@
 from numpy import float32, int16, zeros
 
 # relax module imports.
-from lib.errors import RelaxError
+from lib.errors import RelaxError, RelaxFault
 
 
 # Default scores.
@@ -84,28 +84,32 @@
     alignment1 = ""
     alignment2 = ""
     while 1:
-        # Termination.
-        if i < 0 or j < 0:
-            break
+        # Top.
+        if j < 0 or traceback_matrix[i, j] == TRACEBACK_TOP:
+            alignment1 += sequence1[i]
+            alignment2 += '-'
+            i -= 1
+
+        # Left.
+        elif i < 0 or traceback_matrix[i, j] == TRACEBACK_LEFT:
+            alignment1 += '-'
+            alignment2 += sequence2[j]
+            j -= 1
 
         # Diagonal.
-        if traceback_matrix[i, j] == TRACEBACK_DIAG:
+        elif traceback_matrix[i, j] == TRACEBACK_DIAG:
             alignment1 += sequence1[i]
             alignment2 += sequence2[j]
             i -= 1
             j -= 1
 
-        # Top.
-        elif traceback_matrix[i, j] == TRACEBACK_TOP:
-            alignment1 += sequence1[i]
-            alignment2 += '-'
-            i -= 1
-
-        # Left.
-        elif traceback_matrix[i, j] == TRACEBACK_LEFT:
-            alignment1 += '-'
-            alignment2 += sequence2[j]
-            j -= 1
+        # Unknown behaviour.
+        else:
+            raise RelaxFault
+
+        # Termination.
+        if i < 0 and j < 0:
+            break
 
     # Reverse the alignments.
     align1 = alignment1[::-1]




Related Messages


Powered by MHonArc, Updated Thu Jan 22 17:40:02 2015