import numpy as np #seqProtein1 sekwencja1 = [] plik1 = open('seqProtein1.fasta', "r").readlines() for linia in plik1[1:]: sekwencja1 += linia.rstrip() print(sekwencja1) print() sekw1 = sekwencja1 #seqProtein2 sekwencja2 = [] plik2 = open('seqProtein2.fasta', "r").readlines() for linia in plik2[1:]: sekwencja2 += linia.rstrip() print(sekwencja2) sekw2 = sekwencja2 #Macierz BLOSUM S = [] plik3 = open('blosum62.txt', "r") S = eval(plik3.read()) print(S) # Sekwencje dlugosci sekw1_len = len(sekw1) sekw2_len = len(sekw2) # kara kara = 4 # Macierz scoringowa F = np.zeros((sekw2_len + 1, sekw1_len + 1), dtype=int) #wypelnianie macierzy for i in range(1, F.shape[0]): for j in range(1, F.shape[1]): literka_gura = sekw1[j - 1] literka_bok = sekw2[i - 1] pszekontna = F[i - 1][j - 1] + S[literka_gura][literka_bok] gura = F[i - 1][j] - kara dul = F[i][j - 1] - kara F[i][j] = max(pszekontna, gura, dul, 0) print(F) maksymalny = F[0][0] indeks_i = list() indeks_j = list() #indeksy maksymalnego elementu for i in range(1, F.shape[0]): for j in range(1, F.shape[1]): if F[i][j] >= maksymalny: maksymalny = F[i][j] #znalezienie indeksu maksymalnych for i in range(1, F.shape[0]): for j in range(1, F.shape[1]): if F[i][j] == maksymalny: indeks_i.append(i) indeks_j.append(j) #sekwencje sekw1_wynikowa = list() sekw2_wynikowa = list() #traceback i = indeks_i[0] j = indeks_j[0] while i != 0 or j != 0: literka_gura = sekw1[j - 1] literka_bok = sekw2[i - 1] literka = literka_gura + literka_bok pszekontna = F[i - 1][j - 1] gura = F[i - 1][j] - kara dul = F[i][j - 1] - kara F[i][j] = max(pszekontna, gura, dul) if F[i][j] == pszekontna: i = i - 1 j = j - 1 sekw1_wynikowa.append(literka_gura) sekw2_wynikowa.append(literka_bok) elif F[i][j] == gura: i = i - 1 sekw1_wynikowa.append("-") sekw2_wynikowa.append(literka_bok) else: j = j - 1 sekw1_wynikowa.append(literka_gura) sekw2_wynikowa.append("-") print() # print(sekw1_2_wynikowa) tt = 0 sekw1_2_wynikowa = list() for i in reversed(sekw1_wynikowa): sekw1_2_wynikowa.append(i) tt = tt + 1 print("".join(sekw1_2_wynikowa)) # print(sekw2_2_wynikowa) tt = 0 sekw2_2_wynikowa = list() for i in reversed(sekw2_wynikowa): sekw2_2_wynikowa.append(i) tt = tt + 1 print("".join(sekw2_2_wynikowa))