Биоинформатика и соседние дисциплины
Биоинформатика — не остров: она стоит на алгоритмах, структурах данных и статистике. Этот урок расставляет связи.
Вычислительная биология — широкая область моделирования биологических систем; биоинформатика — её часть, сфокусированная на анализе данных о последовательностях и структурах.
Если вы уже изучали алгоритмы, структуры данных, статистику или машинное обучение на этом сайте — отличная новость: биоинформатика переиспользует почти всё это. Цель урока — показать карту связей, чтобы вы знали, какой инструмент откуда брать, и не изобретали велосипед.
На чём стоит биоинформатика
| Дисциплина | Что берём в биоинформатику |
| Алгоритмы | динамическое программирование (выравнивание), жадные методы, графы (сборка) |
| Структуры данных | хеш-таблицы (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.
- Динамическое программирование — общий мост от редакционного расстояния к выравниванию ДНК.
- Проекты строятся как пайплайны: цепочки шагов, за каждым — классический алгоритм.
- Мы делаем акцент на биологическом смысле, не дублируя профильные курсы.