Przegladarka genomów z funkcja wydajnego dopasowania sekwencji

Wielkość: px
Rozpocząć pokaz od strony:

Download "Przegladarka genomów z funkcja wydajnego dopasowania sekwencji"

Transkrypt

1 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki Rok akademicki 2012/2013 Praca dyplomowa magisterska Piotr Róż Przegladarka genomów z funkcja wydajnego dopasowania sekwencji Opiekun pracy: dr inż. Robert Nowak Ocena Podpis Przewodniczacego Komisji Egzaminu Dyplomowego

2 Specjalność: Informatyka Inżynieria Systemów Informatycznych Data urodzenia: 4 stycznia 1989 r. Data rozpoczęcia studiów: 20 luty 2012 r. Życiorys Nazywam się Piotr Róż. Urodziłem się 4 stycznia 1989 roku w Ciechanowie. Ukończyłem I Liceum Ogólnokształcace im. Zygmunta Krasińskiego w Ciechanowie o profilu matematyczno-informatycznym z rozszerzonym programem fizyki. W październiku 2008 roku rozpoczałem studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej na kierunku Informatyka. W lutym 2012 roku z wynikiem bardzo dobrym obroniłem pracę inżynierska na temat: Automatyczne odtwarzanie klas na podstawie struktur drugorzędowych RNA. Bezpośrednim efektem tej pracy było wytworzenie aplikacji RNA Secondary Structure Classification do automatycznego klasyfikowania struktur drugorzędowych RNA.... podpis studenta Egzamin dyplomowy Złożył egzamin dyplomowy w dn.... Z wynikiem... Ogólny wynik studiów... Dodatkowe wnioski i uwagi Komisji......

3 Streszczenie Niniejsza praca ma na celu zbadanie nowych sposobów przechowywania genomów organizmów. Badania te powinny poprawić wydajność przegladania oraz przeszukiwania danych genetycznych. Utworzona została aplikacja w architekturze klient-serwer wykorzystujaca zaproponowane algorytmy przeszukiwania sekwencji. Oprogramowanie zostało wykorzystane przez zespół z Katedry Genetyki, Hodowli i Biotechnologii Roślin Szkoły Głównej Gospodarstwa Wiejskiego w Warszawie, którzy posiadaja dane genetyczne ogórka północnoeuropejskiego. Pełna dostępność i łatwość operowania uzyskanymi danymi jest kluczowym elementem do wykorzystania tych informacji w dalszych etapach. W celu poznania szczegółów konieczne jest posiadanie odpowiedniego narzędzia do wizualizacji genów, markerów oraz innych charakterystycznych struktur, takich jak: kontigi, skafoldy oraz chromosomy. Narzędzie Web Omics Viewer (WOV), o którym mowa w poniższej pracy, ma za zadanie w łatwy, przejrzysty i intuicyjny sposób zaprezentować użytkownikowi bazę danych genomu oraz umożliwić jej administrację. Słowa kluczowe: chromosom, skafold, kontig, genom, nukleotyd, dna, genotyp, przegladarka genomu, drzewo przedziałowe, dopasowanie sekwencji, przyrównanie sekwencji, blast, smith-waterman, knuth-morris-pratt, boyer-moore, django, flex. Abstract Title: Genome browser with efficiently sequence alignment functionality. The purpose of this thesis is to present a new bioinformatics tools that will enable more efficient and easier browsing and searching the genomes of different organisms. Software is a response to needs of the team of researchers from the Warsaw School of Life Sciences that sequenced the genome of the northern European cucumber. Full availability and easiness of operating the obtained data is the most important element to use this informations in further steps. For more details, it is necessary to have an appropriate tool for the visualization of genes, markers, and other specific structures, such as contgis, scaffolds and chromosomes. The Web Omics Viewer (WOV) allows the user to easily, clearly and intuitively browse genome database and allow the user for the effective administration of the collected data. Key words: chromosome, scaffold, contig, genome, nucleotide, dna, genotype, genome viewer, genome browser, interval tree, sequence alignment, blast, smith-waterman, knuth-morris-pratt, boyer-moore, django, flex.

4 Spis treści 1. Wstęp Wprowadzenie Cel pracy Zawartość merytoryczna Przechowywanie i przetwarzanie danych o genomie Biologiczny zarys problemu Problemy badania podobieństw dwóch sekwencji Homologia a podobieństwo Podobieństwo globalne i lokalne Funkcja kary za przerwy Metoda macierzy kropkowej Metoda programowania dynamicznego Wyszukiwanie sekwencji podobnych w bazach danych Algorytmy wyszukiwania sekwencji podobnych Algorytm Smitha-Watermana Algorytm BLAST BLAST + Smith-Waterman Algorytm Knutha-Morrisa-Pratha Algorytm Boyera-Moore a Podsumowanie Projekt i implementacja aplikacji przegladarki genomów Miejsce aplikacji wśród innych narzędzi Architektura Statystyki projektu Interfejs serwera Moduł algorithm Moduł chromosome Moduł contig Moduł marker Moduł scaffold Pozostałe moduły Model danych Biblioteka obliczeniowa Algorytm Smitha-Watermana Algorytm BLAST Algorytm Knutha-Morrisa-Pratha Algorytm Boyera-Moore a Optymalizacja dostępu do danych genomowych Instrukcja użytkowania Oprogramowanie oraz biblioteki Plik konfiguracyjny Kompilacja źródeł Uruchomienie aplikacji Import/eksport danych Testy aplikacji

5 Spis treści ii Elementy interfejsu użytkownika Uruchomienie aplikacji dla genomu ogórka oraz badania Analiza źródła danych Algorytm Knutha-Morrisa-Pratta Analiza algorytmów wyszukiwania w zależności od sekwencji przeszukiwanej Analiza algorytmów wyszukiwania w zależności od długości sekwencji wzorcowej Porównanie algorytmów Smitha-Watermana oraz BLAST Analiza algorytmu BLAST w zależności od wartości parametrów wejściowych Podsumowanie Podsumowanie Bibliografia

6 1. Wstęp 1.1. Wprowadzenie Poniższa praca została wykonana we współpracy z Katedra Genetyki, Hodowli i Biotechnologii Roślin Szkoły Głównej Gospodarstwa Wiejskiego w Warszawie. Jest ona odpowiedzia na zapotrzebowanie naukowców z SGGW na oprogramowanie do wizualizowania genomu ogórka, który został przez nich zsekwencjonowany. Aplikacja ta jest niezbędna do przeprowadzenia dalszych analiz oraz badań nad otrzymanym genomem i stanowi podstawę do wytworzenia oprogramowania do wizualizacji innych, dodatkowych struktur powiazanych z procesami poznawczymi genomów różnych organizmów Cel pracy Celem pracy były badania różnych metod reprezentacji danych zwiazanych z genomem. Następnie po wybraniu rozwiazania optymalnego zaprojektowano i dostarczono stosowne oprogramowanie. Wykorzystano je dla rzeczywistych danych opisujacych genom ogórka północnoeuropejskiego (2 odczyty, oraz nukleotydów). Bezpośrednim efektem przeprowadzonych prac jest wytworzenie oprogramowania do zarzadzania genomami organizmów, w szczególności genomem ogórka północnoeuropejskiego. Jest on dość charakterystyczny ze względu na swoja nieregularna strukturę zawierajac a wiele przerw o nieznanej sekwencji. Z tego właśnie powodu żadna z powszechnie dostępnych aplikacji nie może zostać wykorzystana do jego zwizualizowania. Istotna funkcjonalnościa aplikacji, która ma szczególne zastosowanie przy dopasowaniu nieznanych fragmentów sekwencji genomu ogórka, sa zaimplementowane algorytmy przyrównywania sekwencji nukleotydowych oraz algorytmy wyszukiwania wzorców. Użytkownik korzystajacy z aplikacji ma możliwość wyboru jednej z czterech metod porównania ciagów znakowych: Knutha-Morrisa-Pratta; Boyera-Moore a; Smitha-Watermana; BLAST. Prace implementacyjne poprzedziło wiele analiz dostarczonych danych genetycznych. Jednym z ważniejszych zadań było uporzadkowanie tych danych oraz ich zorganizowanie w logicznej, a przede wszystkim pozbawionej błędów formie. Badawcza część pracy polega na analizie porównawczej wymienionych powyżej algorytmów. Sprawdzeniu podlegaja czasy ich wykonania dla różnych wzorców oraz sekwencji przeszukiwanych, czasy budowania pomocniczych struktur oraz wpływ parametrów wejściowych na ich działanie.

7 1.3. Zawartość merytoryczna Zawartość merytoryczna W rozdziale 2 zostały poruszone teoretyczne aspekty przetwarzania danych o genomie, rozpoczynajac od nakreślenia biologicznych podstaw omawianego tematu, kończac zaś na próbie zanalizowania problemu badania podobieństw dwóch sekwencji. Rozdział 3 został w całości poświęcony wytworzonemu w ramach pracy oprogramowaniu - przegladarce genomu organizmów. Zawiera on zarówno opis architektury, sposoby kompilacji, uruchamiania oraz testowania, jak również instrukcję użytkowania w postaci opisu kolejnych okien wraz ze zrzutami ekranu. Rozdział 4 przedstawia przeprowadzone badania oraz analizy każdego z zaimplementowanych algorytmów. Rozdział 5 jest podsumowaniem pracy.

8 2. Przechowywanie i przetwarzanie danych o genomie 2.1. Biologiczny zarys problemu W ostatnich latach gwałtownie wzrosła liczba całkowicie zsekwencjonowanych genomów prokariotycznych oraz eukariotycznych. Proces ten prowadzi do powstawania coraz większych biologicznych baz danych oraz wprowadza konieczność ich uporzadkowania oraz wydajnego przetwarzania. Biologia wieku XX, będaca nauka czysto eksperymentalna, na poczatku wieku XXI przekształciła się w dziedzinę wykorzystujac a w swoich badaniach wszelkie możliwości, jakie daje informatyka. Wytworzona podczas prac eksperymentalnych ogromna wiedza musi zostać zanalizowana, aby można było wyciagn ać z niej jakieś hipotezy czy rozpoczać bardziej szczegółowe badania oraz eksperymenty. Przełomowym momentem w pracach wszystkich bioinformatyków, który z pewnościa wytyczył kierunek przyszłych badań i analiz, było odkrycie na poczatku tego stulecia pełnego zsekwencjonowanego genomu człowieka. Projekt HUGO (ang. Human Genome Project), o którym mowa w poprzednim zdaniu doprowadził do poznania ludzkiego genomu zawierajacego 3.3 Gbp (giga par zasad) oraz około 30 tys. genów. Wciaż jednak trwaja prace nad analiza odkrytych sekwencji, nad funkcjami poszczególnych genów. Genom człowieka dostępny jest publicznie w sieci Internet. Udostępnione sa również wszelkie narzędzia umożliwiajace podstawowa jego analizę. Metody prowadzace do poznania genomu z roku na rok staja się co raz szybsze oraz tańsze, co zwiększa zainteresowanie ze strony biologów (i nie tylko) na uzyskiwanie kolejnych odczytów. Historycznym sposobem poznania sekwencji jest metoda Sangera, opracowana w 1977 roku, polegajaca na syntezie DNA przez polimerazę DNA in vitro. Współcześnie w celu odkrycia sekwencji stosuje się między innymi jej zautomatyzowana wersję. Nowoczesne aparaty sa w stanie pracować z szybkościa kilku milionów par zasad na godzinę, zaś tranzystory polowe DNA umożliwiaja odczyt w czasie rzeczywistym. Organizacja X PRIZE Foundation w 2006 roku ogłosiła konkurs Archon Genomics X PRIZE. Nagroda w wysokości 10 mln dolarów zostanie przyznana temu, kto w ciagu 10 dni będzie w stanie zsekwencjonować 100 genomów ludzkich. Należy podkreślić w tym miejscu, że pierwsze sekwencjonowanie genomu człowieka zajęło ponad 10 lat. Metody rozwojowe, które maja szanse w przyszłości zwiększyć wydajność odczytów, opieraja się na pirosekwencjonowaniu oraz bezpośrednich odczytach. Podczas analizy budowy poszczególnych chromosomów organizmów istotnym elementem jest zbudowanie prawidłowych map genomów, czyli położenia poszczególnych genów na chromosomie. Wyróżniamy dwa rodzaje metod mapowania: genetyczne oraz fizyczne. Mapy genetyczne, które wytwarzane sa na podstawie

9 2.2. Problemy badania podobieństw dwóch sekwencji 4 analizy sprzężeń genetycznych, maja za zadanie rozmieścić w odpowiedniej kolejności oraz z zachowaniem odpowiednich genetycznych odległości, geny oraz inne charakterystyczne sekwencje (markery) w genomie. Jednostka map genetycznych jest 1 cm, czyli procent rekombinacji. Przy konstruowaniu map genetycznych, do określenia pozycji poszczególnych struktur, wykorzystuje się tzw. markery DNA, czyli niepowtarzalne fragmenty DNA o unikalnej sekwencji nukleotydów. Długość markerów kształtuje się zazwyczaj na poziomie od 300 do 400 reszt. Mapy fizyczne zaś przedstawiaja bezpośrednie rozmieszczenie różnych struktur DNA w genomie. Konstruowane sa przy wykorzystaniu technik biologii molekularnej. W przypadku tych map stosuje się jednostki bp, czyli para zasad Problemy badania podobieństw dwóch sekwencji Podobieństwo jest pojęciem bardzo istotnym podczas analizy danych biologicznych, jednak definicja tego słowa nie jest do końca jednoznaczna i precyzyjna. Przykłady stanowia pary słów wykorzystywanych w życiu codziennym: taczka - paczka oraz worek - korek, które różnia się wyłacznie jedna litera, jednak oznaczaja dwie zupełnie różne rzeczy. Z drugiej strony istnieja słowa takie jak auto oraz samochód, których pisownia jest drastycznie różna, mimo wszystko słowa te oznaczaja tę sama rzecz. W przypadku analizowanych w niniejszej pracy metod porównywania sekwencji nukleotydowych podobieństwo rozumiane jest jako stopień, w którym podobne sa do siebie kolejne nukleotydy badanych ciagów. Podobieństwo takie może prowadzić, w przypadku wysokiego jego prawdopodobieństwa, do próby wysnucia teorii o homologii badanych sekwencji, o powiazaniu podobieństwa ich budowy i funkcji, czyli określeniu znaczenia, tak jak ma to miejsce w przypadku zwykłych słów przytoczonych wcześniej. Możliwość zbadania podobieństwa wzorcowej sekwencji do zawartości całej bazy danych jest jednym z podstawowych narzędzi w rękach bioinformatyków. Wzrost szybkości działania oraz spadek złożoności algorytmów porównywania sekwencji nukleotydowych, rozwój technologii, wzrost szybkości działania komputerów oraz dynamiczny rozrost biologicznych baz danych daja możliwości co raz dokładniejszego badania otrzymanych sekwencji. Dzięki odkryciu odpowiednich podobieństw między badanymi sekwencjami, naukowcy potrafia poznać funkcje nowo sekwencjonowanych fragmentów genów, odnaleźć powiazania ewolucyjne między nimi oraz innymi dostępnymi genami. Celem, do którego sprowadzaja się wszystkie badania prowadzone nad zsekwencjonowanymi genami jest zrozumienie relacji ewolucyjnych. Większość metod dopasowania stara się w sposób jednoznaczny wymodelować molekularne mechanizmy ewolucji sekwencji. Przyjmujac założenia, że sekwencje wychodzace od wspólnego przodka uległy znacznej dywergencji poprzez iteracyjne zmiany na poziomie molekularnym, nie mamy w tym momencie wiedzy na temat sekwencji źródłowej (pierwotnej). Zmiany, które doprowadziły do dywergencji można podzielić na trzy grupy: insercje, delecje oraz substytucje. W wyniku obserwacji dopasowań sekwencji, jeżeli dwie z nich sa do siebie na odpowiednim poziomie podobne, możemy wnioskować o ich wspólnych ewolucyjnym pochodzeniu, co prowadzić może do konkluzji na temat ich wspólnych funkcji biologicznych. Oczywista kwestia jest, że w procesie ewolucji sekwencje pochodzace od wspólnego przodka mogły ulec tak

10 2.2. Problemy badania podobieństw dwóch sekwencji 5 znacznej dywergencji, że na poziomie sekwencyjnym odkrycie ich homologii jest wręcz niemożliwe Homologia a podobieństwo Ważnym pojęciem podczas procesu analizowania podobieństwa sekwencji jest ich homologia. Przy czym istotnym jest zrozumienie różnicy między homologia dwóch sekwencji, a wyłacznie ich podobieństwem. Homologia jest terminem jakościowym, określajacym fakt pochodzenia dwóch genów lub kodowanych przez nie białek od wspólnego ewolucyjnego przodka. Pokrewnym, jednak delikatnie innym pojęciem jest podobieństwo sekwencji, rozumiane jako procentowy stopień bezpośredniej obserwacji dopasowania dwóch sekwencji. Z odpowiednio dużego podobieństwa sekwencji możemy wysnuć wniosek o ich ewentualnej homologii, czyli pokrewieństwie ewolucyjnym. W procesie badawczym, nie zawsze wiadomo, przy jakiej wartości podobieństwa sekwencji możemy rozpoczać wnioskowanie o ich homologii. Przy badaniu homologii, nie bez powodu brana jest również pod uwagę długość dopasowanych sekwencji. Im jest ona dłuższa, a stopień podobieństwa odpowiednio duży, tym mniejsze jest wtedy prawdopodobieństwo otrzymania przypadkowego przyrównania. Z drugiej strony jeżeli sekwencje wykazuja duże podobieństwo, jednak ich długość dopasowania jest krótka, nie możemy mieć pewności czy nie nastapiło przypadkowe dopasowanie. W przypadku rozpatrywanych przeze mnie sekwencji nukleotydowych istnieje dodatkowo zwiększone prawdopodobieństwo przypadkowego dopasowania, z racji tego, że sekwencje DNA składaja się wyłacznie z 4 nukleotydów. Wykres przedstawia przykładowe strefy przyrównań sekwencji nukleotydowych. Te, których stopień identyczności znajduje się w strefie bezpiecznej, moga być ze soba homologiczne. Obecność w strefie cienia oznacza, że homologia nie jest pewna. Identyczność sekwencji poniżej poziomu określonego przerywana linia, nazywana strefa ciemności, nie pozwala określić relacji homologicznych między rozpatrywanymi sekwencjami. Należy jednak zauważyć, że procentowe wartości podobieństwa sekwencji nie sa wystarczajace do wysnucia teorii o ich homologii. Moga być to wyłacznie wskazówki do dalszego rozpatrywania Podobieństwo globalne i lokalne Podczas badania stopnia podobieństwa sekwencji można je rozpatrywać w dwojaki sposób. Pierwsze z podejść zakłada, że sekwencje sa ze soba blisko spokrewnione, a ich długość jest zbliżona, ponieważ sa one przyrównywane na całej długości (co nie oznacza, że na końcach sekwencji nie moga znajdować się przerwy). Taki sposób badania dopasowań znany jest jako podobieństwo globalne. Jego przeciwieństwem jest dopasowanie lokalne, które przyrównuje fragmenty sekwencji, które wykazuja największe podobieństwo, pomijajac te odcinki sekwencji, których nie można do siebie dopasować. Przy zastosowaniu podobieństwa lokalnego możemy uzyskać wiele możliwych dopasowań. Lokalne przyrównanie wykorzystywane jest przy sekwencjach, które znacznie różnia się długościa. Znajduje ono również zastosowanie przy poszukiwaniu podobnych, konserwatywnych regionów w ramach sekwencji, np: modułów, domen, czy motywów. Przeznaczenie dopasowania lokalnego ma również większy sens, aniżeli globalnego, w przypadku badania sekwencji, które uległy znacznej dywergencji. Jest ona procesem rozszczepienia gatunku na dwa lub więcej, z których każdy, w sposób naturalny, przystosowuje się

