Общая информация

Преподаватели

  • Жарикова Анастасия Александровна

    azharikova89@gmail.com

  • Валяева Анна Александровна

    valyaeva.ann@gmail.com

  • Никольская Арина Игоревна

    arnikol31@gmail.com

  • Коновалова Евгения Владимировна

    konzhenya@mail.ru

Где нас найти

  • Ходите на занятия

  • Общий чат ТГ

  • Комната 633, корпус Б

Зачем нас искать

  • Задавать вопросы(!!!!)

    на занятиях (наиболее приемлемый вариант)

    лично очно

    общий чат ТГ

    личные сообщения (если ситуация критическая и больше ничего не помогает)

  • После 19:00 и по выходным (суббота и воскресенье) мы не работаем совсем!

  • За сутки до любого дедлайна - день тишины!

Если вы не задаете вопросы, значит вы все поняли, и мы можем спрашивать материал в полном объеме и усложнять проверочные работы

Что будет

Расписание

17 недель

3 ноября мы куда-нибудь перенесем!

Активности

  • 17 очных занятий

  • Материалы для самостоятельного изучения

  • Домашние задания

  • Очные проверочные работы на занятии

  • Коллоквиумы

  • Защита проекта

Все материалы будут выложены на странице курса

Расписание

Занятия очные по понедельникам, аудитория 221

  • Коллоквиумы ~ 13 октября и 15 декабря

  • Защита проектов ~ 22 декабря

  • Пропускать занятия без потери баллов можно по уважительным причинам (медицинская справка, поездка на конференцию)

  • Не ходите на занятия, если болеете!!!

Набираем баллы

Баллы

  • За очные проверочные работы начисляют первичные баллы (ПБ)

  • За коллоквиумы начисляют ПБ

  • Первичные баллы пересчитывают во вторичные быллы (ВБ) с учетом веса активности

  • За проект сразу начисляют ВБ

  • Максимум за курс можно получить 100 ВБ

  • Преподаватели могут начислять (и отнимать!) дополнительные баллы за особые достижения

Ценность активностей

  • Очные проверочные работы - 35 ВБ

  • Коллоквиумы - 30 ВБ (15 + 15)

  • Защита проектов - 35 ВБ

Домашние задания

  • Домашние задания вы делаете для тренировки, в рамках подготовки к самостоятельным работам и коллоквиумам

  • Проверять домашние задания конечно же никто не будет

  • Если вы столкнетесь с трудностями при выполнении домашних заданий - спрашивайте!

  • Задание №0 любого домашнего задания - проработать материал занятия

Очные проверочные работы

  • Задания на 15-45 минут во время некоторых занятий

  • По материалам, разобранным на занятии или выданным для домашнего изучения

  • Будет ~6

  • Могут быть внезапными

  • Можно писать только очно в классе

  • Сдавать работы необходимо строго в оговоренное время, иначе работа не будет проверена

  • Очные проверочные работы нужно прикреплять в форму. Убедитесь, что вам пришло письмо об успешной отправке файла

  • Не переписываются совсем никак

  • В случае пропуска по уважительной причине в конце семестра пересчитываем баллы

  • За списывание зануляются баллы всем причастным

  • Очные проверочные работы будут полностью проверены к 20 декабря

Коллоквиумы

  • На коллоквиумах необходимо сдать задачи из домашних заданий:

    • показать код любых задач на выбор преподавателя

    • ответить на вопросы по коду

    • поменять что-то в коде по запросу преподавателя

    • ответить на дополнительные вопросы при необходимости

    • по каждому домашнему заданию нужно хотя бы одну задачу

  • Вас много, нас мало - сдаем весело, быстро, четко и сразу правильно

Проект

  • Проект:

    • нужно поделиться на группы по 4 человека, в крайнем случае - по 3 человека, 5 человек в группе - плохо

    • каждой группе будет выдан набор данных

    • начнем распределять проекты за 4-5 недель до сдачи

    • необходимо проанализировать данные и представить в виде презентации

    • защита проекта проходит в виде доклада на последнем занятии в семестре

Зачет

Зачета не будет

Как же его получить?..

  • Максимально участвовать в активностях

  • Выполнить 60% всех очных самостоятельных работ

  • Выполнить = отправить в срок корректно оформленную работу в требуемом формате и убедиться, что работа получена

  • Сдать коллоквиумы = защитить 60% домашних заданий

  • Поучаствовать в защите группового проекта

  • Набрать в итоге более 60 ВБ

Переписывания

  • Проверочные работы не переписываются

  • В случае уважительной причины пересчитываем пропущенную проверочную работу по среднему

  • В случае пропуска коллоквиума по уважительной причине можно сдать, договорившись с преподавателем

  • Медицинские справки приносите в учебную часть в течение 3 дней после получения

