MATERIAŁY PRZYGOTOWAWCZE

Zintegrowany Kompendium Bioinformatyki

Kompleksowa, interaktywna baza wiedzy i notatek do nauki na Kolokwium 3. Obejmuje pełny zakres programowania bioinformatycznego, statystyki obliczeniowej i uczenia maszynowego w językach R i Python.

7
Kompletnych Modułów
49
Pytań Kontrolnych
2
Języki Programowania
100%
Pokrycia Szczegółów
01

Rozdział I: Analiza Statystyczna i Obiektowa w R

Podstawy programowania w R, statystyka wbudowana, zaawansowane pakiety Tidyverse oraz repozytorium Bioconductor.

Moduł 1 - Fundamenty

Fundamenty Języka R w Analizie Bioinformatycznej

Przegląd i Główne Cele

Ten moduł stanowi absolutny fundament przed przejściem do zaawansowanych analiz. Głównym celem jest zapoznanie się z historią, filozofią oraz podstawową składnią języka R. Kładzie nacisk na konfigurację środowiska pracy (RStudio/Posit), zarządzanie podstawowymi obiektami w pamięci programu, zrozumienie fundamentalnych struktur danych (wektorów, macierzy, list i ramek) oraz mechanizmów sterowania przepływem. Moduł wprowadza również podstawy statystyki oraz generowanie prostych wykresów do wizualizacji zjawisk biologicznych.

Słowniczek Pojęć
CRAN (Comprehensive R Archive Network) Baza
Centralne, ogólnoświatowe repozytorium utworzone w 1997 roku, przechowujące tysiące pakietów rozszerzających możliwości języka R.
Bioconductor Baza
Dedykowane środowisku R repozytorium pakietów open-source, stworzone specjalnie z myślą o rygorystycznej analizie i wizualizacji danych biologicznych oraz bioinformatycznych.
RStudio (Posit) IDE
Najpopularniejsze zintegrowane środowisko programistyczne dla R, ułatwiające pisanie skryptów, podgląd zmiennych oraz wykresów.
Wektor (Vector) Struktura
Podstawowa, jednowymiarowa struktura danych w R przechowująca ciąg elementów ściśle tego samego typu.
Faktor (Factor) Zmienna
Specjalny typ zmiennej kategorycznej, przechowujący dane w postaci wartości liczbowych przypisanych do etykiet tekstowych, niezbędny w analizach statystycznych do definiowania grup.
Ramka Danych (Data Frame) Struktura
Dwuwymiarowa struktura danych przypominająca tabelę. Jest to lista wektorów o równej długości, gdzie każda kolumna może przechowywać inny typ danych.
Log2FoldChange Metryka
Miara zmiany ekspresji (np. genów), przedstawiana na wykresach rozrzutu (Volcano plot) obrazujących różnice między grupami.
Kluczowe Algorytmy i Metody

Rodzina funkcji apply: Zbiór wydajnych metod zastępujących klasyczne pętle, przyspieszających kod:

Funkcja Opis i Zastosowanie Typ Wyniku
apply() Stosuje funkcję na wierszach (1) lub kolumnach (2) macierzy. Wektor / Macierz
lapply() Aplikuje funkcję do każdego elementu listy/wektora. Zawsze lista (list)
sapply() Działa jak lapply, ale automatycznie upraszcza wynik. Wektor / Macierz

Algorytmy sterujące: Instrukcje warunkowe if, else if, else oraz pętle for i while. Sterowanie pętlą odbywa się za pomocą break (przerwanie) i next (pominięcie i przejście do kolejnej iteracji).

Statystyka parametryczna i nieparametryczna: Metody parametryczne obejmują test t (t.test()) porównujący średnie dwóch grup oraz wieloczynnikową analizę wariancji ANOVA (aov()) z testem post-hoc Tukeya. Metody nieparametryczne (stosowane w przypadku braku rozkładu normalnego) obejmują test Wilcoxona (wilcox.test()) oraz test Kruskala-Wallisa (kruskal.test()).

Struktury i Bazy Danych

R rozróżnia dane liczbowe (całkowite integer i zmiennoprzecinkowe numeric), tekstowe (character), logiczne (logical), zespolone (complex) oraz surowe bajty (raw).

Złożone struktury danych: Macierz (matrix()) to dwuwymiarowa struktura, w której wszystkie elementy muszą mieć ten sam typ. Lista (list()) to najbardziej elastyczna struktura, zdolna do przechowywania wektorów, znaków, macierzy i innych list w jednej zmiennej.

Związki Biologiczno-Obliczeniowe
🧬 Analiza Molekularna i Statystyka w R
Zjawisko Biologiczne
Praca na długich sekwencjach DNA (ATGCGTACGTA) oraz badanie różnic ekspresji genetycznej między grupami (np. leczone vs kontrola, MUT vs WT).
Abstrakcja Obliczeniowa
Przechowywanie sekwencji jako typy character, zliczanie długości przez nchar(), ewaluacja statystyczna różnic testami t.test() i aov() oraz wizualizacja Volcano plot (osi log2FoldChange vs p-value) za pomocą plot().
Pytania Kontrolne (Samokontrola)
1. Jaką zasadniczą różnicę w systemie indeksowania (liczenia elementów) posiada język R w porównaniu z językiem Python? +
W języku R indeksowanie elementów rozpoczyna się od 1 (pierwszy element ma indeks 1), podczas gdy w Pythonie indeksowanie zaczyna się od 0 (pierwszy element ma indeks 0).
2. Jakich dwóch skrótów klawiszowych (lub ich kombinacji) użyjesz w środowisku RStudio do aktywacji wbudowanej funkcji podpowiadania składni kodu? +
Do aktywacji podpowiedzi składni w RStudio służy klawisz Tab lub kombinacja Ctrl + Spacja.
3. Czym różni się ramka danych (data.frame) od macierzy (matrix) pod kątem typów danych, jakie może w sobie przechowywać? +
Macierz jest strukturą jednorodną (homogeniczną) – wszystkie jej elementy muszą być dokładnie tego samego typu (np. same liczby). Ramka danych jest strukturą różnorodną (heterogeniczną) – kolumny mogą przechowywać różne typy danych (np. tekst, liczby, czynniki), pod warunkiem że mają tę samą długość.
4. Jaka jest różnica w wartościach zwracanych pomiędzy zastosowaniem w kodzie funkcji lapply() a sapply()? +
Funkcja lapply() zawsze zwraca wynik w postaci **listy**, niezależnie od wejścia. Funkcja sapply() automatycznie próbuje **uprościć** wynik do postaci wektora lub macierzy, jeśli to możliwe strukturalnie.
5. Za pomocą jakiej funkcji w języku R wywołasz jednoczynnikową analizę wariancji (ANOVA) przy badaniu różnic między grupami? +
Do wywołania analizy wariancji ANOVA służy funkcja **aov()** (zazwyczaj jako aov(wartość ~ grupa)).
6. W jaki sposób w pętli for pominiesz aktualną iterację i natychmiast przejdziesz do następnej, zachowując działanie całej pętli? +
Do pominięcia bieżącej iteracji i przejścia do następnej w pętli R służy słowo kluczowe **next**.
7. Czym są Faktory w języku R i dlaczego są tak chętnie wykorzystywane przez statystyków przy modelowaniu danych? +
Faktory (*factors*) to specjalne wektory kategoryczne, przechowujące wartości jako indeksy liczbowe przypisane do unikalnych etykiet (poziomów/levels). Statystycy używają ich chętnie, ponieważ poprawnie reprezentują one dane nominalne/kategoryczne w modelach statystycznych, testach (np. ANOVA) oraz na wykresach.
Moduł 2 - Statystyka

