Facebook
From Obese Pig, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 255
  1. import numpy as np
  2.  
  3. # Sekwencje i ich dlugosci
  4.  
  5. sekw1 = list('GATACTA')
  6.  
  7. # sekw1 = list('TTTTACTGAA')
  8.  
  9. sekw2 = list('GATTACCA')
  10.  
  11. # sekw2 = list('TTACTAGGAA')
  12.  
  13. sekw1_len = len(sekw1)
  14.  
  15. sekw2_len = len(sekw2)
  16.  
  17. # kara
  18.  
  19. kara = 1
  20.  
  21. #przerwa
  22.  
  23. przerwa = 2
  24.  
  25. # Macierz scoringowa
  26.  
  27. F = np.zeros((sekw2_len + 1, sekw1_len + 1), dtype=int)
  28.  
  29. # Slownik porownan
  30.  
  31. S = {'GG': 1, 'GA': -1, 'GT': -1, 'GC': -1,
  32.      'CG': -1, 'CA': -1, 'CT': -1, 'CC': 1,
  33.      'TG': -1, 'TA': -1, 'TT': 1, 'TC': -1,
  34.      'AG': -1, 'AA': 1, 'AT': -1, 'AC': -1}
  35.  
  36. #wypelnianie 1 wiersza
  37. for j in range(0, F.shape[1]):
  38.     F[0][j] = -j
  39.  
  40. #wypelnianie 1 kolumny
  41. for i in range(0, F.shape[0]):
  42.     F[i][0] = -i
  43.  
  44. #wypelnianie macierzy
  45. for i in range(1, F.shape[0]):
  46.     for j in range(1, F.shape[1]):
  47.  
  48.         literka_gura = sekw1[j - 1]
  49.         literka_bok = sekw2[i - 1]
  50.         literka = literka_gura + literka_bok
  51.  
  52.         pszekontna = F[i - 1][j - 1] + S[literka]
  53.         gura = F[i - 1][j] - kara
  54.         dul = F[i][j - 1] - kara
  55.  
  56.         F[i][j] = max(pszekontna, gura, dul)
  57.  
  58. print(F)
  59.  
  60. #sekwencje wynikowe
  61. sekw1_wynikowa = list()
  62. sekw2_wynikowa = list()
  63.  
  64. #traceback
  65. i = F.shape[0] - 1
  66. j = F.shape[1] - 1
  67.  
  68. while i != 0 and j != 0:
  69.         literka_gura = sekw1[j - 1]
  70.         literka_bok = sekw2[i - 1]
  71.         literka = literka_gura + literka_bok
  72.  
  73.         pszekontna = F[i - 1][j - 1]
  74.         gura = F[i - 1][j] - kara
  75.         dul = F[i][j - 1] - kara
  76.  
  77.         F[i][j] = max(pszekontna, gura, dul)
  78.  
  79.         if F[i][j] == pszekontna:
  80.             i = i - 1
  81.             j = j - 1
  82.             sekw1_wynikowa.append(literka_gura)
  83.             sekw2_wynikowa.append(literka_bok)
  84.         elif F[i][j] == gura:
  85.             i = i - 1
  86.             sekw1_wynikowa.append("-")
  87.             sekw2_wynikowa.append(literka_bok)
  88.         else:
  89.             j = j - 1
  90.             sekw1_wynikowa.append("-")
  91.             sekw2_wynikowa.append(literka_bok)
  92.  
  93. print()
  94.  
  95. # print(sekw1_2_wynikowa)
  96. tt = 0
  97. sekw1_2_wynikowa = list()
  98. for i in reversed(sekw1_wynikowa):
  99.     sekw1_2_wynikowa.append(i)
  100.     tt = tt + 1
  101.  
  102. print("".join(sekw1_2_wynikowa))
  103.  
  104. # print(sekw2_2_wynikowa)
  105. tt = 0
  106. sekw2_2_wynikowa = list()
  107. for i in reversed(sekw2_wynikowa):
  108.     sekw2_2_wynikowa.append(i)
  109.     tt = tt + 1
  110.  
  111. print("".join(sekw2_2_wynikowa))