11 2.2. Problemy badania podobieństw dwóch sekwencji Stopień podobieństwa sekwencji [%] strefa cienia strefa ciemności strefa bezpieczna Długość sekwencji Rysunek 2.1. Wykres przedstawiajacy strefy przyrównań sekwencji nukleotydowych. Wzorowany na rysunku z ksiażki [21]. do panujacych, odmiennych warunków życia. Na rysunku zostało przedstawione globalne oraz lokalne przyrównywanych sekwencji, obrazujace odpowiednie przerwy w dopasowaniach. Dopasowanie globalne A B B A Dopasowanie lokalne A B A B Rysunek 2.2. Zilustrowanie globalnego oraz lokalnego przyrównania dopasowań.

12 2.2. Problemy badania podobieństw dwóch sekwencji Funkcja kary za przerwy Nieodzownym elementem badania podobieństw sekwencji jest odpowiedni dobór wielkości przerw, które w sposób jak najbardziej prawdopodobny próbuja uwzględnić, majace miejsce podczas ewolucji, operacje insercji oraz delecji. Istnienie zbyt dużej ilości tych przerw spowodowałoby wprowadzenie zbyt intensywnych, odbiegajacych od rzeczywistości lub bardzo mało prawdopodobnych zmian molekularnych. Znanych jest wiele strategii obliczania kary za niedopasowanie: od zwykłej liniowej funkcji, przez najpowszechniej używana - afiniczna, skończywszy na funkcji wypukłej. Pierwszym rodzajem funkcji kary za przerwy jest jej liniowa postać zgodna z poniższym wzorem: W (l) = g l (2.1) gdzie g oznacza karę za jeden znak, zaś l jest długościa przerwy. Istotne pytanie, które w tym momencie nasuwa się na myśl jest następujace: czy istnieje różnica między kosztem otwarcia nowej przerwy, a kosztem poszerzenia już istniejacej? W rzeczywistości przerwa obejmujaca trzy reszty może nie być trzykrotnie mniej prawdopodobna niż przerwa o jednostkowej długości. Należy zatem oczekiwać, że wykres funkcji kary za przerwy będzie cechować się gwałtownym wzrostem na poczatku, ponieważ samo pojawienie się przerwy w dopasowaniu jest wynikiem mało prawdopodobnego zdarzenia w ewolucji. Wydłużanie lub skracanie istniejacej przerwy odpowiada jednak zdarzeniu, które jest bardziej prawdopodobne i dlatego wartość kary powinna w mniejszym stopniu zależeć od długości. Rozumowanie takie ma sens, ponieważ insercje i delecje zdarzaja się rzadko, jednak jeżeli już się pojawia, dotycza od kilku do kilkudziesięciu kolejnych pozycji. Rozróżnienie między otwarciem nowej przerwy, a poszerzeniem już istniejacej wprowadza tzw. afiniczna funkcja kary, której postać przedstawiono na poniższym wzorze: W (l) = g open + g ext (l 1) (2.2) gdzie g open oznacza oczywiście karę za wprowadzenie przerwy, zaś g ext jest wartościa jednostkowego wydłużenia już istniejacej. Zakłada się oczywiście, że wartość g ext będzie znacznie mniejsza od wartości g open. Wykres przedstawia w sposób wizualny charakterystyki opisanych powyżej funkcji kar za niedopasowanie.

13 2.3. Metoda macierzy kropkowej 8 Rysunek 2.3. Wykres przedstawiajacy różnicę w wartości kary za brak dopasowania dwóch sekwencji w zależności od długości przerwy. Wykorzystanie wypukłej nieliniowej funkcji kary za przerwy prowadzi do algorytmu o złożoności sześciennej i nie jest często stosowane Metoda macierzy kropkowej Pierwsza, podstawowa metoda przyrównywania sekwencji jest metoda macierzy kropkowej (ang. dot plot). W graficzny sposób dokonuje ona porównania dwóch sekwencji w dwuwymiarowej macierzy. Wzdłuż krawędzi pionowej oraz poziomej umieszczone sa rozpatrywane ciagi nukleotydów. Macierz analizowana jest rzędami, każda reszta pierwszej sekwencji porównywana jest do poszczególnych reszt drugiej sekwencji. Jeżeli reszty sa zgodne, w danej komórce macierzy umieszczana jest kropka. W przeciwnym wypadku pozycja w macierzy pozostaje pusta. W przypadku, gdy dwie sekwencje sa do siebie podobne (zawieraja liczne podobne regiony) to na macierzy widoczne sa ciagłe, ukośne linie, które sa bezpośrednim obrazem przyrównania sekwencji. Przerwy w ciagłości linii świadcza o wystapieniu insercji, badź delecji, zaś równoległe ukośne linie odzwierciedlaja regiony, które zawieraja powtórzenia sekwencji. Wynik działania algorytmu opartego na metodzie macierzy kropkowej został przedstawiony na rysunku 2.3.

14 2.3. Metoda macierzy kropkowej 9 Rysunek 2.4. Wynik działania metody macierzy kropkowej. Metoda ta ma jednak duża wadę - wysoki poziom szumu. W większości macierzy kropkowych, kropki pojawiaja się na całym wykresie, co znacznie utrudnia prawidłowa identyfikację poprawnego przyrównania. Problem ten ma szczególnie zły wpływ na analizowanie sekwencji nukleotydowych DNA, ponieważ sekwencja tego kwasu posiada wyłacznie cztery różne nukleotydy, dlatego dla każdej z reszt pierwszej sekwencji prawdopodobieństwo przypadkowego dopasowania z nukleotydem drugiej sekwencji wynosi 25%. Pomimo tak dużego problemu, metoda macierzy kropkowej ma wiele zastosowań. Przykładem może być możliwość znalezienia za jej pomoca najbardziej podobnych regionów w ramach jednej sekwencji - powtarzalnych fragmentów. W przypadku analizy takiego przyrównania, na głównej przekatnej widoczna jest ciagła linia odpowiadajaca dokładnemu przyrównaniu sekwencji do samej siebie. W momencie, gdy sekwencja ta posiada powtarzalne fragmenty, na wykresie widoczne sa krótkie, ukośne linie, znajdujace się powyżej lub poniżej głównej przekatnej. Kolejne zastosowanie metody macierzy kropkowej zwiazane jest z wykrywaniem komplementarnych do siebie odwróconych powtórzeń (ang. inverter repeats), na przykład podczas wykrywania trzonów tzw. struktur spinek do włosów (podczas analizy struktury drugorzędowej DNA). W tym przypadku sekwencja porównywana jest z odwrócona, komplementarna do niej sekwencja, zaś pojawiajace się na wykresie ukośne linie świadcza o wystapieniu odwróconych powtórzeń.

15 2.4. Metoda programowania dynamicznego Metoda programowania dynamicznego Druga ze znanych metod badania podobieństw sekwencji jest metoda programowania dynamicznego, należaca do grupy procedur wyczerpujacych. Cechuje się ona wyznaczeniem optymalnego przyrównania dwóch sekwencji uzyskanego dzięki analizie wszystkich możliwych kombinacji dopasowania par ich reszt. Jest ona analogiczna do poprzednio opisywanej metody macierzy kropkowej ze względu na obecność tworzenia i analizowania dwuwymiarowego obrazu przyrównania, z ta różnica, że w metodzie programowania dynamicznego optymalne podobieństwo znajduje się w sposób bardziej ilościowy, analizujac macierz zawierajac a w komórkach wartości ocen dopasowania, aniżeli informację o dopasowaniu (lub nie) wyłacznie aktualnej pary reszt. Podobnie jak w metodzie macierzy kropkowej również tutaj uzyskiwane wartości punktacji zliczane sa rzędami. Procedura algorytmu rozpoczyna się od porównania pierwszej reszty jednej sekwencji z każda reszta drugiej sekwencji. Podczas analizy danej komórki macierzy jej wartość wyznaczana jest zgodnie z rysunkiem 2.4. Wartość w komórce oznaczonej litera A jest maksymalna wartościa oceny pobranej z jednej z trzech komórek: X, Y, Z, do której dodawana jest wartość aktualnego dopasowania lub odejmowana jest wartość kary za wystapienie przerwy. Po wypełnieniu wszystkich komórek w macierzy dopasowania określa się najlepsze przyrównanie. W zależności od implementowanego algorytmu proces odczytywania najlepszej ścieżki rozpoczyna się w prawym dolnym rogu macierzy, badź od komórki z najwyższa ocena wartości dopasowania. Następnie ma miejsce proces cofania się przyrostowego po ścieżce, która spowodowała dojście do wartości w danej komórce. Jeżeli podczas wyznaczania oceny w komórce, najwyższa wartość uzyskaliśmy przemieszczajac się pionowo lub poziomo, w danym miejscu symbolizuje to wprowadzenie przerwy, czyli wystapienia insercji lub delecji w jednej z analizowanych sekwencji. Przykładami najczęściej używanych i najwydajniejszych algorytmów wykorzystujacych metodę programowania dynamicznego sa: algorytm Needlemana - Wunscha opierajacy się na podobieństwie globalnym; algorytm Smitha - Watermana badajacy podobieństwo lokalne (zaimplementowany w ramach poniższej pracy). X Y + dopasowanie - kara za przerwy Z - kara za przerwy Rysunek 2.5. Sposób obliczania wartości w komórce macierzy wykorzystywanej w metodzie programowania dynamicznego. A

16 2.5. Wyszukiwanie sekwencji podobnych w bazach danych Wyszukiwanie sekwencji podobnych w bazach danych Dwie powyżej opisane metody skupiały się na dopasowaniu par sekwencji. Jednak w przypadku próby poznania funkcji nowej sekwencji nie ma możliwości wyznaczenia wyłacznie jednej lub kilku sekwencji i zbadaniu podobieństwa między nimi, a nowa sekwencja. Najważniejszym zastosowaniem algorytmów przyrównania sekwencji parami jest możliwość przeszukania ogromnych zbiorów sekwencji zgromadzonych w bazach danych, właśnie na podstawie zbadania podobieństwa. Analizy te pozwalaja określić, które spośród dziesiatek tysięcy zgromadzonych w bazie sekwencji moga być potencjalnie spokrewnione z nowa sekwencja, która otrzymaliśmy. W takich przypadkach stosuje się dwa różne typy algorytmów. Pierwszym z nich jest algorytm wyczerpujacy, który w celu znalezienia najlepszego oraz dokładnego rozwiazania danego problemu drobiazgowo sprawdza wszystkie kombinacje matematyczne. Przykładem metody wyczerpujacej jest bardzo wymagajace programowanie dynamiczne. To właśnie powolność, a co za tym idzie niepraktyczność algorytmów wyczerpujacych spowodowała potrzebę wprowadzenia drugiego rodzaju algorytmów - zastosowania metod heurystycznych. Metody te znaczaco skracaja czas obliczeń, redukujac zgodnie z przyjętymi kryteriami przeszukiwana przestrzeń - zbiór sekwencji. Podczas analizy bazy danych pod katem wyszukiwania sekwencji najbardziej podobnej do zadanego wzorca, należy zwrócić uwagę na spełnienie przez algorytmy poszczególnych kryteriów. Można wyróżnić trzy główny wyznaczniki, których realizacja w odpowiednim stopniu jest wymagana: czułość - zdolność algorytmu do znalezienia maksymalnej liczby najlepiej dopasowanych sekwencji; selektywność - zdolność wykluczania błędnie, przypadkowo zidentyfikowanych (niespokrewnionych) sekwencji jako tych najbardziej podobnych; szybkość - czas potrzebny na wykonanie algorytmu i uzyskanie wyników dopasowania. Oczywista rzecza jest maksymalizacja każdego z wyżej wymienionych kryteriów, jednak jest to sytuacja mało prawdopodobna w rzeczywistości. Zazwyczaj wraz ze wzrostem czułości wiaże się spadek szybkości działania i selektywności. Identycznie ma się rzecz w druga stronę, wraz ze wzrostem szybkości działania algorytmu, spada jego czułość, poprawność identyfikowania. Strategia metody heurystycznej polega na ograniczeniu zbioru poprzez odrzucenie sekwencji, które wykazuja szczatkowe podobieństwo z wzorcowym ciagiem nukleotydów. Dwoma najbardziej rozpowszechnionymi algorytmami heurystycznymi sa FASTA oraz BLAST (zaimplementowany w ramach poniższej pracy) Algorytmy wyszukiwania sekwencji podobnych W ramach poniższej pracy zostały zaimplementowane cztery algorytmy wyznaczania dopasowań dwóch sekwencji znakowych. Sa one przedstawicielami trzech różnych metod porównywania tekstów. Pierwszy z algorytmów, Smitha-Watermana, jest reprezentantem metod programowania dynamicznego.

17 2.6. Algorytmy wyszukiwania sekwencji podobnych 12 Jego działanie opiera się na wyznaczeniu dwuwymiarowego obrazu przyrównania badanych sekwencji w postaci macierzy ocen dopasowania. Kolejnym narzędziem, które zostało zaimplementowane jest algorytm BLAST z rodziny metod heurystycznych. Stosujac pewne założenia ogranicza on przestrzeń przeszukiwanych sekwencji w bazie danych. Ostatnie dwa algorytmy: Knutha-Morrisa-Pratta oraz Boyera-Moore a, tym różnia się od pozostałych dwóch, że sa one odpowiedzialne za wyszukanie w zadanej sekwencji podanego wzorca tekstowego. Nie badaja one zatem podobieństwa sekwencji, tylko wyszukuja pozycje, na których znajduje się zadany ciag znaków. Z punktu widzenia biologii, nie uwzględniaja one przerw, więc pomijaja zjawiska insercji oraz delecji. Poniżej znajduja się opisy tych algorytmów zaś w rozdziale 3.6 została przedstawiona biblioteka obliczeniowa wraz z opisem praktycznym tych algorytmów Algorytm Smitha-Watermana Algorytm T. F. Smitha oraz M. S. Watermana [18] należy do grupy algorytmów programowania dynamicznego, lokalnego dopasowania dwóch sekwencji nukleotydowych. Jako wynik działania odnajduje on zazwyczaj krótkie, jednak wykazujace bardzo duże podobieństwo fragmenty obydwu porównywanych sekwencji. Algorytm Smitha - Watermana cechuje się duża czułościa, dzięki czemu ma bardzo duże znaczenie praktyczne, jednak ze względu na duża złożoność obliczeniowa i pamięciowa nie może on być powszechnie stosowany. Warunki wstępne algorytmu wyznaczaja konieczność uzupełnienia zerami pierwszej kolumny oraz pierwszego wiersza macierzy ocen dopasowania. Kolejne komórki (H(i, j)) macierzy H uzupełniane sa zgodnie z poniższym wzorem: H(i 1, j 1) + S(a i, b j ) po przekatnej, H(i 1, j) W (l) w pionie, H(i, j) = max H(i, j 1) W (l) w poziomie, 0 zacznij nowe dopasowanie, (2.3) gdzie S(a i, b j ) jest ocena dopasowania reszt a i oraz b j, zaś W (l) jest wartościa oceny funkcji kary za przerwy o długości l znaków. Rozpatrzmy dwie sekwencji, których fragmenty widoczne sa na rysunku 2.6. Wartość oceny dopasowania reszt niech będzie równa 2, kara za brak dopasowania równa 1, zaś kara za przerwę w postaci funkcji liniowej niech wynosi 1. Wartość w szarej komórce na rysunku 2.7 została obliczona wg wzoru 2.3, jako maksimum z czterech wartości: 0 - jako przejście w pionie z uwzględnieniem kary za przerwę (1 1 = 0); 1 - jako przejście w poziomie z uwzględnieniem kary za przerwę (2 1 = 1); 1 - jako przejście po przekatnej z uwzględnieniem kary za brak dopasowania (2 1 = 1); 0 - jako ostatnia wartość w warunku 2.3.