Wprowadzenie do Języka R w Bioinformatyce i Statystyce

Przegląd i Główne Cele

Ten materiał kładzie silny akcent na praktyczne zastosowania statystyczne języka R w medycynie i bioinformatyce. Głównym celem jest opanowanie statystyk opisowych, testów parametrycznych (t-test, ANOVA) oraz nieparametrycznych w celu weryfikacji hipotez badawczych. Uczy radzenia sobie z manipulacją zmiennymi, optymalizacji kodu przy użyciu wektoryzowanych funkcji apply oraz tworzenia publikacyjnych wykresów, takich jak histogramy (hist()) czy wykresy pudełkowe (boxplot()).

Słowniczek Pojęć
Wektor (Vector) Podstawa
Jednowymiarowa seria danych ściśle jednego typu, tworzona za pomocą funkcji c().
Ramka Danych (Data Frame) Tabela
Zaawansowana, heterogeniczna struktura ułożona w kolumny i wiersze, będąca listą wektorów o identycznej długości.
Faktor (Factor) Grupa
Struktura reprezentująca i grupująca zmienne kategoryczne w R (np. dzieląca pacjentów na "kontrolę" i "traktowanych lekiem").
Macierz (Matrix) Macierz
Dwuwymiarowa tablica przechowująca elementy jednego typu danych.
Rodzina Apply Wektoryzacja
Zbiór wbudowanych funkcji pozwalających na szybkie, zwektoryzowane obliczenia bez powolnych pętli for.
Kluczowe Algorytmy i Metody

Zarządzanie przepływem i pętle: Instrukcje logiczne (if, else) oraz pętle (for, while). Modyfikowanie pętli za pomocą break oraz next.

Mapowanie i agregacja w podgrupach: Funkcja apply() mapuje funkcję na wymiarze macierzy. Funkcje lapply() i sapply() aplikują operacje po listach. Funkcja tapply() służy do grupowania – rozdziela wektor liczbowy na podgrupy na podstawie drugiego wektora kategorycznego (faktora), a następnie liczy dla nich statystykę (np. średnią).

Algorytmy testowania hipotez: Zaimplementowany parametryczny test t-Studenta (t.test()) dla dwóch grup (zależnych lub niezależnych) oraz jednoczynnikowa analiza wariancji (aov()) dla trzech lub więcej grup (uzupełniana o test post-hoc Tukeya). Testy nieparametryczne (brak założeń normalności): test Wilcoxona (wilcox.test()) oraz test Kruskala-Wallisa (kruskal.test()).

Struktury i Bazy Danych

Notatki szczegółowo systematyzują składowanie danych w R: Skalary i typy zmiennych (character, integer, numeric, logical, complex), Wektory (łączenie wektorów przez c()), Macierze (matrix()), Ramki danych (data.frame()) integrujące różne typy cech klinicznych i pacjentów, Listy (list()) przechowujące różnorodne obiekty w jednym makro-kontenerze. Globalna baza oprogramowania to repozytorium CRAN.

Związki Biologiczno-Obliczeniowe
📊 Analiza Różnic Ekspresji i Danych Klinicznych
Zjawisko Biologiczne
Ocena wpływu leków na ekspresję genów w grupach, gromadzenie sekwencji nukleotydowych oraz obliczanie cech fizjologicznych pacjentów (np. BMI).
Abstrakcja Obliczeniowa
Stosowanie testów parametrycznych (t.test(), aov()) do wyznaczenia istotności zmian, składowanie sekwencji w listach, tworzenie funkcji takich jak kalkulator BMI do automatycznego wzbogacania data.frame oraz wizualizacja boxplotami.
Pytania Kontrolne (Samokontrola)
1. Jaką cyfrą rozpoczyna się indeksowanie elementów (np. w listach lub wektorach) w języku R i jak to się ma w stosunku do języka Python? +
W języku R indeksowanie rozpoczyna się od cyfry 1. W Pythonie indeksowanie rozpoczyna się od 0.
2. Wyjaśnij, bazując na typach przechowywanych danych, jaka jest absolutnie najważniejsza różnica między strukturą macierzy a ramką danych (data frame)? +
Macierz (*matrix*) wymaga, aby wszystkie elementy były dokładnie tego samego typu. Ramka danych (*data.frame*) to struktura tabelaryczna, w której każda kolumna może być innego typu (np. jedna kolumna to liczby, a druga to tekst).
3. Do jakich zadań analitycznych użyłbyś typu zmiennej factor i dlaczego jest on tak ważny przy definiowaniu grup eksperymentalnych? +
Zmiennej factor używa się do grupowania danych kategorycznych. Jest kluczowa w badaniach statystycznych, ponieważ informuje silnik R o strukturze grup badawczych (np. kontrola vs chorzy), co pozwala poprawnie uruchamiać testy statystyczne (ANOVA, t-test) oraz grupować dane na wykresach.
4. Jakiej konkretnie funkcji w R użyjesz w instrukcji warunkowej, aby sprawdzić "surową" wewnętrzną strukturę tajemniczego obiektu, włączając w to jego typ i długość? +
Do podejrzenia wewnętrznej struktury obiektu w R służy funkcja **str()** (skrót od *structure*).
5. Która funkcja z rodziny apply umożliwi Ci błyskawiczne policzenie średniej ekspresji genów ze wskazaniem podziału na specyficzne grupy opisane wektorem czynnikowym (faktorem)? +
Tą funkcją jest **tapply()**, która dokonuje operacji statystycznych w podgrupach określonych faktorem kategorycznym.
6. Do czego dokładnie służą instrukcje break i next przy tworzeniu bioinformatycznych pętli for lub while? +
break przerywa całkowicie działanie pętli i wychodzi z niej. next przerywa tylko bieżącą iterację i natychmiast rozpoczyna kolejną (przechodzi do następnego elementu w sekwencji).
7. W przypadku, gdy chcesz zbadać istotność statystyczną wpływu leku u pacjentów podzielonych na trzy różne grupy (Grupa A, B i C), jaki konkretny algorytm testu parametrycznego musisz zastosować w swoim kodzie? +
Dla trzech lub więcej grup należy zastosować jednoczynnikową analizę wariancji **ANOVA** za pomocą wbudowanej funkcji **aov()**.
Moduł 3 - Tidyverse

