tematów
Transkrypt
tematów
Obowiązkowymi do zaliczenia projektu jest realizacja 2-3 zadań programistycznych. Zadania realizowane są w grupach 2-3 osobowych (zależnie od stopnia trudności zadania i liczebności całej klasy laboratoryjnej). Raz utworzone (na początku semestru) zespoły nie powinny się zmieniać. Obowiązuje ocena łączna za zadanie dla całej grupy, a w trakcie zaliczenia obecność grupy w całości. Mile widziane propozycje tematów ze strony studentów. Poniższe wytyczne określają warunki minimum dla zaliczenia. Wymagana złożoność wielomianowa wszędzie, gdzie to możliwe. Oddanie każdego zadania składa się z trzech części: - wstępne uzgodnienia z prowadzącym treści zadania i użytych bibliotek (technologii) - przygotowanie dokumentacji i aplikacji - oddanie na zajęciach zadania, wraz z omówieniem zastosowanych algorytmów, - przekazanie prowadzącemu kodów źródłowych (do weryfikacji antyplagiatowej). Dokumentacja (plik PDF) powinna zawierać krótkie informacje na temat: - podstawowej obsługi przygotowanej aplikacji - danych wejściowych i wyjściowych (format i inne wymagania) - zastosowanych algorytmów (opis algorytmu) oraz technologii (biblioteki) Wyróżniamy dwa typy zadań projektowych. A. Czysto programistyczne, bez wykorzystania bibliotek zewnętrznych lub standardowych bezpośrednio dedykowanych do rozwiązywanego zagadnienia. Celem jest implementacja konkretnego algorytmu (bez korzystania z gotowych pakietów, które już go zawierają) oraz interfejsu umożliwiającego łatwą demonstracje i przetestowanie (na kilku przykładach dostarczonych przez studentów – oczywiście z możliwą modyfikacją na zajęciach). W najprostszej realizacji proponuje się prosty, tekstowy interfejs użytkownika umożliwiający sterowanie z command linie i pobieranie danych wejściowych z pliku tekstowego (o dowolnym, czytelnym i edytowalnym przez użytkownika formacie). Dozwolone języki: C++, Java, C#. Do realizacji tego rodzaju ćwiczeń w praktyce wystarcza tekstowy kompilator bez żadnego wyrafinowanego środowiska. B. Samodzielne rozpoznanie wybranej ogólnodostępnej biblioteki bioinformatycznej (dopuszczamy: BioJava, Bio++, Biopython z preferencją tej pierwszej, PAL por. http://www.cebl.auckland.ac.nz/pal-project/, może coś z Emboss). w zakresie funkcjonalności związanej z tematem zadania oraz implementacja zadania programistycznego z jej wykorzystaniem. Zatem algorytm jest dostarczony, a zadanie polega na zapoznaniu się z dokumentacją pakietu i użyciem w praktyce jego wybranych funkcji. Poza standardowym sprawozdaniem należy złożyć opis możliwości używanych bibliotek, klas, linków do dokumentacji itp. Można przygotować GUI, używać rozbudowanych środowisk (np. NetBeens, Eclipse), im więcej funkcji biblioteki z i z okolic wybranego tematu zostanie zaprezentowane w programie, tym wyższa ocena. Za to znajomość używanych algorytmów wymagana jest tylko w zakresie, w którym funkcje pakietu pozwalają na parametryzowanie ich działania. 1. Zestawienia optymalne 2 sekwencji. Typ A. Wymagane wyznaczenie odległości edycyjnej i podobieństwa całych sekwencji nukleotydowych, najlepszego zestawienia lokalnego, oraz globalnego - wszystko w modelach bez funkcji kary za długość przerwy. Odczyt danych z plików (2 sekwencje i macierz podobieństwa lub dystansu 5×5 między nukleotydami), wyjście: optymalne zestawienie i jego ewaluacja. Na życzenie użytkownika można podać 1 sekwencje kodujące RNA, które są przez program automatycznie translowane zgodnie z kodem genetycznym na aminokwasowe, składane jako aminokwasowe (a więc przy użyciu macierzy 21×21), a wynik znów przedstawiamy jako dopasowanie w alfabecie RNA (a więc złożenie de facto kodonów sekwencji wejściowych). Liniowe dopasowanie dwóch sekwencji, Liniowe dopasowanie dwóch sekwencji II 2. Zestawienia optymalne 2 sekwencji II. Typ A. Wymagane wyznaczenie podobieństwa całych sekwencji nukleotydowych i najlepszego zestawienia globalnego a) w modelu z dowolną (zadaną w kodzie, nie koniecznie liniową!) funkcją kary za przerwy b) w modelu bez funkcji kary, ale algorytmem o liniowej złożoności pamięciowej (np. Hirschberga). Odczyt danych z plików (2 sekwencje i macierz podobieństwa między nukleotydami), wyjście: optymalne zestawienie i jego ewaluacja. Liniowe dopasowanie dwóch sekwencji, materiały dodatkowe 3. Typ B. Podobne do dwóch poprzednich, ale z użyciem wybranej biblioteki tj. własnoręczna implementacja algorytmów zestawiania lub translacji jest zabroniona. Liniowe dopasowanie dwóch sekwencji, Liniowe dopasowanie dwóch sekwencji II 4. Zestawienia wielu sekwencji. Typ A. Dla zadanego wielodopasowania ciągów nukleotydowych i macierzy podobieństwa wyznaczyć macierz profilu i słowo konsensusowe. Dla dwóch wielodopasowań: zestawić je w jedno przez złożenie (optymalne, globalne, bez funkcji kary za przerwy, macierz podobieństwa liter jest dana) ich profili. Wreszcie: progressive multialigning podanych sekwencji w jedno wielodopasowanie poprzez klasteryzację i zestawienie profili. Strategia wyboru sklejanych pod-dopasowań: dowolna prosta np. UPGMA (tj. guide tree nie wymagane). Wielodopasowanie zbioru sekwencji 5. Zestawienia wielu sekwencji i profile. Typ B. Podobnie jak w przedostatnim: zademonstrować we własnym programie funkcje biblioteki służące do tworzenia i obróbki tym razem wielodopasowań i profili sekwencji. Wielodopasowanie zbioru sekwencji 6. Wykrywanie motywu zadanego w postaci wyrażenia regularnego PROSITE w sekwencji. Typ A. Sprawdzić, czy motyw występuje w podanej sekwencji, a jeśli tak to na których pozycjach. Nie można używać żadnych gotowych funkcji operujących na wyr. regularnych – algorytm implementujemy sami. Uwaga: w formacie PROSITE zabraniamy zagnieżdżonych nawiasów. Slajdy z wykładu 7. Sekwencjonowanie przez hybrydyzację. Typ A. Dany jest multizbiór słów tej samej długości k nad alfabetem DNA, sprawdź czy istnieje (i w tym przypadku zwróć na wyjście) sekwencja, dla których podane wejście stanowiło spektrum. Co więcej, program powinien być odporny na podaną przez użytkownika w zakresie 0-3 liczbę błędów (pozytywnych i negatywnych) i mieć (przy ustalonym k) złożoność wielomianową. Sekwencjonowanie DNA 8. Ewolucja sekwencji. Typ A. Dane są dwie homologiczne sekwencję DNA jednakowej długości, które ewoluowały osobno przez nieznany czas t w modelu o zadanej (wczytywanej z pliku) macierzy „częstości mutacji”. Znajdź najbardziej prawdopodobną wartość czasu t. Szukanie proste metodą krokową „punkt po punkcie” w zadanym przedziale z kryterium ML. 2 Należy dołączyć program testowy generujący dwie losowe sekwencje oddalone o podany przez użytkownika czas ewolucji w modelu Kimury. Liniowe dopasowanie dwóch sekwencji II 9. Ukryte modele Markova - odtworzenie i prezentacja eksperymentu z „nieuczciwym kasynem” (generator danych tj. „sztuczny krupier” zachowujący się zgodnie z podanymi przez użytkownika prawdopodobieństwami i próba odtworzenia przebiegu podmian kostki na podstawie sekwencji wyników wyjściowych). Typ A. Implementacja algorytmów z wykładu i porównanie predykcji (tj. Viterbi oraz ciąg prawdopodobieństw a'posteriori) z rzeczywistością. Łańcuchy Markowa i ukryte modele Markowa 10. Automatyczne uczenie się łańcucha Markova algorytmem BW na przykładzie „nieuczciwego kasyna”. Typ A. Kontynuacja poprzedniego zadania. Łańcuchy Markowa i ukryte modele Markowa 11. „Kalkulator” drzew filogenetycznych ukorzenionych. Typ A. Drzewa wczytywane są z pliku tekstowego (można użyć jakiegoś gotowego parsera np. formatu NEWICK). Operacje: konwersja reprezentacji „rodzina zgodnych klastrów” ⇔ drzewo jako graf z jakąś jego wizualizacją (oraz test poprawności danych tj. „czy podana rodzina była zgodna?”). Wyznaczanie odległości topologicznej RF między parą drzew, drzewa konsensusu (o podanym poziomie procentowym) dla zadanego zbioru drzew oraz jej wspólne rozszerzenie (jeśli takie istnieje). Obcięcie podanego drzewa do drzewa filogenetycznego do zadanego podzbioru liści. Drzewa filogenetyczne 12. „Kalkulator” drzew nieukorzenionych. Typ A. Drzewa wczytywane są z pliku tekstowego (można użyć jakiegoś gotowego parsera np. formatu NEWICK). Operacje: konwersja reprezentacji „rodzina zgodnych rozbić” ⇔ drzewo jako graf (z testem poprawności danych tj. „czy podana rodzina była zgodna?”); wyznaczanie odległości topologicznej RF między parą drzew, drzewa konsensusu (o podanym poziomie procentowym) dla zadanego zbioru drzew oraz jej wspólne rozszerzenie (jeśli takie istnieje). Obcięcie podanego drzewa do drzewa filogenetycznego do zadanego podzbioru liści. Ew. dodatki: przeprowadzenie operacji NNI i TBR dla drzew nieukorzenionych binarnych w podanych przez użytkownika punktach. Drzewa filogenetyczne 13. Obsługa drzew filogenetycznych w wybranej bibliotece. Typ B. Drzewa wczytywane są z pliku w jakimś formacie standardowym np. NEWICK, wypisanie podstawowych parametrów drzew, procedura znajdowania „najbliższego żyjącego krewnego” w drzewie ukorzenionym, wyznaczanie odległości topologicznej RF między parą drzew, drzewa konsensusu dla zbioru drzew i ew. inne operacje (chodzi o ogólną prezentację możliwości procedur filogenetycznych wybranych biblioteki). Drzewa filogenetyczne 14. Symulator ewolucji sekwencji DNA. Typ A. Dana jest początkowa sekwencja DNA, parametry alfa i beta modelu Kimury i czas t, przez który ona ewoluuje. Jest ona korzeniem drzewa, w którym na każdej gałęzi co pewien losowy czas (rozkład wykładniczy o podanej wartości średniej), niezależnie od innych gałęzi, następuje rozdzielenie linii gatunkowych. Wylistować finalne drzewo ukorzenione wraz z długościami krawędzi i sekwencjami w 3 liściach oraz wewnętrznych punktach specjacji. To samo dla ewolucji samej sekwencji, gdy ukorzenione drzewo o podanych długościach krawędzi dla naszych gatunków jest dane. Liniowe dopasowanie dwóch sekwencji II, Drzewa filogenetyczne 15. Filogeneza dystansowa. Typ A. Dla danej macierzy odległości między liśćmi utworzyć ważone drzewo ukorzenione metodą UPGMA oraz nieukorzenione metodą NJ. Wylistowanie obu drzew oraz możliwość automatycznej weryfikacji zgodności ich topologii (tj. z pominięciem długości krawędzi). Drzewa filogenetyczne, Konstruowanie drzew filogenetycznych – metody odległościowe, 16. Filogeneza dystansowa - metody optymalizacyjne. Typ A. Dla danej macierzy odległości między liśćmi i drzewa binarnego nieukorzenionego wyznaczyć długości krawędzi wewnętrznych minimalizujące błąd średniokwadratowy oraz parametry „jakościowe” niezbędne w metodach LS i ME. Możliwość przejścia do innego drzewa operacją NNI na podanej przez użytkownika krawędzi i powtórka obliczeń (tj. symulacja jednego kroku heurystyki filogenetycznej posługującej się sąsiedztwem NNI). Drzewa filogenetyczne, Konstruowanie drzew filogenetycznych – metody odległościowe 17. Filogeneza parsymoniczna. Typ A. Dla zadanych sekwencji (tej samej długości – traktujemy je jak wielodopasowanie bez przerw) i drzewa nieukorzenionego binarnego, wycenić ten scenariusz ewolucji prostą parsymonią (algorytm Fitcha). To samo dla parsymonii ważonej przy zadanej macierzy kosztu (metryka) substytucji (algorytm Sankoffa). W obu przypadkach możliwość przejścia do innego drzewa operacją NNI na podanej przez użytkownika krawędzi i powtórka obliczeń (tj. symulacja jednego kroku heurystyki filogenetycznej posługującej się sąsiedztwem NNI). Drzewa filogenetyczne, Konstruowanie drzew filogenetycznych – metoda parsymonii 18. Filogeneza Maximum Likelihood. Typ A. Dla danych sekwencji (tej samej długości – traktujemy je jak wielodopasowanie bez przerw), binarnego drzewa ważonego nieukorzenionego i parametrów alfa, beta modelu Kimury, wyznaczyć parametr jakościowy likelihood drzewa. Ponadto optymalizacja długości wybranej przez użytkownika krawędzi z maksymalizacją likelihood – dowolną metodą, choćby nawet krokową „punkt po punkcie” w zadanym przedziale. Slajdy z wykładu 19*. Wielomianowa implementacja optymalnego sortowania inwersyjnego. Typ A. Dla danej permutacji ze znakiem program wyznacza breakpoint graf, parametry b, c, h i d oraz wartości d dla wszystkich permutacji ze znakiem powstających z zadanej permutacji w wyniku jednej inwersji. Później (w pętli) użytkownik wybiera jedną z nich i dla niej procedura jest kontynuowana. Rearanżacje genomu, materiały dodatkowe 20*. Porównywanie struktur - metoda Kabsch'a. Typ A. Dane są dwa równej długości ciągi punktów w przestrzeni 3-wymiarowej C1=((x1,y1,z1), (x2,y2,z2), …, (xn,yn,zn)) i C2=((x'1,y'1,z'1), (x'2,y'2,z'2), …, (x'n,y'n,z'n)) reprezentujące przybliżone położenia w przestrzeni atomów w dwóch łańcuchach białkowych. Należy znaleźć dodatnio zorientowaną izometrię (tj. przesunięcie połączone z obrotem), po dokonaniu której z ciągu C2 otrzymamy C3=((x''1,y''1,z''1), (x''2,y''2,z''2), …, (x''n,y''n,z''n)) o najlepszym możliwym dopasowaniu do C1 (tj. izometria ma minimalizować błąd RMSD równy [Σi=1,…,n (xi-x''i)2+(yi-y''i)2+(zi-z''i)2]1/2/n). Program wypisuje ciąg C3 i wartość błędu RMSD. Wizualizacja mile widziana. materiały dodatkowe 4 21*. Zaprezentować nietrywialne możliwości wybranych bibliotek lub funkcji. Temat do zaproponowania przez grupę np. wykrywanie odcinków kodujących w DNA przy pomocy HMM, korzystanie przez WebSerwisy z: • NCBI, por. http://www.ncbi.nlm.nih.gov/books/NBK7160/, • EMBL-EBI, por. http://www.ebi.ac.uk/Tools/webservices/, • Ensembl, por. http://www.ensembl.org/info/docs/index.html, • … itp. .(np. wywoływać BLASTa, CLUSTALa i inne procedury). materiały dodatkowe 5