18 2.6. Algorytmy wyszukiwania sekwencji podobnych 13 Rysunek 2.6. Pusta macierz dopasowań reszt algorytmu Smitha-Watermana. Rysunek 2.7. Częściowo wypełniona macierz dopasowań reszt algorytmu Smitha-Watermana.. Po wypełnieniu całej macierzy wartości ocen dopasowania należy odnaleźć komórkę o największej wartości i od niej rozpoczać odnajdywanie najlepszego dopasowania obydwu sekwencji, poprzez zastosowanie przyrostowego cofania się po ścieżce, która doprowadziła do docelowej komórki o maksymalnej wartości oceny. Proces cofania należy zakończyć po natrafieniu na komórkę, w której znajduje się wartość 0. Otrzymane w ten sposób dopasowanie jest przyrównaniem lokalnym o największej wartości oceny obydwu sekwencji Algorytm BLAST BLAST (Basic Local Alignment Search Tool), pomimo występowania w rozwinięciu skrótu słowa "podstawowy", jest wyrafinowanym oraz złożonym algorytmem przeszukiwania biologicznych baz danych sekwencji nukleotydowych. Od momentu powstania w 1990 roku stał się jednym z najważniejszych elementów wśród narzędzi bioinformatycznych. Jest on doceniany przede wszystkim ze względu na swoja szybkość działania w porównaniu do innych dostępnych rozwiazań. Mnogość sekwencji jest tak ogromna (a dodatkowo rośnie w zastraszajacym tempie), że prędkość działania algorytmów dopasowania sekwencji jest kluczowym elementem

19 2.6. Algorytmy wyszukiwania sekwencji podobnych 14 analizy danych. Kolejnym argumentem przemawiajacym za opisywanym narzędziem jest jego niezawodność, potwierdzona przez licznie przeprowadzone badania statystyczne oraz doświadczenia wykonane przez naukowców. Kolejna jego zaleta jest elastyczność, dzięki której istnieje możliwość dopasowania kolejnych jego kroków wykonania do zadanego scenariusza analizy sekwencji. Ciekawym zjawiskiem, które również udało mi się zaobserwować, jest fakt częstego używania przez bioinformatyków słowa blast w zastępstwie słów oznaczajacych dopasowanie, przyrównanie sekwencji. Algorytm BLAST pochodzi z National Center for Biotechnology Information (NCBI), jednak powstały jego różne implementacje, zarówno w instytucjach naukowych, jak również komercyjnych. Istnieje szereg odmian algorytmu BLAST w zależności od typu zadanej kwerendy oraz rodzaju przeszukiwanej bazy danych. Programy z grupy BLAST przedstawia tabela Tablica 2.1. Rodzaje algorytmów z grupy BLAST. Rodzaj algorytmu Kwerenda Baza danych BLASTP białko białko BLASTN nukleotydy nukleotydy BLASTX nukleotydy (tłumaczone na amninokwasy) białko TBLASTN białko nukleotydy (tłumaczone na amninokwasy) TBLASTX nukleotydy (tłumaczone na amninokwasy) nukleotydy (tłumaczone na amninokwasy) Poza wymienionymi w tabeli rodzajami algorytmów z grupy BLAST, można znaleźć dodatkowo liczne opakowania algorytmu, które uruchamiaja BLAST w specyficzny sposób, np: PSI-BLAST, MegaBLAST, PHI-BLAST, BLASTZ, MPBLAST, HT-BLAST i inne. Idea algorytmu BLASTN polega na 4, poniżej opisanych krokach: Inicjacja: podział analizowanej sekwencji na fragmenty o długości W (dla sekwencji nukleotydowych DNA domyślna wartość parametru W wynosi 11). Wyszukiwanie: wyszukanie w bazie danych rekordów, które zawieraja wyodrębnione w poprzednich punkcie słowa. Ocena: Liczona jest istotność każdego ze słów i na podstawie oceny usuwane sa odpowiednie rekordy. Rozszerzanie: Pozostawione słowa rozszerzane sa w celu znalezienia dłuższego przyrównania. Inicjacja Pierwszy z wykonywanych kroków polega na podziale analizowanej sekwencji na fragmenty o długości W.

20 2.6. Algorytmy wyszukiwania sekwencji podobnych 15 Wyszukiwanie Drugim zadaniem algorytmu BLASTN jest wyszukanie w całej bazie danych sekwencji, które zawieraja wybrane w czasie inicjacji fragmenty sekwencji wzorcowej. Ilość wystapień jest zliczana, ponieważ w kolejnym kroku posłuży ona za ustalenie istotności fragmentów. Ocena Obliczone w fazie wyszukiwania ilości wystapień fragmentów słowa wzorcowego posłuża w tym kroku do obliczenia oceny danego ciagu znaków. Jeżeli wyliczona ocena będzie mniejsza od zadanego parametru T, dane słowo nie będzie brane pod uwagę w dalszych krokach algorytmu. Ocena zaś rozumiana jest jako iloraz liczby wystapień danego podciagu słowa wzorcowego do liczby wystapień wszystkich fragmentów. Rozszerzanie Krok ten stanowi próbę wydłużenia znalezionych dopasowań zarówno w lewo jak i w prawo, do momentu aż maksymalne odchylenie wartości, oznaczajacej wartość aktualnej punktacji dopasowania, od maksymalnej dotad znanej pozycji będzie większa lub równa wartości parametru C algorytmu. Odpowiednia manipulacja parametrami algorytmu powoduje zwiększenie szybkości jego działania (zwiększenie wartości parametru W), badź jego dokładności (zmniejszenie wartości parametru W). Zalecana minimalna wartość parametru W wynosi BLAST + Smith-Waterman Celem zwiększenia wydajności działania algorytmu BLAST postanowiono o dodaniu dodatkowej funkcjonalności, która jest automatyczne uruchomienie algorytmu Smitha - Watermana, dla sekwencji o największym podobieństwie wg algorytmu BLAST. Celem tego posunięcia jest zbadanie dokładnego przyrównania dla wybranych najlepszych dopasowań. Kolejność uzyskanych w ten sposób przyrównań może różnić się od kolejności zaproponowanej w wyniku działania samego algorytmu BLAST. Ponieważ sekwencji zwróconych przez pierwszy z algorytmów jest niewiele, największa wada algorytmu dynamicznego - czas działania, nie ma większego wpływu na sumaryczny czas wykonania obydwu algorytmów Algorytm Knutha-Morrisa-Pratha Kolejny z algorytmów został opracowany przez Donalda Knutha, Vaughana Morrisa oraz J. H. Pratta i należy do grupy algorytmów liniowych. Jego złożoność wynosi O(k + n), gdzie k jest długościa przeszukiwanego tekstu S, zaś n jest długościa tekstu wzorcowego W. Charakteryzuje się tym, że w momencie pojawienia się niezgodności ze wzorcem, sam wzorzec posiada informację, dzięki której możliwe jest określenie, w którym momencie powinna rozpoczać się kolejna próba dopasowania, bez konieczności porównywania już dopasowanych znaków. Złożoność pamięciowa oraz czasowa w takim przypadku wynosi zaledwie O(n + m), gdzie n oraz m zostały opisane powyżej.

21 2.6. Algorytmy wyszukiwania sekwencji podobnych 16 Algorytm wyznaczania funkcji prefiksowej obliczania pomocniczej tablicy P polega na znalezieniu takich wartości P [i], które oznaczaja długość najdłuższego właściwego prefikso-sufiksu wzorcowego słowa W [1..i]. Poprzednie zdanie formalnie można zapisać w następujacy sposób: P [j] = max {0 k < j : wzorzec[1..k] jest sufiksem wzorzec[1..j]} (2.4) Kolejne kroki zmierzajace do wyznaczenia tej tablicy zostały przedstawione na poniższym przykładzie. Wyznaczanie funkcji prefiksowej Niech dany będzie wzorzec: ABBABCABB. Wartości kolejnych elementów tablicy P przedstawiaja się następujaco: P[0] = 0 - z warunków wstępnych; P[1] = 0 - z warunków wstępnych; P[2] = 0 - ponieważ B nie jest prefiksem wzorca; P[3] = 0 - ponieważ B nie jest prefiksem wzorca; P[4] = 1 - ponieważ A jest zarówno prefiksem wzorca, jak również sufiksem słowa ABBA (W [1..4]); P[5] = 2 - ponieważ AB jest zarówno prefiksem wzorca, jak również sufiksem słowa ABBAB (W [1..5]); P[6] = 0 - ponieważ B nie jest prefiksem wzorca; P[7] = 1 - ponieważ A jest zarówno prefiksem wzorca, jak również sufiksem słowa ABBABCA (W [1..7]); P[8] = 2 - ponieważ AB jest zarówno prefiksem wzorca, jak również sufiksem słowa ABBABCAB (W [1..8]); P[9] = 3 - ponieważ ABB jest zarówno prefiksem wzorca, jak również sufiksem słowa ABBABCABB (W [1..9]); Pseudokod algorytmu wyznaczania tablicy prefiksowej został pokazany na poniższym listingu: 1 P [ 0 ] := 0; P [ 1 ] := 0; // Warunki poczatkowe t := 0; for j := 2 to m do begin 5 while ( t > 0) and ( wzorzec [ t ] <>> wzorzec [ j 1 ] ) do t := P [ t ] ; i f wzorzec [ t ]= wzorzec [ j 1] then t := t + 1; P [ j ] := t ; end; Właściwy algorytm Po uprzednim wyznaczeniu tablicy prefiksowej można przystapić do właściwego algorytmu wyszukania wzorca, którego pseudokod został przedstawiony na poniższym wydruku: 1 i := 1 while i <= n m + 1 do begin j := P [ j ] ; 5 while ( ( j < m) and ( wzorzec [ j ] = tekst [ i + j 1 ] ) ) do j := j + 1; i f j = m then writeln ( ( IntToStr ( i ) ) ) ; // Wypisanie indeksu, w ktorym odnaleziono dopasowanie

22 2.6. Algorytmy wyszukiwania sekwencji podobnych 17 i := i + max(1, j P [ j ] ) ; end; Algorytm Boyera-Moore a Ostatnim zaimplementowanym algorytmem jest metoda Boyera-Moore a wyszukiwania wzorca. Jest ona najczęściej i najpowszechniej wykorzystywana podczas funkcji Szukaj oraz Zamień w edytorach tekstu. Podobnie jak miało to miejsce w algorytmie Knutha-Morrisa-Pratta, również tutaj wykorzystywane sa pomocnicze struktury. Zasadnicza różnica w porównaniu do wspomnianej w poprzednim zdaniu metody jest kolejność porównywania znaków. Otóż w algorytmie Boyera-Moore a porównanie rozpoczyna się od ostatniego elementu wzorca. Zaleta tego rozwiazania jest fakt, że jeżeli na danej pozycji w przeszukiwanym tekście będzie się znajdował znak, który nie pasuje do wzorca, możemy od razu przeskoczyć w analizowanym tekście o cała długość wzorca. Algorytm w fazie poczatkowej oblicza wartości dwóch pomocniczych wektorów: nie pasujacego znaku (ang. Bad Character Shift) opisanego w rozdziale pasujacego przyrostka (ang. Good Suffix Shift) szerzej omówionego w rozdziale Część wyszukiwania algorytmu (bez fazy wstępnej) posiada złożoność O(mn), gdzie m jest długościa wzorca, zaś n jest długościa przeszukiwanego tekstu. Najgorsza złożoność, wynoszac a 3n algorytm uzyskuje dla wzorca nie zawierajacego powtarzajacych się elementów. Najlepsza złożonościa jest O(n / m). Wyznaczanie tablicy nie pasujacego znaku Tablica ta przechowuje ostatnie położenie znaków alfabetu w rozpatrywanym wzorcu. Pseudokod funkcji ja tworzacej przedstawia się następujaco: 1 for i := 0 to m 1 do begin badcharactershift [ wzorzec [ i ] ] := m i 1; end; Wyznaczanie tablicy pasujacego przyrostka Tablica Good Suffix Shift zawiera przesunięcia dla pasujacych przyrostków wzorca. Wyznaczana jest w dwóch etapach. W pierwsze kolejności potrzebna jest tablica przyrostków wzorca, której pseudokod przedstawiony został poniżej: 1 for i := 0 to m do s u f f i x [ i ] := 1; s u f f i x [ i 1] := m; i := m 2; 5 while i >= 0 do begin while ( j <= i ) and ( wzorzec [ i j ] == wzorzec [m j 1 ] ) do begin j := j + 1; 10 end s u f f i x [ i ] := j ; i := i 1; end

23 2.6. Algorytmy wyszukiwania sekwencji podobnych 18 Drugi etap budowania tablicy pasujacego przyrostka został zobrazowany na poniższym wycinku: 1 j := 0; for i := 0 to m do goodsuffixshift [ i ] := m; i := m 1; while i >= 0 do 5 begin i f s u f f i x [ i ] == i + 1 then begin while j < m i 1 do begin 10 goodsuffixshift [ j ] := m i 1; j := j + 1; end end i := i 1; 15 end i := 0; while i <= m 2 do begin 20 goodsuffixshift [m s u f f i x [ i ] 1] := m i 1; i := i + 1; end Właściwy algorytm Na poczatku działania algorytmu należy wyznaczyć pomocnicze tablice zgodnie z krokami przedstawionymi w poprzednich rozdziałach. Następnie wykonuje się właściwa część algorytmu zgodnie z pseudokodem ukazanym poniżej: 1 j := 0; while j <= n m do begin i := m 1; 5 while ( i >= 0) and ( wzorzec [ i ] = tekst [ i + j ] ) do i : = i 1; i f i < 0 then begin writeln ( ( IntToStr ( j + 1) ) ) ; j := j + goodsuffixshift [ 0 ] ; 10 end else j : = j + max( goodsuffixshift [ i ], badcharactershift [ ord ( tekst [ i + j ] ) ] m + i + 1) ; end; Jest on dość prosty i polega na odpowiednim przesuwaniu okna wzorca. Jeżeli nie pasuje ono do przeszukiwanego tekstu, to jego pozycja zwiększana jest o większe z przesunięć pasujacego przyrostka lub do ostatniej pozycji nie pasujacego znaku. Jeżeli wzorzec pasuje do okna, jego pozycja jest wypisywana/zapamiętywana, zaś okno przesuwane jest na kolejna możliwa pozycję rozpoczynajac kolejna próbę dopasowania.

24 2.7. Podsumowanie Podsumowanie Każdy z opisanych w powyższym rozdziale algorytmów może zostać wykorzystany do różnorodnych analiz oraz badań. Algorytm Knutha-Morrisa-Pratta może posłużyć jako narzędzie do odnalezienia identycznych sekwencji co sekwencja źródłowa lub odszukania powtarzajacych się podsekwencji. Metody Smitha-Watermana oraz Boyera-Moorea, będace przedstawicielami algorytmów programowania dynamicznego, odpowiedzialne sa za dokładne sekwencji oraz odnalezienie tej, które ma największy stopień przyrównania (jest najbardziej podobne) do sekwencji wzorcowej. Ostatni z algorytmów - BLAST, który jest reprezentantem algorytmów heurystycznych jest szczególnie przydatny przy chęci szybkiego poznania sekwencji o wysokim podobieństwie co sekwencja zadana. Metoda ta w krótkim czasie (w porównaniu z algorytmami wyczerpujacymi programowania dynamicznego) pozwala odnaleźć w bazie danych sekwencji o wysokim współczynniku podobieństwa stosujac pewne założenia, które nie daja pewności poznania sekwencji najbardziej podobnej.

25 3. Projekt i implementacja aplikacji przegladarki genomów 3.1. Miejsce aplikacji wśród innych narzędzi Na rynku bioinformatycznym istnieje kilka narzędzi umożliwiajacych wizualizowanie genomów różnych organizmów, wśród których najpopularniejszymi sa: GBrowse GBrowse jest połaczeniem bazy danych i interaktywnych stron internetowych do manipulowania i wyświetlania adnotacji na genomach. OpenCB oprogramowanie do analizy danym genomowych wydawane na wolnej licencji. Aplikacja zorganizowana jest jako 4 różne podprojekty, które odpowiedzialne sa za rozwiazywanie problemów dla nich zdefiniowanych. Jednym z projektów jest Genome Maps nowy projekt hiszpańskiego zespołu z Computational Biology Unit oraz Computational Genomic Institute. Aplikacja umożliwia przegladanie kilku całkowicie zsekwencjonowanych genomów (w tym genomu ludzkiego). Została wytworzona w całości przy wykorzystaniu technologii HTML5 oraz SVG. Importowanie danych odbywa się poprzez przekazania odpowiednich plików w formatach FASTA oraz GTF. JBrowse aplikacja napisana w języku JavaScript potrafiaca wizualizować dowolne genomy organizmów. The Integrative Genomics Viewer (IGV) aplikacja napisana w języku Java do wizualizowania i integracji wielu typów danych genomowych. Autorzy projektu pisza, że jest to aplikacja do interaktywnej eksploracji dużych zintegrowanych zbiorów danych. Umożliwia obsługę zmienności genetycznej, ekspresji genów/microrna, danych epigenetycznych, adnotacji genetycznych itd. Powyżej wymienione oprogramowania były funkcjonalnie niewystarczajace, aby zwizualizować genom ogórka północnoeuropejskiego, dlatego zapadła decyzja o napisaniu własnego narzędzia.

