Teaching

WBO 1 – O sekwencjach DNA i grafach

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

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. Zarówno dla problemu ze stałą długością sond jak i dla problemu ze stałą temperaturą topnienia sond.

Praca domowa:

Napisz program, który znajduje minimalne k, dla którego istnieje zbiór sond długości k komplementarnych do zestawu sekwencji zadanych 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.

Zadania oceniam przez 2 tygodnie, czyli do 13. marca.

 

ONA 1 – Arytmetyka komputerów

Slajdy do wykładu można znaleźć tu: ONA1-Arytmetyka

Uwaga nt. liczb całkowitych. Obecnie python3 ukrywa zupełnie przed nami fakt istnienia ograniczeń wielkości rejestrów przy operacjach na liczbach całkowitych. Aby zobaczyć jak to działa, warto uruchomić interpreter python2.7 i wykonać operacje na dużych liczbach.

Pracujemy w narzędziu python3 (nie w octave) i wykonujemy zadania inspirowane zadaniami z labu 3 do metod numerycznych. Zachęcam do użycia interpretera ipython3. Nieco więcej technicznych szczegółów jest też dostępne w materiałach do wykładu z metod numerycznych.

W szczególności:

Policz epsilon maszynowy (zarówno jako wartość dziesiętną ale też liczbe bitów cechy binarnej przy pomocy sprawdzania dla jakich n 1.0+2.0**(-n) >1.0. Co by się stało, gdybyśmy wykonali tę próbę w okolicy 0.0 zamiast 1.0. Czy taki epsilon maszynowy zależy od liczby bitów cechy, czy mantysy?

Zastanów się nad zadaniem z szeregami zbieżnymi (lub rozbieżnymi) numerycznie. Zaimplementuj liczenie sum S(n) w pythonie, dla dowolnego n i dla kilku szeregów podanych w rozwiązaniu. Które z nich można dokładnie policzyć pry użyciu modułu Fractions?

Policz wartości e(x) wg rozwinięcia wzoru Taylora dla zadanego maksymalnego stopnia. Porównaj różnicę wyniku jaki otrzymujesz dla x=-90 i x=2.

Policz sumy częściowe szeregu harmonicznego przy użyciu liczb zmiennoprzecinkowych i przy użyciu modułu Fractions. Porównaj wyniki.

 

Symfonia meeting, November 23rd 2017

Odbyło się kolejne spotkanie grantu Symfonia, tym razem w Instytucie Nenckiego. Program poniżej

14.00-14.30 Lunch (sala A)
14.30-14.50 Bozena Kaminska Podsumowanie badań doświadczalnych i propozycje analizy
14.50-15.20 Bartek Wilczynski Podsumowanie stanu pracy i propozycje analizy
15.20-15.50 Jan Komorowski Podsumowanie stanu badań
15.50-16.00 Agata Dziedzic Wyniki analizy metylacji DNA pierwszych próbek symfonicznych
16.00-16.15 Ilona Grabowicz Analiza mutacji punktowych w danych RNAseq projektu Symfonia
16.15-16.25Michał J. Dąbrowski Ekspresja genów pacjentów analizowanych w Symfonii w ujęciu klasyfikacji proponowanej przez Ceccarelli et al. (2016)
16.25-16.45 Andrzej Polanski Analiza czynników wpływających na przeżywalność pacjentów chorych na wybrane nowotwory, na bazie danych TCGA
16.45-17.00 Podsumowanie i dyskusja

ONA 12 – Całkowanie Monte Carlo i miejsca zerowe funkcji nieliniowych

Dziś przede wszystkim zajmowaliśmy się zerami funkcji nieliniowych, ale zrobiliśmy też dygresję (w zasadzie uzupełnienie do wykładu o całkowaniu numerycznym) n.t. metod Monte Carlo. Notatki do równań nieliniowych znajdą Państwo tu. Opis całkowania metodą MC znajdą Państwo np. tu

Zadania na dziś:

1. Napisz program, który znajduje  przybliżenie liczby Pi przy pomocy równania x**2+y**2<=1

2. Napisz program, który korzysta z metody bisekcji i oblicza wartość pierwiastka kwadratowego z 2. Jakiego równania zera szukamy? ile iteracji potrzeba?

3. Napisz program, który korzysta z metody stycznych, aby obliczyć tę samą wartość. O ile szybciej możemy znaleźć dokładną wartość?

4 (*). Zaimplementuj metodę iteracji prostej Banacha dla rozwiązania równania Keplera.  Możesz posiłkować się tym artykułem

ONA 11 – 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 (można to robić w platfoermie jupyter gdzie jest też zakładka zawierająca przykłady z 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

ONA – Zadanie zaliczeniowe 3 – iteracyjna metoda estymacji ekspresji genów

Naszym zadaniem jest napisanie prostej metody iteracyjnej, która znajdzie lokalnie optymalne przypisanie poziomów ekspresji dla różnych transkryptów genów.

Przypomnijmy – geny u eukariontów podlegają splicingowi – procesowi wycinania intronów zanim dojdzie do translacji. Jeśli transkrypt posiada wiele intronów, możemy otrzymać wiele różnych transkryptów – niekiedy, jak w przypadku genu dSCAM, możeich być naprawdę bardzo wiele.

Mamy więc 3 poziomy organizacji transkrypcji: Geny, transkrypty i eksony. Każdy ekson może należeć do wielu transkryptów, ale każdy transkrypt należy do jednego genu.

Kiedy sekwerncjonujemy mRNA, możemy policzyć ile odczytów przypadło na każdy z eksonów. Przykładowy wynik takiej operacji znajdą Państwo w pliku Reads_on_exons. Opisuje on dla każdego z kilkuset tysięcy exonów liczbę odczytów przypadających na niego w jednym z eksperymentów badania ekspresji genów w ludzkim mózgu prowadzonym w mojej grupie.

Opis przynależnośći eksonów do genów w ludzkim genomie znajdą Państwo w pliku hg38_full.gtf Dla każdego eksonu będzie tam linia przypisująca go do określonego genu i transkryptu.

Naszym zadaniem jest obliczenie najbardziej prawdopodobnych poziomów ekspresji transkryptów zakładając, że ekspresja eksonów jest w przybliżeniu równa sumie ekspresji transkryptów zawierających dany ekson. Oczywiście musimy wziąć pod uwagę pewien błąd, który jest nieuchronnie związany z losowością próbki odczytów oraz z niedoskonałością opisu transkryptów.

Punktacja wygląda następująco:

– zaprojektowanie sensownych struktur danych do przechowywania informacji o genach, transkryptach i exonach – 7 punktów
– wczytanie danych z plików do tychże struktur – 7 punktów
– iterując po genach rozwiązujemy zadanie minimalizacji błędu najmniejszych kwadratów, gdzie dana jest ekspresja na egzonach i przypisanie egzonów do transkryptów i genów, a szukanymi jest ekspresja transkryptów. – 7 punktów
– wypisujemy wyniki do plików tekstowych (4 pkt)
a) eskpresję transkryptów w formacie: nazwa genu, nazwa transkryptu, wartość ekspresji, lista egzonów, zliczenia dla egzonów
b) błąd średniokwadratowy dla egzonów do pliku tekstowego w formacie: egzon, wartosc ekspresji, suma ekspresji transkryptow, blad, lista transkryptow

Ze względu na opóźnienie pojawienia się zadania – proponuję termin oddania projektu na 15 VI.

ONA – Różniczkowanie i całkowanie numeryczne

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

3rd Symfonia Grant Meeting

On May 16-17th, 2017 we will have another grant meeting. This time the meeting takes place in Wierzba conference center, and the host institution will be the Nencki Institute of experimental biology.

Preliminary agenda can be downloaded  here.

Participants list:

  • Michał J. Dąbrowski
  • Michał Dramiński
  • Mateusz Garbulowski
  • Jan Komorowski
  • Jacek Koronacki
  • Hanna Kranas
  • Magdalena Machnicka
  • Anna Macioszek
  • Jakub Mieczkowski
  • Magdalena Mozolewska
  • Karolina Sienkiewicz
  • Karolina Stępniak
  • Ewa Szczurek
  • Bartek Wilczyński
  • Bartosz Wojtaś