Znowu nastąpił reset serwera jupyter. Tym razem adres się nie zmienił, ale potrzebują Pańśtwo nowy token: 38b2dd1e7c79775cf86d9f015ac50659929e78652f5a0e55
Month: March 2018
WBO – zadanie 1 – uliniowienie progresywne
Naszym zadaniem jest elegancka implementacja progresywnego uliniowienia wg następujących wytycznych
1) Zaimplementuj klasę profile, która zachowuje się podobnie do multiple alignment, ale kiedy żądamy indeksu a[i], to dostajemy i-tą kolumnę uliniowienia, zamiast wiersza (w Multiple Alignment z Biopythona mamy a[i] = wiersz, a[:,i]=kolumna) (2 pkt)
2) zaimplementuj funkcje callback dla metody Bio.pairwise2.globalcc dla afinicznej kary za przerwę (parametryzowalnej 2 parametrami) i oceny substytucji profili, dla funkcji oceny sumy par (3 pkt)
3) zaimplementuj metodę obliczającą odległości sekwencji białkowych według prostego modelu estymacji odległości, gdzie d= -19/20 * ln (1 – (20/19)*p), dla p=procent zmienionych aminokwasów w globalnym uliniowieniu pary, oraz pozwalającą wyliczać macierz odległości parami (2 pkt)
4) Zaimplementuj metodę konstruującą uliniowienie progresywne korzystającą z drzewa stworzonego metodą neighbor joining (nj w Biopythonie) dla macierzy odległości uzyskanej metodą z p.3) i uliniowienie profili metodą z punktu 1) i 2). (3 pkt)
Wszystko to powinno być włożone do udokumentowanego modułu python’a i wysłane do mnie w emailu z “[WBO-1-2018]” w temacie do 16. IV 2018.
WBO-5 – Uliniowienie wielu sekwencji
Dzisiaj mówiliśmy o metodach uliniowienia wielu sekwencji. Slajdy są tu: wyk5
Na zajęciach naszym celem jest zapoznanie się z metodami uliniowienia wielu sekwencji w pakiecie Biopython oraz metodami uliniowienia progresywnego. Warto przeczytać odpowiedni rozdział tutorialu biopythona
0. Tutaj warto, aby każdy z Państwa założył sobie na serwerze Jupyter własny folder, żeby pliki nam się nie mieszały. Proponuję numer indeksu, albo inny identyfikator jednoznaczny.
1.Weźmy na początek naszą rodzinę sekwencji białek histonowych. Jest dostępna na naszym serwerze jupyter w pliku histones.fa_ Na początek potrzebujemy wczytać je z pliku (SeqIO.parse ) przetłumaczyć je na sekwencje białkowe (metoda translate()) i zapisać do pliku fasta (SeqIO.write) wraz z odpowiednimi identyfikatorami i usuniętymi kodonami stopu (*, która powstaje w wyniku translate)
2. Wykorzystajmy program clustalw (Bio.Align.Applications.ClustalwCommandline) do wykonania mulituliniowienia tych sekwencji na naszym serwerze plik wykonywalny jest zainstalowany w katalogu /usr/bin. Po wykonaniu zadania wczytaj uliniowienie z pliku .aln (AlignIO.read format “clustal”) oraz drzewo filogenetyczne z pliku .dnd (Phylo.read format=”newick”)
3. Wykorzystaj teraz program muscle (Bio.Align.Applications.MuscleCommandline) do wykonania multiuliniowienia tych samych sekwencji. Wczytaj je z pliku w formacie fasta
4. Stwórz drzewo filogenetyczne na podstawie uzyskanego uliniowienia metodą neighbor joining jak na poprzednich zajęciach. Porównaj to drzewo do drzewa otrzymanego z programu clustalw
5. Powtórz ćwiczenia 2-4 dla większego zbioru sekwencji (np. Human_PAH_homologs). Czy tutaj widoczne są większe różnice między metodami?
6(*). Napisz prostą implementację uliniowienia progresywnego, która wykorzystuje globalne uliniowienie z modułu Bio.pairwise2 i funkcje “callback”
ONA – 5 – Analiza obrazu
Dzisiejsze zajęcia poświęcimy na analizę obrazów 2d. Slajdy są tu ONA5-Obrazy
Przydać mogą się pakiety: scipy.ndimage i matplotlib
Zadania na dziś:
0. Pozyskaj przy pomocy kinect swoje zdjęcie w pracowni komputerowej zarówno w postaci macierzy głebokości, jak i obrazów rgb (przyklady tu i tu)
1. Przekształć obraz RGB do skali szarości poprzez uśrednienie składowych.
2. Wyświetl te obrazy na swoim komputerze przy pomocy biblioteki matplotlib
3. Wyświetl histogram obrazu i dokonaj jego “wyrównania” pisząc program w języku python
f(x) = (x-min)/(max-min)*255 dla parametrów min i max będących maksymalną i minimalną jasnością punktu.
4. Zastosuj filtr Gaussowski rozmiaru k, aby “wygładzić” obraz i obejrzyj wyniki dla różnych k (3,5,7,9,11,…)
5. Napisz program wykrywający krawędzie przy pomocy filtru Sobel’a
6(*). Napisz program wykrywający cienie na obrazie z miernika odległości.
7(*). Użyj biblioteki pydicom do wczytania przekrojów przez głowę z projektu visible human. Napisz program, który zamieni te przekroje poziome na prekroje pionowe. Użyj wygładzania krawędzi.
WBO 4 – drzewa filogenetyczne
Dziś rozmawiamy o prostych metodach kostrukcji drzew na podstawie macierzy odległości. Slajdy na dzis wyk4
Na laboratorium będziemy konstruować drzewa w praktyce.
Warto zapoznać się z dokumentacją modułu Bio.Phylo w tutorialu jak i na stronie wiki.
1. Na początek ustalmy dwie listy sekwencji. Rozważmy sekwencje paralogiczne histonów z drożdży z poprzednich zajęć oraz ortologi ludzkiej hydroksylazy fenyloalaniny Human_PAH_orthologues.fa. Dla histonów musimy je najpierw przetłumaczyć na białka (s.translate()), a dla drugiego zbioru mamy już sekwencje aminokwasowe.
2. Wylicz macierze odległości dla tych grup sekwencji przy pomocy klasy Bio.Phylo.TreeConstruction.DistanceCalculator (dla macierzy BLOSUM62, osobno dla histonów, i osobno dla genów PAH – to zajmie chwilę). Można użyć plików Human_PAH_orthologues i Human_PAH_paralogues oraz Human_H2BFS_paralogues i duży plik Human_PAH_orthologues-91.
3. Stwórz drzewa filogenetyczne na podstawie macierzy przy pomocy klasy Bio.Phylo.TreeConstruction.DistanceTreeConstructor zarówno metodą UPGMA – hierarchiczną jak i nj (neighbor joining)
4. Wyświetl uzyskane drzewa przy pomocy metody draw_ascii() i draw()
5. Zapisz uzyskane drzewa do formatów newick i phyloxml. obejrzyj wyniki.
ONA 4 – przetwarzanie sygnałów
Dziś zajmujemy się przetwarzaniem sygnałów, slajdy są dostępne tu: ONA4-DSP
Interesują nas przede wszystkim biblioteki scipy.signal i scipy.fftpack
1. Wygeneruj sygnał funkcji wielomianowej o zaburzeniu Gaussowskim, dla 10000 punktów. Wykonaj uśrednienia tego sygnału przy pomocy średniej kroczącej, albo splotu przy pomocy filtru kwadratowego, trójkątnego lub Gaussowskiego. WYniki zaprezentuj na wykresie
2. Pobierz sygnał o zajętości nukleosomowej z plików pochodzących z eksperymentu MNase-Seq ( dane tu w formacie bedgraph ) . Wczytaj go do numpy jako wektor. Przedstaw go na wykresie. Używając szybkiej trasformaty fouriera oblicz widmo Fourierowskie tego sygnału. Przedstaw je na innym wykresie. Wyzeruj część widma wysokich częstotliwości i dokonaj odwrotnej transformaty Fouriera, aby uzyskać wygładzony sygnał zajętości nukleosomami. Spróbuj tak dobrać parametry filtra, aby wykres po odwrotnej transformacie Fouriera miał okres zbliżony do 160-200 par zasad.
APB 2 – OBF i projekty BioX
Dziś było o projektach bioinformatycznych opensource. Slajdy są tu: wyk2-bioX. Jest tam też skrótowy opis zadania 1.
WBO – plan wykładów
W związku z prośbami o plan tematów na kolejnych wykładach i ew. lektury podaję tu plan na dotychczasowe i planowane zajęcia do kolokwium:
Sekwencje DNA i komplementarność, grafy – z książki Pevznera “Computational Molecular Biology”)
Modele ewolucji DNA – część z notatek N. Dojera , część z książki Felsensteina “inferring phylogenies”)
Porównania par sekwencji – (wg książki Durbina “biological sequence analysis”)
Budowa drzew filogenetycznych – (z książki Felsensteina “inferring phylogenies”)
Uliniowienia wielu sekwencji (z książki Durbin’a – biological sequence analysis)
Ukryte modele Markowa (HMM) – (z książki Durbin’a j.w.)
Zastosowania HMM do modelowania domen białkowych
Wyszukiwanie sekwencji podobnych i algorytm BLAST (część notatek na stronie N. Dojera )
Rodziny i funkcje genów
Uzgadnianie drzew
WBO – 3 – uliniowienie par sekwencji
Dziś zajmujemy się uliniawianiem par sekwencji – wyk3
Zadania na laboratorium:
- Zapoznaj się z modułem Bio.pairwise2 i klasą align oraz funkcją format_alignment()
- Wczytaj sekwencje DNA histonów histones.fa i czynników bZIP bzips.fa do pamięci.
- Dokonaj porównań pomiędzy sekwencjami DNA białek histonowych i bzip – dla każdej pary policz oceny dla najlepszych globalnych i lokalnych uliniowień z afiniczną funkcją kary. Wylicz średnią ocenę w ramach grupy bzip, w ramach grupy histonów i pomiędzy grupami.
- Dokonaj tłumaczenia sekwencji DNA na białka, powtórz obliczenia używając macierzy substutucji BLOSUM 50
Praca domowa:
Napisz program, który wylicza optymalne lokalne uliniowienie dla sekwencji DNA dla różnych możliwych tłumaczeń na białka (tzn zakładając standardową tablicę kodonów ) ale możliwe różne ramki odczytu w obu sekwencjach. Dla uproszczenia załóżmy, że insercje i delecje powinny występować tylko “trójkami” nukleotydów. Zastanów się, jakby wyglądał algorytm programowania dynamicznego, gdybysmy rozważali ogólną postać insercji i delecji
ONA – zadanie 1 – fraktale Mandelbrota i Julii
Naszym zadaniem będzie napisanie programu, który oblicza kolejne przybliżenia zbiorów fraktalnych. Inspiracją będą dla nas zbiory Julii i Mandelbrota, ale nasz program będzie bardziej ogólny.
Podstawową funkcją naszego programu, będzie funkcja:
M=approx(xrange,yrange,max_iter,max_value,f),
która zwraca macierz wyników iteracji funkcji f dla wszystkich par wartości z wektorów xrange i yrange, interpretowanych jako liczby zespolone.
M[a,b] = liczba iteracji funkcji f dla wartości xrange[a]+j*yrange[b], dla których wartość funkcji nie wykracza poza max_value, przy czym przybliżamy wynik poprzez wykonanie maksymalnie max_iter iteracji. Tzn jeśli po wykonaniu max_iter iteracji nigdy nie wykroczyliśmy poza zakres max_value, to zwracamy max_iter, w przeciwnym wypadku zwracamy ten numer iteracji, dla którego nasza wartość f(z,n) przekroczyla max_value. argument f powinien być funkcją przyjmującą 2 argumenty: z i n, gdzie z to liczba zespolona a n to stopień iteracji.
Oprócz funkcji approx(..), powinnismy zaimplementować funkcje Mandelbrot(z,n) i Julia(z,n), implementujące iterację dla zbioru Julii i Mandelbrota.
Nasz program powinien umożliwiać:
- Wywołanie z linii komend i podawanie parametrów: zakresy x,y, n, typ funkcji, typ wyjścia, dodatkowe parametry (np. c dla zbioru Julii)
- Wyświetlanie wyniku przy pomocy funkcji imshow() wg wybranej skali kolorów
- zapisywanie obrazka w pliku png, pdf lub macierzy w pliku (przy pomocy operacji np.save())
Punktacja:
- funkcja approx – 3 pkt
- funkcje mandelbrot, julia – 2 pkt
- obsługa z linii komend – 2 pkt
- wyswietlanie – 2 pkt
- zapis do pliku – 1 pkt
Rozwiązania wysyłamy do 25 III na adres e-mail wykładowcy z dopiskiem [ONA-1-2018]- w tytule