Exemplo n.º 1
0
def question2():
    align_human = "HSGVNQLGGVFVNGRPLPDSTRQKIVELAHSGARPCDISRILQVSNGCVSKILGRYYETGSIRPRAIGGSKPRVATPEVVSKIAQYKRECPSIFAWEIRDRLLSEGVCTNDNIPSVSSINRVLRNLASEK-QQ".replace("-","")
    align_fruitfly = "HSGVNQLGGVFVGGRPLPDSTRQKIVELAHSGARPCDISRILQVSNGCVSKILGRYYETGSIRPRAIGGSKPRVATAEVVSKISQYKRECPSIFAWEIRDRLLQENVCTNDNIPSVSSINRVLRNLAAQKEQQ"
    
    consensus = read_protein(CONSENSUS_PAX_URL)
    
    scoring_matrix = read_scoring_matrix(PAM50_URL)
    
    alignment_matrix = compute_alignment_matrix(align_human, consensus, scoring_matrix, True)
    (score, align_human_consensus, align_consensus) = compute_global_alignment(align_human, consensus, scoring_matrix, alignment_matrix)
    
    print compare_sequence(align_human_consensus, align_consensus)
    print align_human_consensus
    print align_consensus
    
    print (score - 51.956) / 7.169
    
    
    alignment_matrix = compute_alignment_matrix(align_fruitfly, consensus, scoring_matrix, True)
    (score, align_fruitfly_consensus, align_consensus) = compute_global_alignment(align_fruitfly, consensus, scoring_matrix, alignment_matrix)
    
    print compare_sequence(align_fruitfly_consensus, align_consensus)
    print align_fruitfly_consensus
    print align_consensus
    
    print (score - 51.956) / 7.169
Exemplo n.º 2
0
def calculate_distance(checked_word, word, scoring_matrix):
    
    
    alignment_matrix = compute_alignment_matrix(checked_word, word, scoring_matrix, True)
    (score, _, _) = compute_global_alignment(checked_word, word, scoring_matrix, alignment_matrix)
    
    return len(checked_word) + len(word) - score
Exemplo n.º 3
0
 def test01(self):
     alphabet= "ACTG"
     matrix = build_scoring_matrix(alphabet, 10,4,-2)
     
     S = compute_alignment_matrix("AA", "TAAT", matrix, True)
     
     (score,x,y) = compute_global_alignment("AA", "TAAT", matrix, S)
     
     self.assertEqual(score,16)
     self.assertEquals(x,"-AA-")
     self.assertEquals(y,"TAAT")
Exemplo n.º 4
0
 def testGlobal(self):
     alphabet= "ACTG"
     matrix = build_scoring_matrix(alphabet, 10,4,-2)
     
     S = compute_alignment_matrix("AA", "TAAT", matrix, True)
     
     self.assertEquals(S[0][0], 0)
     self.assertLess(S[0][1], 0)
     self.assertLess(S[1][0], 0)
     
     self.assertEquals(S[2][3],18)
Exemplo n.º 5
0
    def test01(self):
        alphabet = "ACTG"
        matrix = build_scoring_matrix(alphabet, 10, 4, -2)

        S = compute_alignment_matrix("AA", "TAAT", matrix, True)

        (score, x, y) = compute_local_alignment("AA", "TAAT", matrix, S)

        self.assertEqual(score, 20)
        self.assertEquals(x, "AA")
        self.assertEquals(y, "AA")
Exemplo n.º 6
0
    def testGlobal(self):
        alphabet = "ACTG"
        matrix = build_scoring_matrix(alphabet, 10, 4, -2)

        S = compute_alignment_matrix("AA", "TAAT", matrix, True)

        self.assertEquals(S[0][0], 0)
        self.assertLess(S[0][1], 0)
        self.assertLess(S[1][0], 0)

        self.assertEquals(S[2][3], 18)
Exemplo n.º 7
0
def question1():
    human_eyeless_protein = read_protein(HUMAN_EYELESS_URL)
    fruitfly_eyeless_protein = read_protein(FRUITFLY_EYELESS_URL)
    
    scoring_matrix = read_scoring_matrix(PAM50_URL)
    
    alignment_matrix = compute_alignment_matrix(human_eyeless_protein, fruitfly_eyeless_protein, scoring_matrix, False)
    (score, align_human, align_fruitfly) = compute_local_alignment(human_eyeless_protein, fruitfly_eyeless_protein, scoring_matrix, alignment_matrix)
    
    print score
    print align_human
    print align_fruitfly
Exemplo n.º 8
0
def generate_null_distribution(seq_x, seq_y, scoring_matrix, num_trials):
    
    scoring_distributions = {}
    for _ in range(0,num_trials):
        l_seq_y = list(seq_y)
        random.shuffle(l_seq_y)
    
        alignment_matrix = compute_alignment_matrix(seq_x, l_seq_y, scoring_matrix, False)
        (score, _, _) = compute_local_alignment(seq_x, l_seq_y, scoring_matrix, alignment_matrix)
        
        if (score in scoring_distributions):
            scoring_distributions[score] = scoring_distributions[score] + 1
        else:
             scoring_distributions[score] = 1
             
    return scoring_distributions
Exemplo n.º 9
0
 def testLocal2(self):
     
     S = compute_alignment_matrix('cat', 'batcatdog', {'-': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'a': {'-': -1, 'a': 2, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'c': {'-': -1, 'a': -1, 'c': 2, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'b': {'-': -1, 'a': -1, 'c': -1, 'b': 2, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'e': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': 2, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'd': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': 2, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'g': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': 2, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'f': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': 2, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'i': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': 2, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'h': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': 2, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'k': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': 2, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'j': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': 2, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'm': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': 2, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'l': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': 2, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'o': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': 2, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'n': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': 2, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'q': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': 2, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'p': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': 2, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 's': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': 2, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'r': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': 2, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'u': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': 2, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 't': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': 2, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'w': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': 2, 'v': -1, 'y': -1, 'x': -1, 'z': -1}, 'v': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': 2, 'y': -1, 'x': -1, 'z': -1}, 'y': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': 2, 'x': -1, 'z': -1}, 'x': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': 2, 'z': -1}, 'z': {'-': -1, 'a': -1, 'c': -1, 'b': -1, 'e': -1, 'd': -1, 'g': -1, 'f': -1, 'i': -1, 'h': -1, 'k': -1, 'j': -1, 'm': -1, 'l': -1, 'o': -1, 'n': -1, 'q': -1, 'p': -1, 's': -1, 'r': -1, 'u': -1, 't': -1, 'w': -1, 'v': -1, 'y': -1, 'x': -1, 'z': 2}}, False)
     self.assertEquals(S[1][1], 0)

# In[22]:

score_mat = seq_align.build_scoring_matrix(set(["A", "T", "G", "C"]), 10, -10, 0)


# In[33]:

seq_recs = SeqIO.parse("/Users/richard/Downloads/rosalind_lcsq.txt", "fasta")
seq_x, seq_y = [str(seq.seq) for seq in seq_recs]


# In[34]:

align_mat = seq_align.compute_alignment_matrix(seq_x, seq_y, score_mat, True)


# In[35]:

_, align1, align2 = seq_align.compute_global_alignment(seq_x, seq_y, score_mat, align_mat)
print align1
print align2


# In[36]:

res = "".join([align1[i] for i in range(len(align1)) if align1[i] != "-" and align2[i] != "-"])


# In[37]:
Exemplo n.º 11
0
    def testLocal2(self):

        S = compute_alignment_matrix(
            'cat', 'batcatdog', {
                '-': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'a': {
                    '-': -1,
                    'a': 2,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'c': {
                    '-': -1,
                    'a': -1,
                    'c': 2,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'b': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': 2,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'e': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': 2,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'd': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': 2,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'g': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': 2,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'f': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': 2,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'i': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': 2,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'h': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': 2,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'k': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': 2,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'j': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': 2,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'm': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': 2,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'l': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': 2,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'o': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': 2,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'n': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': 2,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'q': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': 2,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'p': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': 2,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                's': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': 2,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'r': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': 2,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'u': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': 2,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                't': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': 2,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'w': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': 2,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'v': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': 2,
                    'y': -1,
                    'x': -1,
                    'z': -1
                },
                'y': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': 2,
                    'x': -1,
                    'z': -1
                },
                'x': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': 2,
                    'z': -1
                },
                'z': {
                    '-': -1,
                    'a': -1,
                    'c': -1,
                    'b': -1,
                    'e': -1,
                    'd': -1,
                    'g': -1,
                    'f': -1,
                    'i': -1,
                    'h': -1,
                    'k': -1,
                    'j': -1,
                    'm': -1,
                    'l': -1,
                    'o': -1,
                    'n': -1,
                    'q': -1,
                    'p': -1,
                    's': -1,
                    'r': -1,
                    'u': -1,
                    't': -1,
                    'w': -1,
                    'v': -1,
                    'y': -1,
                    'x': -1,
                    'z': 2
                }
            }, False)
        self.assertEquals(S[1][1], 0)