Zadanie zaliczeniowe

Termin: 20.01.2015

Zadanie polega na analizie danych z eksperymentów ChIP-seq pewnej modyfikacji histonów oraz pewnego białka u muszki owocowej Drosophila melanogaster, w kontekście różnicowej eksprecji genów w różnych tkankach.

Pod adresem znajdują się dane do analizy:

  • plik z adnotacją genomu dme3: dm3_genes.gtf
    Genom w odpowiedniej wersji (dm3) znajduje się tu.
  • kontrola dla eksperymentów ChIP-seq (plik input.txt.gz)
  • wyniki różnicowej analizy ekspresji genów w tkankach Elav i Repo wykonanej przy użyciu programu DEseq (plik DEseq.txt)
  • dla każdej osoby zapisanej na przedmiot indywidualny folder (oznaczony numerem indeksu) zawierający: wyniki eksperymentu ChIP-seq dla pewnej modyfikacji histonów (plik A.txt.gz), oraz dla pewnego innego białka (plik B.txt.gz). Obie próbki dotyczą tej samej tkanki.

Uwaga: jeśli czyjegoś numeru indeksu brak, lub ma problem z danymi (plik jest uszkodzony itp.) lub ma pytania dotyczące treści, prosimy zgłaszać je możliwie szybko na adres:
j.herman-izycka@mimuw.edu.pl

Pytania:

0. Wykonaj preprocessing danych z sekwencjonowania (analiza jakości, filtrowanie, mapowanie)
1. Zbadaj czy modyfikacja histonów A i białko B mają preferencje co do miejsca występowania w regionach genów (np. na 5′ lub 3′ końcu genów)?
2. Czy w obszarach genowych występowanie białka B i modyfikacji A są skorelowane?
3. Czy geny, na których znajduje się białko B wykazują różnicową ekspresję między tkankami Elav i Repo?

Jako rozwiązanie należy wysłać raport pod adres bartek@mimuw.edu.pl, a następnie omówić go osobiście. Raport powinien zawierać odpowiedzi na pytania wraz z uzasadnieniem, krótki opis wykonanych kroków (użyte programy, istotne parametry, metody, podsumowanie wyników). Można, a nawet należy zamieścić wykresy.

Zadanie zaliczeniowe 2 – Biomorfy

Termin: czwartek 22 stycznia, godzina 23:59.

Pytania prosimy umieszczać w komentarzach, lub ewentualnie kierować pod adres: j.herman-izycka@mimuw.edu.pl

Rozwiązania w formie pakietu zad2_[nr_indeksu] spakowanego w formacie zip lub tgz wysyłamy e-mailem do osoby prowadzącej laboratorium z kopią do wykładowcy, używając w tytule tagu [WDI-2-2014]. Aby uzyskać punkty za zadanie trzeba swoje rozwiązanie przedstawić osobiście prowadzącemu lub prowadzącej laboratoria.

Biomorfy to cyfrowe stworzenia, które kształtem mogą przypominać obiekty czy zwierzęta. Biomorfy są strukturami drzewiastymi (binarnymi), tzn. biomorf ma stawy (węzły) i segmenty (krawędzie), do każdego stawu poza zerowym (czyli poza korzeniem) wchodzi jeden segment, a wychodzą z niego dwa.

Opis historii oraz przykłady biomorfów: Opis biomorfów

Każdy biomorf ma genotyp, czyli listę 10 genów określających jego wygląd. Geny mają różny wpływ na biomorfa i są reprezentowane przez liczby całkowite albo rzeczywiste.

Opis genów

  • gen 0 – głębokość, czyli liczba rozgałęzień biomorfa
  • geny 1 i 2 – kąty odchylenia kolejnych segmentów od osi poprzedniego segmentu (w stopniach). Gen 1 odpowiada odchyleniom na rozgałęzieniach o nieparzystej głębokości, a gen 2 parzystej.
  • geny 3 i 4 – długości segmentów odpowiednio na nieparzystej (gen3) i parzystej (gen4) głębokości (wyrażona w pikselach)
  • gen 5 – wydłużenie/skrócenie segmentów.  Parzyste (nieparzyste) segmenty stopnia i są długości gen4*gen5**i (gen3*gen5**i) poprzedniego parzystego (nieparzystego)
  • gen 6,7,8 – geny kodujące kolor biomorfa (w notacji RGB), z zakresu 0.01-0.99
  • gen 9 – gradient koloru (czyli rozjaśnienie/przyciemnienie segmentów na kolejnych głębokościach). Tak jak wydłużenie, jest to cecha multiplikatywna