Zaawansowana Analiza Danych Bioinformatycznych w Języku R

Przegląd i Główne Cele

Ten zaawansowany materiał wprowadza w nowoczesne środowisko programowania R w bioinformatyce. Głównym celem edukacyjnym jest pełne opanowanie ekosystemu **Tidyverse** w celu standaryzacji przetwarzania danych: od wczytania, porządkowania, złożonych transformacji do wizualizacji publikacyjnej za pomocą ggplot2. Uczy pisania reprodukowalnego kodu przy użyciu potoków (pipes), programowania funkcyjnego oraz rygorystycznych struktur danych z repozytorium **Bioconductor** do analizy wielkoskalowych danych genomowych (system S4, GRanges).

Słowniczek Pojęć
Tidyverse Ekosystem
Ekosystem zintegrowanych pakietów (dplyr, ggplot2, tidyr, purrr, stringr) zaprojektowanych do pracy na czystych danych w oparciu o wspólną gramatykę i filozofię.
Operator Pipe (%>% lub |>) Potok
Narzędzie składniowe przekazujące wynik lewej strony jako pierwszy argument funkcji po prawej stronie, co ułatwia budowanie rurociągów analiz.
Tibble Tabela
Ulepszona wersja ramki danych (data.frame), pozbawiona automatycznej konwersji znaków na faktory i oferująca bezpieczniejszy podgląd w konsoli (10 wierszy).
Gramatyka Grafiki (Grammar of Graphics) ggplot2
Filozofia pakietu ggplot2, zakładająca budowanie wykresów warstwowo: dane -> estetyki (aes) -> geometrie (geom).
Bioconductor Baza
Główne biologiczne repozytorium pakietów open-source do rygorystycznej analizy danych genomicznych, transkryptomicznych i proteomicznych.
Systemy S3 i S4 OOP
Modele obiektowe w R. System S3 jest elastyczny i prosty (Tidyverse). System S4 jest formalny i rygorystyczny (sloty, Bioconductor).
Kluczowe Algorytmy i Metody

Zarządzanie kształtem tabel (Tidy Data): Użycie biblioteki tidyr do mechanicznej zamiany formatów między "szerokim" a "długim" za pomocą algorytmów pivot_longer() oraz pivot_wider().

Manipulacja danymi (czasowniki dplyr): Rygorystyczny podział na funkcje: filter() (filtrowanie wierszy), select() (selekcja kolumn), mutate() (obliczenia matematyczne na kolumnach), group_by() i summarise() (generowanie statystyk grupowych).

Programowanie funkcyjne (purrr) i Regex (stringr): Użycie map() i map_dfr() do masowego iterowania po plikach i danych bez tradycyjnych pętli. Wykorzystanie pakietu stringr do detekcji motywów biologicznych (str_count()) oraz operacji transkrypcji (str_replace_all()).

Struktury i Bazy Danych

Obiekty S4 i GenomicRanges: Klasy systemu S4 w Bioconductorze narzucają rygor typów danych za pomocą slotów dostępnych operatorem @. Klasa GRanges z pakietu GenomicRanges przechowuje interwały genomiczne: chromosom (seqnames), zakres początek/koniec, polarność nici (strand: +, -, *) oraz dowolne metadane wariantów lub genów. Klasy DNAString i DNAStringSet z pakietu Biostrings optymalizują składowanie dużych plików FASTA i sekwencji nukleotydowych.

