-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlaboratorium_2.qmd
More file actions
80 lines (57 loc) · 2.89 KB
/
laboratorium_2.qmd
File metadata and controls
80 lines (57 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
---
title: "Laboratorium 2: Algorytmy przyrównań sekwencji"
format: html
engine: knitr
filters:
- webr
---
```{r, echo = FALSE, results='asis'}
library(webexercises)
```
## Globalne vs. Lokalne dopasowanie sekwencji
W bioinformatyce często stajemy przed wyborem algorytmu do przyrównania sekwencji. Różnica polega na podejściu:
* **Algorytm Needleman-Wunsch (globalny):** Próbuje dopasować całe sekwencje.
* **Algorytm Smith-Waterman (lokalny):** Szuka najlepiej dopasowanych fragmentów, ignorując niedopasowane końce.
### Interaktywne zadanie 1: Zmień typ przyrównania
Poniżej znajduje się kod wykorzystujący pakiet `Biostrings`.
**Działanie:** 1. Uruchom kod (przycisk *Run Code*) i zanotuj wartość punktacji dla globalnego przyrównania.
2. Zmień `type = "global"` na `type = "local"` i uruchom ponownie.
3. Zwróć uwagę, jak zmienia się punktacja oraz wygląd samego przyrównania.
```{webr-r}
webr::install("Biostrings")
library(Biostrings)
seq1 <- "VDFWAE"
seq2 <- "VDFWAP"
# Obliczenie przyrównania
alignment <- pairwiseAlignment(pattern = seq1,
subject = seq2,
substitutionMatrix = "BLOSUM62",
type = "global",
gapOpening = -10,
gapExtension = -1)
print(alignment)
print(paste("Punktacja (score):", score(alignment)))
```
---
## Kary za przerwy (Gap Penalties)
Procesy ewolucyjne sprawiają, że w sekwencjach pojawiają się przerwy. Jak wartość kar wpływa na ostateczne dopasowanie sekwencji? Zazwyczaj otwarcie nowej przerwy (`gapOpening`) kosztuje znacznie więcej niż jej przedłużenie (`gapExtension`).
### Interaktywne zadanie 2: Poeksperymentuj z karami!
Zmień karę za otwarcie przerwy (`gapOpening`) z `-10` na `-1`. Zobacz, jak algorytm "chętniej" rozrywa sekwencję, aby znaleźć dopasowania!
```{webr-r}
sekwencja_A <- "ACDEFGHIKLMN"
sekwencja_B <- "ACDEFGHLMN"
eksperyment <- pairwiseAlignment(pattern = sekwencja_A,
subject = sekwencja_B,
substitutionMatrix = "BLOSUM62",
gapOpening = -10, # <-- ZMIEŃ NA -1
gapExtension = -1)
print(eksperyment)
```
---
## Sprawdź swoją wiedzę!
**Pytanie 1:** Który algorytm lepiej sprawdzi się do znalezienia wspólnej domeny w dwóch zupełnie różnych, długich białkach?
`r mcq(c("Needleman-Wunsch (Globalny)", answer = "Smith-Waterman (Lokalny)"))`
**Pytanie 2:** W modelu afinicznym kar za przerwy, która wartość jest zazwyczaj bardziej restrykcyjna (bardziej ujemna)?
`r mcq(c(answer = "Otwarcie przerwy (Gap Opening)", "Przedłużenie przerwy (Gap Extension)"))`
**Pytanie 3:** Jaką macierz substytucji (stosowaną do obliczania wartości "score" dla dopasowania aminokwasów) zastosowaliśmy w powyższym kodzie?
`r fitb("BLOSUM62")`