spacepaste

  1.  
  2. diff --git a/alignment/align.py b/alignment/align.py
  3. index 7a35de0..ef6dd73 100644
  4. --- a/alignment/align.py
  5. +++ b/alignment/align.py
  6. @@ -1,3 +1,4 @@
  7. +
  8. MATCH_SCORE = 1
  9. MISMATCH_SCORE = 0
  10. DELETION_SCORE = 0
  11. @@ -5,29 +6,29 @@ INSERTION_SCORE = 0
  12. def align(left, right):
  13. - matrix = {}
  14. + matrix = [[0] * (len(right) + 1) for i in range(len(left) + 1)]
  15. # Initialise
  16. - matrix[0, 0] = 0
  17. - traceback = {}
  18. + matrix[0][0] = 0
  19. + traceback = [[None] * (len(right) + 1) for i in range(len(left) + 1)]
  20. for i in xrange(len(left)):
  21. - matrix[i+1, 0] = (i+1) * DELETION_SCORE
  22. - traceback[i+1, 0] = i, 0
  23. + matrix[i+1][0] = (i+1) * DELETION_SCORE
  24. + traceback[i+1][0] = i, 0
  25. for i in xrange(len(right)):
  26. - matrix[0, i+1] = (i+1) * INSERTION_SCORE
  27. - traceback[0, i+1] = 0, i
  28. + matrix[0][i+1] = (i+1) * INSERTION_SCORE
  29. + traceback[0][i+1] = 0, i
  30. for i, symbol_left in enumerate(left):
  31. for j, symbol_right in enumerate(right):
  32. - match_score = matrix[i, j] + MATCH_SCORE if symbol_left == symbol_right else MISMATCH_SCORE
  33. - deletion = matrix[i, j+1] + DELETION_SCORE
  34. - insertion = matrix[i+1, j] + INSERTION_SCORE
  35. - matrix[i+1, j+1], traceback[i+1, j+1] = max((match_score, (i, j)),
  36. + match_score = matrix[i][j] + MATCH_SCORE if symbol_left == symbol_right else MISMATCH_SCORE
  37. + deletion = matrix[i][j+1] + DELETION_SCORE
  38. + insertion = matrix[i+1][j] + INSERTION_SCORE
  39. + matrix[i+1][j+1], traceback[i+1][j+1] = max((match_score, (i, j)),
  40. (deletion, (i, j+1)),
  41. (insertion, (i+1, j)),
  42. key=lambda x: x[0])
  43. - return matrix[len(left), len(right)], traceback
  44. \ No newline at end of file
  45. + return matrix[len(left)][len(right)], traceback
  46. diff --git a/alignment/alignment.py b/alignment/alignment.py
  47. index f10c00e..0a085e7 100644
  48. --- a/alignment/alignment.py
  49. +++ b/alignment/alignment.py
  50. @@ -9,7 +9,7 @@ def construct_alignment(left, right, traceback):
  51. # While we're not at the border
  52. while l > 0 or r > 0:
  53. - new_l, new_r = traceback[l, r]
  54. + new_l, new_r = traceback[l][r]
  55. if new_l == l: # insertion
  56. sequence_l.append('-')
  57. @@ -47,7 +47,12 @@ def main(left, right):
  58. if __name__ == '__main__':
  59. from sequences import P53_MOUSE, P53_HUMAN
  60. - main(P53_HUMAN, P53_MOUSE)
  61. -
  62. + import time
  63. + t = []
  64. + for i in range(4):
  65. + t0 = time.time()
  66. + main(P53_HUMAN, P53_MOUSE)
  67. + t.append(time.time() - t0)
  68. + print t
  69.