Когда можно получить зачет

  • Зачет выставляется по результатам работы в семестре

  • Окончательное количество проходных для зачета ВБ будет установлено ПОСЛЕ защиты проектов

  • Допускаем недобор 1 балла, не больше (1.1 - это уже больше, чем 1)

  • Грубые ошибки при защите проекта могут обнулить все ваши старания…

  • Слезы, истерики, стенания вызывают аналогичные ответные мероприятия

Важно!

  • В курсе будут задачи и вопросы, касающиеся других предметов

  • Считается, что все предметы из прошлых семестров (и из школы) вы усвоили

  • Мы не повторяем, но спрашиваем!

  • Непонимание материала прошлых семестров считается грубыми ошибками при защите проекта

  • Например, если вы набрали 150 баллов из 100 в течение семестра, но на защите проекта упорно путаете РНК с ДНК или не можете назвать тип графика, который вы же и нарисовали - пересдача

Еще важно

В середине семестра мы сдаем промежуточную успеваемость в учебную часть

Еще более важно

Мы первый раз в таком формате и таком составе

Все что угодно может пойти не так и измениться по ходу курса

Пересдача

Пересдачи будут

Пересдачи

  • Нужно набрать недостающее количество баллов

  • Подготовить к пересдаче необходимое количество индивидуальных проектов

  • Ответить на теоретические вопросы:

    по R

    по материалу проекта

Допускаем недобор 1 балла, не больше (1.1 - это уже больше, чем 1)

Материалы для самостоятельного изучения

  • Слайды с 🏠

  • Список функций для изучения

  • Отдельная презентация

  • Список внешних источников

Зачем это все

Инструментарий

Набор разных инструментов и навыков делает специалиста по анализу данных более разносторонним и гибким

Интеграция в существующие проекты

Немного про анализ данных

Аннотация вариантов

Варианты с 19 хромосомы генома человека

library(tidyverse)
a <- read_delim('data/000012001720.chr19.all.annotation.tsv')
head(a)
# A tibble: 6 × 75
  Chr     Pos Variant   Ref   Alt   Existing_variation VARIANT_CLASS Consequence
  <chr> <dbl> <chr>     <chr> <chr> <chr>              <chr>         <chr>      
1 chr19 60930 chr19:60… C     T     rs1364854583       SNV           downstream…
2 chr19 68258 chr19:68… TA    T     rs1309009942       deletion      downstream…
3 chr19 71052 chr19:71… T     C     rs1217555770       SNV           non_coding…
4 chr19 71178 chr19:71… G     C     rs2548912          SNV           non_coding…
5 chr19 71303 chr19:71… A     G     rs3971601          SNV           non_coding…
6 chr19 71332 chr19:71… G     T     rs1233587539       SNV           non_coding…
# ℹ 67 more variables: IMPACT <chr>, SYMBOL <chr>, BIOTYPE <chr>,
#   Feature <chr>, STRAND <chr>, MANE_SELECT <chr>, CANONICAL <chr>, TSL <chr>,
#   HGVSg <chr>, HGVSc <chr>, HGVSp <chr>, EXON <chr>, INTRON <chr>,
#   HGVS_OFFSET <chr>, ENSP <chr>, SWISSPROT <chr>, Protein_position <chr>,
#   Amino_acids <chr>, LoF <chr>, NMD <chr>, SpliceAI_pred <chr>, SIFT <chr>,
#   PolyPhen <chr>, GENE_PHENO <chr>, SIFT4G_converted_rankscore <chr>,
#   Polyphen2_HVAR_rankscore <chr>, MetaSVM_rankscore <chr>, …

Нам даны данные.

Что значит “проанализировать данные”?

Какие вопросы можно задать к таблице?

Какие вопросы можно задать к таблице?

  • Сколько всего вариантов?

  • Сколько разных генов попало в таблицу?

  • Сколько вариантов попало в белок-кодирующие гены, а сколько в гены длинных некодирующих РНК?

  • В какие классы генов попали варианты и в каком количестве?

  • Сколько вариантов каждого класса детектировано?

  • Какие частоты у найденных вариантов?

  • Сколько редких вариантов?

Сколько всего вариантов?

nrow(a)
[1] 124979

Сколько разных генов?

nrow(distinct(a, SYMBOL))
[1] 1624

Сколько вариантов попало в белок-кодирующие гены, а сколько в гены длинных некодирующих РНК?

a %>%
  filter(BIOTYPE %in% c('protein_coding', 'lncRNA')) %>%
  count(BIOTYPE)
