Category Archives: WBO

WBO 4 – Drzewa filogenetyczne

Dziś rozmawiamy o prostych metodach kostrukcji drzew na podstawie macierzy odległości. Slajdy na dziś składają się z mojej prezentacji nt. metod heurystycznych: wyk4 i slajdów P. Góreckiego nt. metod ML: gorecki-ml-tree

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 listy sekwencji. Rozważmy sekwencje paralogiczne i ortologiczne ludzkiej hydroksylazy fenyloalaniny.  Załóżmy, że mamy już sekwencje aminokwasowe uliniowione globalnie.  Ze względu na czasochłonność procesu uliniowienia, użyjemy plików zuliniowieniami  Human_PAH_orthologues i Human_PAH_paralogues oraz Human_H2BFS_paralogues i (jeśli ktoś liczy lokalnie – uwaga duży) plik Human_PAH_orthologues-91. Wczytaj te pliki przy pomocy metod z modułu Bio.AlignIO

2.Wylicz macierze odległości dla tych grup sekwencji przy pomocy klasy Bio.Phylo.TreeConstruction.DistanceCalculator  (dla macierzy BLOSUM62, osobno dla paralogów i osobno dla ortologów genów PAH – to  zajmie chwilę).

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.

WBO – 3 – uliniowienie par sekwencji

Dziś zajmujemy się uliniawianiem par sekwencji -wyk3

Zadania na laboratorium:

  1. Zapoznaj się z modułem Bio.pairwise2 i klasą align oraz funkcją format_alignment() (kod źródłowy jest tutaj)
  2. Wczytaj sekwencje DNA histonów histones.fa i czynników bZIP bzips.fa do pamięci, najlepiej przy pomocy modułu Bio.SeqIO. Pliki są też dostępne na naszym serwerze jupyter w folderze WBO/.
  3. 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 prostą macierzą substytucji (-1 za mismatch, 1 za match) i afiniczną funkcją kary za przerwy (np. -1.0 za otwarcie przerwy i -0.5 za jej rozszerzenie). Wylicz średnią ocenę w ramach grupy bzip, w ramach grupy histonów i pomiędzy grupami.
  4. Dokonaj tłumaczenia sekwencji DNA na białka(używając metody translate dla DNA), powtórz obliczenia używając macierzy substutucji BLOSUM60

Praca domowa (2pkt):

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 )  przy uwzględnieniu trzech różnych ramek odczytu w obu sekwencjach. Dla uproszczenia załóżmy, że insercje i delecje powinny występować tylko “trójkami” nukleotydów. (Prace domowe jak zwykle przesyłamy do następnych zajęć mailem – proszę załączyć rozwiązanie jako pliki .py lub linki do działających notebooków, nie jako pliki .ipynb)

(*)Zastanów się, jakby wyglądał algorytm programowania dynamicznego w tym zadaniu gdybyśmy rozważali ogólną postać insercji i delecji, a nie tylko wielokrotności 3.

WBO 2 – Ewolucja sekwencji

Dziś będziemy mówić o modelach ewolucji sekwencji.

Slajdy do wykładu są tu: wyk2.

Podczas labów mogą Państwo korzystać z serwera Jupyter, który ma zainstalowany pakiet biopython. (kilka porad jak używać jupyter’a tu )

Zadania do wykonania na dziś:

1. Obejrzyj moduł Bio.SubsMat.MatrixInfo, gdzie zdefiniowane są modele PAM i BLOSUM

2. Zaimplementuj prosty łańcuch Markowa, który pozwoli na symulowanie mutacji w czasie dyskretnym, zgodnie z macierzami przejścia zdefiniowanymi wykorzystując moduł SubsMat (substitution table). Rozważ model analogiczny do modelu Kimury i Felsensteina

3. Rozważ sekwencje z pliku fasta z poprzednich zajęć. Zbadaj ile mutacji losowych potrzeba aby Łańcuch Markowa “przeszedł” pomiędzy dwiema sekwencjami bez selekcji.

4. Zaimplementuj prosty proces Markowa z selekcją – jeśli mutacja zbliża nas do “celu” w sensie odległości Hamminga, to ją akceptuj, w przeciwnym razie wracaj do punktu wyjścia.

 

WBO 1 – O sekwencjach DNA i grafach

Dzisiaj będziemy rozmawiać o sekwencjach DNA i grafach. Slajdy do wykładu są tu: wyk1

Zasadniczo pracujemy w języku python. Jeśli ktoś ma kłopoty z interpreterem w labie, to może korzystać z serwera jupyter, używając tokena:  4c69cfc960c15962328143ec0b91c8b53ef9142de3e50b42

