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

Биоинформатика — не остров: она стоит на алгоритмах, структурах данных и статистике. Этот урок расставляет связи.

Вычислительная биология — широкая область моделирования биологических систем; биоинформатика — её часть, сфокусированная на анализе данных о последовательностях и структурах.

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

На чём стоит биоинформатика

ДисциплинаЧто берём в биоинформатику
Алгоритмыдинамическое программирование (выравнивание), жадные методы, графы (сборка)
Структуры данныххеш-таблицы (k-меры), суффиксные деревья/массивы (поиск в геноме), графы де Брёйна
Строковые алгоритмыпоиск подстроки, расстояние редактирования, мотивы
Статистикаp-value, множественные сравнения, FDR — оценка значимости находок
Машинное обучениекластеризация экспрессии, предсказание структуры и функции

Динамическое программирование — общий мост

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

# Редакционное расстояние (Левенштейна) — фундамент выравнивания
def edit_distance(a, b):
    n, m = len(a), len(b)
    dp = [[0] * (m + 1) for _ in range(n + 1)]
    for i in range(n + 1):
        dp[i][0] = i
    for j in range(m + 1):
        dp[0][j] = j
    for i in range(1, n + 1):
        for j in range(1, m + 1):
            cost = 0 if a[i-1] == b[j-1] else 1
            dp[i][j] = min(dp[i-1][j] + 1, dp[i][j-1] + 1, dp[i-1][j-1] + cost)
    return dp[n][m]

print("ДНК:", edit_distance("ACGT", "AGT"))
print("Слова:", edit_distance("kitten", "sitting"))

Вывод:

ДНК: 1
Слова: 3

Один и тот же код считает «дистанцию» и между фрагментами ДНК, и между английскими словами. Биоинформатика добавляет к этому биологический смысл штрафов (мутация дешевле, вставка дороже) — но скелет алгоритма общий.

Чем биоинформатика отличается от вычислительной биологии

Границы размыты, но грубо: биоинформатика чаще про данные (геномы, последовательности, экспрессия) и инструменты их анализа; вычислительная биология — про математические модели процессов (динамика популяций, кинетика реакций, фолдинг белка как физика). На практике один человек делает и то, и другое.

Как работает под капотом: пайплайн

Типичный биоинформатический проект — это конвейер (pipeline) из шагов, где каждый шаг применяет известный алгоритм:

сырые риды -> контроль качества -> выравнивание на референс
          -> поиск вариантов (SNP) -> статистическая фильтрация
          -> биологическая интерпретация

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

Что мы НЕ будем дублировать

На сайте уже есть курсы «Алгоритмы», «Структуры данных», олимпиадные «Строковые алгоритмы», «Машинное обучение» и «Статистика». Мы не будем заново выводить динамическое программирование или объяснять p-value с нуля — вместо этого покажем их биологическое применение. Если какой-то базовый приём непонятен, загляните в соответствующий профильный курс.

Чтобы было понятно, куда какой инструмент применяется, держите в голове такую карту соответствий. Поиск гена в геноме — это поиск подстроки и работа с автоматами (строковые алгоритмы). Сравнение двух белков на родство — динамическое программирование (выравнивание). Быстрый поиск в базе из миллионов последовательностей — хеширование и индексы (структуры данных). Построение эволюционного дерева — жадные и кластерные алгоритмы на графах. Определение, значима ли разница в активности гена между здоровыми и больными, — проверка гипотез и поправки на множественные сравнения (статистика). Группировка тысяч генов по схожему поведению — кластеризация (машинное обучение). Почти за каждой биологической задачей стоит знакомый алгоритмический скелет; задача биоинформатика — увидеть его и подобрать правильный инструмент, а не изобретать заново.

Частые ошибки

  • Изобретать заново. Многие «новые» биоинформатические методы — это известные алгоритмы под другим именем.
  • Забывать про статистику. Найти паттерн легко; доказать, что он не случаен, — вот настоящая работа.
  • Считать ML волшебством. Без качественных данных и понимания биологии модель выучит артефакты.

Итог

  • Биоинформатика переиспользует алгоритмы, структуры данных, статистику и ML.
  • Динамическое программирование — общий мост от редакционного расстояния к выравниванию ДНК.
  • Проекты строятся как пайплайны: цепочки шагов, за каждым — классический алгоритм.
  • Мы делаем акцент на биологическом смысле, не дублируя профильные курсы.
Проверьте себя
1. Какой алгоритмический приём связывает редакционное расстояние между словами и выравнивание ДНК?
AЖадный алгоритм
BДинамическое программирование
CБинарный поиск
DБыстрая сортировка
2. Чем биоинформатика чаще отличается от вычислительной биологии?
AБиоинформатика про анализ данных, вычислительная биология — про математические модели процессов
BЭто одно и то же
CБиоинформатика не использует компьютеры
DВычислительная биология изучает только растения
3. Что такое биоинформатический пайплайн?
AТруба для жидкостей в лаборатории
BКонвейер шагов анализа, где каждый шаг применяет известный алгоритм
CОдин универсальный алгоритм для всего
DБаза данных геномов