science

Учебник Биоинформатика для начинающих

34 урока · 10 разделов · бесплатно, без регистрации

Биоинформатика — это анализ биологических данных компьютером: геномов, белков, эволюционных деревьев. Курс для студентов-биологов, медиков и программистов, которые хотят увидеть, что ДНК — это просто строка из четырёх букв, а большинство классических алгоритмов биоинформатики (GC-состав, комплементарность, трансляция, поиск мотивов, выравнивание последовательностей, построение дерева) пишутся на чистом Python без единой сторонней библиотеки. Вы пройдёте путь от устройства ДНК до динамического программирования Нидлмана-Вунша, сборки генома и геномной медицины — с десятками запускаемых примеров.

Курс «Биоинформатика» состоит из 10 разделов и 34 уроков: Введение: зачем нужна биоинформатика, Немного биологии для программиста, Представление последовательностей, Базовые операции с последовательностями, Генетический код и трансляция, Поиск паттернов и мутации, k-меры и состав последовательностей, Выравнивание последовательностей, Филогенетика и сборка генома и Омиксные данные, медицина и этика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение: зачем нужна биоинформатика

    1. Что такое биоинформатика

      Биоинформатика — наука об анализе биологических данных компьютером. Зачем она нужна, как появилась и почему программисту здесь есть место.

    2. От лаборатории к данным: секвенирование

      Откуда берутся биоинформатические данные: как ДНК превращается в текстовый файл, что такое риды, покрытие и почему сборка генома — это пазл.

    3. Биоинформатика и соседние дисциплины

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

  2. 2 Немного биологии для программиста

    1. ДНК: четыре буквы и двойная спираль

      ДНК для программиста: алфавит A/T/G/C, двойная спираль, комплементарность пар оснований и почему это позволяет ДНК копироваться.

    2. РНК и центральная догма молекулярной биологии

      Чем РНК отличается от ДНК (U вместо T), что такое центральная догма ДНК→РНК→белок и зачем биоинформатике эта схема.

    3. Гены, белки и 20 аминокислот

      Что такое ген, как из последовательности получается белок, что такое 20 аминокислот и почему белок — это тоже строка, только в другом алфавите.

  3. 3 Представление последовательностей

    1. Последовательности как строки

      Почему ДНК, РНК и белок удобно представлять обычными строками Python, какие операции это даёт бесплатно и где кроются подвохи.

    2. Формат FASTA: как хранят геномы

      Устройство формата FASTA — стандарта хранения последовательностей. Парсим многозаписный FASTA на чистом Python и считаем статистику.

    3. Формат FASTQ: последовательности с качеством

      FASTQ хранит риды вместе с качеством каждого основания. Разбираем 4-строчную структуру, декодируем Phred-качество и фильтруем риды на чистом Python.

  4. 4 Базовые операции с последовательностями

    1. GC-состав и нуклеотидная статистика

      Что такое GC-состав, почему он важен биологам, как его считать и применять в скользящем окне вдоль генома.

    2. Комплемент и обратный комплемент

      Как построить комплементарную и обратную комплементарную нить ДНК, чем они отличаются и зачем обратный комплемент нужен для чтения второй нити.

    3. Транскрипция и сборка базовых операций

      Транскрипция ДНК в РНК в коде, объединение базовых операций в небольшой инструментарий и обработка обеих нитей сразу.

  5. 5 Генетический код и трансляция

    1. Генетический код и таблица кодонов

      Как 4 буквы кодируют 20 аминокислот: кодоны, таблица генетического кода, вырожденность и почему код почти универсален.

    2. Трансляция: от мРНК к белку

      Реализуем трансляцию мРНК в белок на чистом Python: разбиение на кодоны, старт и стоп, и переводим реальный фрагмент гена.

    3. Открытые рамки считывания и поиск генов

      Что такое ORF, как найти все открытые рамки считывания в шести рамках генома на чистом Python и почему это база предсказания генов.

  6. 6 Поиск паттернов и мутации

    1. Поиск подстроки и мотивов

      Как искать все вхождения мотива в последовательность, почему встроенного find мало и как найти перекрывающиеся вхождения на чистом Python.

    2. Рестрикционные сайты и неоднозначные мотивы

      Поиск рестрикционных сайтов, кодирование неоднозначных мотивов через IUPAC и регулярные выражения для гибкого поиска паттернов в ДНК.

    3. Расстояние Хэмминга и мутации

      Расстояние Хэмминга как мера числа мутаций, приближённый поиск мотива с допуском ошибок и связь с точечными заменами в ДНК.

  7. 7 k-меры и состав последовательностей

    1. k-меры: подсчёт и частоты

      Что такое k-меры, как разбить последовательность на k-меры и подсчитать их частоты на чистом Python, и зачем это нужно в биоинформатике.

    2. Индексация генома по k-мерам

      Как построить k-мерный индекс для мгновенного поиска в геноме, почему это в разы быстрее наивного перебора и как устроены реальные выравниватели.

    3. Граф де Брёйна и идея сборки

      Как из k-меров строится граф де Брёйна, почему сборка генома сводится к поиску пути в графе и в чём сложность на реальных данных.

  8. 8 Выравнивание последовательностей

    1. Зачем выравнивать и точечные матрицы

      Зачем сравнивают последовательности, что такое гомология и сходство, и как точечная матрица (dot plot) визуально показывает похожие участки.

    2. Глобальное выравнивание: Нидлмана-Вунша

      Алгоритм Нидлмана-Вунша: глобальное выравнивание двух последовательностей динамическим программированием с матрицей, штрафами и трассировкой — на чистом Python.

    3. Локальное выравнивание: Смита-Ватермана

      Алгоритм Смита-Ватермана для локального выравнивания: поиск максимально похожего участка двух последовательностей с обнулением отрицательных счётов — на чистом Python.

    4. Матрицы замен и идея BLAST

      Зачем нужны матрицы замен BLOSUM и PAM для белков и как устроена эвристика BLAST для быстрого поиска по огромным базам последовательностей.

  9. 9 Филогенетика и сборка генома

    1. Множественное выравнивание: обзор

      Зачем выравнивают сразу много последовательностей, почему это вычислительно трудно и как работает прогрессивное множественное выравнивание.

    2. Филогенетика: эволюционные деревья

      Что такое филогенетическое дерево, как читать его топологию, и что значат корень, узлы и длины ветвей в эволюционной реконструкции.

    3. Строим дерево: UPGMA

      Реализуем построение филогенетического дерева методом UPGMA из матрицы расстояний между последовательностями — на чистом Python на маленьком примере.

    4. Сборка генома: пазл из миллионов кусочков

      Почему сборка генома — это сложнейший пазл, как перекрытия ридов и граф де Брёйна позволяют его собрать и что такое контиги и скэффолды.

  10. 10 Омиксные данные, медицина и этика

    1. Экспрессия генов и кластеризация

      Что такое экспрессия генов и матрица экспрессии, как находить гены со схожим поведением кластеризацией и в чём связь с машинным обучением.

    2. Вариации, SNP и базы данных биологии

      Что такое генетические вариации и SNP, как их находят и хранят в формате VCF, и где лежат биологические данные: GenBank, UniProt, Ensembl.

    3. Biopython и экосистема инструментов

      Что умеет Biopython и зачем он нужен, обзор экосистемы биоинформатических инструментов и пайплайнов, и когда писать своё, а когда брать готовое.

    4. Статистика в биоинформатике: p-value и FDR

      Почему при тестировании тысяч генов нельзя смотреть на сырой p-value, что такое проблема множественных сравнений и как её решают поправки Бонферрони и FDR.

    5. Геномная медицина, этика и мини-проекты

      Как геномика меняет медицину, почему генетические данные требуют особой защиты (152-ФЗ, GDPR) и три мини-проекта, собирающие навыки курса воедино.

py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →