Guest User

Untitled

a guest
Aug 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.28 KB | None | 0 0
  1. #----------------------------------------------------------
  2. # Written by Cathal Weakliam, 27 May 2012
  3. # Program aligns three strings by common elements
  4. # Written for the Amino Acid Badge
  5. #-----------------------------------------------------------
  6.  
  7. #s1 = 'KVKILPKDRWTQHTTTGG'
  8. #s2 = 'ILPKERWTGHTTTGGLNSF'
  9. #s3 = 'ANKVKILPKDRFTQHATT'
  10.  
  11. s1 = raw_input('Type the first sequence: ')
  12. s2 = raw_input('Type the second sequence: ')
  13. s3 = raw_input('Type the third sequence: ')
  14. print('')
  15.  
  16. lengthlist = [len(s1),len(s2),len(s3)]
  17. length = [len(s1),len(s2),len(s3)]
  18. length.sort()
  19. length = length[-1]
  20.  
  21. def getScore(IA, IB, IX):
  22.     score = 0
  23.     for x in range(length):
  24.         try:
  25.             if s1[x+IX] == s2[x+IA] and s1[x+IX] == s3[x+IB]:
  26.                 score+=1
  27.         except IndexError:
  28.             score+=0            
  29.     return [score, IA, IB, IX]
  30.  
  31. def printResults(lst, s1, s2, s3):
  32.    
  33.     for i in range(length-lst[3]):
  34.         s1 = '-'+s1
  35.     for i in range(length-lst[1]):
  36.         s2 = '-'+s2
  37.     for i in range(length-lst[2]):
  38.         s3 = '-'+s3
  39.        
  40.     while s1[0] == '-' and s2[0] == '-' and s3[0] == '-':
  41.         s1 = s1.replace('-', '', 1)
  42.         s2 = s2.replace('-', '', 1)
  43.         s3 = s3.replace('-', '', 1)
  44.        
  45.     newlength = [len(s1),len(s2),len(s3)]
  46.     newlength.sort()
  47.     newlength = newlength[-1]
  48.    
  49.     while len(s1)<newlength:
  50.         s1+='-'
  51.     while len(s2)<newlength:
  52.         s2+='-'
  53.     while len(s3)<newlength:
  54.         s3+='-'
  55.  
  56.     scoreline = '      '
  57.     for i in range(newlength):
  58.         if '-' in [s1[i],s2[i],s3[i]]:
  59.             scoreline+=' '
  60.         elif s1[i] == s2[i] and s1[i] == s3[i]:
  61.             scoreline+='*'
  62.         else:
  63.             scoreline+=':'
  64.            
  65.     print('Seq1: '+s1+' :'+str(lengthlist[0]))
  66.     print('Seq2: '+s2+' :'+str(lengthlist[1]))
  67.     print('Seq3: '+s3+' :'+str(lengthlist[2]))
  68.     print(scoreline)
  69.     print(str(lst[0])+' columns of letters align')
  70.  
  71. lst = [0,0,0,0]
  72. for IX in range(lengthlist[0]):
  73.     for IA in range(lengthlist[1]):
  74.         for IB in range(lengthlist[2]):
  75.             newlst = getScore(IA, IB, IX)
  76.             if newlst[0] > lst[0]:
  77.                 lst = newlst
  78.  
  79. printResults(lst, s1, s2, s3)
  80.  
  81. print('')
  82. raw_input('Press ENTER to end the program.')
Add Comment
Please, Sign In to add comment