ONA 2017 – 3 – Wykresy

Dzisiaj zajmujemy się wykresami.

Slajdy są tu ONA3-wykresy

Zadania na dziś:

1. Narysuj wykres podobny do tego ze slajdu nr. 14  z wykładu. Uwzględnij opisy osi, zakresy wartości, kolory, znaczniki wartości, legendę i tytuły osi oraz wykresów.

2. Narysuj wykres 10*sin(x)+normal(0,1) dla 1000 punktów w zakresie 0,10. Przyda się funkcja normal().

3. Napisz program, który wykona 1000 prób rzutu 10 kostkami. Narysuj na jednym wykresie 3 przenikające się histogramy (alpha=0.25): suma oczek na kościach parzystych (0,2,4,6,8), suma oczek na kościach nieparzystych (1,3,5,7,9), suma oczek na wszystkich kościach. Może przydać się funkcja randint().

4. Przedstaw dane z wykresu 3. w postaci 3 wykresów pudełkowych (boxplot)

5. Narysuj powierzchnię 3d (x,y,z) in linspace(0,1,100) gdzie z=y*cos(x)+(1-y)*sin(x), Może być przydatny ten przykład

5. Narysuj mapę ciepła dla tej samej powierzchni. Użyj różnych map kolorów.

 

ONA 2/2017 – Numpy

Slajdy do wykładu – ONA2-Macierze

Ćwiczenia:

  1. Stwórz macierze A i B o wymiarach  1000×1000 zawierające wartości A[i,j]==i*3-j*5 i [i,j]==np.sqrt(A[i,j]) (Zauważ, że to wymaga wartości urojonych, a więc macierzy typu complex64 i wartość sqrt(-1) ->.j)
  2. Napisz funkcję poz(indeksy, shape), która dla zadanej krotki indeksów zwraca liniową pozycję elementu o zadanych indeksach w wielowymiarowaj macierzy o kształcie shape.
  3. Korzystając z broadcastingu i mnożenia macierzy zmień znak elementów w macierzy B, których suma indeksów jest nieparzysta
  4. korzystając z metody sort() , posortuj macierz 3-wymiarową wg. drugiej współrzędnej i obejrzyj wynik.
  5. Korzystając z funkcji frompyfunc() napisz funkcje wektorowe, które liczą a) sumę kwadratów dwóch macierzy  (dwie macierze do jednej)
    b) iloraz i resztę z dzielenia całkowitoliczbowego przez 17 (jedna macierz wejściowa i dwie macierze wyjściowe)
  6. Korzystając z modułu time, porównaj prędkość funkcji liczących N potęg dwójki – na liście i w wektorze. Dla jakich wartości N warto używać macierzy?

ONA 2017 – Zajęcia 1 – Arytmetyka

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

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.

Napisz funkcję znajdującą miejsca zerowe dla dowolnej funkcji w przedziale [a,b] ( def zero(f,a,b):) metodą bisekcji.  Sprawdź jak ona działa dla różnych równań typu 1/x-c.

APB – kryteria i procedura zaliczenia

Zbliża się koniec semestru, więc czas na ostateczne szczegóły zaliczenia. Zgodnie z zapowiedziami, do elementów zaliczenia należą:

  1.  Wykonanie referatu
  2. Małe zadanie lab. (pull request)
  3. Prezentacja projektu zespołowego
  4. Duże zadanie lab. (osobisty wkład w rozwój projektu zespołowego)

Aby zaliczyć przedmiot, trzeba zaliczyć wszystkie 4 elementy, przy czym punkt 2 nie wpływa na ocenę (jest tylko na “zal”), a ostateczna ocena będzie średnią ważoną punktów 1, 3 i 4, przy czym wkład prezentacji (punkty 1 i 3) jest mniejszy (po 25%) a samego projektu (pkt. 4) większy (50%). Oceny za punkty 1 i 4 są indywidualne (mogą być osoby o różnym wkładzie w ten sam projekt) o tyle prezentacja całego projektu jest oceniana zespołowo (niezależnie od tego, czy wszyscy brali udział w prezentacji, czy np. tylko wybrane osoby z zespołu).

Prezentacje odbędą się na ostatnich zajęciach laboratoryjnych (23. stycznia o 12:15 w labie), każdy zespół ma 30 minut na opowiedzenie o swoim projekcie. Powinna to być prezentacja adresowana do pozostałych uczestników jako potencjalnych użytkowników stworzonego pakietu. Można inspirować się dobrymi i złymi przykłądami tego typu prezentacji z konferencji BOSC (np. tu ). Prezentacja jest warunkiem koniecznym zaliczenia, nawet jeśli zespół ma problemy z ukończeniem projektu. Chciałbym, aby podczas prezentacji poruszone zostały następujące kwestie:

  1. Po co ten projekt?
  2. Co się udało?
  3. Jak to zrobiliśmy?
  4. Jak to przetestowaliśmy?
  5. Jak  to udokumentowaliśmy?
  6. Przykład zastosowania w działaniu (live demo, albo case study)
  7. Credits, czyli kto co zrobił

Na podstawie ocen z zajęć, każdy będzie miał zaproponowaną ocenę “wyjściową”, którą będzie mógł/mogła poprawić (lub w przypadkach skrajnej ignorancji – pogorszyć) na egzaminie ustnym, którego termin proponuje 30. I 2017, ale można też ustalać indywidualnie w sesji. Aby uzyskać ocenę powyżej 4, konieczny jest udział w egzaminie ustnym.

Zagadnienia na egzamin w kolejności malejącej ważności:

  1. Technologie zarządzania wersjami kodu i dzielenia się nimi (RCS, CSV, SVN, GIT, GITHUB, itp.
  2. Instytucje wspomagające rozwój oprogramowania open-source i  licencje oprogramowania (OBF, SPI, GNU, GPL, BSD, itp)
  3. Reproducible research: idee i technologie wspierające (m. in. pakiety literate programming typu sweave)
  4. Rola oprogramowania typu LIMS i Workflow management w reproducible research
  5. Oprogramowanie open source dla potrzeb bioinformatyki (projekty BioX)
  6. Pakiety do obliczeń naukowych i wizualizacji
  7. Przeglądarki genomowe

Idea egzaminu jest taka, że student na zapytanie o dowolny z tych tematów, powinien być w stanie streścić co było na danym wykładzie w kilku sensownych zdaniach i odpowiedzieć na podstwowe pytania w zakresie tego co było na wykładzie (np. różnice między licencjami, zalety i wady narzędzi do wersjonowania kodu, itp).

Termin egzaminu: 10. lutego 2017.

APB wykład 3

Dzisiaj Na wykładzie mówliśmy o przeglądarkach genomowych. Slajdy dostępne są tu: wyk3-browsers . Zaległe slajdy z poprzedniego tygodnia są tu: wyk2-bioX

Na ćwiczeniach będziemy przygotowywać się do zrobienia zadania 1. Zachęcam w związku z tym do założenia sobie konta w serwisie github. Następnie do wybrania sobie projektu (np. biopython, albo któryś z projektów mojej grupy dostępny na github.com/regulomics). Następnie stworzenia “rozwidlenia” (ang fork) tego projektu, ściągnięcia go do siebie, wykonania poprawki i wrzucenia poprawionej wersji na swoje konto w serwisie github, a następnie do wykonania pull requestu.