26 3.2. Architektura 21 Wytworzona w ramach pracy magisterskiej aplikacja ma za zadanie przede wszystkim wyświetlić genom, który nie jest w całości zsekwencjonowany, posiadajacy dziury - nieznane fragmenty sekwencji. W odróżnieniu od wymienionych wcześniej aplikacji, opisywany program umożliwia dodatkowo na automatyczne dopasowanie dostarczonej sekwencji, wyszukanie jej w bazie danych oraz odpowiednie wyświetlenie wyników badania podobieństwa Architektura Aplikacja wykorzystuje architekturę typu klient-serwer, w której klientem jest przegladarka internetowa. Dynamiczny rozwój aplikacji internetowych w ostatnich latach jest kwestia oczywista. Jedna z niewielu barier - powolne łacza, która ograniczała w przeszłości postęp tej technologii, nie odgrywa w tym momencie praktycznie żadnej roli. Niezaprzeczalna zaleta tego typu architektury jest szybkość oraz łatwość dotarcia do wszelkich informacji dzięki możliwości korzystania z aplikacji za pośrednictwem komputera o praktycznie dowolnej konfiguracji, wyposażonego w dostęp do sieci oraz przegladarkę internetowa. Z punktu widzenia użytkownika końcowego, zaleta warta podkreślenia jest fakt braku konieczności instalowania jakiegokolwiek dodatkowego oprogramowania. Zastosowanie aplikacji internetowych powoduje dodatkowo zmniejszenie kosztów zwiazanych z zakupem sprzętu, ponieważ zamiast wielu wydajnych oraz drogich stanowisk, można wykorzystać tylko jedno, stanowiace serwer aplikacji oraz dokonać zakupu wielu tanich, mniej wymagajacych komputerów, które będa obsługiwały część kliencka. Kolejna zaleta opisywanego rozwiazania jest stosunkowo łatwe uaktualnianie oprogramowania, które ogranicza się wyłacznie do zaktualizowana serwera, nie wiaże się zaś z uciaż- liwa aktualizacja każdego ze stanowisk oraz angażowaniem każdego użytkownika w ten proces. Te, jak również inne zalety aplikacji internetowych powoduja, że sprawdzaja się one w co raz większej ilości zastosowań. Na rysunku 3.1 została szczegółowo przedstawiona architektura zbudowanej aplikacji. Przegladarka genomów organizmów została zrealizowana jako aplikacja internetowa, co od strony technicznej oznacza konieczność istnienia programu znajdujacego się na serwerze (na rysunku blok oznaczony jako śerwer") oraz interfejsu użytkownika komunikujacego się z serwerem za pomoca przegladarki internetowej (na rysunku blok oznaczony jako "klient"). Serwer aplikacji został zaimplementowany z wykorzystaniem biblioteki Django oraz języka Python. Głównym przeznaczeniem tej, udostępnianej jako wolne oprogramowanie, biblioteki jest tworzenie wydajnych aplikacji internetowych. Posiada ona wiele pozytywnych cech, które przemówiły za jej wykorzystaniem: fakt istnienia ORM u wysokiego poziomu, który pozwala na sprawne użytkowanie bazy danych bez konieczności wykonywania skomplikowanych zapytań SQL, możliwość zbudowania skalowalnej i bardzo wydajnej platformy oraz możliwość separacji poszczególnych modułów w celu bardziej przejrzystych działań, bez konieczności obawiania się o sposób komunikacji między nimi. Bez watpienia ogromna zaleta zastosowania tej biblioteki jest również fakt posiadania przez nia własnego, prostego serwera do testowania aplikacji. W katalogu server umieszczone zostały kolejne moduły aplikacji, z których każdy posiada ustandaryzowana strukturę plików:

27 3.2. Architektura 22 klient przeglądarkahwww interfejshużytkownika AdobehFlex ProtokółhHTTP serwer pyamf Serwerhaplikacji Django Python BioPython boost::python DjangohORM Modułhobliczeniowy C++ Bazahdanychh PostgreSQL boost Rysunek 3.1. Struktura aplikacji. interf.py - funkcjonalność modułu reprezentowana poprzez zbiór odpowiednich klas oraz funkcji; models.py - struktura tabel w bazie danych danego modułu; testamf.py - testy komunikacyjne z modułem klienta; tests.py - testy jednostkowe modułu. Wyjatek od powyższej struktury stanowia 3 katalogi. Pierwszym z nich jest katalog config, w którym znajduja się pliki konfiguracyjne aplikacji serwera opisane bardziej szczegółowo w rozdziale Katalog log przechowuje pliki z logami aplikacji. Katalog utils zawiera przydatne w innych modułach klasy oraz funkcje, wśród których wyróżnić możemy: intervaltree.py - klasy odpowiedzialnej za budowanie, przechowywanie oraz dostęp do drzew przedziałowych, opisanej szerzej w rozdziale 3.7;

28 3.3. Statystyki projektu 23 log.py - funkcje pomocnicze do modułu logowania zdarzeń. Ich ciekawa funkcjonalnościa jest możliwość automatycznego odczytania nazwy metody, która wywołała proces logowania; remoteaccess.py - implementacja modułu odpowiedzialnego za zarzadzanie watkami wykonujacymi się na serwerze w sposób długotrwały. Mechanizm prezentowania danych można zaliczyć do grupy cienkich klientów, ponieważ odpowiada on wyłacznie za komunikację z użytkownikiem oraz prezentowanie danych pobranych z serwera. Aplikacja kliencka została zrealizowana z wykorzystaniem technologii Apache Flex [2], która wykorzystuje MXML oraz ActionScript odpowiednio do budowania interfejsu użytkownika oraz do opracowania logiki aplikacji i interakcji z użytkownikiem. Wykorzystanie powyższej technologii posiada wiele zalet, wśród których wyróżnić można: program może zostać uruchomiony na dowolnym urzadzeniu posiadajacym dostęp do sieci internet oraz zainstalowana wtyczkę Adobe Flash Player; wyglad oraz sposób działania aplikacji jest identyczny na każdym systemie operacyjnym, w każdej przegladarce; aplikacja działa bez jakichkolwiek przeładowań, w sposób dynamiczny wyświetla kolejne okna oraz prezentuje potrzebne informacje; Adobe udostępnia darmowe SDK oraz środowisko programistyczne Adobe Flash Builder do wygodnego budowania aplikacji. Źródła interfejsu użytkownika znajduja się w katalogu client/src/. Komunikacja pomiędzy klientem, a serwerem została zrealizowana z wykorzystaniem biblioteki pyamf, która stanowi wsparcie dla języka Python przy przesyłaniu danych w formacie AMF (Action Message Format). Implementacja komunikacji ogranicza się do utworzenia słownika po stronie serwera z metodami, które będa wołane jako serwisy z aplikacji klienckiej. Odpowiednie wywołanie serwisu powoduje uruchomienie funkcji, znajdujacej się w jednym z modułów serwera Statystyki projektu Poniższy rozdział przedstawia statystyki aplikacji wyróżniajace ilość plików oraz linii kodu dla każdego z trzech modułów: obliczeniowego (3.1), klienta (3.2) oraz serwera (3.3). Tablica 3.1. Statystyki modułu obliczeniowego (implementacje algorytmów) Język programowania Ilość plików Linii kodu (bez komentarzy i pustych linii) C C/C++ nagłówki Suma Interfejs serwera W poniższych rozdziałach zostały przedstawione wszystkie zaimplementowane serwisy wraz z krótkim opisem funkcjonalności. Stanowia one interfejs serwera, dzięki któremu następuje komunikacja z aplikacjami klienckimi.

29 3.4. Interfejs serwera 24 Tablica 3.2. Statystyki aplikacji klienckiej Język programowania Ilość plików Linii kodu (bez komentarzy i pustych linii) MXML Javascript ActionScript XML HTML Python CSS 1 4 Suma Tablica 3.3. Statystyki serwera aplikacji Język programowania Ilość plików Linii kodu (bez komentarzy i pustych linii) Python Moduł algorithm Moduł algorithm (prefiks algorithm) odpowiedzialny jest za zarzadzanie algorytmami zaimplementowanymi w module obliczeniowym. Za jego pomoca możliwe jest uruchomienie każdej z metod przyrównywania sekwencji oraz zwracanie odpowiednich wyników. Tabela 3.4 przedstawia serwisy dostępne w ramach tego modułu wraz z odpowiadajacymi im metodami na serwerze aplikacji. Tablica 3.4: Serwisy modułu algorithm Nazwa serwisu Nazwa funkcji Python Opis funkcjonalności _runblast _runblast Uruchomienie algorytmu BLAST bez automatycznego zwracania informacji dla paska postępu. _runblast_sw _runblast_sw Uruchomienie algorytmu BLAST w wersji rozszerzonej (w połaczeniu z algorytmem Smitha-Watermana) bez automatycznego zwracania informacji dla paska postępu. _searchsw _searchsw Uruchomienie algorytmu Smitha-Watermana bez automatycznego zwracania informacji dla paska postępu.

30 3.4. Interfejs serwera 25 findbm findbm Uruchomienie algorytmu Boyera-Moore a bez automatycznego zwracania informacji dla paska postępu. findkmp findkmp Uruchomienie algorytmu Knutha-Morrisa-Pratta bez automatycznego zwracania informacji dla paska postępu. findprogressbl AST findprogressbl AST_SW findprogressblast Uruchomienie algorytmu BLAST z automatycznym zwracaniem informacji dla paska postępu. findprogressblast_ SW Uruchomienie algorytmu BLAST w wersji rozszerzonej (w połaczeniu z algorytmem Smitha-Watermana) z automatycznym zwracaniem informacji dla paska postępu. findprogressbm findprogressbm Uruchomienie algorytmu Boyera-Moore a z automatycznym zwracaniem informacji dla paska postępu. findprogresskm P gettextresultb M gettextresultk MP gettextsresult SW findprogresskmp Uruchomienie algorytmu Knutha-Morrisa-Pratta z automatycznym zwracaniem informacji dla paska postępu. gettextresultbm Zwrócenie tekstu wizualizujacego przyrównanie dwóch sekwencji algorytmem Boyera-Moore a. gettextresultkmp Zwrócenie tekstu wizualizujacego przyrównanie dwóch sekwencji algorytmem Knutha-Morrisa-Pratta. gettextsresultsw Zwrócenie tekstu wizualizujacego przyrównanie dwóch sekwencji algorytmem Smitha-Watermana. runblast runblast Uruchomienie algorytmu BLAST z automatycznym zwracaniem informacji do podpiętej funkcji callback. runblast_sw runblast_sw Uruchomienie algorytmu BLAST w wersji rozszerzonej (w połaczeniu z algorytmem Smitha-Watermana) z automatycznym zwracaniem informacji do podpiętej funkcji callback.

31 3.4. Interfejs serwera 26 searchprogress SW searchprogresssw Uruchomienie algorytmu Smitha-Watermana z automatycznym zwracaniem informacji dla paska postępu. searchsw searchsw Uruchomienie algorytmu Smitha-Watermana z automatycznym zwracaniem informacji do podpiętej funkcji callback Moduł chromosome Moduł chromosome (prefiks chromosome) odpowiedzialny jest za zarzadzanie chromosomami dodanymi do bazy organizmów. Za jego pomoca możliwe jest m.in. dodawanie, usuwanie oraz pobieranie obiektów chromosomów. Tabela 3.5 przedstawia serwisy dostępne w ramach tego modułu wraz z odpowiadajacymi im metodami na serwerze aplikacji. Tablica 3.5: Serwisy modułu chromosome Nazwa serwisu Nazwa funkcji Python Opis funkcjonalności delete deletechromosome Usunięcie chromosomu o zadanym ID. getall getchromosomes Zwrócenie wszystkich chromosomów danego organizmu. getassembbyid getassembbyid Pobranie obiektu typu asemblacji po jego identyfikatorze. getassembnam e getassembname Pobranie obiektu typu asemblacji po jego nazwie. getassembs getassembs Zwrócenie listy wszystkich typów asemblacji. getassembsdict getassembsdict Pobranie wszystkich typów asemblacji w postaci słownika. getassembsdict FromOrganism getassembsfro morganism getchromosom ebyid getassembsdictfrom Organism getassembsfromorg anism getchromosomebyid Pobranie wszystkich typów asemblacji zadanego organizmu w postaci słownika. Zwrócenie wszystkich typów asemblacji danego organizmu. Zwrócenie obiektu chromosomu o danym identyfikatorze.

32 3.4. Interfejs serwera 27 updateassembs updateassembs Uaktualnienie w bazie danych typów asemblacji zadanych jako argument Moduł contig Moduł contig (prefiks contig) odpowiedzialny jest za zarzadzanie kontigami dodanymi do bazy organizmów. Za jego pomoca możliwe jest m.in. usuwanie oraz pobieranie obiektów kontigów. Tabela 3.6 przedstawia serwisy dostępne w ramach tego modułu wraz z odpowiadajacymi im metodami na serwerze aplikacji. Tablica 3.6: Serwisy modułu contig Nazwa serwisu Nazwa funkcji Python Opis funkcjonalności buildtree buildcontigtree Zbudowanie drzewa przedziałowego kontigów (ang. contig) dla danego skafoldu (ang. scaffold). delete deletecongit Usunięcie configa o zadanym identyfikatorze. get getcontig Zwrócenie kontiga o zadanym identyfikatorze. getcontigs getcontigs Pobranie wszystkich kontigów leża- cych na danym skafoldzie. getcontigsdict getcontigsdict Pobranie wszystkich kontigów leża- cych na danym skafoldzie w postaci słownika. getfromtree getcontigfromtree Zwrócenie kontigów z drzewa przedziałowego położonych w granicach zadanego przedziału. getscaffold getscaffbycontid Pobranie obiektu skafoldu, na którym leży kontig o zadanym identyfikatorze Moduł marker Moduł marker (prefiks marker) odpowiedzialny jest za zarzadzanie markerami dodanymi do bazy organizmów. Za jego pomoca możliwe jest pobieranie markerów genetycznych. Tabela 3.7 przedstawia serwisy dostępne w ramach tego modułu wraz z odpowiadajacymi im metodami na serwerze aplikacji. Tablica 3.7: Serwisy modułu marker

33 3.4. Interfejs serwera 28 Nazwa serwisu Nazwa funkcji Python Opis funkcjonalności buildcontigtre e buildscaffoldtr ee buildmarkercontigtr ee buildmarkerskafoldt ree Zbudowanie drzewa przedziałowego markerów dla danego kontiga. Zbudowanie drzewa przedziałowego markerów dla danego skafoldu. get getmarker Pobranie obiektu markera o zadanym identyfikatorze. getfromcontig Tree getfromscaffol dtree getmarkersdict OnCont getmarkersdict OnScaff getmarkersonc ontig getmarkersons caffold getmarkerfromconti gtree getmarkerfromscaff oldtree getmarkersdictonco nt getmarkersdictonsc aff Pobranie markerów z drzewa przedziałowego zbudowanego dla kontiga. Pobranie markerów z drzewa przedziałowego zbudowanego dla skafoldu. Zwrócenie słownika wszystkich markerów leżacych na danym kontigu. Zwrócenie słownika wszystkich markerów leżacych na danym skafoldzie. getmarkersoncontig Zwrócenie wszystkich markerów znajdujacych się na danym kontigu. getmarkersonscaffol d Zwrócenie wszystkich markerów znajdujacych się na danym skafoldzie Moduł scaffold Moduł scaffold (prefiks scaffold) odpowiedzialny jest za zarzadzanie skafoldami dodanymi do bazy organizmów. Za jego pomoca możliwe jest m.in. usuwanie oraz pobieranie obiektów skafoldów. Tabela 3.8 przedstawia serwisy dostępne w ramach tego modułu wraz z odpowiadajacymi im metodami na serwerze aplikacji. Tablica 3.8: Serwisy modułu scaffold Nazwa serwisu Nazwa funkcji Python Opis funkcjonalności buildtree buildscaffoldtree Zbudowanie drzewa przedziałowego skafoldów należacych do danego chromosomu. count getscaffoldscount Zwrócenie liczby skafoldów znajduja- cych się na danym chromosomie. delete deletescaffold Usunięcie danego skafoldu.

34 3.4. Interfejs serwera 29 getchromosom eid getfromtree getchromosomeid Zwrócenie identyfikatora chromosomu, na którym znajduje się dany skafold. getscaffoldsfromtre e Pobranie skafoldów z drzewa przedziałowego, które znajduja się w podanych granicach. getscaffold getscaffold Zwrócenie obiektu skafoldu o danym identyfikatorze. getscaffoldposit ion undefined.getm axid undefined.getm axlength undefined.getm inid undefined.gets caffolds getscaffoldposition getmaxid getmaxlength getminid getscaffolds Zwrócenie wszystkich pozycji danego skafolda. Zwrócenie maksymalnego identyfikatora niezdefiniowanych skafoldów. Pobranie maksymalnej wartości długości niezdefiniowanego skafolda. Pobranie minimalnej wartości długości niezdefiniowanego skafolda. Zwrócenie wszystkich zadanych parametrami (zakres identyfikatorów) niezdefiniowanych skafoldów Pozostałe moduły Pozostałe moduły: import, main, organism oraz remote odpowiedzialne sa za import danych genomowych, informowanie o stanie aplikacji klienckich, zarzadza- nie organizmami oraz czasochłonnymi zadaniami wykonywanymi w oddzielnych watkach na serwerze aplikacji. Tabela 3.9 przedstawia serwisy dostępne w ramach tych modułów wraz z odpowiadajacymi im metodami na serwerze aplikacji. Tablica 3.9: Serwisy pozostałych modułów Nazwa serwisu Nazwa funkcji Python Opis funkcjonalności import.importc ontigs import.imports caffolds importcontigs importscaffolds Zaimportowanie nowych kontigów. Zaimportowanie nowych skafoldów. main.echo echo Serwis testujacy działanie serwera aplikacji. main.getlogfile getlogfile Pobranie treści pliku z systemu logowania.

35 3.5. Model danych 30 main.servertim e getservertime Zwrócenie aktualnego czasu serwera. main.start startclient Poinformowanie serwera aplikacji o uruchomieniu instancji aplikacji klienckiej. organism.addo rganism addorganism Dodanie nowego organizmu. organism.delete deleteorganism Usunięcie organizmu o zadanym identyfikatorze. organism.getor ganisms getorganisms Zwrócenie obiektu organizmu o podanym identyfikatorze. remote.get remote_manager.get Zwrócenie aktualnego wyniku działania funkcji (watku) o zadanym identyfikatorze Model danych Wszystkie zgromadzone dane zostały zorganizowane w postaci relacyjnej bazy danych, której struktura została przedstawiona na rysunku 3.2. Baza została wytworzona w taki sposób, aby umożliwić dodanie oraz przegladanie w aplikacji wielu organizmów oraz wielu genomów jednocześnie. W aplikacji został wykorzystany system bazodanowy PostgreSQL. Został on wybrany ze względu na swoja wydajność oraz wysoka stabilność. Jest on oparty oraz tworzony na architekturze systemu otwartego, wciaż rozwijany przez szeroka społeczność.

36 3.5. Model danych 31 Rysunek 3.2. Schemat bazy danych. Wygodny dostęp do bazy danych z poziomu aplikacji serwera możliwy jest dzięki obecności ORM u wysokiego poziomu dostarczonego wraz z biblioteka Django. Definicje klas języka Python, które sa odwzorowaniem tabel w bazie danych, znajduja się w poszczególnych modułach w plikach models.py. Przykładowa klasa opisujaca obiekt Markera oraz analogiczna tabelę w bazie danych, została przedstawiona na poniższym listingu. 1 from django. db import models class Marker ( models. Model ) : name = models. TextField ( ) 5 chr_id = models. IntegerField ( ) pos_cm = models. FloatField ( ) cont_id = models. IntegerField ( ) contig_ start = models. FloatField ( ) contig_end = models. FloatField ( )

37 3.6. Biblioteka obliczeniowa scaff_id = models. TextField ( ) scaffold_start = models. FloatField ( ) scaffold_end = models. FloatField ( ) sequence = models. TextField ( ) Wydruk 3.1. Klasa Markera - Django ORM Biblioteka obliczeniowa W ramach poniższej pracy zostały zaimplementowane cztery algorytmy wyznaczania dopasowań dwóch sekwencji znakowych. W poniższym rozdziale zostały opisane sposoby ich wykorzystania oraz praktycznego zastosowania w aplikacji Web Omics Viewer Algorytm Smitha-Watermana Na implementację algorytmu Smitha-Watermana, znajdujacego się w katalogu implementation/calculation/algorithms/sw, składaja się następujace pliki: CellSW.hpp / CellSW.cpp - pliki zawieraja klasę CellSW, której obiekty reprezentuja pojedyncza komórkę w macierzy ocen dopasowania. Oprócz informacji o pozycji w macierzy przechowuje również przetrzymywana przez nia wartość oraz informację czy komórka ta stanowi przedłużenie przerwy w dopasowaniu; SW.hpp / SW.cpp - pliki zawieraja klasę SW, która jest główna klasa algorytmu implementujac a cała jego funkcjonalność. W sposób bardziej szczegółowy została opisana poniżej; SW_py.hpp / SW_py.cpp - klasa będaca opakowaniem kodu algorytmu dla wygodniejszego wykorzystania go w module boost::python podczas implementacji połaczenia kodu C++ oraz języka Python. Za uruchomienie algorytmu dla dwóch zadanych sekwencji odpowiedzialna jest funkcja: 1 Similarity compute ( std : : string text, std : : string pattern ) ; z klasy SW. Zwraca ona obiekt klasy Similarity przechowujacy informację o wszystkich obliczonych parametrach zwiazanych z procesem przyrównania. Procedura: 1 RouteVector backtrack ( Similarity s i m i l a r i t y ) ; pozwala odtworzyć dopasowanie na podstawie danego obiektu przyrównania. Dla poprawnego i wygodnego zarzadzania macierza ocen dopasowania postanowiono o wykorzystaniu klasy: 1 typedef boost : : numeric : : ublas : : matrix<algorithms : : CellSW> RatingsMatrix ; z biblioteki boost Algorytm BLAST Źródła zaimplementowanego algorytmu znajduj a się w katalogu implementation/calculation/algorithms/blast:

38 3.6. Biblioteka obliczeniowa 33 Word.hpp / Word.cpp - opis klasy Word przechowujacej informację o fragmencie wzorca, z którym z kolei skojarzone sa obiekty klasy Alignment opisane poniżej. Alignment.hpp / Alignment.cpp - klasa przetrzymujaca wiedzę dotyczac a aktualnego stanu procesu przyrównania dwóch sekwencji. W wygodny sposób umożliwia dynamiczna zmianę parametrów i charakterystyki dopasowania. Blast.hpp / Blast.cpp - główna klasa algorytmu odpowiedzialna za przeprowadzenie wszystkich opisanych powyżej kroków procedury. Jej kolejne funkcjonalności zostały szczegółowo opisane poniżej. Zaimplementowany w ramach poniższej pracy algorytm BLASTN przyjmuje w konstruktorze 3 parametry: 1 BLAST( int W, double T, int C) ; oznaczajace odpowiednio: W - długość słowa rozpatrywana w punkcie 1 algorytmu. T - minimalna wartość oceny, która determinuje wybór tych fragmentów wyszukiwanej sekwencji, które będa wykorzystywane w dalszych etapach. C - wartość parametru drop off, który informuje, podczas przeprowadzania procesu rozszerzania słów w ostatnim punkcie algorytmu, o maksymalnym odchyleniu punktacji dopasowania od maksymalnej znalezionej do tej pory. Za kolejne kroki algorytmu odpowiadaja metody: Inicjacja Podana sytuację implementuje funkcja: 1 bool prepare ( std : : string pattern ) ; która jako argument przyjmuje pattern - słowo wyszukiwane w bazie danych, zaś zwraca informację o poprawności wykonania podziału. Przykładowo, sekwencja ACTTATCA dla wartości parametru W równego 5 zostanie podzielona na następujace ciagi znaków: ACTTA, CTTAT, TTATC, TATCA, zaś funkcja zwróci wartość true. Wartość false zostanie zwrócona w przypadku, gdy długość zadanej sekwencji będzie mniejsza od ustawionej wartości parametru W. Wyszukiwanie Za analizę bazy danych pod katem wystapień fragmentów wzorca odpowiedzialna jest funkcja: 1 bool search ( ) ; Wartość false zwracana jest, jeżeli nie zostanie odnaleziona żadna sekwencja, która zawierałaby fragment sekwencji wzorcowej. Ocena Odpowiedzialna za ten fragment algorytmu jest funkcja: 1 bool estimate ( ) ; która zwraca wartość true w przypadku powodzenia. Wartość false zwracana jest w przypadku, gdy żaden z fragmentów sekwencji wzorcowej nie spełnia warunku zadanego przez parametr T.

39 3.6. Biblioteka obliczeniowa 34 Rozszerzanie Za prawidłowego działanie tego kroku odpowiedzialna jest funkcja: 1 bool extend ( ) ; W celu pobrania wyników oraz zwizualizowania działania algorytmu udostępnionych zostało szereg funkcji o następujacym zastosowaniu: Wypisanie informacji o wszystkich dopasowaniach (lub najlepszych ograniczonych parametrem how_much). Wartość parametru równa 0 oznacza wypisanie wszystkich znalezionych dopasowań. 1 void printaligns ( unsigned int how_much = 0) ; Zwrócenie wektora najlepszych dopasowań (ewentualnie ograniczonego parametrem how_much). Podobnie jak w przypadku poprzedniej funkcji wartość parametru równa 0 oznacza zwrócenie wszystkich znalezionych dopasowań. 1 Alignments getaligns ( unsigned int how_much = 0) ; Zwrócenie jednego najlepszego dopasowania. 1 Alignment getbestalign ( ) ; Zwrócenie tekstu zawierajacego informacje o szczegółach dopasowania najbliższych sekwencji zadanych argumentem. 1 std : : string getalignstring ( Alignments aligns ) ; Algorytm Knutha-Morrisa-Pratha Implementacja algorytmu Knutha-Morisa-Pratta znajduje się w katalogu implementation/calculation/algorithms/kmp: KMP.hpp / KMP.cpp - sa plikami implementujacymi klasę KMP z funkcjami odpowiedzialnymi zarówno za obliczenie tablicy prefiksowej, jak również właściwego algorytmu. Wchodzaca w skład klasy KMP metoda: 1 int calculatetable ( std : : string pattern ) ; odpowiedzialna jest za obliczenie tabeli pomocniczej dla zadanego wzorca. Zwracane przez nia wartości odpowiadaja poprawności przeprowadzonych obliczeń: 0 w przypadku powodzenia, 1 w przypadku wystapienia błędu. Procedura: 1 Positions compute ( std : : string text ) ; odpowiada zaś za właściwe działanie algorytmu Knutha-Morrisa-Pratta. Funkcja zwraca wektor pozycji, na których wzorzec pattern znajduje się w tekście text.

40 3.7. Optymalizacja dostępu do danych genomowych Algorytm Boyera-Moore a Implementacja algorytmu Boyera-Moore a znajduje się w katalogu implementation/calculation/algorithms/bm: BM.hpp / BM.cpp - sa plikami implementujacymi klasę BM z funkcjami odpowiedzialnymi zarówno za obliczenie pomocniczych tablic, jak również właściwego algorytmu. Na poniższym listingu zostały przedstawione deklaracje funkcji obliczajacych pomocnicze struktury: 1 // Wypelnienie t a b l i c y Bad Character S h i f t private void buildbadcharactershifttable ( std : : string pattern ) ; // Wypelnienie t a b l i c y przyrostkow 5 private void buildsuffixtable ( std : : string pattern ) ; // Wypelnienie t a b l i c y Good Suffix S h i f t private void buildgoodsuffixshifttable ( std : : string pattern ) ; 10 // Przygotowanie struktur pomocnicznych, zbudowanie odpowiednich t a b l i c public void prepare ( std : : string pattern ) ; Właściwe kroki algorytmu Boyera-Moore a wykonywane sa w metodzie: 1 Positions compute ( std : : string text ) ; zwracajacej wektor pozycji, na których znajduje się szukany wzorzec w zadanym przeszukiwanym tekście Optymalizacja dostępu do danych genomowych Jednym z głównych założeń organizacji interfejsu użytkownika była odpowiednio duża jego responsywność na zmieniajace się zakresy granic wyświetlanych danych. Po przesunięciu się po widoku chromosomu lub skafoldu odświeżone dane maja się pojawić niemal natychmiast. Ponieważ każdorazowe pobieranie danych, spełniajacych warunek obecności w zadanych przedziałach wiaże się z opóźnieniami dostępu do bazy danych postanowiono o optymalizacji dostępu do danych, które w aktualnym stanie aplikacji sa potencjalnie możliwe do przeanalizowania. Rozwiazaniem tego problemu okazało się zbudowanie tzw. drzewa przedziałowego [10]. Podczas uruchamiania serwisu odpowiedzialnego za wyświetlenie struktur należacych do danego chromosomu (lub skafoldu) budowane sa odpowiednie drzewa, w których zapisane sa informacje o precyzyjnym położeniu tych struktur. Rozwiazanie takie ogranicza konieczność pobrania danych z bazy danych do pojedynczej operacji (w porównaniu do klasycznego podejścia, gdzie dane były pobierane przy każdorazowym odświeżeniu widoku). Od strony implementacyjnej drzewo przedziałowe jest struktura, w której w każdym węźle przetrzymywana jest informacja o przedziale domkniętym (pozycji poczatku oraz końca danej struktury). Podczas wyszukiwania informacji, przechodzac wgłab drzewa, jesteśmy w stanie odczytać te przedziały (lub ich fragmenty), które maja z zadanym przedziałem (struktura) niepuste części wspólne. Podczas badania wydajności zaimplementowanego rozwiazania stwierdzono 10-krotne zwiększenie szybkości uzyskiwania

41 3.8. Instrukcja użytkowania 36 odpowiedzi. Ogólna idea działania drzewa przedziałowego na przykładzie sekwencji nukleotydowych została przedstawiona na rysunku 3.3. Węzeł Węzeł Węzeł PRZEDZIAŁY Węzeł INDEKS SEKWENCJA Rysunek 3.3. Struktura drzewa przedziałowego. Przykład wykorzystania zaimplementowanych klas do utworzenia drzewa z czterema przedziałami został pokazany na poniższym listingu: 1 interval_tree = IntervalTree ( [ Interval (4.029, ), Interval (33.043, ), Interval (37.951, ), 5 Interval (39.452, ) ] ) Zwrócenie wyniku dla zadanego przedziału sprowadza się do wywołania funkcji find(...) w sposób pokazany poniżej: 1 for interval in interval_tree. find (8.0, 34.1) : print " ( ", interval. start, " ; ", interval. stop, " ) " Wynikiem działania powyższego kodu sa dwa następujace przedziały: 1 ( ; ) ( ; ) 3.8. Instrukcja użytkowania W poniższym rozdziale zostanie opisany sposób korzystania z aplikacji przegla- darki genomów organizmów od strony użytkownika. Kolejne podrozdziały zawieraja informację na temat wymagań systemowych, plików konfiguracyjnych, kompilacji źródeł, jak również samego uruchomienia oraz korzystania z programu. Szczegółowo zostana omówione aspekty zwiazane z metoda wprowadzania nowych danych oraz sposobem przeszukiwania istniejacej bazy sekwencji.

42 3.8. Instrukcja użytkowania Oprogramowanie oraz biblioteki Wytworzona aplikacja została skompilowana oraz uruchomiona na dwóch systemach operacyjnych: Windows 8 w wersji 64 bitowej oraz Ubuntu Tabela przedstawia wersje wykorzystanych bibliotek w każdych z dwóch systemów. Biblioteka Windows 8 x64 Ubuntu Kompilator C++ C/C++ Optimizing Compiler Version for x64 (VisualStudio 2010) Python Boost PostgreSQL Django SCons psycopg PyAMF Openpyxl Java JRE 7 7 GCC ver Aplikacja do działania wymaga zainstalowanych następujacych bibliotek dzielonych: python, boostpython, calc (wytworzona biblioteka z algorytmami przyrównywania znaków). W celu zbudowania aplikacji klienckiej wymagane jest posiadanie pakietu Adobe Flex SDK w wersji 4.6 oraz oprogramowania Flash Player Plik konfiguracyjny Przed zbudowaniem źródeł oraz uruchomieniem aplikacji należy odpowiednio przygotować pliki konfiguracyjne, niezbędne do poprawnego działania oprogramowania. Najważniejszymi z punktu widzenia użytkownika plikami sa settings.py znajdujacy się w katalogu config na serwerze oraz SConstruct, który znajduje się w głównym katalogu implementation. Pierwszy z nich zawiera podstawowe informacje o serwerze aplikacji oraz połaczeniu z baza danych. W jego górnej części znajduja się względne ścieżki (przy zachowaniu domyślnej struktury katalogów nie wymagajace poprawek) do wszystkich modułów aplikacji. W linii 27 znajduje się definicja słownika przechowujacego konfigurację połaczenia z baza danych, w skład którego wchodza następujace klucze: ENGINE - silnik bazy danych; domyślnie: 1 django. db. backends. postgresql_psycopg2 inne możliwe ustawienia:

43 3.8. Instrukcja użytkowania 38 1 django. db. backends. postgresql django. db. backends. mysql django. db. backends. sqlite3 django. db. backends. oracle NAME - nazwa bazy danych lub ścieżka do pliku z baza danych sqlite3; domyślnie: cucumber_browser; USER - nazwa użytkownika bazy danych lub pusty string w przypadku sqlite3; domyślnie: postgres; PASSWORD - hasło użytkownika lub pusty string w przypadku sqlite3; HOST - adres IP dostępu do bazy danych lub pusty string w przypadku sqlite3 oraz połaczenia lokalnego (localhost); PORT - port poprzez, który dostępne jest połaczenie z baza danych lub pusty string w przypadku sqlite3 oraz połaczenia lokalnego. W linii 127 znajduje się struktura ze zdefiniowanymi w ramach wytworzonego oprogramowania aplikacjami, m.in.: server.chromosome, server.scaffold itd. Od linii 152 rozpoczyna się konfiguracja logowania zdarzeń aplikacji, której składnia zgodna jest z konfiguracja modułu logging języka Python. Drugi z plików konfiguracyjnych - SConstruct przechowuje informacje niezbędne do poprawnego zbudowania całej aplikacji, jej uruchomienia oraz automatycznego przetestowania. Pierwsza z jego sekcji zawiera konfigurację ścieżek do podstawowych bibliotek oraz zależnych aplikacji (przyrostek WINDOWS oznacza, że należy wskazać odpowiednia ścieżkę w przypadku budowania aplikacji pod kontrola systemu Windows, analogicznie w przypadku systemu Linux): PROJECT_PATH_WINDOWS oraz PROJECT_PATH_LINUX - bezwzględna ścieżka do katalogu implementation aplikacji; PYTHON_INCLUDE_WINDOWS oraz PYTHON_INCLUDE_LINUX - bezwzględna ścieżka do katalogu include języka Python; PYTHON_LIB_WINDOWS oraz PYTHON_LIB_LINUX - bezwzględna ścieżka do katalogu lib(-s) języka Python; BOOST_INCLUDE_WINDOWS, BOOST_INCLUDE_LINUX, BOOST_LIB_WINDOWS oraz LIBBOOST_PYTHON - bezwzględne ścieżki do głównych katalogów biblioteki boost, ścieżka do jej katalogu lib (w przypadku systemu Windows) oraz ścieżka do pliku libboost_python-mt-py27.so (lub analogicznego dla odpowiedniej wersji biblioteki boost w przypadku systemu Linux); FLEX_PATH_WINDOWS oraz FLEX_PATH_LINUX - bezwzględna ścieżka do SDK języka Flex; FLEX_CONFIG_LINUX oraz FLEX_CONFIG_WINDOWS - bezwzględna ścieżka do pliku konfiguracyjnego klienta aplikacji; WEB_LINUX oraz WEB_WINDOWS - bezwzględna ścieżka do pliku uruchamiaja- cego przegladarkę internetowa; NCBI_BLAST_WINDOWS oraz NCBI_BLAST_LINUX - bezwzględna ścieżka do katalogu bin pakietu blast biblioteki NCBI. Z plikiem SConstruct powiazane sa pliki SConscript znajdujace się w katalogach calculation oraz client odpowiadajace za prawidłowa kompilację odpowiednio biblioteki obliczeniowej oraz aplikacji klienckiej. Pliki te jednak nie wymagaja żadnych zmian konfiguracyjnych.

44 3.8. Instrukcja użytkowania Kompilacja źródeł Dzięki wykorzystaniu narzędzia do automatycznego budowania aplikacji, opisanego w rozdziale 3.8.2, kompilacja źródeł ogranicza się wyłacznie do wykonania kilku następujacych komend: Kompilacja biblioteki obliczeniowej oraz testów jednostkowych: 1 scons calc=1 Kompilacja aplikacji klienckiej: 1 scons c l i e n t=1 Utworzenie tabel bazy danych: 1 scons createdb=1 Poleceniem: 1 scons syncdb=1 można dokonać załadowania danych genomu ogórka północnoeuropejskiego, które zorganizowane sa w postaci tzw. fixtures, czyli plikowych bazach danych przechowywanych w formacie JSON. Dane te znajduja się na serwerze aplikacji w katalogu fixtures. W każdym momencie możemy wykonać polecenie: 1 scons h w celu podejrzenia wszystkich dostępnych do wykonania opcji Uruchomienie aplikacji Uruchomienie aplikacji, które powinien poprzedzać proces kompilacji, również odbywa się przy wykorzystaniu narzędzia SCons i ogranicza się do wykonania następujacych poleceń: Uruchomienie serwera aplikacji: 1 scons run=1 Uruchomenie aplikacji klienckiej: 1 scons runclient=1 Uruchomienie testów jednostkowych biblioteki obliczeniowej: 1 scons test=1 Uruchomienie automatycznych testów serwera aplikacji oraz testów połaczenia z biblioteka obliczeniowa: 1 scons testapp=1 Uruchomienie powłoki do ręcznego testowania działania serwera aplikacji: 1 scons shell=1

45 3.8. Instrukcja użytkowania Import/eksport danych Pierwotnie opisywana aplikacja została wytworzona w celu zwizualizowania genomu ogórka północnoeuropejskiego, który został zsekwencjonowany przez naukowców z SGGW. Jednak jej modułowa architektura oraz sposób wykonania umożliwia również dodanie dowolnej ilości organizmów oraz wprowadzenia odpowiednich danych. Oprócz tego, w ramach organizmu, pozwala na tworzenie różnych, odseparowanych zbiorów informacji, które zostały otrzymane różnymi metodami sekwencjonowania. Format danych wejściowych został przedstawiony w rozdziale 3.8.5, zaś sposób importowania informacji w rozdziale Format wprowadzania nowych sekwencji Aplikacja zakłada, że dane struktur skafoldów oraz kontigów moga zostać wprowadzone w sposób automatyczny. W celu zaimportowania tych informacji do bazy danych konieczne jest przygotowanie w obydwu przypadkach dwóch plików o ustalonym formacie. Dla skafoldów pliki te maja następujac a postać: Plik w formacie CSV (kolejne wartości oddzielone średnikami) ze szczegółowymi informacji o skafoldach: ID skafoldu;id chromosomu;pozycja START w cm;pozycja END w cm. Wzór pliku został przedstawiony poniżej: ;2;1.23; ;3;1.77; ;1;0.61; ;2;5.98; ;1;3.31; ;3;4.17;9.26 Skafold o ID równym znajduje się w pliku dwa razy, co oznacza, że znajduje się on na genetycznych dwóch pozycjach na chromosomie (pomiędzy jego dwiema częściami moga znajdować się inne skafoldy). Plik w formacie przypominajacym FASTA (bez niepotrzebnych restrykcji), przechowujacy sekwencje skafoldów, którego wzór został przedstawiony na poniższym listingu: 1 >99991 GGTTACACACGAGGGGCAG CGGACGACGA > GCGCGCGAGCGCGAGCAGCGACA GCAGCGACGGC >99993 CGCGAGCGCGAGCAGC > GCAGCGAGCCACGAGTCTGCTACGTTTGG >99995 GTTGCAGCGTCGATCGATCGTTGGGGCACT Dla kontigów pliki, które należy wybrać podczas importowania danych maja analogiczna postać: Plik w formacie CSV, o strukturze:

46 3.8. Instrukcja użytkowania 41 ID kontigu;id skafoldu;pozycja START w bp;pozycja END w bp;kolejność na skafoldzie. Przykład takiego pliku znajduje się poniżej: ;99991;0;18; ;99992;0;15; ;99992;18;26; ;99992;30;41; ;99993;11;27;0 Plik w formacie przypominajacym FASTA z sekwencjami kontigów, którego ilustracja znajduje się na poniższym listingu: 1 >99911 CGACGACGAGCTT >99922 GAGCGCGAGCAGCGACA 5 GCAGC >99923 GAGCGCAGTGCATCGGGCATCG >99924 GCAGCGACGTTCAGCT 10 CGATCGACGCTACGACGATCGACT >99925 GCAGCATACGACTGACGCATCAGACTCAGTACGTCAT Testy aplikacji Aplikacja została przetestowana na kilku wyróżniajacych się poziomach: testy jednostkowe biblioteki obliczeniowej (C++) (liczba testów: 7); testy jednostkowe aplikacji zaimplementowanych na serwerze aplikacji (Python) (liczba testów: 5); testy sprawdzajace połaczenie modułu obliczeniowego z serwerem aplikacji (liczba testów automatycznych: 430); Testy jednostkowe biblioteki obliczeniowej znajduja się w katalogach poszczególnych algorytmów w podkatalogach tests: blast_unit_test.cpp - testy algorytmu BLAST (liczba asercji: 48); sw_unit_test.cpp - testy algorytmu Smitha-Watermana (liczba asercji: 26); kmp_unit_test.cpp - testy algorytmu Knutha-Morrisa-Pratta (liczba asercji: 4); bm_unit_test.cpp - testy algorytmu Boyera-Moore a (liczba asercji: 4); Ich kompilacja dokonywana jest wraz z budowaniem całej biblioteki poleceniem: 1 scons calc=1 Uruchomienie powyższych testów odbywa się poprzez wykonanie komendy: 1 scons test=1 Komunikaty *** No errors detected pod każdym z nich świadcza o poprawnym ich wykonaniu. Testy jednostkowe modułu serwera aplikacji oraz testy połaczenia biblioteki obliczeniowej z serwerem aplikacji zostały utworzone przy wykorzystaniu narzędzi

47 3.8. Instrukcja użytkowania 42 udostępnionych przez bibliotekę Django - django.test.testcase i zostały zawarte w plikach tests.py w każdym z podmodułów (algorithm, chromosome, contig, scaffold itd). Automatyczne uruchomienie wszystkich testów odbywa się poprzez wykonanie polecenia: 1 scons testapp=1 Poprawne, badź błędne wykonanie powyższych testów zostanie w odpowiedni sposób zakomunikowane i opisane na konsoli tekstowej. Aby ustrzec się przed przypadkowymi i niechcianymi zmianami oraz zapewnić niezależność przeprowadzanych testów, uruchamiane sa one na nowej, dynamicznie tworzonej bazie danych, której struktura oraz informacje w niej zawarte, oparte sa na bazie oryginalnej. W celu przyspieszenia ich działania, baza testowa oparta jest na systemie SQLite, który tworzy ja w pamięci, co jest rozwiazaniem dużo szybszym w porównaniu do standardowego rozwiazania używanego w aplikacji - systemie PostgreSQL Elementy interfejsu użytkownika Główne okno aplikacji - widok organizmu Proces wizualizowania genomu wybranego organizmu rozpoczyna się od przedstawienia wszystkich chromosomów, z których jest on złożony. Rysunek 3.4 obrazuje chromosomy genomu ogórka północnoeuropejskiego. Ich wysokość jest wprost proporcjonalna do ich długości genetycznej. Na górnym pasku widoczne sa przyciski do zarzadzania typami asemblacji danego genomu, do przeszukania bazy danych danego organizmu, do importowanie nowych informacji o skafoldach i kontigach oraz usunięcia wybranego organizmu wraz ze wszystkimi jego strukturami. W prawej części interfejsu widoczne sa dwie grafiki, po kliknięciu na które otrzymamy informacje o niedopasowanych jeszcze fragmentach sekwencji. Widok chromosomu Po kliknięciu na dowolny chromosom użytkownik zostaje przeniesieny do okna odpowiedzialnego za przedstawienie przynależacych do niego struktur. Widok chromosomu został zobrazowany na rysunku 3.5. W jego górnej połówce znajduja się kolejne skafoldy ułożone na chromosomie. Zostały one naniesione wg pozycji genetycznych (cm), zaś ich długość jest proporcjonalna do fizycznej długości ich sekwencji. Z założenia skafold jest struktura, w której moga występować nieznane fragmenty sekwencji - dziury. Sytuacja taka zobrazowana jest bardzo dobrze na rysunku 3.6, gdzie w nieznanym fragmencie sekwencji skafoldu o numerze znajduje się inny o numerze Po kliknięciu na dowolny skafold, w dolnej połówce ekranu pojawia się struktury do niego przynależace - kontigi oraz markery. W każdym momencie istnieje możliwość przesuwania się po obydwu widokach (chromosomu oraz skafoldu), przybliżania oraz jego oddalania, wykorzystujac do tego celu panele znajdujace się po lewej stronie, klawisze klawiatury, badź odpowiednie gesty mysza.

48 3.8. Instrukcja użytkowania 43 Rysunek 3.4. Widok organizmu. W głównej części okna umiejscowione zostały chromosomy. Panel górny umożliwia przeszukiwanie bazy danych, zarzadzanie typami asemblacji danego organizmu, importowanie nowych informacji oraz usunięcie danego organizmu. Po prawej stronie widoczne sa odnośniki do przegladarki niezdefiniowanych struktur. Rysunek 3.5. Widok chromosomu. W górnej części ekranu widoczny jest układ skafoldów znajdujacych się na badanym chromosomie. Poniżej obrazowane sa struktury przynależace do wybranego skafoldu - pozycje oraz kolejność markerów i kontigów.

49 3.8. Instrukcja użytkowania 44 Rysunek 3.6. Podziurawiona struktura skafoldów. W przerwie skafoldu o numerze (żółty) znajduje się inny o numerze (ciemny zielony). Sytuacja ta odwzorowuje charakterystyczna właściwość skafoldu, która jest brak ciagłości sekwencji. Podglad konkretnych struktur Dwukrotne kliknięcie na skafold powoduje otworzenie okna wyświetlajacego szczegółowe informacje na jego temat. Na przedstawionym na rysunku 3.7 zrzucie aplikacji widoczna jest cała wiedza dostępna o danej strukturze skafoldu. Z poziomu tego okna mamy możliwość otworzenia okien z lista wszystkich kontigów (przycisk List of contigs, po którego kliknięciu wyświetla się okno przedstawione na rysunku3.10) oraz wszystkich markerów (przycisk List of markers, który wyzwala okno przedstawione na rysunku 3.11) przynależacych do danego skafoldu. Mamy również sposobność usunięcia danego skafoldu z bazy danych. W większości przypadków sekwencja skafoldu jest zbyt długa, aby móc ja cała wyświetlić w prawej części okna. Jeżeli jednak istnieje konieczność jej podejrzenia jest również możliwość pobrania jej na dysk lokalny w formacie FASTA poprzez kliknięcie na przycisk Download. Analogiczne działanie do opisywanego powyżej, ma miejsce podczas jednokrotnego kliknięcia na kontig. W rezultacie tego zdarzenia otwiera się okno przedstawione na rysunku 3.8. W jego lewej części znajduja się szczegółowe informacje o strukturze wskazanego kontiga, wraz z możliwościa przejścia do okna przedstawiajacego listę wszystkich markerów przynależacych do niego (przycisk List of markers powodujacy ukazanie się widoku przedstawionego na rysunku 3.12) oraz do okna ze szczegółami skafoldu, na którym kontig się znajduje (przycisk Show scaffold informations). Okno to daje również możliwość usunięcia danego kontiga z bazy danych. Podobnie jak miało to miejsce w przypadku opisanym powyżej, w tym oknie istnieje również możliwość zapisania sekwencji kontiga w formacie fasta na lokalnym dysku.

50 3.8. Instrukcja użytkowania 45 Rysunek 3.7. Widok skafoldu. Przedstawione szczegółowe informacje na temat wybranego skafoldu. Możliwość przejścia do okien przedstawiajacych kontigi oraz markery przynależace do niego. Rysunek 3.8. Widok kontiga. Przedstawione szczegółowe informacje na temat wybranego kontiga. Możliwość przejścia do okna przedstawiajacego markery przynależace do niego oraz skafoldu, na którym się znajduje. Okno przedstawiajace szczegółowe informacje o markerze, wyzwolone poprzez jednokrotne kliknięcie na niego, zostało przedstawione na rysunku 3.9. Jego budowa jest analogiczna do dwóch opisanych powyżej. W lewej części okna widoczne sa szczegółowe informacje o markerze, zaś po prawej stronie widoczny jest podglad sekwencji wraz z możliwościa pobrania jej w formacie fasta na dysk lokalny użytkownika. Z poziomu tego okna istnieje możliwość przejścia do informacji o strukturach, na których dany marker się znajduje - skafoldzie (przycisk Show scaffold informations) oraz kontigu (przycisk Show contig informations).

51 3.8. Instrukcja użytkowania 46 Rysunek 3.9. Widok markera. Przedstawione szczegółowe informacje na temat wybranego markera. Możliwość przejścia do okien obrazujacych struktury, na którym się znajduje. Rysunek Lista kontigów przynależ acych do danego skafoldu, wraz z ogólnymi informacjami na ich temat.

52 3.8. Instrukcja użytkowania 47 Rysunek Lista markerów przynależacych do danego skafoldu, wraz z ogólnymi informacjami na ich temat. Rysunek Lista markerów przynależacych do danego kontiga, wraz z ogólnymi informacjami na ich temat. Rysunek 3.13 przedstawia jeden ze sposobów przybliżania widoku skafoldu poprzez intuicyjne zaznaczenie interesujacego nas obszaru.

53 3.8. Instrukcja użytkowania 48 Rysunek Jedna z metod uszczegółowiania widoku skafoldu. Przeszukiwanie bazy danych Jednym z ważniejszych i ciekawszych elementów zaimplementowanej aplikacji sa narzędzia do przeszukiwania bazy danych, w tym algorytmy do dopasowywania sekwencji nukleotydowych. Klikajac na przycisk Search w widoku organizmy, który został przedstawiony na rysunku 3.4, zostanie otwarte okno umożliwiajace dokonanie wyboru sposobu przeszukiwania bazy, przedstawione na rysunku Mamy do wyboru następujace opcje: Search structures by ID - możliwość odnalezienia struktury po jej identyfikatorze (numer skafoldu badź kontiga) - rysunek 3.15; Search markers by name - odszukanie struktury markera po jego nazwie - rysunek 3.16; Search for similar sequences - uruchomienie algorytmów dopasowania sekwencji (Smith-Waterman, BLAST, BLAST-SW) - rysunek 3.17; Search the same sequence - możliwość wyszukania zadanego wzorca w dowolnych sekwencjach z bazy danych (algorytm Knutha-Morrisa-Pratta oraz Boyera-Moore a) - rysunek Na rysunku 3.18 został przedstawiony efekt działania jednego z algorytmów dopasowania sekwencji. Podana w polu Pattern sekwencja została odnaleziona na wszystkich strukturach przedstawionych w tabeli znajdujacej się poniżej. Zawiera ona podstawowe informacje wynikajace z procesu przyrównania. Po zaznaczeniu dowolnego wiersza tabeli oraz kliknięciu przycisku Show details zostajemy przeniesieni do widoku chromosomu, gdzie w sposób wizualny zostanie przedstawiony wynik dopasowania - poprzez naniesienie przeszukiwanej sekwencji na wybrana strukturę.

54 3.8. Instrukcja użytkowania 49 Rysunek Główne okno wyszukiwania struktur w bazie danych. Rysunek Okno wyszukiwania struktur po identyfikatorze. Rysunek Wyniki działania algorytmów badania podobieństw sekwencji.

55 3.8. Instrukcja użytkowania 50 Rysunek Okno wyszukiwania markera po jego nazwie. Rysunek Okno wyszukiwania wzorców w zadanych sekwencjach. Rysunek 3.20 przedstawia wynik działania algorytmu odnajdywania zadanego wzorca. Podobnie jak w przypadku okna z wynikami dopasowania sekwencji, również tutaj struktury, na których odnaleziono wzorzec zostały przedstawione w formie tabeli. Po wybraniu dowolnego wyniku i kliknięciu przycisku Show details zostajemy przeniesieni do widoku organizmu.

56 3.8. Instrukcja użytkowania 51 Rysunek Okno wyszukiwania podobnych sekwencji algorytmem Smitha-Watermana. Analogiczne okno wykorzystywane jest przy wyszukiwaniu algorytmem BLAST z wykorzystaniem metody Smitha-Watermana do precyzyjnego określenia podobieństwa. W takim przypadku w sekcji Options widoczne sa inne parametry wejściowe, odpowiednio: Parameter W, Parameter T, Parameter C, Cut Off. Rysunek Wyniki działania algorytmu wyszukiwania wzorca w sekwencjach.

57 3.8. Instrukcja użytkowania 52 Algorytmy dopasowania sekwencji z reguły sa bardzo czasochłonne, co niesie za soba pewna niewygodę zwiazan a z oczekiwaniem na rezultat działania. W zwiazku z tym został zaimplementowany pasek postępu, który informuje użytkownika aplikacji o procesie działania algorytmów wraz z szacunkowym procentowym stopniem zaawansowania ich wykonania. Rysunek Sposób przedstawiania postępu działania algorytmów. Okno wprowadzania nowych danych Okno przedstawione na rysunku 3.22 przedstawia wszystkie organizmy, które aktualnie zostały załadowane do aplikacji i z której poziomu można nimi zarzadzać. W górnym pasku widoczny jest przycisk Add organism, po którego kliknięciu zostajemy przeniesieni do okna Po prawidłowym wypełnieniu odpowiednich pól, nowy organizm zostanie dodany do aplikacji. Po kliknięciu na dowolny przycisk z nazwa organizmu zostajemy przeniesieni do okna przedstawiajacego jego chromosomy Rysunek Zarzadzanie organizmami. Z poziomu okna ukazanego na rysunku 3.4, po kliknięciu na przycisk Assemblin types options możemy przejść do okna przedstawionego na rysunku 3.24, z poziomu którego mamy możliwość dodawania, edytowania oraz usuwania typów asemblacji danego organizmu. Z tego samego okna po wybraniu przycisku 3.25 zostanie otworzone okno zaprezentowane na rysunku 3.25, które umożliwia zaimportowanie struktur. Po wybraniu odpowiedniego typu asemblacji, rodzaju importowanej struktury, odczytaniu pliku CSV oraz sekwencji FASTA, odpowiednie wybrane skafoldu lub kontigi zostana dodane do bazy danych oraz wyświetlone w aplikacji. Za odczyt wskazanych w poprzednim zdaniu plików odpowiedzialne jest okno przedstawione na rysunku Po załadowaniu odpowiedniego pliku, a przed przekazaniem jego treści dalej, możliwa jest jego wcześniejsza edycja.

58 3.8. Instrukcja użytkowania 53 Rysunek Okno dodawania nowego organizmu. Rysunek Okno importowania struktur.

59 3.8. Instrukcja użytkowania 54 Rysunek Zarzadzanie typami asemblacji. Rysunek Okno odczytywania plików powiazanych z importowaniem danych.

60 4. Uruchomienie aplikacji dla genomu ogórka oraz badania W rozdziale tym została przedstawiona analiza danych otrzymanych od naukowców z SGGW oraz zostały przedstawione wyniki badań przeprowadzonych w ramach poniższej pracy. Uwaga została skupiona przede wszystkim na działaniu zaimplementowanych algorytmów przeszukiwania sekwencji nukleotydowych oraz wpływie wartości parametrów na ich wykonanie. Poniższe badania zostały przeprowadzone w celu dogłębniejszego poznania działania zaimplementowanych algorytmów, wyróżnieniu ich zalet oraz wad w różnych sytuacjach, sprawdzenia wpływu długości sekwencji oraz wartości poszczególnych parametrów na ich wydajność. Wszystkie badania przeprowadzane były na komputerze przenośnym z procesorem Intel Core i5 2.67GHz, 8GB pamięci DDR3 z zainstalowanym 64 bitowym systemem operacyjnym. Wysunięte wnioski, przedstawione szczegółowo w tym rozdziale, potwierdziły teoretyczne charakterystyki algorytmów. Opisano sytuacje, w których jeden z algorytmów jest wydajniejszy od pozostałych. Zamieszczone wykresy moga posłużyć jako niezbędna wiedza przy wykorzystaniu aplikacji do prób dopasowania nowych sekwencji. W katalogu server/study/ znajduja się źródła kodu przeprowadzajacego każdy z poniższych testów. Katalog server/study/output przechowuje wszystkie wygenerowane w toku badań wyniki działania skryptów testujacych Analiza źródła danych Aplikacja działa z danymi dowolnego organizmu, który został wprowadzony do bazy danych, jednak w zamyśle została ona wytworzona w celu zwizualizowania genomu ogórka północnoeuropejskiego. To właśnie zsekwencjonowany genom tego organizmu posłużył jako źródło oraz model do wszystkich kolejnych prac. Wszystkie dane źródłowe jego dotyczace, można podzielić na dwie główne grupy: pliki w formacie FASTA z sekwencjami poszczególnych struktur; pliki arkuszy kalkulacyjnych z informacjami o położeniu wszystkich struktur, ich przynależności oraz pozostałych ich cechach. Proces interpretowania oraz organizowania powyższych danych stał się niejako pierwszym badawczym elementem w pracy. Informacje przechowywane w arkuszach okazywały się w pewnych momentach niejasne, błędne, co wymagało dogłębnego ich zrozumienia oraz przeanalizowania. Czasochłonny proces zgłębiania wiedzy na temat genomu ogórka doprowadził do konieczności wytworzenia licznych skryptów odpowiedzialnych za automatyczne parsowanie dokumentów XLSX oraz plików FASTA. Ponieważ pliki te przechowuja ogromne ilości danych, każdorazowe ich odczytywanie w procesie analizy powodowałoby spory narzut czasowy, postanowiono zmienić sposób przechowywania tychże danych, wykorzystano obiekty języka

61 4.1. Analiza źródła danych 56 Python zapisane do pliku pickle. Taki zabieg umożliwił szybszy odczyt danych źródłowych, polegajacy wyłacznie na odczytaniu pliku pickle (nieporównywalnie szybciej w porównaniu do klasycznego odczytu informacji). Jedna z napotkanych nieścisłości dotyczyła kontigów odczytanych podczas sekwencjonowania Celera 1. Ilość struktur w arkuszu kalkulacyjnym różniła się od ilości różnych sekwencji w pliku fasta. Sekwencji było ponad 25 razy więcej niż kontigów opisanych w pliku xlsx. Dodatkowo aż 3851 (na 4173 wszystkich odczytanych) znanych sekwencji kontigów nie znaleziono na żadnym ze znanych skafoldów celera. Bardzo znacznym utrudnieniem z punktu widzenia budowania interfejsu użytkownika oraz wizualizowania kolejnych struktur była różnica w jednostkach ich położenia. Skafoldy umieszczone sa na chromosomach w jednostkach genetycznych (cm), dla których różnica odległości zmienia się dla tych samych wartości wraz z oddalaniem się od wartości 0. Kontigi oraz markery umieszczone sa zaś w jednostkach fizycznych (bp), które sa jednostka naturalna i pożadan a. Kolejny napotkany problem dotyczy markerów systemu Celera. Naukowcy z SGGW dysponuja jedynie plikami opisujacymi markery systemu Arachne 2, zaś otrzymanie pozycji markerów Celera wymusza zastosowanie odpowiednich mapowań, które sa pewnym przybliżeniem posiadanej wiedzy. Podczas analizy otrzymanych danych wynikła również informacja na temat nieścisłości stosowania identyfikatorów skafoldów. Mogłoby się wydawać, że sa one liczbami całkowitymi, jednak jak okazało się w trakcie badań zdarzaja się takie struktury, które posiadaja sufiks a lub b. W taki sposób został oznaczony skafold dzielony - jedna jego część znajduje się na jednym chromosomie, zaś druga jego część znajduje się na innym. Przykładem może być skafold o identyfikatorze a zmapowany na chromosomie 6 oraz b umieszczony na chromosomie 7. Dodatkowym problemem w przypadku tych skafoldów była błędna informacja o ich długości w arkuszach kalkulacyjnych. O ile długości pozostałych (regularnych) skafoldów zgadzaja się z tymi zawartymi w pliku xlsx, o tyle skafoldy dzielone sa błędnie obliczone. Przykładowo długość sekwencji skafoldu odczytana z pliku fasta wynosi , zaś długość sekwencji odczytana z arkusza kalkulacyjnego wynosi , czyli jest o 527 reszt krótsza. Istotny problem wynikł podczas analizy położenia skafoldów na chromosomach. Dla wielu z nich pozycje w jednostkach genetycznych, opisane w arkuszu kalkulacyjnym były identyczne. Przykład stanowi sytuacja przedstawiona na poniższym listingu: chr1 55, chr1 55, chr1 55, chr1 55, chr1 56, chr1 56, chr1 56, chr1 56, chr1 56, chr1 56,125 1 Celera w tym kontekście oznacza wynik działania algorytmu aseblera Celera wykonanego przez Celera Genomics [6], obecnie zaś rozwijanego jako oprogramowanie typu Open Source. 2 Arachne rozumiana jest jako wynik działania algorytmu asemblera Arachne rozwijanego przez Broad Institute [5].

62 4.2. Algorytm Knutha-Morrisa-Pratta 57 Skafold umiejscowiony jest dwa razy na chromosomie nr 1 - na pozycjach: 55,064 cm oraz 56,125 cm. Dodatkowo na pozycji 56,125 cm umiejscowione sa dwa inne skafoldy: oraz Występowanie jednego skafoldu w dwóch różnych miejscach na chromosomie tłumaczy dziurawa strukturę skafoldów, posiadajacych nieznane fragmenty nukleotydów. Występowanie wielu skafoldów na jednej pozycji jest zaś cecha charakterystyczna jednostek genetycznych, które sa o wiele mniej dokładne i miarodajne niż jednostki fizyczne. Na taka sytuację ma również wpływ rozdzielczość mapy genetycznej dla ogórka, która jest niewielka. Na bieżaco w trakcie analizy wynikały również nieścisłości zwiazane z położeniem kontigów na skafoldach, położeniem markerów na skafoldach oraz markerach, jak również sekwencjami tychże struktur. Problemy te jednak starano się na bieżaco rozwiazywać, posiłkujac się innymi posiadanymi plikami z danymi ogórka północnoeuropejskiego. Po półrocznej pracy udało się poprawnie umieścić dane w bazie danych. Dla wyników asemblera Celera jest 5557 kontigów, 136 skafoldów, zaś sumaryczna długość sekwencji skafoldów wynosi nukleotydów. Dla asemblera Arachne jest 3057 kontigów, 802 skafoldów, zaś sumaryczna długość sekwencji skafoldów wynosi nukleotydów. Baza danych zajmuje około 573 MB Algorytm Knutha-Morrisa-Pratta Zgodnie z informacjami zawartymi w rozdziale właściwy algorytm Knutha-Morrisa-Pratta działa w czasie liniowym od długości przeszukiwanego tekstu oraz wzorca. Sytuacja taka jest szczególnie ważna w przypadku wzorców o dużych rozmiarach. Algorytm jest w stanie zapewnić tak dobre wyniki czasowe dzięki zastosowaniu tablicy pomocniczej, która informuje o tym, gdzie powinno rozpoczać się kolejne dopasowanie, bez konieczności powtórnego przyrównania już dopasowanych znaków. Badania przeprowadzone nad zaimplementowana w ramach poniższej pracy wersja algorytmu wykazuja, że czas działania całego algorytmu dla stałej długości sekwencji przeszukiwanej jest w przybliżeniu niezmienny (waha się od 0,7s do 1,8s) - czas potrzebny na zbudowanie pomocniczej tablicy jest liniowo proporcjonalny do długości wzorca, czas działania pozostałej części algorytmu jest w stały dla niezmieniajacej się długości sekwencji przeszukiwanej. Sytuację taka bardzo dobrze obrazuje wykres przedstawiony na rysunku 4.1. Rysunek 4.2 przedstawia ponadto wykres, na którym dokładnie widać, że ogólny czas działania algorytmu zależy w głównej mierze od długości sekwencji przeszukiwanej. Z tego samego wykresu wynika, że czas budowania tablicy pomocniczej w żaden sposób nie zależy od długości sekwencji przeszukiwanej, co jest zgodne z teoria. Poniższe zestawienie przedstawia długości sekwencji dla poszczególnych wyników badań: Dane wejściowe, dla których uzyskano wykres 4.1: Długość sekwencji wzorcowej: od do (co ) nukleotydów. Długość sekwencji przeszukiwanej: nukleotydów. Dane wejściowe, dla których uzyskano wykres 4.2: Długość sekwencji wzorcowej: nukleotydów.

63 4.2. Algorytm Knutha-Morrisa-Pratta 58 Długość sekwencji przeszukiwanej: od do (co ) nukleotydów. Rysunek 4.1. Czas działania algorytmu Knutha-Morrisa-Pratta w zależności od długości sekwencji wzorcowej. Kolorem czerwonym oznaczono czas potrzebny na zbudowanie tablicy pomocniczej, zaś kolorem niebieskim został oznaczony sumaryczny czas działania algorytmu dla kolejnych długości wzorca. Rysunek 4.2. Czas działania algorytmu Knutha-Morrisa-Pratta w zależności od długości sekwencji przeszukiwanych. Kolorem czerwonym został oznaczony czas potrzebny na zbudowanie tablicy pomocniczej, zaś kolorem niebieskim oznaczono sumaryczny czas wykonania całego algorytmu.

PRZYRÓWNANIE SEKWENCJI

PRZYRÓWNANIE SEKWENCJI http://theta.edu.pl/ Podstawy Bioinformatyki III PRZYRÓWNANIE SEKWENCJI 1 Sequence alignment - przyrównanie sekwencji Poszukiwanie ciągów znaków (zasad nukleotydowych lub reszt aminokwasowych), które posiadają

Bardziej szczegółowo

Przyrównanie sekwencji. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Przyrównanie sekwencji. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu Przyrównanie sekwencji Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu Sequence alignment - przyrównanie sekwencji Poszukiwanie ciągów znaków (zasad nukleotydowych lub reszt aminokwasowych),

Bardziej szczegółowo

Spis treści. Przedmowa... XI. Wprowadzenie i biologiczne bazy danych. 1 Wprowadzenie... 3. 2 Wprowadzenie do biologicznych baz danych...

Spis treści. Przedmowa... XI. Wprowadzenie i biologiczne bazy danych. 1 Wprowadzenie... 3. 2 Wprowadzenie do biologicznych baz danych... Przedmowa... XI Część pierwsza Wprowadzenie i biologiczne bazy danych 1 Wprowadzenie... 3 Czym jest bioinformatyka?... 5 Cele... 5 Zakres zainteresowań... 6 Zastosowania... 7 Ograniczenia... 8 Przyszłe

Bardziej szczegółowo

Dopasowanie sekwencji (sequence alignment)

Dopasowanie sekwencji (sequence alignment) Co to jest alignment? Dopasowanie sekwencji (sequence alignment) Alignment jest sposobem dopasowania struktur pierwszorzędowych DNA, RNA lub białek do zidentyfikowanych regionów w celu określenia podobieństwa;

Bardziej szczegółowo

Porównywanie i dopasowywanie sekwencji

Porównywanie i dopasowywanie sekwencji Porównywanie i dopasowywanie sekwencji Związek bioinformatyki z ewolucją Wraz ze wzrostem dostępności sekwencji DNA i białek pojawiła się nowa możliwość śledzenia ewolucji na poziomie molekularnym Ewolucja

Bardziej szczegółowo

Dopasowania par sekwencji DNA

Dopasowania par sekwencji DNA Dopasowania par sekwencji DNA Tworzenie uliniowień (dopasowań, tzw. alignmentów ) par sekwencji PSA Pairwise Sequence Alignment Dopasowania globalne i lokalne ACTACTAGATTACTTACGGATCAGGTACTTTAGAGGCTTGCAACCA

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI DOPASOWANIE SEKWENCJI 1. Dopasowanie sekwencji - definicja 2. Wizualizacja dopasowania sekwencji 3. Miary podobieństwa sekwencji 4. Przykłady programów

Bardziej szczegółowo

Wykład 5 Dopasowywanie lokalne

Wykład 5 Dopasowywanie lokalne Wykład 5 Dopasowywanie lokalne Dopasowanie par (sekwencji) Dopasowanie globalne C A T W A L K C A T W A L K C O W A R D C X X O X W X A X R X D X Globalne dopasowanie Schemat punktowania (uproszczony)

Bardziej szczegółowo

Dopasowywanie sekwencji (ang. sequence alignment) Metody dopasowywania sekwencji. Homologia a podobieństwo sekwencji. Rodzaje dopasowania

Dopasowywanie sekwencji (ang. sequence alignment) Metody dopasowywania sekwencji. Homologia a podobieństwo sekwencji. Rodzaje dopasowania Wprowadzenie do Informatyki Biomedycznej Wykład 2: Metody dopasowywania sekwencji Wydział Informatyki PB Dopasowywanie sekwencji (ang. sequence alignment) Dopasowywanie (przyrównywanie) sekwencji polega

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI DOPASOWANIE SEKWENCJI 1. Dopasowanie sekwencji - definicja 2. Wizualizacja dopasowania sekwencji 3. Miary podobieństwa sekwencji 4. Przykłady programów

Bardziej szczegółowo

Politechnika Wrocławska. Dopasowywanie sekwencji Sequence alignment

Politechnika Wrocławska. Dopasowywanie sekwencji Sequence alignment Dopasowywanie sekwencji Sequence alignment Drzewo filogenetyczne Kserokopiarka zadanie: skopiować 300 stron. Co może pójść źle? 2x ta sama strona Opuszczona strona Nadmiarowa pusta strona Strona do góry

Bardziej szczegółowo

Algorytmy przeszukiwania wzorca

Algorytmy przeszukiwania wzorca Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Algorytmy przeszukiwania wzorca 1 Wstęp Algorytmy

Bardziej szczegółowo

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji.

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji. Bioinformatyka Ocena wiarygodności dopasowania sekwencji www.michalbereta.pl Załóżmy, że mamy dwie sekwencje, które chcemy dopasować i dodatkowo ocenić wiarygodność tego dopasowania. Interesujące nas pytanie

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Porównywanie i dopasowywanie sekwencji

Porównywanie i dopasowywanie sekwencji Porównywanie i dopasowywanie sekwencji Związek bioinformatyki z ewolucją Wraz ze wzrostem dostępności sekwencji DNA i białek narodziła się nowa dyscyplina nauki ewolucja molekularna Ewolucja molekularna

Bardziej szczegółowo

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa Konrad Miziński 14 stycznia 2015 1 Temat projektu Grupowanie hierarchiczne na podstawie algorytmu k-średnich. 2 Dokumenty

Bardziej szczegółowo

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2015 Co można zrobić z układem równań... tak, aby jego rozwiazania się nie zmieniły? Rozważam

Bardziej szczegółowo

1 abbbaabaaabaa -wzorzec: aaba

1 abbbaabaaabaa -wzorzec: aaba Algorytmy i złożoność obliczeniowa Laboratorium 14. Algorytmy tekstowe. 1. Algorytmy tekstowe Algorytmy tekstowe mają decydujące znaczenie przy wyszukiwaniu informacji typu tekstowego, ten typ informacji

Bardziej szczegółowo

Dopasowywanie modelu do danych

Dopasowywanie modelu do danych Tematyka wykładu dopasowanie modelu trendu do danych; wybrane rodzaje modeli trendu i ich właściwości; dopasowanie modeli do danych za pomocą narzędzi wykresów liniowych (wykresów rozrzutu) programu STATISTICA;

Bardziej szczegółowo

Ćwiczenie 5/6. Informacja genetyczna i geny u różnych grup organizmów. Porównywanie sekwencji nukleotydowych w bazie NCBI z wykorzystaniem BLAST.

Ćwiczenie 5/6. Informacja genetyczna i geny u różnych grup organizmów. Porównywanie sekwencji nukleotydowych w bazie NCBI z wykorzystaniem BLAST. Ćwiczenie 5/6 Informacja genetyczna i geny u różnych grup organizmów. Porównywanie sekwencji nukleotydowych w bazie NCBI z wykorzystaniem BLAST. Prof. dr hab. Roman Zieliński 1. Informacja genetyczna u

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Przyrównywanie sekwencji

Przyrównywanie sekwencji Instytut Informatyki i Matematyki Komputerowej UJ, opracowanie: mgr Ewa Matczyńska, dr Jacek Śmietański Przyrównywanie sekwencji 1. Porównywanie sekwencji wprowadzenie Sekwencje porównujemy po to, aby

Bardziej szczegółowo

Wykład 6. Wyszukiwanie wzorca w tekście

Wykład 6. Wyszukiwanie wzorca w tekście Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

Algorytmy sztucznej inteligencji

Algorytmy sztucznej inteligencji www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ

REFERAT PRACY DYPLOMOWEJ REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja środowiska do automatyzacji przeprowadzania testów aplikacji internetowych w oparciu o metodykę Behavior Driven Development. Autor: Stepowany

Bardziej szczegółowo

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK

Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK Problemy optymalizacji, rozbudowy i integracji systemu Edu wspomagającego e-nauczanie i e-uczenie się w PJWSTK Paweł Lenkiewicz Polsko Japońska Wyższa Szkoła Technik Komputerowych Plan prezentacji PJWSTK

Bardziej szczegółowo

Bioinformatyka. (wykład monograficzny) wykład 5. E. Banachowicz. Zakład Biofizyki Molekularnej IF UAM

Bioinformatyka. (wykład monograficzny) wykład 5. E. Banachowicz. Zakład Biofizyki Molekularnej IF UAM Bioinformatyka (wykład monograficzny) wykład 5. E. Banachowicz Zakład Biofizyki Molekularnej IF UM http://www.amu.edu.pl/~ewas lgorytmy macierze punktowe (DotPlot) programowanie dynamiczne metody heurystyczne

Bardziej szczegółowo

Kurs MATURA Z INFORMATYKI

Kurs MATURA Z INFORMATYKI Kurs MATURA Z INFORMATYKI Cena szkolenia Cena szkolenia wynosi 90 zł za 60 min. Ilość godzin szkolenia jest zależna od postępów w nauce uczestnika kursu oraz ilości czasu, którą będzie potrzebował do realizacji

Bardziej szczegółowo

Metody bioinformatyki (MBI) projekt, dokumentacja końcowa

Metody bioinformatyki (MBI) projekt, dokumentacja końcowa 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

Bardziej szczegółowo

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Uwarunkowanie zadania numerycznego Niech ϕ : R n R m będzie pewna funkcja odpowiednio wiele

Bardziej szczegółowo

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical;

Bardziej szczegółowo

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami Politechnika Gdańska Wydział Zarządzania i Ekonomii Katedra Zastosowań Informatyki w Zarządzaniu Zakład Zarządzania Technologiami Informatycznymi Model referencyjny Open Source dla dr hab. inż. Cezary

Bardziej szczegółowo

Maciej Piotr Jankowski

Maciej Piotr Jankowski Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji

Bardziej szczegółowo

Pomorski Czarodziej 2016 Zadania. Kategoria C

Pomorski Czarodziej 2016 Zadania. Kategoria C Pomorski Czarodziej 2016 Zadania. Kategoria C Poniżej znajduje się 5 zadań. Za poprawne rozwiązanie każdego z nich możesz otrzymać 10 punktów. Jeżeli otrzymasz za zadanie maksymalną liczbę punktów, możesz

Bardziej szczegółowo

Praca magisterska Jakub Reczycki. Opiekun : dr inż. Jacek Rumiński. Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska

Praca magisterska Jakub Reczycki. Opiekun : dr inż. Jacek Rumiński. Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska System gromadzenia, indeksowania i opisu słownikowego norm i rekomendacji Praca magisterska Jakub Reczycki Opiekun : dr inż. Jacek Rumiński Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska

Bardziej szczegółowo

SCENARIUSZ LEKCJI. Dzielenie wielomianów z wykorzystaniem schematu Hornera

SCENARIUSZ LEKCJI. Dzielenie wielomianów z wykorzystaniem schematu Hornera Autorzy scenariusza: SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Bardziej szczegółowo

MultiSETTER: web server for multiple RNA structure comparison. Sandra Sobierajska Uniwersytet Jagielloński

MultiSETTER: web server for multiple RNA structure comparison. Sandra Sobierajska Uniwersytet Jagielloński MultiSETTER: web server for multiple RNA structure comparison Sandra Sobierajska Uniwersytet Jagielloński Wprowadzenie Budowa RNA: - struktura pierwszorzędowa sekwencja nukleotydów w łańcuchu: A, U, G,

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI

PODSTAWY BIOINFORMATYKI PODSTAWY BIOINFORMATYKI Prowadzący: JOANNA SZYDA ADRIAN DROśDś WSTĘP 1. Katedra Genetyki badania bioinformatyczne 2. Tematyka przedmiotu 3. Charakterystyka wykładów 4. Charakterystyka ćwiczeń 5. Informacje

Bardziej szczegółowo

Polcode Code Contest PHP-10.09

Polcode Code Contest PHP-10.09 Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania

Bardziej szczegółowo

Bioinformatyka Laboratorium, 30h. Michał Bereta

Bioinformatyka Laboratorium, 30h. Michał Bereta Bioinformatyka Laboratorium, 30h Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Wyszukiwanie sekwencji Jak wyszukad z baz danych bioinformatycznych sekwencje podobne do sekwencji zadanej (ang. query

Bardziej szczegółowo

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1. Grażyna Koba MIGRA 2019 Spis treści (propozycja na 2*32 = 64 godziny lekcyjne) Moduł A. Wokół komputera i sieci komputerowych

Bardziej szczegółowo

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych

Bardziej szczegółowo

Dokumentacja projektu QUAIKE Architektura oprogramowania

Dokumentacja projektu QUAIKE Architektura oprogramowania Licencjacka Pracownia Oprogramowania Instytut Informatyki Uniwersytetu Wrocławskiego Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski Dokumentacja projektu QUAIKE Architektura

Bardziej szczegółowo

Bioinformatyka Laboratorium, 30h. Michał Bereta

Bioinformatyka Laboratorium, 30h. Michał Bereta Bioinformatyka Laboratorium, 30h Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Często dopasować chcemy nie dwie sekwencje ale kilkanaście lub więcej 2 Istnieją dokładne algorytmy, lecz są one niewydajne

Bardziej szczegółowo

Wzorcowe efekty kształcenia dla kierunku studiów biotechnologia studia pierwszego stopnia profil ogólnoakademicki

Wzorcowe efekty kształcenia dla kierunku studiów biotechnologia studia pierwszego stopnia profil ogólnoakademicki Załącznik nr 2 do Uchwały Rady Wydziału Biochemii, Biofizyki i Biotechnologii UJ z dnia 19 czerwca 2018 r. w sprawie programu i planu studiów na kierunku BIOTECHNOLOGIA na poziomie studiów pierwszego stopnia

Bardziej szczegółowo

Przybliżone algorytmy analizy ekspresji genów.

Przybliżone algorytmy analizy ekspresji genów. Przybliżone algorytmy analizy ekspresji genów. Opracowanie i implementacja algorytmu analizy danych uzyskanych z eksperymentu biologicznego. 20.06.04 Seminarium - SKISR 1 Wstęp. Dane wejściowe dla programu

Bardziej szczegółowo

Możliwości współczesnej inżynierii genetycznej w obszarze biotechnologii

Możliwości współczesnej inżynierii genetycznej w obszarze biotechnologii Możliwości współczesnej inżynierii genetycznej w obszarze biotechnologii 1. Technologia rekombinowanego DNA jest podstawą uzyskiwania genetycznie zmodyfikowanych organizmów 2. Medycyna i ochrona zdrowia

Bardziej szczegółowo

prof. dr hab. inż. Marta Kasprzak Instytut Informatyki, Politechnika Poznańska Dopasowanie sekwencji

prof. dr hab. inż. Marta Kasprzak Instytut Informatyki, Politechnika Poznańska Dopasowanie sekwencji Bioinformatyka wykład 5: dopasowanie sekwencji prof. dr hab. inż. Marta Kasprzak Instytut Informatyk Politechnika Poznańska Dopasowanie sekwencji Badanie podobieństwa sekwencji stanowi podstawę wielu gałęzi

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka Modelowanie jako sposób opisu rzeczywistości Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka 2015 Wprowadzenie: Modelowanie i symulacja PROBLEM: Podstawowy problem z opisem otaczającej

Bardziej szczegółowo

Dopasowanie par sekwencji

Dopasowanie par sekwencji BIOINFORMTYK edycja 2016 / 2017 wykład 3 Dopasowanie par sekwencji dr Jacek Śmietański jacek.smietanski@ii.uj.edu.pl http://jaceksmietanski.net Plan wykładu 1. Idea i cele dopasowania sekwencji 2. Definicje

Bardziej szczegółowo

Bioinformatyka 2 (BT172) Progresywne metody wyznaczania MSA: T-coffee

Bioinformatyka 2 (BT172) Progresywne metody wyznaczania MSA: T-coffee Bioinformatyka 2 (BT172) Wykład 5 Progresywne metody wyznaczania MSA: T-coffee Krzysztof Murzyn 14.XI.2005 PLAN WYKŁADU Ostatnio : definicje, zastosowania MSA, złożoność obliczeniowa algorytmu wyznaczania

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 8

Algorytmy i struktury danych. wykład 8 Plan wykładu: Kodowanie. : wyszukiwanie wzorca w tekście, odległość edycyjna. Kodowanie Kodowanie Kodowanie jest to proces przekształcania informacji wybranego typu w informację innego typu. Kod: jest

Bardziej szczegółowo

Szkolenie: Testowanie wydajności (Performance Testing)

Szkolenie: Testowanie wydajności (Performance Testing) Szkolenie: Testowanie wydajności (Performance Testing) Testy niefunkcjonalne aplikacji to nieodłączna część pracy dobrego testera. Do tego typu testów zaliczamy między innymi taką właściwość systemu jak

Bardziej szczegółowo

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Krzysztof Kadowski. PL-E3579, PL-EA0312, Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza

Bardziej szczegółowo

Lokalizacja Oprogramowania

Lokalizacja Oprogramowania mgr inż. Anton Smoliński anton.smolinski@zut.edu.pl Lokalizacja Oprogramowania 16/12/2016 Wykład 6 Internacjonalizacja, Testowanie, Tłumaczenie Maszynowe Agenda Internacjonalizacja Testowanie lokalizacji

Bardziej szczegółowo

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Wykład Ćwiczenia Laboratorium Projekt Seminarium WYDZIAŁ ELEKTRONIKI KARTA PRZEDMIOTU Nazwa w języku polskim Języki programowania Nazwa w języku angielskim Programming languages Kierunek studiów (jeśli dotyczy): Informatyka - INF Specjalność (jeśli dotyczy):

Bardziej szczegółowo

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany. Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Referat Pracy Dyplomowej

Referat Pracy Dyplomowej Referat Pracy Dyplomowej Team Pracy: Projekt i realizacja gry w technologii HTML5 z wykorzystaniem interfejsu programistycznego aplikacji Facebook Autor: Adam Bartkowiak Promotor: dr inż. Roman Simiński

Bardziej szczegółowo

Konstruowanie drzew filogenetycznych. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Konstruowanie drzew filogenetycznych. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu Konstruowanie drzew filogenetycznych Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu Drzewa filogenetyczne ukorzenione i nieukorzenione binarność konstrukcji topologia (sposób rozgałęziana

Bardziej szczegółowo

Przewodnik użytkownika (instrukcja) AutoMagicTest

Przewodnik użytkownika (instrukcja) AutoMagicTest Przewodnik użytkownika (instrukcja) AutoMagicTest 0.1.21.137 1. Wprowadzenie Aplikacja AutoMagicTest to aplikacja wspierająca testerów w testowaniu i kontrolowaniu jakości stron poprzez ich analizę. Aplikacja

Bardziej szczegółowo

Porównanie generatorów liczb losowych wykorzystywanych w arkuszach kalkulacyjnych

Porównanie generatorów liczb losowych wykorzystywanych w arkuszach kalkulacyjnych dr Piotr Sulewski POMORSKA AKADEMIA PEDAGOGICZNA W SŁUPSKU KATEDRA INFORMATYKI I STATYSTYKI Porównanie generatorów liczb losowych wykorzystywanych w arkuszach kalkulacyjnych Wprowadzenie Obecnie bardzo

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

Bardziej szczegółowo

Bazy danych Wykład zerowy. P. F. Góra

Bazy danych Wykład zerowy. P. F. Góra Bazy danych Wykład zerowy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Patron? Św. Izydor z Sewilli (VI wiek), biskup, patron Internetu (sic!), stworzył pierwszy katalog Copyright c 2011-12 P.

Bardziej szczegółowo

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Usługi analityczne budowa kostki analitycznej Część pierwsza. Usługi analityczne budowa kostki analitycznej Część pierwsza. Wprowadzenie W wielu dziedzinach działalności człowieka analiza zebranych danych jest jednym z najważniejszych mechanizmów podejmowania decyzji.

Bardziej szczegółowo

PIA PANEL INŻYNIERA AUTOMATYKA

PIA PANEL INŻYNIERA AUTOMATYKA ul. Bajana Jerzego 31d tel. + 48 399 50 42 45 01-904 Warszawa PANEL INŻYNIERA AUTOMATYKA Wszystkie nazwy handlowe i towarów występujące w niniejszej publikacji są znakami towarowymi zastrzeżonymi odpowiednich

Bardziej szczegółowo

WPROWADZENIE DO BAZ DANYCH

WPROWADZENIE DO BAZ DANYCH WPROWADZENIE DO BAZ DANYCH Pojęcie danych i baz danych Dane to wszystkie informacje jakie przechowujemy, aby w każdej chwili mieć do nich dostęp. Baza danych (data base) to uporządkowany zbiór danych z

Bardziej szczegółowo

Wstęp do Biologii Obliczeniowej

Wstęp do Biologii Obliczeniowej Wstęp do Biologii Obliczeniowej Zagadnienia na kolokwium Bartek Wilczyński 5. czerwca 2018 Sekwencje DNA i grafy Sekwencje w biologii, DNA, RNA, białka, alfabety, transkrypcja DNA RNA, translacja RNA białko,

Bardziej szczegółowo

Optymalizacja. Przeszukiwanie lokalne

Optymalizacja. Przeszukiwanie lokalne dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Idea sąsiedztwa Definicja sąsiedztwa x S zbiór N(x) S rozwiązań, które leżą blisko rozwiązania x

Bardziej szczegółowo

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych Piotr Modliński Wydział Geodezji i Kartografii PW 13 stycznia 2012 P. Modliński, GiK PW Rozw.

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu 1 Algorytmika i programowanie Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Sortowanie zewnętrzne

Sortowanie zewnętrzne Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 4 1 / 1 DZIELENIE LICZB BINARNYCH Dzielenie

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL 7.5.60

FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL 7.5.60 FUNKCJONALNOŚ C PORTAL B2B KAMELEON.ŚQL 7.5.60 W KAMELEON.SQL 7.5.60 została dodana funkcjonalność klasy B2B (na tą funkcjonalność wymagana jest dodatkowa licencja, którą można wykupić w naszej firmie)

Bardziej szczegółowo

Jak utworzyć diagram

Jak utworzyć diagram Drukowanie struktury organizacyjnej... 1 Jak utworzyć diagram... 1 Wyświetlanie fragmentu struktury organizacyjnej... 2 Wyświetlanie na wykresie informacji szczegółowych... 3 Uwzględnianie wszystkich rekordów...

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, algoritme Dijkstry Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 1 / 25 Algorytmy zachłanne Strategia polegająca na

Bardziej szczegółowo

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA.

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH Autorzy scenariusza:

Bardziej szczegółowo

Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja

Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja Dokumentacja programu Zoz Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ Wersja 1.40.0.0 Zielona Góra 2012-02-29 Wstęp Nowelizacja Rozporządzenia Ministra Zdrowia z

Bardziej szczegółowo

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice

Bardziej szczegółowo

Bioinformatyka. Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl

Bioinformatyka. Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl Bioinformatyka Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Bazy danych biologicznych Bazy danych sekwencji nukleotydowych Pierwotne bazy danych (ang. primary database) Wykorzystywane do zbierania

Bardziej szczegółowo

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych autor: Robert Drab opiekun naukowy: dr inż. Paweł Rotter 1. Wstęp Zagadnienie generowania trójwymiarowego

Bardziej szczegółowo

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH Transport, studia I stopnia rok akademicki 2012/2013 Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Adam Wosatko Ewa Pabisek Pojęcie

Bardziej szczegółowo

1. Eliminuje się ze zbioru potencjalnych zmiennych te zmienne dla których korelacja ze zmienną objaśnianą jest mniejsza od krytycznej:

1. Eliminuje się ze zbioru potencjalnych zmiennych te zmienne dla których korelacja ze zmienną objaśnianą jest mniejsza od krytycznej: Metoda analizy macierzy współczynników korelacji Idea metody sprowadza się do wyboru takich zmiennych objaśniających, które są silnie skorelowane ze zmienną objaśnianą i równocześnie słabo skorelowane

Bardziej szczegółowo

przybliżeniema Definicja

przybliżeniema Definicja Podstawowe definicje Definicje i podstawowe pojęcia Opracowanie danych doświadczalnych Często zaokraglamy pewne wartości np. kupujac telewizor za999,99 zł. dr inż. Ireneusz Owczarek CMF PŁ ireneusz.owczarek@p.lodz.pl

Bardziej szczegółowo

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką Autor: Paweł Konieczny Promotor: dr Jadwigi Bakonyi Kategorie: aplikacja www Słowa kluczowe: Serwis

Bardziej szczegółowo

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy 1 Podstawowym przeznaczeniem arkusza kalkulacyjnego jest najczęściej opracowanie danych liczbowych i prezentowanie ich formie graficznej. Ale formuła arkusza kalkulacyjnego jest na tyle elastyczna, że

Bardziej szczegółowo

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change

Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change Raport 4/2015 Optymalizacja parametrów w strategiach inwestycyjnych dla event-driven tradingu dla odczytu Australia Employment Change autor: Michał Osmoła INIME Instytut nauk informatycznych i matematycznych

Bardziej szczegółowo

Zad. 3: Układ równań liniowych

Zad. 3: Układ równań liniowych 1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo