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
Umiejętności - absolwent potrafi:
- wykorzystać narzędzia do pracy nad złożonymi projektami bioinformatycznymi,
- pozyskiwać informacje z literatury, baz wiedzy, Internetu oraz innych wiarygodnych źródeł, integrować je, dokonywać ich interpretacji oraz wyciągać wnioski i formułować opinie (K_U02),
- posługiwać się przyjętymi formatami reprezentacji różnego rodzaju danych stosownie do sytuacji (liczby, tablice, tekst) pamiętając o ich ograniczeniach, np. związanych z arytmetyką komputera (K_U08),
- samodzielnie planować i realizować własne uczenie się przez całe życie (K_U09),
- zrealizować projekt informatyczny, w szczególności zaprojektować i zrealizować prosty system informatyczny, używając właściwych metod, technik i narzędzi; tworzyć, oceniać i realizować plany testowania; efektywnie uczestniczyć w inspekcji oprogramowania; posługiwać się przynajmniej jednym z popularnych systemów zarządzania wersjami (K_U16),
- wykonać analizę istniejących rozwiązań informatycznych, w szczególności: ocenić, na podstawowym poziomie, przydatność rutynowych metod i narzędzi informatycznych, wybrać i zastosować właściwą metodę i narzędzia do typowych zadań informatycznych, wykonać prostą analizę sposobu funkcjonowania systemu informatycznego i ocenić istniejące rozwiązania informatyczne, przynajmniej w odniesieniu do ich cech funkcjonalnych (K_U18).
Kompetencje społeczne - absolwent jest gotów do:
- krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01),
- pracy z poszanowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka (K_K02),
- uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03).
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: