- 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))