Учебник Биоинформатика для начинающих
Биоинформатика — это анализ биологических данных компьютером: геномов, белков, эволюционных деревьев. Курс для студентов-биологов, медиков и программистов, которые хотят увидеть, что ДНК — это просто строка из четырёх букв, а большинство классических алгоритмов биоинформатики (GC-состав, комплементарность, трансляция, поиск мотивов, выравнивание последовательностей, построение дерева) пишутся на чистом Python без единой сторонней библиотеки. Вы пройдёте путь от устройства ДНК до динамического программирования Нидлмана-Вунша, сборки генома и геномной медицины — с десятками запускаемых примеров.
Курс «Биоинформатика» состоит из 10 разделов и 34 уроков: Введение: зачем нужна биоинформатика, Немного биологии для программиста, Представление последовательностей, Базовые операции с последовательностями, Генетический код и трансляция, Поиск паттернов и мутации, k-меры и состав последовательностей, Выравнивание последовательностей, Филогенетика и сборка генома и Омиксные данные, медицина и этика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение: зачем нужна биоинформатика
- Что такое биоинформатика
Биоинформатика — наука об анализе биологических данных компьютером. Зачем она нужна, как появилась и почему программисту здесь есть место.
- От лаборатории к данным: секвенирование
Откуда берутся биоинформатические данные: как ДНК превращается в текстовый файл, что такое риды, покрытие и почему сборка генома — это пазл.
- Биоинформатика и соседние дисциплины
Как биоинформатика опирается на алгоритмы, структуры данных, статистику и машинное обучение, и чем отличается от смежной вычислительной биологии.
- Что такое биоинформатика
2 Немного биологии для программиста
- ДНК: четыре буквы и двойная спираль
ДНК для программиста: алфавит A/T/G/C, двойная спираль, комплементарность пар оснований и почему это позволяет ДНК копироваться.
- РНК и центральная догма молекулярной биологии
Чем РНК отличается от ДНК (U вместо T), что такое центральная догма ДНК→РНК→белок и зачем биоинформатике эта схема.
- Гены, белки и 20 аминокислот
Что такое ген, как из последовательности получается белок, что такое 20 аминокислот и почему белок — это тоже строка, только в другом алфавите.
- ДНК: четыре буквы и двойная спираль
3 Представление последовательностей
- Последовательности как строки
Почему ДНК, РНК и белок удобно представлять обычными строками Python, какие операции это даёт бесплатно и где кроются подвохи.
- Формат FASTA: как хранят геномы
Устройство формата FASTA — стандарта хранения последовательностей. Парсим многозаписный FASTA на чистом Python и считаем статистику.
- Формат FASTQ: последовательности с качеством
FASTQ хранит риды вместе с качеством каждого основания. Разбираем 4-строчную структуру, декодируем Phred-качество и фильтруем риды на чистом Python.
- Последовательности как строки
4 Базовые операции с последовательностями
- GC-состав и нуклеотидная статистика
Что такое GC-состав, почему он важен биологам, как его считать и применять в скользящем окне вдоль генома.
- Комплемент и обратный комплемент
Как построить комплементарную и обратную комплементарную нить ДНК, чем они отличаются и зачем обратный комплемент нужен для чтения второй нити.
- Транскрипция и сборка базовых операций
Транскрипция ДНК в РНК в коде, объединение базовых операций в небольшой инструментарий и обработка обеих нитей сразу.
- GC-состав и нуклеотидная статистика
5 Генетический код и трансляция
- Генетический код и таблица кодонов
Как 4 буквы кодируют 20 аминокислот: кодоны, таблица генетического кода, вырожденность и почему код почти универсален.
- Трансляция: от мРНК к белку
Реализуем трансляцию мРНК в белок на чистом Python: разбиение на кодоны, старт и стоп, и переводим реальный фрагмент гена.
- Открытые рамки считывания и поиск генов
Что такое ORF, как найти все открытые рамки считывания в шести рамках генома на чистом Python и почему это база предсказания генов.
- Генетический код и таблица кодонов
6 Поиск паттернов и мутации
- Поиск подстроки и мотивов
Как искать все вхождения мотива в последовательность, почему встроенного find мало и как найти перекрывающиеся вхождения на чистом Python.
- Рестрикционные сайты и неоднозначные мотивы
Поиск рестрикционных сайтов, кодирование неоднозначных мотивов через IUPAC и регулярные выражения для гибкого поиска паттернов в ДНК.
- Расстояние Хэмминга и мутации
Расстояние Хэмминга как мера числа мутаций, приближённый поиск мотива с допуском ошибок и связь с точечными заменами в ДНК.
- Поиск подстроки и мотивов
7 k-меры и состав последовательностей
- k-меры: подсчёт и частоты
Что такое k-меры, как разбить последовательность на k-меры и подсчитать их частоты на чистом Python, и зачем это нужно в биоинформатике.
- Индексация генома по k-мерам
Как построить k-мерный индекс для мгновенного поиска в геноме, почему это в разы быстрее наивного перебора и как устроены реальные выравниватели.
- Граф де Брёйна и идея сборки
Как из k-меров строится граф де Брёйна, почему сборка генома сводится к поиску пути в графе и в чём сложность на реальных данных.
- k-меры: подсчёт и частоты
8 Выравнивание последовательностей
- Зачем выравнивать и точечные матрицы
Зачем сравнивают последовательности, что такое гомология и сходство, и как точечная матрица (dot plot) визуально показывает похожие участки.
- Глобальное выравнивание: Нидлмана-Вунша
Алгоритм Нидлмана-Вунша: глобальное выравнивание двух последовательностей динамическим программированием с матрицей, штрафами и трассировкой — на чистом Python.
- Локальное выравнивание: Смита-Ватермана
Алгоритм Смита-Ватермана для локального выравнивания: поиск максимально похожего участка двух последовательностей с обнулением отрицательных счётов — на чистом Python.
- Матрицы замен и идея BLAST
Зачем нужны матрицы замен BLOSUM и PAM для белков и как устроена эвристика BLAST для быстрого поиска по огромным базам последовательностей.
- Зачем выравнивать и точечные матрицы
9 Филогенетика и сборка генома
- Множественное выравнивание: обзор
Зачем выравнивают сразу много последовательностей, почему это вычислительно трудно и как работает прогрессивное множественное выравнивание.
- Филогенетика: эволюционные деревья
Что такое филогенетическое дерево, как читать его топологию, и что значат корень, узлы и длины ветвей в эволюционной реконструкции.
- Строим дерево: UPGMA
Реализуем построение филогенетического дерева методом UPGMA из матрицы расстояний между последовательностями — на чистом Python на маленьком примере.
- Сборка генома: пазл из миллионов кусочков
Почему сборка генома — это сложнейший пазл, как перекрытия ридов и граф де Брёйна позволяют его собрать и что такое контиги и скэффолды.
- Множественное выравнивание: обзор
10 Омиксные данные, медицина и этика
- Экспрессия генов и кластеризация
Что такое экспрессия генов и матрица экспрессии, как находить гены со схожим поведением кластеризацией и в чём связь с машинным обучением.
- Вариации, SNP и базы данных биологии
Что такое генетические вариации и SNP, как их находят и хранят в формате VCF, и где лежат биологические данные: GenBank, UniProt, Ensembl.
- Biopython и экосистема инструментов
Что умеет Biopython и зачем он нужен, обзор экосистемы биоинформатических инструментов и пайплайнов, и когда писать своё, а когда брать готовое.
- Статистика в биоинформатике: p-value и FDR
Почему при тестировании тысяч генов нельзя смотреть на сырой p-value, что такое проблема множественных сравнений и как её решают поправки Бонферрони и FDR.
- Геномная медицина, этика и мини-проекты
Как геномика меняет медицину, почему генетические данные требуют особой защиты (152-ФЗ, GDPR) и три мини-проекта, собирающие навыки курса воедино.
- Экспрессия генов и кластеризация