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

Podobne dokumenty