
---
title: "Практика 14"
output: html_document
date: "2024-12-06"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```


## Задание 0 

Установите и подгрузите пакет GenomicRanges.

```{r}
#install.packages("BiocManager")
#BiocManager::install("GenomicRanges")
library(GenomicRanges)
```

## Задание 1

Откройте таблицу gencode_v37_hs_LARGE_exons.tsv и изучите её содержимое. В таблице содержится информация об экзонах гена LARGE1.  
Какие типы транскриптов представлены в таблице (поле transcript_type) ? На какой цепи закодированы интервалы? Конвертируйте интервалы в объект GRanges.

```{r}
data <- ...
```

```{r}
exons_gr <- GRanges(
              seqnames = Rle(...),
              ranges = IRanges(start = ..., end = ...,
              names = ...),
              strand = Rle(...))
exons_gr
```


## Задание 2

Визуализируйте интервалы с помощью Gviz. 

```{r}
#BiocManager::install("Gviz")
library(Gviz)

chr <- ...
genome <- "hg38"
gtrack <- GenomeAxisTrack()
itrack <- IdeogramTrack(genome = ..., chromosome = ...)
atrack <- AnnotationTrack(..., name = "exons")

plotTracks(list(...),
           from = 33*10**6, to = 34*10**6)
```

## Задание 3

Заметим, что один и тот же экзон может несколько раз встречаться в разных изоформах транскрипта LARGE1. Чтобы упростить представление экзонов, применим функцию reduce из пакета GenomicRanges.

```{r}
exons_gr_reduced <- ...
```

Визуализируем результат 
```{r}
atrack_reduced <- AnnotationTrack(..., name = "exons, reduced")
plotTracks(list(...),
           from = 33*10**6, to = 34*10**6)
```

## Задание 4

Теперь найдем координаты интронов. Для этого применим функцию gaps() — она находит участки, комплементарные имеющимся интервалам. 

```{r}
gaps_gr <- gaps(...)
gaps_gr
```

Функция gaps() также найдет участок за пределами первого экзона. Ограничим область поиска первым экзоном, указав start.
```{r}
#Способ 1
first_exon_start <- min(start(exons_gr))
gaps_gr <- gaps(..., start = first_exon_start)
gaps_gr
```

## Задание 5

Какие области длиннее, экзоны или интроны?     
1) Добавьте новый столбец feature: для gaps_gr укажите "intron", для exons_gr_reduced "exon".  
2) Объедините два объекта GRanges в один.    
3) Добавьте столбец с длиной интервалов и конвертируйте в формат, подходящий для ggplot.  
4) Средствами ggplot визуализируйте распределение длин интронов и экзонов гена LARGE1. 

```{r}
gaps_gr$feature = ...
exons_gr$feature = ...

combined_gr <- c(,)
combined_gr$len <- ...
combined_df <- as.data.frame(..., row.names = NULL)


```

