Second Symfonia meeting in Będlewo agenda

Meeting preliminary agenda:

Thursday, October 13th, 2016, Będlewo Conference Center

12:00 – 13:00 Lunch

13:30 – 14:30 Scientific talks
– Opening – B. Wilczynski (5 min)
– Update on DNAse-Seq and  ChIP-Seq method developments and sample processing state – K. Stępniak (15 min)
– Update and status of our NGS sequencing – what data is available now and is planned for the near future – B. Wojtas  (15 min)
– First glimpse into DNAse and RNA-Seq experimental results – B Wilczyński and A. Macioszek (15 min)
– “Maps of regulatory regions – the tfNet tool and results” together with a report on the development of “PiiL – a tool for pathway annotation” – J. Komorowski (15 min)

14:30 – 14:45 Coffee break

14:45 – 16:30 – scientific talks
– TCGA methylation project developments  –  MJ Dąbrowski (supported by M Draminski and B Wojtas) (25 min)
– Mutually exclusive mutations in cancer – D. Matlak (15 min)
– Introduction to M. Mozolewska expertise and its relevance to the project – M. Mozolewska (20 min)
– Statistical analyses of MNase data – Jakub Mieczkowski  (15 min)
– TBA – A. Polański (30 min)

16:30 – 17:30 – Discussion and planning for the upcoming experiments and analyses over coffee

18:00 – 20:00 – Dinner

Meeting participants:
– Michał J. Dąbrowski
– Michał Dramiński
– Mateusz Garbulowski
– Bożena Kamińska
– Jan Komorowski
– Anna Macioszek
– Dariusz Matlak
– Jakub Mieczkowski
– Magdalena Mozolewska
– Andrzej Polański
– Karolina Stępniak
– Karolina Smolińska
– Bartosz Wilczyński
– Bartosz Wojtaś

APB – linki dla uczących się programowania

Osoby,  które nie miały dotąd szansy nauczenia się programowania, zachęcam do pracy we własnym zakresie.

Można skorzystać z samouczków pythona:

  • https://www.codecademy.com
  • www.learnpython.org
  • http://codingbat.com/python

i wielu innych

Polecam robienie zadań z serwisów:

  • davinci.mimuw.edu.pl
  • rosalind.info
  • http://projecteuler.net/

i podobnych

Materiały do nauki programowania znajdą Państwo również tu:

  • http://wazniak.mimuw.edu.pl/index.php?title=Wst%C4%99p_do_programowania
  • http://davinci.mimuw.edu.pl/samouczek-python/python

Kilka zadań jest też dostępnych na stronie zajęć z poprzedniego roku (u dołu strony).

http://www.mimuw.edu.pl/~pawel.bednarz/apb.html

 

Zadanie zaliczeniowe nr 1.

Zadanie 1. ma wykazać, że każdy z Państwa umie samodzielnie wykonać podstawowe operacje na publicznym projekcie open source (np. Biopython). Państwa zadanie polega na:

  1. Wybraniu sobie projektu, którego kod źródłowy rezyduje na platformie github
  2. Znalezieniu miejsca, w którym pomoc jest potrzebna. Np. projekt biopython ma listę otwartych problemów , podobnie inne projekty mają takie listy. Można też wyszukać literówki albo braki w doikumentacji lub testach.
  3. Wykonaniu kopii repozytorium w ramach serwisu github
  4. Dokonaniu w niej zaplanowanych zmian
  5. Wysłaniu prośby o włączenie tych zmian do głównej gałęzi kodu poprzez tzw. “Pull request”

Zachęcam Państwa do konsultowania się ze mną przynajmniej po etapie  2. i 4. (choćby przez e-mail).

Spodziewam się, że zakończą Państwo to zadanie do końca listopada

Zadanie jest na zaliczenie, tzn. bez wykonania go, nie można zaliczyć ćwiczeń.

Sprawdzanie będzie polegać na tym, że spotkają się Państwo ze mną (np. na zajęciach) i opowiedzą o tym co Państwo zrobili i jak.

APB wykład 1.

Dzisiaj na wykładzie wprowadzenie do tematyki wykładu – w szczególności o otwartych licencjach na użytkowanie i dystrybucję oprogramowania. Slajdy tutaj wyk1-intro.

Na laboratorium porozmawiamy o użytkowaniu programów do kontroli wersji. Trochę o historii – od SCCS, przez RCS, CVS i SVN do git’a. Umówimy się na pierwszy projekt zaliczeniowy i pewnie podzielimy się na grupy do drugiego zadania.

Warto zajrzeć http://biopython.org/wiki/GitUsage

ONA – dzisiejsze zajęcia