W laboratorium spróbujemy zająć się następującymi kwestiami:

1. Spróbujemy wczytać zestaw sekwencji z pliku FASTA przy pomocy biblioteki Bio.Seq z pakietu Biopython. Mamy do dyspozycji plik test_fasta Na początek warto go wczytać i wypisać do innego pliku zestaw sekwencji komplementarnych do sekwencji wejściowych.

2. Napiszemy funkcje kmers(s,k), która na podstawie sekwencji DNA daje nam wszystkie k-mery (podsekwencje długości k) składające się na widmo sekwencji s. Rozważymy dwa warianty – gdy widmo zawiera tylko podsekwencje s, i drugą, gdzie do widma zaliczamy też fragmenty sekwencji komplementarnej.

3. Napiszemy funkcje euler(kmers) i hamilton(kmers), które tworzą graf na podstawie widma k-merów i znajdują w nim wszystkie ścieżki.

4. Spróbujemy rozwiązać problem znajdowania zestawu sond komplementarnych z ostatniego slajdu.

Praca domowa (2 pkt):

Napisz program, który znajduje minimalne k, dla którego istnieje zbiór sond długości k komplementarnych do zestawu sekwencji (każda sonda komplementarna do dokładnie jednej sekwencji z zestawu) zadanego w pliku .fasta. Rozwiązanie polega na przysłaniu programu (z komentarzami), który znajduje minimalne k oraz wyniku jego uruchomienia dla wybranych genów drożdży Saccharomyces cerevisiae yeast.fa.

Prace domowe trzeba przysłać na mój adres e-mail (z dopiskiem [WBO] w tytule) przed następnymi zajęciami w laboratorium.

4*. Zastanów się nad problemem zestawu sond komplementarnych, gdzie zamiast równej długości wszystkich sond założymy, że powinny mieć tę samą temperaturę topnienia.

WBO 12 – Mapowanie odczytów NGS

Dziś mamy zajęcia o mapowaniu odczytów. Wykład tutaj: wyk12-ngs

Zadania na dziś dotyczą głównie indeksów sekwencji:

1. Napisz funkcję compute BWT(txt), która oblicza BWT (w postaci napisu) dla zadanej sekwencji DNA oraz tablice C(x) i OCC(i,x)

2. Wylicz te wartośći dla sekwencji:
CGAGCCGCTTTCCATATCTATTAACGCATAAAAAACTCTGCTGGCATTCACAAATGCGCAGGGGTAAAACGTTTCCTGTAGCACCGTGAGTTATACTTTGT

3. Korzystając z metody podanej na wykładzie wyszukaj wystąpień napisu AAAC w podanej sekwencji

4. Korzystając z podanej metody omijania błędów znajdź sekwencję (z co najwyżej jednym błędem) AAAACTCCGCTGGCATTCACAAAT

Zadanie domowe: Użyj stworzonego dziś kodu aby wyszukać wszystkich promotorów z pliku ecoli_proms.fa w sekwencji genomu E. coli Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.dna.chromosome.Chromosome.fa

WBO – Zadanie 2

Naszym zadaniem będzie analiza ewolucji białek z rodziny Homeodomain (HOX). W szczególności interesować nas będą białka pobrane z bazy homeoDB dla 4 gatunków: Człowieka, myszy, muszki owocowej i chrząszcza: homeo2.fa. Co istotne, w pliku Fa opis genu obejmuje: Gatunek|Nazwę genu|rodzinę genu|klasę genu

Podzielimy to zadanie na kilka podzadań:

  1. Korzystając z lokalnej instalacji narzędzia BLAST stwórz bazę danych sekwencji z pliku Fasta i następnie wylicz przybliżoną macierz podobieństwa poprzez wykorzystanie funkcji oceny BLAST. Dla genów niepodobnych wg blast, przyjmij ustaloną niską wartość podobieństwa. (3 pkt)
  2. Korzystając z metody Neighbor joining skonstruuj drzewo genów dla tej rodziny.  (2 pkt)
  3. Zakładając, że człowiek z myszą i muszka z chrząszczem są najbliżej spokrewnionymi gatunkami spośród 4 danych dokonaj uzgodnienia otrzymanego drzewa genów z drzewem gatunków, tj. znajdź optymalny (w sensie duplikacji i strat) scenariusz ewolucyjny dla drzewa gatunków i Twojego  drzewa genów.   Czy możesz wybrać taki scenariusz optymalny, który jest zgodny z opisem genów w oryginalnym pliku (zakładamy, że geny z  różnych rodzin w tym samym gatunku to na pewno paralogi, a geny o tej samej nazwie u różnych gatunków to ortologi). (7 pkt)
  4. Wykorzystując narzędzie Hmmer dokonaj opisu domen białkowych dla klas genów hox (białka o tej samej ostatniej kolumnie w pliku fasta). Sprawdź, jak często białka należące do każdej z klas zawierają domeny należące do innej klasy. (4 pkt)
  5. Opisz swoje rozwiązanie (1 strona) i wyniki (max 2 strony) w krótkim raporcie w .pdf (4 pkty)

