Load my reference implementation and scoring matrices

In [1]:
import dp2
In [2]:
from blosum62 import blosum62
dna_ident = dp2.makeIdent("ATGC")
dna_ident
Out[2]:
{'A': {'A': 1, 'C': -1, 'G': -1, 'T': -1},
 'C': {'A': -1, 'C': 1, 'G': -1, 'T': -1},
 'G': {'A': -1, 'C': -1, 'G': 1, 'T': -1},
 'T': {'A': -1, 'C': -1, 'G': -1, 'T': 1}}

Example from Day 7 slides

In [3]:
example1 = ("AGCGGTA","GAGCGGA")
(nw1a,nw1s) = dp2.nw(*example1, s = dna_ident)
print "\n".join(nw1a)
print nw1s
-AGCGGTA
GAGCGG-A
4

In [4]:
example1 = ("AGCGGTA","GAGCGGA")
(nw1a,nw1s) = dp2.nw(*example1, s = dna_ident, debug = True)
         G    A    G    C    G    G    A
    0   -1   -2   -3   -4   -5   -6   -7     
   -1   -1    0   -1   -2   -3   -4   -5    A
   -2    0   -1    1    0   -1   -2   -3    G
   -3   -1   -1    0    2    1    0   -1    C
   -4   -2   -2    0    1    3    2    1    G
   -5   -3   -3   -1    0    2    4    3    G
   -6   -4   -4   -2   -1    1    3    3    T
   -7   -5   -3   -3   -2    0    2    4    A

[None, [(0, 0)], [(0, 1)], [(0, 2)], [(0, 3)], [(0, 4)], [(0, 5)], [(0, 6)]]
[[(0, 0)], [(0, 0)], [(0, 1)], [(1, 2)], [(1, 3)], [(1, 4)], [(1, 5)], [(0, 6), (1, 6)]]
[[(1, 0)], [(1, 0)], [(2, 1), (1, 2)], [(1, 2)], [(2, 3)], [(1, 4), (2, 4)], [(1, 5), (2, 5)], [(2, 6)]]
[[(2, 0)], [(2, 1)], [(2, 1)], [(2, 3)], [(2, 3)], [(3, 4)], [(3, 5)], [(3, 6)]]
[[(3, 0)], [(3, 0), (3, 1)], [(3, 1), (3, 2)], [(3, 2)], [(3, 4)], [(3, 4)], [(3, 5), (4, 5)], [(4, 6)]]
[[(4, 0)], [(4, 0), (4, 1)], [(4, 1), (4, 2)], [(4, 2), (4, 3)], [(4, 4)], [(4, 4), (4, 5)], [(4, 5)], [(5, 6)]]
[[(5, 0)], [(5, 1)], [(5, 1), (5, 2)], [(5, 3)], [(5, 4)], [(5, 5)], [(5, 6)], [(5, 6)]]
[[(6, 0)], [(6, 1)], [(6, 1)], [(6, 3)], [(6, 4)], [(6, 5)], [(6, 6)], [(6, 6)]]

Jermyn's test case (fixed sequence embedded in random context)

  • Note that there are multiple optimal alignments for this test case
In [5]:
example2 = ("GCTAGGATAGGCAATTGGCCTAGTG",
            "ATAGTAATTGGCCTGCTTGAG")
(nw2a,nw2s) = dp2.nw(*example2, s = dna_ident)
print "\n".join(nw2a)
print nw2s
GCTAGGATAGGCAATTGGCCTAG--T--G
------ATA-GTAATTGGCCT-GCTTGAG
3

In [6]:
example2 = ("GCTAGGATAGGCAATTGGCCTAGTG",
            "ATAGTAATTGGCCTGCTTGAG")
(nw2a,nw2s) = dp2.nw(*example2, s = dna_ident, debug = True)
         A    T    A    G    T    A    A    T    T    G    G    C    C    T    G    C    T    T    G    A    G
    0   -1   -2   -3   -4   -5   -6   -7   -8   -9  -10  -11  -12  -13  -14  -15  -16  -17  -18  -19  -20  -21     
   -1   -1   -2   -3   -2   -3   -4   -5   -6   -7   -8   -9  -10  -11  -12  -13  -14  -15  -16  -17  -18  -19    G
   -2   -2   -2   -3   -3   -3   -4   -5   -6   -7   -8   -9   -8   -9  -10  -11  -12  -13  -14  -15  -16  -17    C
   -3   -3   -1   -2   -3   -2   -3   -4   -4   -5   -6   -7   -8   -9   -8   -9  -10  -11  -12  -13  -14  -15    T
   -4   -2   -2    0   -1   -2   -1   -2   -3   -4   -5   -6   -7   -8   -9   -9  -10  -11  -12  -13  -12  -13    A
   -5   -3   -3   -1    1    0   -1   -2   -3   -4   -3   -4   -5   -6   -7   -8   -9  -10  -11  -11  -12  -11    G
   -6   -4   -4   -2    0    0   -1   -2   -3   -4   -3   -2   -3   -4   -5   -6   -7   -8   -9  -10  -11  -11    G
   -7   -5   -5   -3   -1   -1    1    0   -1   -2   -3   -3   -3   -4   -5   -6   -7   -8   -9  -10   -9  -10    A
   -8   -6   -4   -4   -2    0    0    0    1    0   -1   -2   -3   -4   -3   -4   -5   -6   -7   -8   -9  -10    T
   -9   -7   -5   -3   -3   -1    1    1    0    0   -1   -2   -3   -4   -4   -4   -5   -6   -7   -8   -7   -8    A
  -10   -8   -6   -4   -2   -2    0    0    0   -1    1    0   -1   -2   -3   -3   -4   -5   -6   -6   -7   -6    G
  -11   -9   -7   -5   -3   -3   -1   -1   -1   -1    0    2    1    0   -1   -2   -3   -4   -5   -5   -6   -6    G
  -12  -10   -8   -6   -4   -4   -2   -2   -2   -2   -1    1    3    2    1    0   -1   -2   -3   -4   -5   -6    C
  -13  -11   -9   -7   -5   -5   -3   -1   -2   -3   -2    0    2    2    1    0   -1   -2   -3   -4   -3   -4    A
  -14  -12  -10   -8   -6   -6   -4   -2   -2   -3   -3   -1    1    1    1    0   -1   -2   -3   -4   -3   -4    A
  -15  -13  -11   -9   -7   -5   -5   -3   -1   -1   -2   -2    0    0    2    1    0    0   -1   -2   -3   -4    T
  -16  -14  -12  -10   -8   -6   -6   -4   -2    0   -1   -2   -1   -1    1    1    0    1    1    0   -1   -2    T
  -17  -15  -13  -11   -9   -7   -7   -5   -3   -1    1    0   -1   -2    0    2    1    0    0    2    1    0    G
  -18  -16  -14  -12  -10   -8   -8   -6   -4   -2    0    2    1    0   -1    1    1    0   -1    1    1    2    G
  -19  -17  -15  -13  -11   -9   -9   -7   -5   -3   -1    1    3    2    1    0    2    1    0    0    0    1    C
  -20  -18  -16  -14  -12  -10  -10   -8   -6   -4   -2    0    2    4    3    2    1    1    0   -1   -1    0    C
  -21  -19  -17  -15  -13  -11  -11   -9   -7   -5   -3   -1    1    3    5    4    3    2    2    1    0   -1    T
  -22  -20  -18  -16  -14  -12  -10  -10   -8   -6   -4   -2    0    2    4    4    3    2    1    1    2    1    A
  -23  -21  -19  -17  -15  -13  -11  -11   -9   -7   -5   -3   -1    1    3    5    4    3    2    2    1    3    G
  -24  -22  -20  -18  -16  -14  -12  -12  -10   -8   -6   -4   -2    0    2    4    4    5    4    3    2    2    T
  -25  -23  -21  -19  -17  -15  -13  -13  -11   -9   -7   -5   -3   -1    1    3    3    4    4    5    4    3    G

