Uniwersytet Warszawski - Centralny System Uwierzytelniania
Strona główna

Zaawansowane techniki programowania dla bioinformatyków

Informacje ogólne

Kod przedmiotu: 1000-713ZTP
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Zaawansowane techniki programowania dla bioinformatyków
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty obieralne dla II-III roku bioinformatyki
Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka
Punkty ECTS i inne: 6.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: (brak danych)
Rodzaj przedmiotu:

fakultatywne

Założenia (opisowo):

Kurs przeznaczony dla Studentów znających podstawy programowania i język Python. Przydatne mogą być podstawy z pierwszych lat studiów (algebra liniowa, statystyka, obliczenia naukowe, programowanie obiektowe).

Celem przedmiotu jest zapoznanie z bardziej zaawansowanymi bibliotekami dostępnymi w języku Python oraz narzędziami pomocnymi w realizacji większych projektów.

Skrócony opis:

Wprowadzenie do wybranych bibliotek Pythona i narzędzi wspierających realizację większych projektów oraz ich zastosowanie w praktyce przy pracy nad sukcesywnie rozwijanym projektem bioinformatycznym.

Pełny opis:

część I - narzędzia programistyczne

Jak profesjonalnie tworzyć oprogramowanie?

- Rozpoczęcie pracy. Konfiguracja wirtualnego środowiska, PyCharm, uv. Podstawy bash-a do uruchamiania obliczeń na serwerze.

- Budowa modułów i skryptów CLI z użyciem bibliotek - argparse.

- Zaawansowane narzędzia do pracy interaktywnej - ipython i jupyter notebook.

- Wykorzystanie debugera i profilera do analizy kodu w Pythonie.

- Testowanie oprogramowania. Dobre praktyki i nauka narzędzi - pytest.

- Python w firmie. Wskazówki typów, tworzenie modeli danych i walidacja danych, statyczna analiza typów, jakość kodu, formatowanie kodu, generowanie dokumentacji - typing, pydantic, mypy, flake, black, pydoc.

- Narzędzia do zarządzania kodem źródłowym: git, github i gitlab. Ciągła integracja (ang. continuous integration) i tox.

- Budowa większych pakietów, ustalanie zależności pomiędzy pakietami, systemy pip i conda.

- Modele generatywne wspomagające pracę z kodem - chatGPT, copilot.

część II - narzędzia analizy danych

Jak zrealizować projekt naukowy i udostępnić go światu?

- Obsługa danych tabelowych i obsługa macierzy wielowymiarowych. Broadcasting i wektoryzacja - biblioteki pandas i numpy.

- Narzędzia statystyczne i naukowe w pakiecie SciPy.

- Zaawansowane wykresy przy pomocy seaborn, plotly, bokeh i geoplot.

- Przetwarzanie plików ze strukturą - BeautifulSoup, JSON i YAML.

- Pobieranie danych z internetu - biblioteka requests.

- Udostępnianie API - Selenium, FastAPI, uvicorn.

- Konteneryzacja.

część III - wybrane narzędzia bioinformatyczne

Jakie możliwości oferuje Biopython i jakie są alternatywy?

- Wczytywanie i przetwarzanie sekwencji biologicznych.

- Przetwarzanie i wizualizacja danych strukturalnych - Bio.PDB i PyMOL. 

- Wywoływanie zewnętrznych podprogramów w aplikacjach Python-a na przykładzie Bio.Application i subprocess.

Literatura:

1. Zaawansowany Python, Luciano Ramalho (Fluent Python, 2nd edition)

2. Python. Zwięzłe kompendium dla programisty, David M. Beazley (Python Distilled)

3. Efektywny Python. 90 sposobów na lepszy kod, wydanie II, Brett Slatkin (Effective Python: 90 specific ways to write better Python, 2nd edition)

Efekty uczenia się:

Po ukończeniu kursu student:

- Posiada praktyczną znajomość języka Python oraz jego bibliotek wystarczającą do tworzenia aplikacji średniej wielkości.

- Zna powszechnie używane narzędzia do analizy danych, wizualizacji oraz udostępniania wyników niezbędne w pracy w data science.

- Rozumie szeroko stosowane narzędzia i praktyki związane ze współpracą zespołową przy tworzeniu oprogramowania oraz zarządzaniu projektami w środowiskach akademickich i przemysłowych.

- Potrafi jasno przedstawić strukturę, użyte narzędzia oraz założenia projektu programistycznego.

- Zdobył praktyczne doświadczenie poprzez etapowe rozwijanie własnego projektu bioinformatycznego, wykorzystując poznane narzędzia i metody w rzeczywistym kontekście.

Metody i kryteria oceniania:

W trakcie semestru Studenci będą realizować jeden lub dwa projekty programistyczne rozwijane etapami. Projekty mogą być realizowane indywidualnie lub w małych zespołach. Szczegółowe zasady oceniania opisane będą w kursie przedmiotu na wydziałowej platformie Moodle.

Egzamin końcowy przybierze formę prezentacji i omówienia finalnej wersji projektu. Warunkiem zaliczenia jest wykazanie się znajomością prezentowanego projektu podczas egzaminu.

Zajęcia w cyklu "Semestr zimowy 2025/26" (jeszcze nie rozpoczęty)

Okres: 2025-10-01 - 2026-01-25
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Jarosław Paszek
Prowadzący grup: Andrzej Mizera, Jarosław Paszek, Damian Wójtowicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Wykład - Egzamin
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.
Krakowskie Przedmieście 26/28
00-927 Warszawa
tel: +48 22 55 20 000 https://uw.edu.pl/
kontakt deklaracja dostępności mapa serwisu USOSweb 7.1.2.0-8 (2025-07-09)