Zaawansowane techniki programowania dla bioinformatyków 1000-713ZTP
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.
Rodzaj przedmiotu
Założenia (opisowo)
Koordynatorzy przedmiotu
Efekty kształcenia
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.
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.
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)
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: