---
title: "Домашнее задание №11"
subtitle: "ФББ - R - 2025"
output: html_document
---

![](assets/fish/11_carnotaurus_r_hex.png){width=10% fig-align="center"}

## Задание 0 

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

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

## Задание 1

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

```{r eval=FALSE}
data <- ...
```

Задавать поля объекта можно сразу столбцами таблицы. 

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

Это нам пригодится в самостоятельной работе. 

## Задание 2

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

```{r eval=FALSE}
#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 eval=FALSE}
exons_gr_reduced <- ...
```

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

## Задание 4

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

```{r eval=FALSE}
gaps_gr <- gaps(...)
gaps_gr
```

Функция gaps() также найдет участок за пределами первого экзона. Ограничим область поиска первым экзоном, указав start.
```{r eval=FALSE}
#Способ 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 eval=FALSE}
gaps_gr$feature = ...
exons_gr$feature = ...

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


```

## Задание 6

Отберите случайным образом по 50 строк из набора исходных интервалов два раза. 
Положите эти наборы в 2 разных GRanges объекта. 
Помните, что процедура выбора интервалв должна быть воспроизводима.
Далее работайте с этими двумя наборами интервалов. 

## Задание 7

С помощью функции findOverlaps из пакета GenomicRanges узнайте, есть ли пересечения между наборами интервалов. 

## Задание 8

С помощью функции nearest из пакета GenomicRanges для интервалов из одного набора найдите ближайших соседей в втором наборе интервалов. 

## Задание 9

Визуализируйте интервалы с помощью Gviz, добавив их двумя разными треками друг под другом. 
Это тоже пригодится нам на самостоятельной. 