W związku z tym, że na ostatnich ćwiczeniach  wynegocjowali Państwo ze mną przesunięcie terminu prezentacji projektów bonusowych o tydzień, to dziś nie ma normalnych zajęć.

Jeśli ktoś ma ochotę skonsultować się w sprawie zadań (tych jeszcze nie wykonanych) albo tematów egzaminacyjnych, zapraszam w godzinach zajęć (10-14) do mnie do 5770.

Prezerntacje projektów, które były planowane na dziś, odbędą się 21. 6 w godzinach 12-15,

ONA11 – Obliczenia symboliczne

Dzisiejszy wykład porównujący cechy różnych pakietów do obliczeń jest tu:ONA11-Pakiety-oprogramowania

Zadania na dziś są dość proste i dotyczą przede wszystkim obliczeń symbolicznych i pakietu sympy:

  1. Przy użyciu pakietu sympy, zbadaj podstawowe możliwości obliczeń symbolicznych: stwórz zmienną sumboliczną x (Symbol(‘x’)), stwórz wyrażenie wielomianowe (np. x**2-2) oraz wyrażenie trygonometryczne (np. sin(x)) i policz dla nich pochodne, całki (oznaczone i nieoznaczone) oraz granice (w 0, z prawej i lewej strony oraz , granice 1/x w nieskonczonosci: sympy.oo,).
  2. Zobacz jak wyniki tego typu zadań wyglądają w Wolfram Alpha
  3. Zarejestruj się w systemie SageMath i tam spróbuj rozwiązać te same problemy
  4. (*) Spróbuj rozwiązać symbolicznie układ równań różniczkowych zwyczajnych z poprzednich zajęć (model Lotki-Volterry albo Zombie INvasion) w jednym z wymienionych wcześniej pakietów

 

ONA10 – różniczkowanie i całkowanie

Dziś będziemy zajmować się różniczkowaniem i całkowaniem numerycznym. Slajdy są tu: ONA10-calkowanie

Przydatny będzie nam przede wszystkim pakiet scipy.integrate ale będziemy też korzystać z nowych funkcji pakietu matplotlib, takich jak wykresy strzałkowe

0. Na początek proponuje obejrzeć sobie program opisujący model Lotki-Volterry lotka_volterra i spróbować wykonać go po kawałku ze zrozumieniem. Jeśli są pytania, to proszę pytać

1. Naszym właściwym zadaniem jest budowa podobnego modelu dla problemu inwazji Zombie (opisanego w artykule naukowym ). Mamy tu 3 zmienne: ludzi niezarażonych (S), zombie (Z) oraz ofiary konfliktu (R). System jest dynamiczny, a jego zmiany opisują równania różniczkowe:

  • dS/dt = P – B*S*Z -D*S,
  • dZ/dt = B*S*Z +G*R – A*S*Z,
  • dR/dt = D*S + A*S*Z – G*R,

gdzie

  • P oznacza przyrost naturalny ludzi,
  • B – współczynnik z którym zombie spotykając niezarażonego może go zarazić,
  • D – współczynnik śmiertelności ludzi z przyczyn naturalnych,
  • G – prawdopodobieństwo, że zombie powstanie z martwej ofiary,
  • A – szansa na to, że w pojedynku człowieka z zombie, to zombie zostanie pokonane

Interesują nas następujące pytania:

a) Jak wygląda ewolucja systemu w czasie (w zakresie 0..5000),  jeśli na początku jest tylko 1000 ludzi niezarażonych (nie ma zombie, ani ciał) i mamy następujące prametry:

  • P=0.0001
  • D=0.0001
  • B=0.0095
  • G=0.0001
  • A=0.0001

Rozwiązanie przedstaw na wykresie 3 zmiennych (S,Z i R) od czasu

b) Czy zagładę populacji można zatrzymać poprzez zwiększanie współczynnika urodzin P? Rozwiązanie uzasadnij. Który ze współczynników musiałby wynosić 0, żeby populacja mogła poradzić sobie z zombie?

c) Zaprezentuj pole wektorowe populacji zombie i ludzi względem parametrów A i B?

d*) Zaprezentuj pole wektorowe 3d dla zmiennych S,Z,R

 

ONA – zadanie 3 (20 pkt) – przetwarzanie macierzy kontaktów

Naszym zadaniem jest stworzenie pakietu umożliwiającego obróbkę macierzy kontaktów chromosomowych. Będzie on obejmował 3 zasadnicze zadania:

1. Wczytywanie listy kontaktów dla wybranego chromosomu do macierzy o zadanej rozdzielczości (5pkt). Mamy dany plik wejściowy, który zawiera 4 kolumny:

chromosom1 pozycja1 chromosom2 pozycja2

