solitaire / mbi-sequences

0 stars 0 forks source link

Testy nie przechodzą dla TGCA, TGGTGC, TGCA #7

Closed solitaire closed 10 years ago

solitaire commented 10 years ago

Każda wersja produkuje co innego: iteracyjna: ---TGCA TGGTGC- ---TGCA Alignment: 57

rekurencyjna - widać, że gdzieś zgubiła dwa znaki z drugiej sekwencji: -TGCA TGGT- -TGCA Alignment: 57

I obliczony koszt nie zgadza się z tym, co otrzyma się jeśli policzy się ręcznie.

mklew commented 10 years ago

Dodaj odpowiedni test case. Postaram się rzucić na to okiem.

mklew commented 10 years ago

Ciekawostka jest taka, że jak zmienisz ostatnią litere w TGGTGC na cokolwiek innego to testy przechodzą.

Ja do tego będę miał czas usiąść dopiero w przyszłym tygodniu, a konkretniej jak zrobie WPAM bo mam termin na 22 a jeszcze nie zacząłem.

solitaire commented 10 years ago

Udało mi się poprawić połowicznie - teraz obliczony koszt, jest zgodny z tym co otrzyma się licząc wyrównane sekwencje. Pozostało mi zdiagnozowanie, dlaczego w tym przypadku nie działa algorytm rekurencyjny.

mklew commented 10 years ago

Dobra robota. Chyba wiem co jest źle.

def putToMatrix(i: Int, j: Int, k: Int, data: (Int, Moves)) = alignments += (((i, j, k), data))
      if (i == 0 || j == 0 || k == 0) {
        val costs: (Int, List[(sequences.Move, sequences.Move, sequences.Move)]) = marginalCosts(i, j, k, sm)
        alignments += (((i, j, k), costs))
        costs
      }

wydaje mi się, że jak dojdziemy tutaj do brzegu to za szybko zakończy się sekwencja ruchów. Jeśli i=2 j=0 k=0 to będzie tylko 1 ruch a powinny być więcej. Czujesz o co chodzi?

mklew commented 10 years ago

Powinienem jeszcze wkleić te marginalCosts bo tam jest właśnie robiona lista z ruchami zawierająca 1 ruch

mklew commented 10 years ago

To jest całkiem prawdopodobne, że to jest właśnie błąd, bo w wersji iteracyjnej ta metoda jest używana, ale z listy którą zwraca brany jest tylko head. A algorytm rekurencyjny działa tak że bierze to jako końcówkę czyli całość listy.

Daj znać czy to napisałem ma sens.

mklew commented 10 years ago

@solitaire Nom, miałem racje. Usiadłem teraz do tego na 10 minut i poprawiłem ;) Wszystkie testy przechodzą więc zamykam.