Biomorfy są jednopłciowe, a ich kolejne pokolenia różnią się
od poprzedniego poprzez losową, pojedynczą mutacje – drobną zmianę jednego
z ich genów.

Opis mutacji

  • gen 0 – głębokość zmienia się o +/-1
  • gen 1 i 2 – odchylenie zmienia się o +/-10 stopni
  • gen 3 i 4 – długość zmienia się o +/- 10 pikseli
  • gen 5 – przeskalowanie o losową wartość z przedziału [0.75, 1.5]
  • gen 6, 7 i 8 – przeskalowanie o losową wartość z przedziału [0.75, 1.5] (wynik skalowania spoza przedziału [0.01-0.99] powinien otrzymać wartość najbliższego krańca przedziału)
  • gen 9 -przeskalowanie o losową wartość z przedziału [0.75, 1.5]


Przykład 1: Biomorf o genotypie [2, 45, 10, 50, 20, 1, 0.1, 0.1, 0.1, 2 ] , wraz z mutantami.


Przykład 2: Biomorf o genotypie [4, 120, 30, 60, 20, 1.5, 0.2, 0.2, 0.4, 1.5] wraz z mutantami

    Napisz pakiet biomorph zawierający 3 moduły do symulowania ewolucji biomorfów.

  1. (3pkt) Moduł mutacja będzie generował zmutowane biomorfy. Powinien
    zawierać funkcję mutuj(biomorf), która zwróci listę 8 biomorfów
    pochodzących z losowych mutacji wejściowego biomorfa.
  2. (7pkt + 3pkt) moduł rysowanie powinien zawierać funkcję
    rysuj(biomorf) rysującą przy użyciu modułu turtle danego biomorfa (5 pkt),
    oraz funkcję rysuj_wszystkie(biomorf, listamutantów), która narysuje na środku wejściowego biomorfa oraz wokół wszystkie jego 8 potomnych zmutowanych biomorfów w formie obrazka 3×3 (patrz przykład 2).
  3. (7pkt) moduł symulacja: pozwoli na symulowanie ewolucji biomorfa
    korzystając z doboru (który zapewnia użytkownik) :

    1. (4 pkt) Moduł powinien zawierać funkcję symuluj(startowy), która startując od zadanego biomorfa startowy wyświetla go oraz 8 jego losowych mutantów, a następnie pozwala
      wybrać jeden z nich (wpisując numer od 1 do 9 w konsoli, biomorfy numerujemy rzędami, a w rzędzie od lewej do prawej) lub zakończyć
      symulację wpisując 0 (patrz podpowiedź 1). Funkcja zwraca historię symulacji, czyli listę zawierającą kolejne pary: (lista mutantów, numer wybranego mutanta).
    2. (3 pkt) Moduł powinien oferować możliwość uruchamiania jako skrypt z parametrami:
      -p plik – nazwa pliku z opisem biomorfa (jeden wiersz-jeden gen)
      -o output – (opcjonalny) nazwa pliku do którego należy wypisać historię symulacji (jeden wiersz – jedna para (lista mutantów, numer wybranego mutanta))
      -b gen0 gen1 … gen9 – startowy biomorf zapisany jak wartości poszczególnych genów

Do rysowania należy użyć modułu turtle

Podpowiedź 1: Wczytywanie z konsoli: funkcja raw_input("Napis wyświetlany w konsoli") zwracająca napis będący linią wpisaną przez użytkownika.

Warianty strukturalne

Slajdy są dostępne tu (N. Dojer), oraz tu (J. Korbel) i tu (J. Aerts)

dziś na zajęciach obejrzymy sobie pliki z wykrytymi wariantami przez projekt 1000 genomów. Pliki są w formacie VCF

Możemy wybrać sobie chromosom i spróbować zwizualizowac plik w IGV (raczej nie zadziała w labie).

Lepiej będzie spróbować znaleźć translokacje, insercje i delecje (BND,INS,DEL) i zwizualizować je w CIRCOS (circos działa na komputerze adela, konto tsg2)

1. Dla zadanego chromosomu stwórz ścieżki z wystąpieniami insercji (słupki) delecji (heatmap) na podstawie danych z pliku vcf

2. dla zadanej pary chromosomów pokaż translokacje między nimi opisane w pliku cancer_breakpoints.txt na koncie użytkownika tsg2 na komputerze adela.

Mogą się przydać lekcje circos