Każdy taki wpis (a będą ich miliony) opisuje kontakt pojedyńczej nici DNA pochodzącej z chromosomu1 na pozycji1 z nicią pochodzącą z chromosomu2 na pozycji2. Mając do dyspozycji taki plik oraz podany numer chromosomu C i długość segmentu S powinniśmy skonstruować kwadratową macierz symetryczną M kontaktów (rozmiaru N*N, gdzie N= L/S, gdzie L oznacza długość chromosomu C) pomiędzy segmentami zadanego chromosomu. Np. jeśli chromosom ma długość L=1000000 par zasad, a S=1000, otrzymamy macierz M rozmiaru 1000*1000, a wartość M[i,j] będzie oznaczać ile wierszy opisywało kontakt pomiędzy fragmentem [1000*i:1000*(i+1)] a fragmentem [1000*j:1000*(j+1)].

2. Normalizacja macierzy (10pkt). Mając daną macierz kwadratową M o zadanym rozmiarze N*N, często potrzebujemy dokonać jej normalizacji. W tym przypadku interesuje nas rozwiązanie równania M[i,j]= B[i]*[B[j]*T[i,j]+epsilon, gdzie wektor B (rozmiaru N) opisuje multiplikatywne obciążenia poszczególnych segmentów, zaś od Macierzy T (rozmiaru N*N) oczekujemy, że będzie symetryczna i znormalizowana (sum(T[:,i])=1.0 dla każdego i). Daje nam to układ równać, który wymaga rozwiązania iteracyjnego, minimalizującego błąd (epsilon). Wynikiem tej procedury powinna być macierz T, wektor B i wartość epsilon, a dozwolonym parametrem powinna być maksymalna liczba iteracji i maksymalny Epsilon.

3. Wyświetlanie  macierzy kontaktów (5 pkt). Kiedy już mamy macierz kontaktów (M lub T) to chcielibyśmy móc obejrzeć ją na ekranie lub zapisać do pliku. Potrzebny nam będzie program, który na podstawie macierzy i dodatkowych parametrów wyświetla zadaną macierz metodą imshow(). Program powinien pozwalać na następujące opcje:

  • określanie podmacierzy do wyświetlenia (tylko prostokąt o współrzędnych x_1:x_2,y_1:y_2)
  • Wygładzanie mapy przy pomocy filtra Gaussowskiego o określonym promieniu
  • logarytmiczna lub liniowa mapa kolorów
  • wybór schematu kolorów
  • Zmniejszanie rozdzielczości dużych map do wizualizacji o stały czynnik (jeśli mapa ma np. 10000×10000 można zadać zmniejszenie jej przed wizualizacją – np. zmniejszenie o czynnik 10 powinno uśrednić dane z kwadratów rozmiaru 10×10 i wyświetlić mapę rozmiaru 1000×1000)

Wynik wysyłamy w postaci pojedyńczego skryptu (jako niespakowany załącznik) na adres prowadzącego zajęcia z dopiskiem ONA-3-2016 w tytule do dnia 20. VI 2016.

UWAGA: Przykłądowy plik z danymi (dla 1 chromosomu o długości 1mln par zasad) można znaleźć tutaj – uwaga, plik jest duży…)

UWAGA 2: Kontakty chromosomowe są dość często wzbogacone w kontakty blisko “przekątnej”, czyli kontakty niedużego zasięgu. W związku z tym warto rozważyć wersję programu, która ignoruje wartości w macierzy na samej przekątnej.

Wskazówki do rozwiązania po pierwszych pytaniach:

1) Czy dla dużych macierzy M (np. 1000×1000) możemy myśleć o rozwiązaniu dokłądnym tego układu równań?

2) Czy normalizacja kolumnowo/wierszowa macierzy T nasuwa nam jakieś oszacowanie na przybliżone wartości B[i]?

3) Czy jeśli ktoś dałby nam wartość przybliżoną B, to umielibyśmy znaleźć krok iteracji poprawiający to oszacowanie przy pomocy macierzy M?

4) Epsilon, o którym wspominam w zadaniu jest pewnego rodzaju skrótem myślowym. Kiedy występuje w równaniu, mamy na myśli różnicę między prawą, a lewą stroną tego konkretnego równania (powiedzmy, mały epsilon). Kiedy pojawia się jako kryterium zakończenia iteracji (duży Epsilon), jest to już różnica między wszystkimi lewymi i prawymi stronami równań. W zagadnieniu najmniejszych kwadratów, typowo ten duży Epsilon to suma kwadratów małych epsilonów. W naszym przypadku, gdzie liczba równań, a więc i składników sumy zależy istotnie od parametrów zadanych przez użytkownika, warto rozważyć duży Epsilon będący maksimum z wartości bezwzględnych małych epsilonów.