Wynik w postaci programu w pythonie i raportu w pdf wyślij na adres e-mail wykładowcy z dopiskiem [WBO-2-2018] do 22. czerwca 2018.

WBO 11 – Motywy sekwencyjne i ich wyszukiwanie

Dziś rozmawialiśmy o reprezentacji i wyszukiwaniu motywów sekwencyjnych: wyk11-motifs

Zadania na dziś:

1. Pobierz listę promotorów e_coli w pliku fasta: ecoli_proms.fa

2. Zapoznaj się z modelem macierzy motywów z modułu Bio.motifs i jego dokumentacją 

3. Zaimplementuj prostą, zachłanną metodę consensus dla wyszukiwania motywów, zastosuj ją do promotorów e.coli i obejrzyj wyniki dla motywów długości 3,4,5,6. Schemat algorytmu jest następujący:

  • zaczynając od dowolnego miejsca w pierwszej sekwencji skonstruuj na jego podstawie model PWM
  • dla każdej kolejnej sekwencji wybieraj sekwencję najlepiej pasującą do obecnego modelu PWM
  • Po wybraniu sekwencji skonstuuj nowy model PWM, wzbogacony o tę sekwencję
  • Po wykonaniu tej procedury dla wszystkich punktów startowych z sekwencji 1. zwróć kilka (np. 5) najlepszych macierzy

Powtórz tę procedurę dla kilku różnych permutacji pliku wejściowego.

4. Porównaj wyniki ze znanymi motywami promotorowymi w E. coli

5. Wykonaj analizę tych samych promotorów przy pomocy MEME i porównaj wyniki z otrzymanymi z consensusa

WBO 10 – Uzgadnianie drzew

Dzisiaj na wykładzie zajmowaliśmy się uzgadnianiem drzew.

Slajdy do wykładu:

Zadania na lab:

Dzisiaj zajmiemy się uzgadnianiem drzew. Rozważmy sytuację, gdy mamy 1 drzewo gatunków S i drzewo genów G zgodne z tym drzewem gatunków (dla każdego genu g\in G , s(g)\in S). Na początek możesz

1. Napisz algorytm LCA(G,S), który znajduje mapowanie LCA i zwraca je w postaci słownika

2. Napisz funkcje liczące koszty DC(G,S), D(G,S) a następnie wykorzystaj wzór ze slajdu 10, który wylicza koszt L(G,S)

3. Napisz funkcję fat_tree(G,S), która tworzy scenariusz uzgadniający G i S (nie zawsze optymalny), gdzie w korzeniu występują wszystkie duplikacje, zaś wszystkie straty występują w krawędziach prowadzących do liści. Scenariusz w naszym przypadku, to etykietowanie drzewa gatunków zdarzeniami ewolucyjnymi, D i L. Zauważmy, że zarówno straty jak i duplikacje występują na krawędziach drzewa gatunków.

4. Napisz funkcję optimal_tree(G,S), która znajduje jeden z optymalnych scenariuszy uzgadniających G i S. W tym celu musimy przenieść w drzewie “grubym” duplikacje w dół, a straty w górę, jeśli to możliwe.

5. sprawdź na przykładzie drzewa z wykładu (abcde), czy Twój algorytm działa poprawnie

WBO 9 – Homologi i funkcje genów

Slajdy z dzisiejszego wykładu są tu: WBO9

Zadania na dziś:

1. Zapoznaj się z testem Fishera  (np w pakiecie scipy fisher_exact) i metodą GSEA zaimplementowaną w Istytucie Broad’a 

2. Zapoznaj się z formatami plików OBO i GAF z projektu gene ontology: opis formatów, przykładowy plik GAF, przykładowy plik OBO

3. Napisz prosty program, który testuje testem Fishera, wraz z poprawką Bonferroniego wzbogacenie funkcji GO w zadanym zbiorze genów.

4. Przetestuj to na połączonym zbiorze histonów i homologów PAH

5 (*). Zaimplementuj uproszczoną metodę GSEA na podstawie danych z suplementu do pracy o GSEA 06580SuppText

 

Praca domowa:

Napisz funkcję Go_enrichment z zadania 3 poszerzoną o przypisanie genów do terminów nadrzędnych (na podstawie relacji is_a, part_of z pliku OBO)