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ś

 

ONA 2017 – Wartości i wektory własne

Dziś poznaliśmy numeryczne rozwiązania problemu znajdowania dominujacych wartości własnych metodą potęgową i wartości własnych bliskich zadanej wartości metodą odwrotną potęgową. Dużo więcej materiału można znaleźć na tej stronie

Jeśli chodzi o funkcje przydatne w pythonie, to przede wszystkim interesują nas funkcje:

scipy.linalg.eig(A)

oraz

scipy.linalg.eigvals(A)

Zadania na dziś:

1. Zaimplementuj metodę potęgową z wykładu i zastosuj ją dla rozważanej na wykładzie macierzy: M=array([[1,2.],[4,3]]). Czy Twoje rozwiązanie różni się od rozwiązania z funkcji eig? Jakie równanie spełniają wektory własne zwrócone przez tę funkcję?

2. Zaimplementuj metodę Rayleigha RQI (z wykładu ). zastosuje ją do znalezienia najmniejszej wartości własnej macierzy M z zad. 1.

3. Rozważ macierz A=array([[-1,2,2],[2,2,-1.],[2,-1,2]]). Spróbuj znaleźć jej wartości własne zaimplementowanymi przez siebie metodami. Skąd biorą się problemy? Czy podobne problemy spotkają nas dla macierzy rand(3,3)?

4. Rozważ macierz M=array([[a,1.],[0,b]]). Gdzie a i b są dodatnimi liczbami całkowitymi. Jak zmienią się wartości własne, gdy zamiast zera wstawimy do M[1,0] wartośći 1/k dla k rosnącego wykładniczo?