Metody bioinformatyki (MBI) projekt, dokumentacja końcowa Michał Kielak, Konrad Miziński 16 czerwca 2014 1 Temat projektu Badanie podobieństwa dwóch sekwencji - algorytm Smitha-Watermana z afiniczna funkcja kary za przerwę program demonstracyjny. 2 Dokumenty powiazane Metody bioinformatyki (MBI) projekt, dokumentacja wtępna (Kielak_Mizinski_mbi_dokumentacja_wstepna.pdf) Wyniki testów złożoności algorytmu (testy_zlozonosi.xls) 3 Zrealizowane funkcjonalności Zrealizowane zostały prawie wszystkie funkcjonalności opisane w projekcie wstępnym. Wyjatkiem było wykorzystanie tooltipów, które w celu zwiększenia przejrzystości interfejsu użytkownika, zostały zastapione programowo wyświetlanymi pop-up ami. 4 Wykorzystane narzędzia Zgodnie z założeniami aplikacja oparta została o szkielet aplikacyjny Object Ledge. Do konstrukcji widoku wykorzystany został zestaw narzędzi Dojo Toolkit w wersji 1.8.3. Do tworzenia testów jednostkowych oprócz standardowej biblioteki JUnit wykorzystano również bibliotekę Mockito. 5 Wyglad aplikacji 1
Rysunek 1: Formularz z parametrami algorytmu Rysunek 2: Algorytm w trakcie wykonywania 2
Rysunek 3: Widok aplikacji po zakończeniu algorytmu 3
6 Wymagania jakościowe Kod został poddany walidacji narzędziem sonar w wersji 3.4.1 z wykorzystaniem profilu Sonar way. Wyniki walidacji zostały zamieszczone na końcu dokumentu. Z kodu usunięta została większość naruszeń. Pozostały jedynie dwa na poziomie major. Sa one jednak zwiazane ze specyfika wykorzystanego szkieletu aplikacyjnego i nie moga zostać usunięte. Zgodnie z założeniami kod aplikacji został umieszczony w publicznym repozytorium github. Zalecana przegladark a jest Firefox w wersji 23.0, na której było testowane działanie programu. Pokrycie testami rzędu 60% wynika ze stosunkowo dużej ilości kodu odpowiedzialnego za realizację mechanizmu MVC oraz dostosowujacego moduł Ledge Security do wymagań aplikacji. Pokrycie testami samego modelu aplikacji wynosi ponad 90% (Patrz rysunek 4 - Pokrycie kodu testami z podziałem na pakiety). Rysunek 4: Pokrycie kodu testami z podziałem na pakiety 4
Rysunek 5: Wynik walidacji w programie sonar
7 Badanie złożoności algorytmu Oczekiwana złożoność (zarówno obliczeniowa jak i pamięciowa) algorytmu Smitha - Watermana wynosi O(n m), gdzie n i m oznaczaja długości porównywanych sekwencji. W przypadku gdy obie sekwencje maja porównywalna długość wzór ten można uprościć do postaci: O(n 2 ). Eksperyment majacy na celu zbadanie złożoności polegał na uruchomianiu algorytmu dla wartości n=10, 20,30 itd... Podczas każdorazowego wykonania mierzony był jego czas (w milisekundach) oraz zużycie pamięci (jako liczba elementów tablicy zawierajacej wartości funkcji dopasowania). Wyniki pomiarów czasu wykonania zostały zaznaczone na wykresach 6, 7 i 8 niebieska linia. Linia czerwona oznaczona została aproksymacja otrzymanych wyników do funkcji kwadratowej. Dla dużych długości sekwencji (n>14000) obserwujemy coraz większe wahania funkcji złożoności, a następnie (dla n>1800) jej nieproporcjonalnie duży przyrost. Zjawiska te należy tłumaczyć rosnacym wpływem Garbage Collectora na czas wykonywania algorytmu oraz ograniczeniami czysto sprzętowymi (takimi jak ilość dostępnej pamięci operacyjnej). Zużycie pamięci pokazane zostało na rysunku 9. Otrzymane wyniki potwierdzaja złożoność obliczeniowa i pamięciowa sugerowana poprzez teoretyczna analizę algorytmu. Pełne zestawienie wyników znajduje się w arkuszu testy_zlozonosci.xls. Rysunek 6: Czasy wykonania (n<2000) 6
Rysunek 7: Czasy wykonania (n<14000) Rysunek 8: Czasy wykonania (Pełen pomiar) 7
Rysunek 9: Zużycie pamięci 8