Zadanie zaliczeniowe nr 1

Naszym zadaniem będzie liczenie zawartości nukleotydów GC w różnych fragmentach genomu drożdża używanego m.in. do wytwarzania piwa poprzez górną fermentację. Wielbiciele dolnej fermentacji będą musieli poczekać, aż genom drożdży lagerowych zostanie równie dobrze opisany. Sekwencja tego genomu jest dostępna tu w postaci pliku w formacie FastA, a jej opis tutaj w postaci pliku typu GFF.

Naszym zadaniem jest stworzyć program w python’ie, w postaci pojedyńczego pliku zad1_[nr indeksu].py, zawierającego 3 następujące funkcje:

  • (3 pkt) funkcja gc_content(gene_id), która dla zadanego identyfikatora genu (Np. YAL003W) znajduje jego pozycję na genomie (chromosom, początek, koniec) i oblicza udział nukleotydów G i C spośród wszystkich pozycji sekwencji odczytanej z odpowiedniego fragmentu pliku fasta. Np. zawartość GC w sekwencji “ATGCGCTGATG” to 6/11, czyli 0.54(54).
  • (3 pkt) funkcja gc_intron(chromosom), dla zadanego chromosomu znajduje w pliku gff wszystkie introny i liczy dla nich średni GC content.
  • (4 pkt) funkcja gc_compare(chromosom), która dla zadanego chromosomu wybiera wszystkie introny i dla każdego z nich liczy GC content intronu i GC content całego genu (gen dla intronu znajdujemy w polu parent pliku GFF). W wyniku zwracamy listę trójek, (gene_id, GC_intron, GC_gene).

W pliku z rozwiązaniem mogą znajdować się dodatkowe funkcje, ale powinny być one poniżej funkcji wymaganych w rozwiązaniu. Kod powinien być wyposażony w komentarze. Zakładamy, że podczas wykonania, pliki .fsa i .gff znajdują się w bieżącym katalogu. Zajęć praktycznych z drożdżami ani ich produktami nie planujemy.

Rozwiązania wysyłamy do 23. listopada e-mailem do prowadzących laboratoria z kopią do wykładowcy, używając w tytule tagu [WDI-1-2014]. Aby uzyskać punkty za zadanie trzeba swoje rozwiązanie przedstawić osobiście prowadzącemu lub prowadzącej laboratoria.

TSG2 – Zajęcia 4 – wyszukiwanie SNPów

Slajdy do wykładu są tu i tu.

Dane (sparowane odczyty z genomu ludzkiego) są dostępne tu. Dobrze byłoby zacząć od QC, żeby zobaczyć z czym mamy do czynienia. Potem mapujemy wg. standardowych parametrów do genomu ludzkiego (hg19). Warto porównać to co wyjdzie nam przy pomocy programu bowtie (z opcją -2) i to co wychodzi przy pomocy programu BWA (zmapowane odczyty w pliku sam)

Będziemy robić zadania z tutorialu, który jest tutaj

Interesuje nas sekcja 3, czyli o znajdowaniu snipow przy pomocy mpileup z samtools i bcftools.

Poza tym chcemy nauczyć się korzystać z pakietu GATK do lokalnego re-alignmentu (sekcja 4) i snp-callingu (sekcja 5)

A także do porównywania znalezionych snpów do dbSNP (sekcja 7) przy użyciu podanego pliku vcf.

Porównaj warianty znalezione przy pomocy  mappera BWA z tymi, które otrzymujemy przy pomocy bowtie. pliki VCF znajdziesz tu

 

 

TSG2 – Zajęcia 3 – mapowanie odczytów

Dziś zajmiemy się mapowaniem odczytów. Slajdy z wykłądu są tu

Spróbujemy powrócić do jednego z plików, które już przetwarzaliśmy: test1.fastq

Będziemy używać oprogramowania bowtie do mapowania odczytów do zadanego genomu.

1. Pobierz probram bowtie i sekwencje genomu i stworz dla niej pliki indeksu

2. Spróbuj zmapować przy użyciu bowtie i opcji -m 1 -v 0 (tylko unikalne mapowania bez niezgodności z sekwencją referencyjną).

3. Spróbuj różnych parametrów preprocessingu (flitrowanie trimowanie itp) aby zwiekszyc liczbe zmapowanych odczytow.

4. Zinstaluj przeglądarkę IGV i zwizualizuj zmapowane odczyty przy jej pomocy

5. Porównaj mapowania dokładne (z p. 3) do mapowań z domyślnymi parametrami.