Skip to Content
RozdziałyAlgorytmy wyrównywania sekwencji i podobieństwaAlgorytm Allisona

Zadanie 3: Algorytm Allisona - allison (3 pkt)

Zaimplementuj algorytm Allisona do znajdowania optymalnego globalnego wyrównania:

def allison_global_alignment(s1: str, s2: str, match_score: int = 2, mismatch_score: int = -1, gap_penalty: int = -1) -> tuple[int, str, str]: """ Znajduje optymalne globalne wyrównanie używając algorytmu Allisona. Args: s1: Pierwszy ciąg znaków s2: Drugi ciąg znaków match_score: Punkty za dopasowanie mismatch_score: Punkty za niedopasowanie gap_penalty: Kara za lukę Returns: Krotka zawierająca wynik wyrównania i dwa wyrównane ciągi """ pass def allison_local_alignment(s1: str, s2: str, match_score: int = 2, mismatch_score: int = -1, gap_penalty: int = -1) -> tuple[int, str, str, int, int]: """ Znajduje optymalne lokalne wyrównanie (podobnie do algorytmu Smith-Waterman). Args: s1: Pierwszy ciąg znaków s2: Drugi ciąg znaków match_score: Punkty za dopasowanie mismatch_score: Punkty za niedopasowanie gap_penalty: Kara za lukę Returns: Krotka zawierająca wynik wyrównania, dwa wyrównane ciągi oraz pozycje początku """ pass

Twoje zadanie:

  1. Zaimplementuj algorytm Allisona dla globalnego wyrównania
  2. Zaimplementuj wersję dla lokalnego wyrównania
  3. Obsłuż różne systemy punktacji (dopasowanie, niedopasowanie, luki)
  4. Zwróć uwagę na różnice między wyrównaniem globalnym a lokalnym

Przykład:

s1 = "ACGTACGT" s2 = "ACGTGCGT" allison_global_alignment(s1, s2) = (13, "ACGT-ACGT", "ACGTGCGT-")
Last updated on