Spektralna konvolucija

Spektralna konvolucija [2] je tehnika koja se koristi za identifikaciju aminokiselina koje mogu biti prisutne u peptidu na osnovu eksperimentalnog spektra. Ova metoda analizira razlike između masa u spektru i identifikuje one koje odgovaraju masama aminokiselina.

Proces se sastoji iz dva glavna koraka:

  1. Izračunavanje konvolucije: Za svaki par masa u spektru, izračunava se njihova razlika. Ove razlike mogu odgovarati masama aminokiselina.
  2. Identifikacija aminokiselina: Najčešće razlike koje se pojavljuju u spektru verovatno odgovaraju aminokiselinama prisutnim u peptidu. Te aminokiseline se izdvajaju i koriste u Leaderboard algoritmu.

Glavna prednost ovog algoritma jeste to što u samom startu smanjuje skup aminokiselina koje mogu da učestvuju u građenju peptida, čime se algoritam dosta ubrzava. Takođe, ovim se otvara mogućnost da se identifikuju nepoznate ili modifikovane aminokiseline. Još jedna od prednosti ovog algoritma jeste to što može da radi na eksperimentalnim spektrima koji imaju još više pogrešnih ili nedostajućih masa.

Kod za algoritam spektralne konvolucije

Algoritam spektralne konvolucije računa razlike između svih parova masa u eksperimentalnom spektru, a zatim identifikuje najčešće razlike koje odgovaraju masama aminokiselina. Ove aminokiseline se zatim koriste za generisanje kandidata peptida.

    def spectral_convolution(target_spectrum):
        num_of_el_in_spectrum = len(target_spectrum)
        convolution = []

        # Elemente spektra možemo da posmatramo kao matricu, gde prvu vrstu i prvu kolonu predstavljaju elementri eksperimentalnog spektra.
        # Prolazimo kroz elemente spektra i medjusobno ih poredimo, kao kroz donju trougaonu matricu i ako je razlika u okviru datog opsega onda je to
        # jedna aminokiselina koja može a učestvuje u rešenju
        for i in range(num_of_el_in_spectrum):
            for j in range(i):
                diff = target_spectrum[i] - target_spectrum[j]
                if 57 <= diff <= 200:
                    convolution.append(diff)

        # Određujemo broj pojavljivanja masa
        freq_dict = {}
        for mass in convolution:
            if mass in freq_dict:
                freq_dict[mass] += 1
            else:
                freq_dict[mass] = 1

        # Sortiramo elemente i NUMBER_OF_LARGEST_ELEMENTS masa aminokiselina nastavlja dalje u leaderboard algoritam
        sorted_masses = sorted(freq_dict.items(), key=lambda x: x[1], reverse=True)
        top_masses = [mass for mass, _ in sorted_masses[:NUMBER_OF_LARGEST_ELEMENTS]]
        leader_peptide = leaderboard_sequencing(target_spectrum, top_masses)

        return leader_peptide

U vizuelizaciji ispod, možete videti kako algoritam prvo konstruiše matricu konvolucije a zatim i prikazuje M najčešćih masa koje se pojavljuju u matrici. Nakon toga nad smanjenim brojem kandidata se primenjuje Leaderboard algoritam i kroz runde se bira N kandidata koji prolaze u sledeću rundu. Takođe, možete da vidite teorijske spektre kandidata kao i broj elemenata spektra koji su isti kao i u zadatom teorijskom spektru. Teorijski spektri kandidata mogu da se zumiraju da bi se lakše videli potpeptidi sa njihovim masama.
U poslednjoj rundi će biti prikazani peptidi koji predstavljaju najbolje kandidate za rešenje. Može imati više različitih kandidata s obzirom da različite aminokiseline mogu da imaju istu masu.
Dodatno, ako ne želite da vidite pravljenje matrice konvolucije kao ni runde koje su se desile potrebno je da označite opciju da se prikažu samo rešenja.

Primeri peptida i njihovih teorijskih spektara:

Unesi sekvencu i klikni Analiziraj da bi video vizualizaciju