Związki Biologiczno-Obliczeniowe
🧮 Obliczenia Genomiczne, RMarkdown i Aplikacje Shiny
Zjawisko Biologiczne
Analiza transkryptomu (RNA-seq), nakładanie mutacji z biopsji nowotworowych na genom referencyjny, in silico replikacja translacji oraz udostępnianie wyników klinicznych lekarzom.
Abstrakcja Obliczeniowa
Budowanie Volcano plot w ggplot2, dopasowywanie zakresów przez findOverlaps() w GRanges, stosowanie metod translate() i reverseComplement() z pakietu Biostrings, tworzenie interaktywnych paneli w pakiecie Shiny oraz raportów w RMarkdown.
Pytania Kontrolne (Samokontrola)
1. Wymień trzy główne zasady "Tidy Data" i wskaż precyzyjnie, z jakich dwóch par czasowników pakietu tidyr korzystamy do zamiany formatów między tzw. formatem długim a formatem szerokim? +
Trzy zasady Tidy Data: 1) Każda zmienna tworzy kolumnę, 2) Każda obserwacja tworzy wiersz, 3) Każda wartość tworzy komórkę. Do konwersji kształtu tabeli używamy pary funkcji: **pivot_longer()** (szeroki do długiego) oraz **pivot_wider()** (długi do szerokiego).
2. Biorąc pod uwagę potok %>% (operator pipe) – dlaczego użycie struktury: dane %>% filter(...) %>% select(...) uważane jest za znacznie lepszą i bardziej podatną na audyt praktykę inżynieryjną, w porównaniu z klasycznym, silnie zagnieżdżonym wywoływaniem tych funkcji w standardowym base R? +
Operator pipe eliminuje tworzenie niepotrzebnych zmiennych pomocniczych oraz nieczytelne zagnieżdżenie funkcji (które czyta się od środka). Kod staje się sekwencyjnym, przejrzystym ciągiem logicznych kroków czytanych od lewej do prawej, co znacznie ułatwia debugowanie, audyt kodu i współpracę.
3. Jakiego systemu obiektowego (np. S3, S4, R6) używają najpowszechniej pakiety z ekosystemu Bioconductor i jaki jest syntaktyczny operator pozwalający uzyskać dostęp do precyzyjnie sprecyzowanego "slotu" (komórki) tak stworzonego obiektu klasy? +
Pakiety Bioconductora opierają się głównie na rygorystycznym systemie obiektowym **S4**. Dostęp do slotów w klasie S4 uzyskuje się za pomocą operatora **`@`** (np. `obiekt@nazwa_slotu`).
4. Pracujesz nad zidentyfikowaniem motywów ATG w milionach odczytów genetycznych. Dlaczego iteracyjne aplikowanie funkcji po plikach za pomocą techniki map() z pakietu purrr jest tu preferowane biologicznie i programistycznie względem typowej pętli for? +
Metoda map() z pakietu purrr jest zoptymalizowana pod kątem wydajności (szybsza alokacja pamięci w R), gwarantuje zwracanie określonego typu danych, jest czystsza składniowo, unika skutków ubocznych pętli `for` i idealnie integruje się z potokami Tidyverse.
5. Czym strukturalnie jest obiekty typu GRanges wykorzystywany np. przy badaniu plików BAM lub VCF i jaka dokładnie jego funkcja z pakietu GenomicRanges posłuży Ci do odnalezienia miejsca przecięcia/nakładania się dwóch różnorodnych zakresów na nici DNA? +
Obiekt GRanges przechowuje genomiczne przedziały (interwały): chromosom, początek/koniec pozycji, orientację nici (+/-/*) oraz opcjonalne metadane. Do wykrywania nakładania się dwóch zakresów genomicznych służy funkcja **findOverlaps()**.
6. Jakie warstwy z koncepcji "gramatyki grafiki" musisz zainicjować, aby w ramach badawczej platformy ggplot2 skutecznie zbudować tzw. Volcano Plot? +
Należy zainicjować warstwy: 1) Dane i mapowanie estetyk (ggplot(data, aes(x = log2FoldChange, y = -log10(p_value)))), 2) Geometrię punktów (geom_point()), oraz ewentualnie 3) Oznaczenia osi/tytułów (labs()) i linie odcięcia istotności (geom_hline(), geom_vline()).
7. Wyobraź sobie, że piszesz program symulujący w R centralny dogmat biologii molekularnej. Jaką funkcją ze środowiska stringr dokonałbyś prostej symulacji wygenerowania łańcucha RNA z posiadanej nici kwasu deoksyrybonukleinowego DNA? +
Transkrypcji DNA do RNA (zamiana T na U) można dokonać za pomocą funkcji **str_replace_all(dna_sequence, "T", "U")**.
02

Rozdział II: Przetwarzanie i Uczenie Maszynowe w Pythonie

Modularne analizy sekwencji, integracja z bibliotekami Biopython i BioNumPy, klasyfikacja biomedyczna oraz automatyzacja procesów NGS.

Moduł 4 - Podstawy

Podstawy Programowania Bioinformatycznego w Języku Python

Przegląd i Główne Cele

Materiał w formie instrukcji laboratoryjnej uczy tworzenia modularnego oprogramowania bioinformatycznego w Pythonie. Głównym celem jest zaprojektowanie strukturalnego programu do generowania pseudolosowych sekwencji DNA i zapisu ich w standardowym formacie FASTA. Kładzie nacisk na dekompozycję kodu na wyspecjalizowane funkcje (generate_sequence, calculate_stats, format_fasta, validate_positive_int), rygorystyczną walidację parametrów (długości sekwencji 1-100k, brak spacji w ID) oraz poprawną obsługę błędów bez rzucania wyjątków. Moduł dotyka również zaawansowanych symulacji biologicznych, w tym detekcji ramek odczytu ORF oraz okien przesuwnych.

Słowniczek Pojęć
Format FASTA Plik
Standardowy format zapisu sekwencji biologicznych. Składa się z nagłówka (zaczynającego się od ">" z ID i opisem) oraz właściwej sekwencji podzielonej na linie o szerokości 80 znaków.
GC-content Metryka
Procentowa zawartość nukleotydów guaniny (G) i cytozyny (C) w badanej sekwencji kwasu nukleinowego, determinująca stabilność wiązań.
Transkrypcja in silico Symulacja
Komputerowa symulacja przepisywania DNA na RNA, polegająca w kodzie na zamianie tyminy (T) na uracyl (U).
Translacja Symulacja
Obliczeniowe przetłumaczenie trypletów nukleotydów na aminokwasy białka za pomocą słownika tabeli kodonów.
Otwarta Ramka Odczytu (ORF) Detekcja
Fragment DNA posiadający potencjał kodowania białka. Zaczyna się kodonem startowym (ATG) i kończy najbliższym stop (TAA, TAG, TGA).
Kod IUPAC Standard
Znormalizowany system oznaczeń znaków niejednoznacznych (np. N to dowolny nukleotyd, R to puryna), modelujący niepewność eksperymentalną.
Multi-FASTA Plik
Zapis wielu różnych rekordów sekwencyjnych wewnątrz jednego pliku tekstowego (tryb wsadowy).
Kluczowe Algorytmy i Metody

Algorytm generowania sekwencji DNA: Wykorzystanie wbudowanego standardowego modułu random Pythona (random.choice()) do generowania łańcucha na bazie pożądanej długości, opcjonalnie z zadanym prawdopodobieństwem poszczególnych nukleotydów lub włączeniem IUPAC.

Formatowanie linii FASTA (Line Wrapping): Algorytm tnie wygenerowaną sekwencję w pętli na stałe bloki o szerokości dokładnie 80 znaków. Specyficzny wymóg oceniarki nakłada konieczność wstawienia na końcu pliku komentarza # EOF_1.

Statystyki i specyficzne wymagania: Obliczanie udziału procentowego nukleotydów z dokładnością do 2 miejsc po przecinku. Walidator wymaga zapisania GC-content w słowniku wyjściowym pod kluczem "gc_ratio_A".

Analiza okien przesuwnych (Sliding Window): Ruchome okno o długości W przesuwa się krokiem S wzdłuż nici DNA, licząc parametry (np. lokalne GC-content) i zapisując wyniki do plików CSV.

Nici odwrotnie komplementarne: Komplementarne parowanie (A-T, C-G) za pomocą słownika mapującego, a następnie fizyczne odwrócenie całej sekwencji (reverse complement).

Struktury i Bazy Danych

Użycie plików tekstowych formatu .fasta (struktura: >ID Opis w pierwszej linii, następnie sekwencja) oraz .csv (kolumny: pozycja_startu, gc_content) do przechowywania lokalnych właściwości okna przesuwnego. Wykorzystanie obiektów typu słownik (dict) do przechowywania standardowej tablicy kodonów dla translacji.

Związki Biologiczno-Obliczeniowe
🧬 Prawa Biologii Molekularnej w Kodzie Pythona
Zjawisko Biologiczne
Stabilność termiczna helisy DNA (pary G-C łączą się 3 wiązaniami wodorowymi), translacja/transkrypcja (Centralny Dogmat) oraz odnajdywanie genów w nieznanych genomach.
Abstrakcja Obliczeniowa
Lokalizowanie regionów o wysokim GC-content za pomocą okien przesuwnych, mapowanie trypletów słownikiem kodonów w kodzie, detekcja otwartych ramek odczytu (ORF) szukających tripletów start/stop oraz modelowanie niepewności odczytów kodami IUPAC.
Pytania Kontrolne (Samokontrola)
1. Jakie konkretnie dwa elementy składowe muszą znaleźć się w zwalidowanej linii nagłówkowej formatu FASTA i jakimi zasadami zapisu rządzi się identyfikator (ID)? +
Linia nagłówkowa musi zaczynać się od znaku **`>`**, po którym następuje unikatowy **identyfikator** (ID) oraz opcjonalny **opis** sekwencji oddzielony spacją. Identyfikator nie może zawierać żadnych białych znaków (spacji, tabulacji).
2. Z jakiego modułu języka Python nakazuje się korzystać przy generowaniu pseudolosowej sekwencji bazowej DNA? +
Należy korzystać z wbudowanego standardowego modułu **`random`** (np. random.choice()).
3. Pod jakim kluczem (według ściśle zdefiniowanych wymogów narzuconych na słownik wyjściowy dla oceniarki) program musi zapisywać obliczony dla wygenerowanej sekwencji poziom zawartości G i C? +
Obliczony GC-content musi zostać zapisany w słowniku pod kluczem **`"gc_ratio_A"`**.
4. Jaką ukrytą sygnaturę/komentarz w pliku wyjściowym na samym jego końcu wymusza zautomatyzowany walidator wspomniany w instrukcji? +
Na samym końcu wygenerowanego pliku FASTA należy dodać pusty komentarz o treści **`# EOF_1`**.
5. Czym różni się procedura wstawienia imienia użytkownika w środek wygenerowanego kodu nukleotydowego od dodania np. standardowego znaku kodu IUPAC pod kątem obliczania późniejszych statystyk i długości całkowitej? +
Wstawienie imienia użytkownika dodaje nieobsługiwane znaki, co psuje strukturę i walidację pliku FASTA. Znaki kodu IUPAC (np. N, R) są znormalizowanymi oznaczeniami niejednoznaczności nukleotydów, które program prawidłowo rozpoznaje jako część sekwencji i uwzględnia w statystykach.
6. Jakie wejściowe parametry (dane) potrzebne są do przeprowadzenia operacji tzw. translacji in silico na sekwencję aminokwasową? +
Niezbędna jest wejściowa sekwencja nukleotydowa (DNA lub RNA) oraz referencyjna tablica kodonów (słownik mapujący tryplety na aminokwasy).
7. Czym zajmuje się i jak działa funkcjonalność analizy za pomocą "okien przesuwnych" w kontekście wyliczania GC-content? +
Analiza okien przesuwnych wycina fragment sekwencji o szerokości okna i przesuwa to wirtualne okno o określony krok wzdłuż nici. W każdym kroku zlicza się stosunek nukleotydów G i C do całości, co pozwala obserwować lokalną zmienność GC-content i stabilność termiczną helisy.
Moduł 5 - Biblioteki

Python w Bioinformatyce: Podstawy Analizy Danych Biologicznych

Przegląd i Główne Cele

Wykład wprowadza studentów w potężny ekosystem naukowych bibliotek języka Python (Biopython, NumPy, BioNumPy, Pandas), stanowiący złoty standard w wielkoskalowej analizie. Tematyka prowadzi przez operacje na sekwencjach, tworzenie drzew filogenetycznych (ewolucyjnych), lokalne i zdalne uruchamianie BLAST, pobieranie danych z NCBI Entrez, aż po struktury 3D białek za pomocą klasy Bio.PDB oraz wizualne mapowanie genomów w GenomeDiagram.

Słowniczek Pojęć
Bioinformatyka Definicja
Interdyscyplinarna dziedzina nauki łącząca biologię, informatykę, matematykę oraz statystykę w celu analizy i interpretacji dużych, skomplikowanych zbiorów danych biologicznych.
Biopython Biblioteka
Kluczowa biblioteka otwartoźródłowa (od 1999) zapewniająca wsparcie dla formatów sekwencji, struktur 3D oraz komunikacji z bazami (NCBI, UniProt).
Alignment (Przyrównanie) Dopasowanie
Zestawienie sekwencji obok siebie w celu odnalezienia ewolucyjnych motywów wspólnych, z uwzględnieniem przerw (gaps "-") oznaczających delecje/mutacje.
CIGAR Oznaczenie
Ciąg cyfr i liter w pliku BAM określający dopasowanie (matching, insercje, delecje) odczytu sekwencjonowania bezpośrednio do genomu referencyjnego.
K-mer Wzorzec
Krótki motyw o długości k nukleotydów (np. 3-mer "ACT"). Dzielenie nici na k-mery w BioNumPy pozwala klasyfikować i analizować DNA.
One-hot encoding Uczenie Maszynowe
Technika zamiany kategorycznych liter nukleotydów (A, T, C, G) na wektory binarne zer i jedynek za pomocą NumPy na potrzeby modeli uczenia maszynowego.
Kluczowe Algorytmy i Metody

Algorytm lokalnego/zdalnego BLAST: Zdalne zapytanie przez NCBIWWW.qblast() z podaniem bazy docelowej (np. nt). Wynik analizowany jest przez NCBIXML.parse(), gdzie odrzuca się dopasowania HSP o współczynniku istotności ewolucyjnej E-value większym niż zadany próg (np. 1e-10).

UPGMA i drzewa filogenetyczne: Konstrukcja drzew filogenetycznych w Bio.Phylo polega na dopasowaniu MSA, obliczeniu macierzy odległości ewolucyjnych przez DistanceCalculator('identity') i uruchomieniu algorytmu DistanceTreeConstructor().upgma(). Wizualizacja 2D odbywa się metodą draw().

Z-score i analiza różnicowa genów: Standaryzacja NumPy w mikromacierzach. Od każdego poziomu ekspresji genu u 20 badanych pacjentów odejmuje się średnią całej populacji i dzieli przez odchylenie standardowe. Centruje to dane wokół zera, eliminując zakłócenia i ułatwiając detekcję wysokiej/niskiej ekspresji w chorobie.

Struktury i Bazy Danych

Bio.SeqRecord: Centralny obiekt Biopythona zawierający sekwencję (.seq), identyfikator (.id), opis (.description) oraz listę cech genomicznych (.features).

Format PDB (Model-SMCRA): Struktura Protein Data Bank reprezentowana jest hierarchicznie jako: **Model** (struktura trójwymiarowa), **Chain** (łańcuch białkowy), **Residue** (reszta aminokwasowa) oraz **Atom** (koordynaty przestrzenne x, y, z).

Entrez i VCF: Narzędzia NCBI Entrez (Entrez.esearch) pozwalają zdalnie przeszukiwać bazy PubMed/GenBank. Format VCF (Variant Call Format) gromadzi warianty genotypowe badanych (np. homozygoty 0/0, heterozygoty 0/1) i jest przetwarzany w Pandas.

Związki Biologiczno-Obliczeniowe
🧬 Modelowanie Leków i Genomika Populacyjna
Zjawisko Biologiczne
Projektowanie leków (drug discovery) celujących w aktywny enzym patogenu, badanie ewolucji szczepów wirusowych oraz genomika precyzyjna pacjentów.
Abstrakcja Obliczeniowa
Analiza struktury 3D przez Bio.PDB, mierzenie odległości atomów leku od centrum enzymu, obliczanie drzew ewolucyjnych UPGMA, masowe przetwarzanie macierzy genotypów BioNumPy oraz nakładanie gradientów ekspresji genów w GenomeDiagram.
Pytania Kontrolne (Samokontrola)
1. Jakie cztery bazowe z punktu widzenia inżynierii danych elementy dzieli struktura 3D podczas wirtualnego parsowania z klasycznej bazy PDB? +
W bazie danych Bio.PDB (zgodnie z modelem SMCRA) struktura przestrzenna dzielona jest na: **Model**, **Chain** (łańcuch polipeptydowy), **Residue** (resztę aminokwasową) oraz **Atom** (indywidualne współrzędne x, y, z).
2. Z którego atrybutu głównego uniwersalnej klasy wirtualnej z instancji obiektu SeqRecord wyciągnąłbyś konkretne granice sekwencji na chromosomie, mapując poszczególne tzw. ramy odczytu/anotacje dla zapisanego z NCBI genu? +
Granice i anotacje genomiczne wyciąga się z atrybutu **`features`** obiektu SeqRecord, który zawiera listę cech z ich koordynatami.
3. Dlaczego uważa się z definicji systemowej w skrypcie modułu NumPy, że tzw. wektoryzowana transformacja przez one-hot coding zabezpiecza proces uczenia dla algorytmów (co robią tzw. słowniki)? +
One-hot encoding mapuje nukleotydy na wektory binarne (np. A=[1,0,0,0], T=[0,1,0,0]). Zapobiega to wprowadzaniu fałszywych relacji porządku i odległości matematycznej między nukleotydami, które powstałyby przy prostym kodowaniu liczbami całkowitymi (1, 2, 3, 4).
4. Biorąc pod uwagę operacje masowe na dużych sekwencjach "big data", jaka jest najważniejsza korzyść techniczna przejścia z tradycyjnych struktur języka Python na obiekty zarządzane potokami przez bibliotekę BioNumPy? +
Najważniejszą korzyścią jest **ogromny wzrost wydajności obliczeniowej i oszczędność pamięci**. BioNumPy przechowuje sekwencje w tablicach C i pozwala na wykonywanie wektorowych operacji (np. zliczanie k-merów) na milionach odczytów jednocześnie bez powolnych pętli w Pythonie.
5. Wyjaśnij zasady przyrównania wielosekwencyjnego (Multiple Sequence Alignment). Jak wykorzystałbyś w swoim skrypcie graficzne atrybuty modułu Bio.Phylo, pragnąc przenieść wygenerowany w konsoli obiekt tree na dedykowany renderowany obiekt 2D relacji ewolucyjnych? +
MSA zestawia wiele homologicznych sekwencji, wprowadzając przerwy ("-") reprezentujące mutacje, aby pokazać podobieństwo na każdej pozycji. Mając obiekt drzewa w Bio.Phylo, renderujemy go jako dwuwymiarowy rysunek graficzny za pomocą funkcji **Bio.Phylo.draw()** (która używa matplotlib do wyświetlenia ładnego drzewa 2D).
6. W systemie BLAST i systemie NCBI-WWW (z użyciem metody NCBIXML), dlaczego po jednorazowym procesie parsowania instancją kodu result_stream.read(), plik-bufor natychmiastowo przestaje odczytywać strukturę ponownie rzucając tzw. zwracany pusty strumień obiektów wejściowych (bytes)? +
Strumień sieciowy/bufor działa jak generator – po wywołaniu .read() jego zawartość zostaje w całości skonsumowana, a wskaźnik pozycji przesuwa się na koniec strumienia (EOF). Kolejne odczyty napotykają pusty bufor.
7. W jaki sposób wykorzystasz techniczne biblioteki modułu Pandas przy tworzeniu analiz na pliku formatu VCF, jeśli chciałbyś precyzyjnie przypisać pacjentom stan genotypowy (tzw. kodowany 0/0 dla braku i np. 1/1) na bazie cyfrowych numerycznych wierszy macierzy? +
Można zaimportować plik VCF do DataFrame w Pandas, wyodrębnić kolumny próbek pacjentów (pole GT) i za pomocą metod .replace() lub .map() ze słownikiem (np. {"0/0": 0, "0/1": 1, "1/1": 2}) zamienić tekstowe oznaczenia na wartości liczbowe do dalszego modelowania ML.
Moduł 6 - Uczenie Maszynowe

Python w Bioinformatyce: Analiza Danych i Uczenie Maszynowe

Przegląd i Główne Cele

Instrukcja uczy praktycznych aplikacji Pythona w medycynie spersonalizowanej oraz kontroli jakości danych. Główne zadania obejmują wizualizację statystyczną ekspresji genów komórek nabłonka od palaczy vs niepalących, klasyfikację guzów nowotworowych piersi (złośliwy/łagodny) za pomocą algorytmów uczenia maszynowego scikit-learn, oraz odtworzenie obliczeniowych metryk programu FastQC (Phred scores) do profilowania surowych odczytów NGS.

Słowniczek Pojęć
Ekspresja genu Definicja
Proces przepisywania informacji z DNA na RNA i dalej na białko. Jej poziom najczęściej wyraża się w liczbach odzwierciedlających obfitość transkryptów RNA.
NGS (Next-Generation Sequencing) Technologia
Technologia szybkiego odczytu kwasów nukleinowych generująca miliony krótkich sekwencji (odczytów) w pojedynczym biegu.
FASTQ Format
Standardowy format zapisu surowych odczytów NGS. Każdy odczyt zajmuje ściśle cztery linie tekstu (nagłówek @, sekwencja, separator +, zakodowana jakość).
Phred scores Metryka
Wartości jakości przypisane do każdego nukleotydu w FASTQ, określające stopień pewności odczytu, zakodowane za pomocą znaków ASCII.
Uczenie Maszynowe (ML) AI
Zbiór metod analizy danych pozwalających algorytmom rozpoznawać skomplikowane wzorce w danych bez konieczności jawnego programowania.
Macierz pomyłek (Confusion Matrix) Ewaluacja
Kluczowa tabela służąca do ewaluacji klasyfikatora, obrazująca liczby prawidłowych i błędnych dopasowań (TP, FP, TN, FN).
Kluczowe Algorytmy i Metody

Algorytmy klasyfikacyjne scikit-learn: Implementacja modeli regresji logistycznej (LogisticRegression) oraz lasów losowych (RandomForestClassifier). Procedura dzieli się na podział danych (80% trening, 20% test), dopasowanie modelu oraz ewaluację metrykami: dokładność (accuracy), precyzja (precision), czułość (recall) i miara F1-score.

Redukcja wymiarowości (PCA): Algorytm analizy głównych składowych stosowany do kompresji setek cech ekspresji genetycznej do 2 głównych składowych w celu wizualizacji separacji pacjentów.

Parsowanie FASTQ z konwersją Phred: Wykorzystanie generatorów w Pythonie (oszczędność pamięci RAM przy plikach gigabajtowych) do sekwencyjnego odczytu czterech linii. Konwersja znaku jakości ASCII na wartość liczbową Phred odbywa się za pomocą wzoru: Phred = ord(char) - 33.

Wizualizacja statystyczna (Seaborn): Stosowanie wykresów pudełkowych (boxplot - kwartyle, mediana, outliery), wykresów skrzypcowych (violinplot - gęstość rozkładu) oraz heatmap (korelacja ekspresji).

Struktury i Bazy Danych

Dataset Wisconsin Breast Cancer: Baza zawierająca parametry kliniczne z biopsji cienkoigłowej guzów piersi u 569 pacjentek. Zawiera 30 cech numerycznych morfologii komórki (promień, tekstura itp.) oraz etykietę diagnozy (malignant/benign). Baza wykazuje niezbalansowanie klas.

Dataset GDS2490 (.soft): Macierz ekspresji genów komórek dróg oddechowych pobranych od 11 osób (5 niepalących - kontrola, 6 palaczy).

Związki Biologiczno-Obliczeniowe
🔬 Diagnostyka Kliniczna i Jakość NGS
Zjawisko Biologiczne
Zmiana ekspresji genów wywołana dymem tytoniowym, morfologiczne zmiany jąder komórek nowotworowych oraz degradacja DNA podczas sekwencjonowania.
Abstrakcja Obliczeniowa
Selekcja Top 10 genów o największej różnicy średnich ekspresji, klasyfikacja guzów nowotworowych z dokładnością 95-96% oraz profilowanie median Phred score (jak w FastQC) w celu uniknięcia błędu GIGO (Garbage In, Garbage Out).
Pytania Kontrolne (Samokontrola)
1. Z jakich czterech dokładnych elementów składa się zapis dla pojedynczego odczytu w standardowym pliku FASTQ? +
Zapis składa się z czterech linii: 1) Identyfikator odczytu zaczynający się od @, 2) Sekwencja nukleotydów (np. ATCG), 3) Separator "+", 4) Ciąg znaków ASCII kodujących jakość odczytu (Phred score) dla każdej pozycji nukleotydu.
2. Wyjaśnij główną różnicę zastosowania w bioinformatyce między klasyfikacją a klasteryzacją w metodach uczenia maszynowego. +
**Klasyfikacja** to uczenie nadzorowane – przypisujemy próbki do znanych z góry klas na podstawie etykietowanych danych treningowych. **Klasteryzacja** to uczenie nienadzorowane – grupujemy próbki na podstawie ich naturalnego matematycznego podobieństwa w cechach, bez wcześniejszej znajomości etykiet klas.
3. W jaki sposób w języku Python można przekonwertować zapisany w postaci tekstowej ciąg znaków (ASCII) na wartości liczbowe Phred score? +
Do konwersji używa się wbudowanej funkcji ord() zwracającej kod dziesiętny ASCII znaku, od którego odejmuje się wartość przesunięcia (offset) wynoszącą 33: **Phred = ord(char) - 33**.
4. Dlaczego w ćwiczeniu dotyczącym nowotworów piersi (Dataset Wisconsin) kładzie się tak duży nacisk na wyliczenie macierzy pomyłek, a nie polega się wyłącznie na ogólnej metryce "accuracy"? +
Zbiór jest niezbalansowany, więc samo accuracy może mylić. Ponadto w medycynie błędy fałszywie pozytywne (FP) i negatywne (FN) niosą zupełnie inne konsekwencje i koszty kliniczne. Macierz pomyłek pozwala szczegółowo śledzić oba te wskaźniki błędów.
5. Czym charakteryzują się i w jakich sytuacjach w analizie danych o ekspresji genów użyłbyś narzędzi boxplot, a kiedy violinplot? +
Boxplot przedstawia syntetyczne statystyki opisowe (mediana, kwartyle, zakres). Używa się go do szybkiego porównywania poziomów ekspresji między grupami. Violinplot łączy pudełko boxplota z wykresem gęstości, ukazując pełen rozkład danych. Warto go użyć, gdy rozkład ekspresji genu jest wielomodalny (ma np. dwa szczyty).
6. Co w kontekście analizy danych z NGS oznacza sformułowanie GIGO i w jaki sposób zapobiega mu oprogramowanie takie jak FastQC? +
**GIGO** (*Garbage In, Garbage Out* – śmieci na wejściu, śmieci na wyjściu) oznacza, że podanie danych o słabej jakości na wejście rurociągu analizy zaowocuje błędnymi i bezwartościowymi wnioskami naukowymi. FastQC zapobiega temu poprzez analizę Phred score odczytów, wykrywanie anomalii i adapterów, co pozwala odrzucić wadliwe dane przed wariantowaniem czy mapowaniem.
7. Wymień trzy z czterech opisywanych metryk (poza macierzą pomyłek), które są niezbędne do kompleksowej ewaluacji wytrenowanego modelu uczenia maszynowego w module scikit-learn. +
Są to: **Precision** (precyzja), **Recall** (czułość) oraz **F1-score** (średnia harmoniczna obu tych metryk). Czwartą metryką jest Accuracy (dokładność).
Moduł 7 - Rurociągi

Python w Bioinformatyce: Od Surowych Danych do Analizy ML

Przegląd i Główne Cele

Ten moduł systematyzuje pełną ścieżkę analizy danych wielkoskalowych NGS. Głównym celem jest zrozumienie ekosystemu Pythona jako środowiska automatyzacji i integracji bibliotek bazowych (NumPy, Pandas), dziedzinowych (Pysam, PyVCF) oraz frameworków do tworzenia reprodukowalnych potoków analiz (Snakemake). Uczy radzenia sobie z surowymi formatami mapowań (BAM/CRAM) i wariantów (VCF), redukcji wymiarowości w diagnostyce, a także pracy nad medycznymi obrazami z aparatury neurodiagnostycznej (MRI, CT).

Słowniczek Pojęć
NGS (Next-Generation Sequencing) Skala
Szybkie, wielkoskalowe sekwencjonowanie generujące terabajty danych z pojedynczego biegu, obarczone szumem i specyficznymi artefaktami.
RNA-seq Transkryptom
Sekwencjonowanie transkryptomu (RNA) w celu pomiaru różnicowej ekspresji genów w badanych kohortach.
qPCR Ilościowy PCR
Klasyczna, ilościowa reakcja PCR służąca do precyzyjnego pomiaru ekspresji konkretnych genów markerowych.
Macierz pomyłek Walidacja
Narzędzie oceny klasyfikatora medycznego, identyfikujące liczbę wyników fałszywie dodatnich i ujemnych.
Graf Skierowany Acykliczny (DAG) Snakemake
Struktura matematyczna używana przez Snakemake do modelowania powiązań, zależności i ścieżki przepływu zadań w rurociągu analiz.
Biomarkery Klinika
Mierzalne cechy biologiczne i parametry kliniczne (IL-6, CRP, BMI) służące do modelowania progresji cukrzycy i chorób zapalnych.
Kluczowe Algorytmy i Metody

Algorytm PCA (Analiza Głównych Składowych): Metoda redukcji wymiarowości. W notatkach opisano przypadek kompresji cech ekspresji aż 200 genów do zaledwie 2 składowych głównych w celu wizualizacji separacji pacjentów zdrowych i chorych.

Drzewa i Lasy Losowe (Random Forest): Lasy losowe w scikit-learn stosowane są do predykcji klasyfikacyjnej nowotworów oraz do oceny ważności poszczególnych cech (feature importance) w diagnozie.

Modele predykcyjne regresji (Ridge, Lasso, Gradient Boosting, SVR): Zastosowane do prognozowania stopnia postępu choroby cukrzycowej w oparciu o 10 cech klinicznych pacjenta (ciśnienie krwi, BMI itp.).

Isolation Forest (Detekcja Anomalii): Algorytm izoluje anomalie i artefakty laboratoryjne w strukturze drzewiastej. Ponieważ anomalie różnią się od reszty danych, ich odizolowanie wymaga mniejszej liczby podziałów (krótka ścieżka w drzewie), co pozwala wyłowić wadliwe próbki.

Struktury i Bazy Danych

Notatki porządkują formaty plików i biblioteki używane na surowych danych: FASTQ: Oczyszczany z adapterów i niskiej jakości sekwencji narzędziami Cutadapt, Trimmomatic lub fastp, SAM / BAM / CRAM: Mapowania odczytów przetwarzane wydajną biblioteką **Pysam**, VCF / BCF: Wykryte mutacje (SNP) analizowane za pomocą biblioteki **PyVCF**, BED / GFF / GTF: Formaty anotacji i współrzędnych na chromosomach, DICOM / NIfTI: Standardy medycznego neuroobrazowania 3D (MRI, tomografia), parsowane w Pythonie bibliotekami **pydicom**, **nibabel** oraz **SimpleITK**.

Związki Biologiczno-Obliczeniowe
🧬 Od Surowego Odczytu do Wniosku Klinicznego
Zjawisko Biologiczne
Degradacja DNA podczas zamrażania próbek, patogeneza nowotworowa, stres oksydacyjny w komórkach oraz powiązanie markerów zapalnych (IL-6, CRP) z cukrzycą.
Abstrakcja Obliczeniowa
Wizualizacja spadku jakości odczytów NGS w Seaborn, minimalizowanie kosztu FN/FP w scikit-learn, mapowanie ekspresji stresu komórkowego za pomocą Seaborn clustermap, automatyzacja potoku w Snakemake oraz szacowanie wagi BMI w progresji metabolicznej.
Pytania Kontrolne (Samokontrola)
1. Jakie konkretnie zadania analityczne na plikach FASTQ realizuje narzędzie Cutadapt i dlaczego ręczne ustawianie jego parametrów ustępuje strategiom iteracyjnym/automatycznym? +
*Cutadapt* służy do przycinania sztucznych adapterów sekwencyjnych, starterów oraz odrzucania odczytów o niskiej jakości. Ręczne ustawianie parametrów jest nieefektywne i niedokładne, ponieważ jakość próbek różni się w eksperymencie. Automatyczne strategie dynamicznie dobierają optymalne progi odcięcia na bazie statystyk.
2. Wyjaśnij, bazując na przykładzie danych z sekwencjonowania RNA-seq, w jaki sposób funkcja clustermap z biblioteki Seaborn pomaga zidentyfikować podobieństwa pomiędzy zachowaniem poszczególnych genów u grup pacjentów? +
Funkcja clustermap dokonuje dwukierunkowej hierarchicznej analizy skupień genów (wiersze) i pacjentów (kolumny), po czym rysuje heatmapę wraz z dendrogramami. Pozwala to natychmiast zaobserwować klastry genów o podobnym profilu (np. ko-regulacja) oraz zidentyfikować podgrupy pacjentów (np. zdrowych vs chorych).
3. Wskaż główne formaty stosowane do przechowywania wariantów genetycznych i opisz, do jakich zadań w bioinformatyce wykorzystałbyś pakiet PyVCF? +
Warianty przechowuje się w plikach **VCF** (Variant Call Format) i binarnych **BCF**. Pakiet PyVCF służy do programistycznej obsługi plików VCF w Pythonie: odczytywania pozycji mutacji (SNP), sprawdzania statusów genotypu próbek (np. heterozygoty 0/1) oraz filtrowania wariantów o niskiej jakości odczytu.
4. Dlaczego w kontekście diagnozowania raka piersi przy użyciu modułu Scikit-learn, samo zbadanie ogólnej "dokładności" (accuracy) algorytmu bywa niewystarczające, a zamiast tego analizuje się macierz pomyłek? +
W przypadku niezbalansowanych klas, model może mieć wysoką dokładność po prostu ignorując rzadszą klasę (np. chorych). Co ważniejsze, w medycynie błąd fałszywie negatywny (FN - przeoczenie nowotworu) ma krytyczne, zagrażające życiu znaczenie, podczas gdy błąd fałszywie pozytywny (FP) to fałszywy alarm. Macierz pomyłek pozwala precyzyjnie kontrolować oba te parametry błędów.
5. Na czym polega główne zadanie narzędzia Snakemake w ekosystemie narzędzi bioinformatycznych i dlaczego wykorzystuje on reprezentację DAG (Graf skierowany acykliczny)? +
*Snakemake* zarządza przepływem pracy (workflow manager) w celu budowania powtarzalnych rurociągów analiz. Wykorzystuje reprezentację **DAG** (skierowany graf acykliczny), aby jednoznacznie określić zależności między zadaniami (np. mapowanie przed wariantowaniem). Zapobiega to cyklom i pozwala optymalnie zrównoleglić zadania oraz aktualizować tylko te pliki, których zależności uległy zmianie.
6. Opisz proces działania algorytmu Isolation Forest – na jakiej podstawie uznaje on dany odczyt laboratoryjny za anomalię (outliera)? +
*Isolation Forest* buduje drzewa decyzyjne z losowymi podziałami cech. Ponieważ anomalie (np. uszkodzone próbki) znacznie różnią się od typowych obserwacji, ich odizolowanie wymaga znacznie mniejszej liczby podziałów (krótka ścieżka w drzewie). Punkty o najkrótszych średnich ścieżkach są klasyfikowane jako outliery.
7. Praca z obrazami z tomografii (CT) i rezonansu magnetycznego (MRI) nastręcza w Pythonie specyficznych wyzwań. Jakiego formatu danych najprawdopodobniej byś użył i z użyciem jakich konkretnych bibliotek musiałbyś się zmierzyć? +
Użyłbyś formatów **DICOM** (standard kliniczny) lub **NIfTI** (standard neuroobrazowania). Do ich obsługi w Pythonie stosuje się biblioteki **`pydicom`** (dla plików DICOM), **`nibabel`** (dla NIfTI i pokrewnych) oraz **`SimpleITK`** (zaawansowane dopasowywanie i przetwarzanie obrazów medycznych).