# A tibble: 2 × 2
  BIOTYPE            n
  <chr>          <int>
1 lncRNA         12940
2 protein_coding 84208

В какие классы генов попали варианты и в каком количестве?

count(a, BIOTYPE)
# A tibble: 19 × 2
   BIOTYPE                                n
   <chr>                              <int>
 1 -                                  21294
 2 TEC                                   35
 3 lncRNA                             12940
 4 miRNA                                 12
 5 misc_RNA                             331
 6 nonsense_mediated_decay              260
 7 processed_pseudogene                1676
 8 processed_transcript                  24
 9 protein_coding                     84208
10 protein_coding_CDS_not_defined       322
11 protein_coding_LoF                    33
12 rRNA_pseudogene                       24
13 retained_intron                     1010
14 snRNA                                 82
15 snoRNA                                 9
16 transcribed_processed_pseudogene       1
17 transcribed_unprocessed_pseudogene   153
18 unitary_pseudogene                    38
19 unprocessed_pseudogene              2527

В какие классы генов попали варианты и в каком количестве?

a %>%
  ggplot(aes(x = BIOTYPE)) + geom_bar(fill = 'lightblue', color = 'black') +
  geom_text(aes(label = ..count..), stat = "count", vjust = -1, colour = "black") +
  theme_bw() + ylim(0, 90000) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

В какие классы генов попали варианты и в каком количестве?

a %>% ggplot(aes(x = BIOTYPE)) + geom_bar() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

В какие классы генов попали варианты и в каком количестве?

barplot(table(a$BIOTYPE), las = 2)

Структура курса

R

  • Язык R распространяется бесплатно с открытым исходным кодом

  • Доступно для Linux, macOS, Windows

  • Интерпретируемый язык программирования

  • Обширное сообщество разработчиков и пользователей

RStudio

Интегрированная среда разработки (одна из)

Установка и знакомство

Установка

На свой ноутбук необходимо установить:

  • сначала язык R

  • затем RStudio

https://posit.co/download/rstudio-desktop/

Через раз будет самостоятельная работа в RStudio!!!

Нужны ноутбуки!

Positron

https://posit.co/products/ide/positron/

R и RStudio позволяют

  • оптимально организовать пространство для работы

  • создавать и отлаживать программные сценарии

  • удобно просматривать результаты работы

  • получать справочную информацию

  • работа с данными практически в любых форматах (импорт/экспорт)

Демонстрация

  • Устройство RStudio

  • Организация проектов

  • Создание файлов (.R, .Rmd)

  • Получение справочной информации

RStudio - общий вид 🏠

Программные сценарии

  • Первый шаг к воспроизводимости

  • Можно вводить команды по одной в консоль и выполнять их

  • Все действия будут отражены в вкладке History

  • Как понять, какие команды нам подошли, а какие выдали ошибку или неудовлетворительный результат?

Программные сценарии

  • Лучше сохранять только корректно работающие строки кода в нужной последовательности в файл

  • Нужно добавлять комментарии

  • Вы никогда не забудете, что и как вы делали

  • Получившийся файл всегда можно просмотреть и перезапустить, в том числе с другими параметрами и входными данными

  • Сохраняйте коды домашних заданий, самостоятельных работ, проекта до получения зачета

file.R 🏠

File -> New File -> R Script

  • Код + комментарии(!!!)

  • Можно использовать в RStudio или запускать из коммандной строки

  • Ctrl + enter - запуск строки кода или выделенного фрагмента кода

“Горячие” клавиши

file.Rmd 🏠

Создание отчета

Можно добавлять

  • форматированный текст

  • формулы

  • таблицы

  • код

  • результат выполнения кода

  • картинки

  • ссылки

file.Rmd 🏠

Создание

File -> New File -> R Markdown -> шаблон файла с “шапкой” -> удалить лишнее и добавить нужное -> сохранить -> Knit -> .html/.pdf/.doc

Markdown

Markdown 🏠

  • Текстовый язык разметки

  • Позволяет объединять в одном отчете:

    • код

    • результат анализа данных (таблицы, рисунки, …)

    • комментарии

Markdown: блоки кода 🏠

Блок кода записывают в чанки (“chunk”):

  • Запускается целиком или по чанкам, сразу видны ошибки и проблемы

  • Переменные и функции, инициализированные в одном chunk, будут работать во всей сессии

Markdown 🏠

основные настройки

Устанавливаем TRUE или FALSE

{r echo = T}

  • echo - демонстрация кода

  • eval - выполнение кода

  • message и warnings - демонстрация предупреждений

Markdown: ошибки 🏠

В случае ошибки в коде итоговый документ не будет создан, появится сообщение об ошибке

Читаем ошибку - исправляем - перезапускаем

Markdown - почитать 🏠

Markdown в R

Markdown в R - reference

Давайте уже R!

С чем мы работаем и где находимся?

getwd() # узнать рабочую директорию

setwd("path/to/Newdir") # задать рабочую директорию

dir() # список файлов в рабочей директории

dir.create("New_dir") # создать директорию New_dir

dir.exists("Dir") # проверить, существует ли директория Dir

unlink("Dir", recursive = T) # удалить директорию Dir

file.exists("file.txt") # проверить, существует ли файл file.txt

file.remove("file.txt") # удалить файл file.txt

sessionInfo() # информация о загруженной сессии R

Информация о загруженной сессии R

Знать версии программ и пакетов необходимо для возможности воспроизведения результатов

sessionInfo()
R version 4.5.1 (2025-06-13 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 26100)

Matrix products: default
  LAPACK version 3.12.1

locale:
[1] LC_COLLATE=Russian_Russia.utf8  LC_CTYPE=Russian_Russia.utf8   
[3] LC_MONETARY=Russian_Russia.utf8 LC_NUMERIC=C                   
[5] LC_TIME=Russian_Russia.utf8    

time zone: Europe/Moscow
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] lubridate_1.9.4 forcats_1.0.0   stringr_1.5.1   dplyr_1.1.4    
 [5] purrr_1.1.0     readr_2.1.5     tidyr_1.3.1     tibble_3.3.0   
 [9] ggplot2_3.5.2   tidyverse_2.0.0 calendR_1.2    

loaded via a namespace (and not attached):
 [1] yulab.utils_0.2.1  utf8_1.2.6         rappdirs_0.3.3     generics_0.1.4    
 [5] ggplotify_0.1.2    stringi_1.8.7      hms_1.1.3          digest_0.6.37     
 [9] magrittr_2.0.3     evaluate_1.0.4     grid_4.5.1         timechange_0.3.0  
[13] RColorBrewer_1.1-3 fastmap_1.2.0      jsonlite_2.0.0     scales_1.4.0      
[17] cli_3.6.5          crayon_1.5.3       rlang_1.1.6        gggibbous_0.1.1   
[21] bit64_4.6.0-1      ggimage_0.3.4      withr_3.0.2        yaml_2.3.10       
[25] parallel_4.5.1     tools_4.5.1        tzdb_0.5.0         uuid_1.2-1        
[29] vctrs_0.6.5        R6_2.6.1           gridGraphics_0.5-1 lifecycle_1.0.4   
[33] magick_2.8.7       bit_4.6.0          fs_1.6.6           htmlwidgets_1.6.4 
[37] ggfun_0.2.0        vroom_1.6.5        pkgconfig_2.0.3    pillar_1.11.0     
[41] gtable_0.3.6       glue_1.8.0         data.table_1.17.8  Rcpp_1.1.0        
[45] systemfonts_1.2.3  xfun_0.52          tidyselect_1.2.1   rstudioapi_0.17.1 
[49] ggiraph_0.9.0      knitr_1.50         dichromat_2.0-0.1  farver_2.1.2      
[53] htmltools_0.5.8.1  labeling_0.4.3     rmarkdown_2.29     suncalc_0.5.1     
[57] compiler_4.5.1    

Справки и помощь 🏠

  • ?seq
  • help(seq) # попробуйте!!
  • example(seq) # попробуйте!!

Cheat Sheets

Таблицы и вектора

Таблица

Вектор

Основной тип данных

Индексация начинается с 1!!!

Работа с векторами

x <- 1:5 
x 
[1] 1 2 3 4 5
length(x)
[1] 5
3 # это тоже вектор длины 1
[1] 3
z <- c("a", "b", "d") # тоже вектор, только строковый
z 
[1] "a" "b" "d"

Внимание!

При перезаписывании содержимого переменной никаких предупреждений не будет

x <- 2 
x
[1] 2
x <- 5 
x
[1] 5

Будьте внимательны при выборе имен для переменных

Индексация 🏠

Индексация элементов в R начинается с 1 (не с 0)

x <- 15:50 
x 
 [1] 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
[26] 40 41 42 43 44 45 46 47 48 49 50

Таблица

Где тут вектора?

Имена элементов вектора

x <- 1:3 
x 
[1] 1 2 3
names(x)
NULL
names(x) <- c('a', 'b', 'c') 
x 
a b c 
1 2 3 
names(x) 
[1] "a" "b" "c"

Вектора 🏠

У каждого элемента вектора есть:

  • значение

  • индекс или порядковый номер

  • имя (может быть пустым)

Конец!