[None, [(0, 0)], [(0, 1)], [(0, 2)], [(0, 3)], [(0, 4)], [(0, 5)], [(0, 6)], [(0, 7)], [(0, 8)], [(0, 9)], [(0, 10)], [(0, 11)], [(0, 12)], [(0, 13)], [(0, 14)], [(0, 15)], [(0, 16)], [(0, 17)], [(0, 18)], [(0, 19)], [(0, 20)]]
[[(0, 0)], [(0, 0)], [(0, 1), (1, 1)], [(0, 2), (1, 2)], [(0, 3)], [(1, 4)], [(1, 5)], [(1, 6)], [(1, 7)], [(1, 8)], [(0, 9), (1, 9)], [(0, 10), (1, 10)], [(1, 11)], [(1, 12)], [(1, 13)], [(0, 14), (1, 14)], [(1, 15)], [(1, 16)], [(1, 17)], [(0, 18), (1, 18)], [(1, 19)], [(0, 20), (1, 20)]]
[[(1, 0)], [(1, 0), (1, 1)], [(1, 1)], [(1, 2), (2, 2)], [(1, 4)], [(1, 4)], [(1, 5), (2, 5)], [(1, 6), (2, 6)], [(1, 7), (2, 7)], [(1, 8), (2, 8)], [(1, 9), (2, 9)], [(1, 10), (2, 10)], [(1, 11)], [(1, 12), (2, 12)], [(2, 13)], [(2, 14)], [(1, 15), (2, 15)], [(2, 16)], [(2, 17)], [(2, 18)], [(2, 19)], [(2, 20)]]
[[(2, 0)], [(2, 0), (2, 1)], [(2, 1)], [(3, 2)], [(3, 3)], [(2, 4)], [(3, 5)], [(3, 6)], [(2, 7)], [(2, 8), (3, 8)], [(3, 9)], [(3, 10)], [(3, 11)], [(2, 12), (3, 12)], [(2, 13)], [(3, 14)], [(3, 15)], [(2, 16), (3, 16)], [(2, 17), (3, 17)], [(3, 18)], [(3, 19)], [(3, 20)]]
[[(3, 0)], [(3, 0)], [(3, 2)], [(3, 2)], [(4, 3)], [(4, 4)], [(3, 5)], [(3, 6), (4, 6)], [(4, 7)], [(4, 8)], [(4, 9)], [(4, 10)], [(4, 11)], [(4, 12)], [(4, 13), (3, 14)], [(3, 14)], [(3, 15), (4, 15)], [(3, 16), (4, 16)], [(3, 17), (4, 17)], [(3, 18), (4, 18)], [(3, 19)], [(4, 20)]]
[[(4, 0)], [(4, 1)], [(4, 1), (4, 2)], [(4, 3)], [(4, 3)], [(5, 4)], [(5, 5)], [(4, 6), (5, 6)], [(4, 7), (5, 7)], [(4, 8), (5, 8)], [(4, 9)], [(4, 10), (5, 10)], [(5, 11)], [(5, 12)], [(5, 13)], [(4, 14), (5, 14)], [(5, 15)], [(5, 16)], [(5, 17)], [(4, 18)], [(5, 19)], [(4, 20)]]
[[(5, 0)], [(5, 1)], [(5, 1), (5, 2)], [(5, 3)], [(5, 3), (5, 4)], [(5, 4)], [(5, 5), (6, 5)], [(5, 6), (6, 6)], [(5, 7), (6, 7)], [(5, 8), (6, 8)], [(5, 9)], [(5, 10)], [(6, 11)], [(6, 12)], [(6, 13)], [(5, 14), (6, 14)], [(6, 15)], [(6, 16)], [(6, 17)], [(5, 18), (6, 18)], [(6, 19)], [(5, 20)]]
[[(6, 0)], [(6, 0), (6, 1)], [(6, 1), (6, 2)], [(6, 2), (6, 3)], [(6, 4)], [(6, 4), (6, 5)], [(6, 5)], [(6, 6), (7, 6)], [(7, 7)], [(7, 8)], [(7, 9)], [(6, 11)], [(6, 11)], [(6, 12), (7, 12)], [(6, 13), (7, 13)], [(6, 14), (7, 14)], [(6, 15), (7, 15)], [(6, 16), (7, 16)], [(6, 17), (7, 17)], [(6, 18), (7, 18)], [(6, 19)], [(7, 20)]]
[[(7, 0)], [(7, 1)], [(7, 1)], [(7, 3)], [(7, 4)], [(7, 4)], [(7, 6)], [(7, 6)], [(7, 7)], [(7, 8), (8, 8)], [(8, 9)], [(8, 10)], [(8, 11)], [(7, 12), (8, 12)], [(7, 13)], [(8, 14)], [(8, 15)], [(7, 16), (8, 16)], [(7, 17), (8, 17)], [(8, 18)], [(8, 19)], [(7, 20), (8, 20)]]
[[(8, 0)], [(8, 0), (8, 1)], [(8, 2)], [(8, 2)], [(8, 4)], [(8, 5)], [(8, 5)], [(8, 6)], [(9, 7), (8, 8)], [(8, 8)], [(8, 9), (9, 9)], [(8, 10), (9, 10)], [(8, 11), (9, 11)], [(8, 12), (9, 12)], [(8, 14)], [(8, 14)], [(8, 15), (9, 15)], [(8, 16), (9, 16)], [(8, 17), (9, 17)], [(8, 18), (9, 18)], [(8, 19)], [(9, 20)]]
[[(9, 0)], [(9, 1)], [(9, 2)], [(9, 3)], [(9, 3)], [(9, 5)], [(9, 6)], [(9, 6), (9, 7)], [(9, 7)], [(9, 8), (10, 8), (9, 9)], [(9, 9)], [(9, 10), (10, 10)], [(10, 11)], [(10, 12)], [(10, 13)], [(9, 14)], [(10, 15)], [(10, 16)], [(10, 17)], [(9, 18)], [(10, 19)], [(9, 20)]]
[[(10, 0)], [(10, 1)], [(10, 2)], [(10, 3)], [(10, 3), (10, 4)], [(10, 4), (10, 5)], [(10, 6)], [(10, 6), (10, 7)], [(10, 7), (10, 8)], [(10, 8)], [(10, 9), (10, 10)], [(10, 10)], [(11, 11)], [(11, 12)], [(11, 13)], [(10, 14), (11, 14)], [(11, 15)], [(11, 16)], [(11, 17)], [(10, 18)], [(11, 19)], [(10, 20)]]
[[(11, 0)], [(11, 1)], [(11, 2)], [(11, 3)], [(11, 4)], [(11, 4), (11, 5)], [(11, 6)], [(11, 6), (11, 7)], [(11, 7), (11, 8)], [(11, 8), (11, 9)], [(11, 10)], [(11, 11)], [(11, 11)], [(11, 12), (12, 12)], [(12, 13)], [(12, 14)], [(11, 15), (12, 15)], [(12, 16)], [(12, 17)], [(12, 18)], [(12, 19)], [(12, 20)]]
[[(12, 0)], [(12, 0), (12, 1)], [(12, 2)], [(12, 2), (12, 3)], [(12, 4)], [(12, 4), (12, 5)], [(12, 5), (12, 6)], [(12, 6)], [(13, 7)], [(12, 8), (13, 8), (12, 9)], [(12, 10)], [(12, 11)], [(12, 12)], [(12, 12)], [(12, 13), (13, 13)], [(12, 14), (13, 14)], [(12, 15), (13, 15)], [(12, 16), (13, 16)], [(12, 17), (13, 17)], [(12, 18), (13, 18)], [(12, 19)], [(13, 20)]]
[[(13, 0)], [(13, 0), (13, 1)], [(13, 2)], [(13, 2), (13, 3)], [(13, 4)], [(13, 4), (13, 5)], [(13, 5), (13, 6)], [(13, 6), (13, 7)], [(13, 7)], [(13, 8), (14, 8)], [(13, 10)], [(13, 11)], [(13, 12)], [(13, 12), (13, 13)], [(13, 13)], [(13, 14), (14, 14)], [(13, 15), (14, 15)], [(13, 16), (14, 16)], [(13, 17), (14, 17)], [(13, 18), (14, 18)], [(13, 19)], [(13, 20), (14, 20)]]
[[(14, 0)], [(14, 1)], [(14, 1), (14, 2)], [(14, 3)], [(14, 4)], [(14, 4)], [(14, 6)], [(14, 7)], [(14, 7)], [(14, 8)], [(15, 9)], [(14, 11)], [(14, 12)], [(14, 12), (14, 13)], [(14, 13)], [(15, 14)], [(15, 15)], [(14, 16)], [(14, 17), (15, 17)], [(15, 18)], [(15, 19)], [(14, 20), (15, 20)]]
[[(15, 0)], [(15, 1)], [(15, 1), (15, 2)], [(15, 3)], [(15, 4)], [(15, 4), (15, 5)], [(15, 5), (15, 6)], [(15, 7)], [(15, 7), (15, 8)], [(15, 8)], [(16, 9)], [(16, 10)], [(15, 12)], [(15, 12), (15, 13)], [(15, 13), (15, 14)], [(15, 14)], [(15, 15), (16, 15)], [(15, 16)], [(15, 17)], [(16, 18)], [(16, 19)], [(16, 20)]]
[[(16, 0)], [(16, 1)], [(16, 2)], [(16, 3)], [(16, 3), (16, 4)], [(16, 5)], [(16, 5), (16, 6)], [(16, 7)], [(16, 8)], [(16, 9)], [(16, 9)], [(16, 10), (17, 10)], [(17, 11)], [(16, 12), (17, 12), (16, 13)], [(16, 14)], [(16, 14)], [(17, 15)], [(17, 16), (16, 17)], [(16, 17), (16, 18)], [(16, 18)], [(17, 19)], [(16, 20), (17, 20)]]
[[(17, 0)], [(17, 1)], [(17, 2)], [(17, 3)], [(17, 3), (17, 4)], [(17, 5)], [(17, 5), (17, 6)], [(17, 7)], [(17, 8)], [(17, 9)], [(17, 9), (17, 10)], [(17, 10)], [(18, 11)], [(18, 12)], [(18, 13), (17, 14)], [(17, 14), (17, 15)], [(17, 15)], [(17, 16), (18, 16)], [(17, 17), (18, 17), (17, 18)], [(17, 18), (17, 19)], [(17, 19)], [(17, 20)]]
[[(18, 0)], [(18, 1)], [(18, 2)], [(18, 3)], [(18, 4)], [(18, 5)], [(18, 5), (18, 6)], [(18, 7)], [(18, 8)], [(18, 9)], [(18, 10)], [(18, 11)], [(18, 11)], [(18, 12), (19, 12)], [(19, 13)], [(19, 14), (18, 15)], [(18, 15)], [(19, 16)], [(19, 17)], [(18, 19)], [(18, 19), (18, 20)], [(18, 21)]]
[[(19, 0)], [(19, 1)], [(19, 2)], [(19, 3)], [(19, 4)], [(19, 5)], [(19, 5), (19, 6)], [(19, 7)], [(19, 8)], [(19, 9)], [(19, 10)], [(19, 11)], [(19, 11), (19, 12)], [(19, 12)], [(20, 13)], [(20, 14)], [(19, 15), (20, 15), (19, 16)], [(19, 16)], [(19, 17), (20, 17)], [(19, 18), (20, 18), (19, 19)], [(19, 19), (19, 20)], [(19, 21)]]
[[(20, 0)], [(20, 1)], [(20, 1), (20, 2)], [(20, 3)], [(20, 4)], [(20, 4), (20, 5)], [(20, 5), (20, 6)], [(20, 7)], [(20, 7), (20, 8)], [(20, 8), (20, 9)], [(20, 10)], [(20, 11)], [(20, 12)], [(20, 13)], [(20, 13)], [(21, 14)], [(21, 15)], [(20, 16), (21, 16)], [(20, 17)], [(21, 18)], [(21, 19)], [(21, 20), (20, 21)]]
[[(21, 0)], [(21, 0), (21, 1)], [(21, 2)], [(21, 2), (21, 3)], [(21, 4)], [(21, 5)], [(21, 5)], [(21, 6), (21, 7)], [(21, 8)], [(21, 9)], [(21, 10)], [(21, 11)], [(21, 12)], [(21, 13)], [(21, 14)], [(21, 14)], [(21, 15), (22, 15)], [(21, 16), (22, 16)], [(21, 17), (22, 17), (21, 18)], [(21, 18)], [(21, 19)], [(22, 20)]]
[[(22, 0)], [(22, 1)], [(22, 2)], [(22, 3)], [(22, 3), (22, 4)], [(22, 5)], [(22, 6)], [(22, 6), (22, 7)], [(22, 8)], [(22, 9)], [(22, 9), (22, 10)], [(22, 10), (22, 11)], [(22, 12)], [(22, 13)], [(22, 14)], [(22, 14)], [(23, 15)], [(23, 16)], [(23, 17)], [(22, 18)], [(23, 19), (22, 20)], [(22, 20)]]
[[(23, 0)], [(23, 1)], [(23, 1), (23, 2)], [(23, 3)], [(23, 4)], [(23, 4), (23, 5)], [(23, 6)], [(23, 6), (23, 7)], [(23, 7), (23, 8)], [(23, 8), (23, 9)], [(23, 10)], [(23, 11)], [(23, 12)], [(23, 13)], [(23, 13), (23, 14)], [(23, 15)], [(23, 15)], [(23, 16)], [(23, 17), (24, 17)], [(24, 18)], [(24, 19)], [(23, 21)]]
[[(24, 0)], [(24, 1)], [(24, 2)], [(24, 3)], [(24, 3), (24, 4)], [(24, 5)], [(24, 6)], [(24, 6), (24, 7)], [(24, 8)], [(24, 9)], [(24, 9), (24, 10)], [(24, 10), (24, 11)], [(24, 12)], [(24, 13)], [(24, 14)], [(24, 14), (24, 15)], [(24, 15), (24, 16)], [(24, 17)], [(24, 17)], [(24, 18)], [(25, 19)], [(24, 20), (25, 20)]]

In [6]: