Экспрессия генов и кластеризация
Геном одинаков во всех клетках, но работают гены по-разному. Анализ экспрессии измеряет, какие гены активны — и группирует похожие.
Экспрессия гена — мера его активности: сколько мРНК этого гена в клетке. Матрица экспрессии — таблица «гены × условия» со значениями активности.
Геном — это код, но не все его участки выполняются всегда. В нейроне активны одни гены, в клетке печени — другие. Технологии (RNA-seq) измеряют экспрессию тысяч генов сразу. Задача биоинформатика — найти в этой таблице смысл: какие гены ведут себя похоже (вероятно, работают вместе), какие меняются при болезни. Тут на сцену выходит машинное обучение.
Матрица экспрессии
Строки — гены, столбцы — условия (ткани, моменты времени, пациенты), в ячейках — уровень активности. Похожий профиль (строка) у двух генов намекает на общую регуляцию или функцию.
усл1 усл2 усл3 усл4 GeneA 10 12 11 50 GeneB 11 13 10 52 <- профиль похож на GeneA GeneC 40 42 41 5 <- ведёт себя иначе
Похожесть профилей через расстояние
Чтобы формально сказать «гены ведут себя похоже», считаем расстояние между их профилями (евклидово или на основе корреляции). Малое расстояние = схожее поведение.
import math
expr = {
'GeneA': [10, 12, 11, 50],
'GeneB': [11, 13, 10, 52],
'GeneC': [40, 42, 41, 5],
}
def euclid(a, b):
return math.sqrt(sum((x - y) ** 2 for x, y in zip(a, b)))
genes = list(expr)
for i in range(len(genes)):
for j in range(i + 1, len(genes)):
d = euclid(expr[genes[i]], expr[genes[j]])
print(f'{genes[i]} vs {genes[j]}: расстояние {d:.1f}')Вывод:
GeneA vs GeneB: расстояние 2.6 GeneA vs GeneC: расстояние 68.7 GeneB vs GeneC: расстояние 69.7
GeneA и GeneB близки (расстояние 2.6) — они кластеризуются вместе; GeneC далёк от обоих. Это и есть основа кластеризации: сгруппировать гены по близости профилей.
Связь с машинным обучением
Дальше включается ровно тот аппарат, что в курсе «Машинное обучение»: иерархическая кластеризация (как UPGMA в филогенетике!), k-means, снижение размерности (PCA, t-SNE, UMAP) для визуализации тысяч генов на плоскости. Биология лишь даёт данные и интерпретацию; алгоритмы — общие. Кластеры коэкспрессии часто оказываются генами одного пути — так открывают функции неизвестных генов «по компании».
Как работает под капотом: нормализация — половина дела
Сырые числа экспрессии нельзя сравнивать в лоб: образцы секвенированы с разной глубиной, длинные гены дают больше прочтений просто из-за длины. Поэтому до анализа данные нормализуют (приводят к сопоставимому масштабу) и часто логарифмируют (экспрессия меняется в разы, и log делает различия аддитивными). Пропустить нормализацию — значит кластеризовать артефакты эксперимента, а не биологию. Это типичная ловушка: красивые кластеры могут отражать не биологию, а различие в глубине секвенирования образцов.
Стоит понимать и откуда вообще берутся числа экспрессии — это объясняет их статистическую природу. Технология RNA-seq, по сути, секвенирует не геном, а пул всех мРНК клетки; затем риды картируют на гены, и экспрессия гена — это просто число ридов, попавших на него (counts). Раз это счётные данные, у них своя статистика: для них не подходит обычное нормальное распределение, применяют модели для счётчиков (отрицательное биномиальное), как делают популярные пакеты DESeq2 и edgeR. Кроме того, у малоэкспрессируемых генов шум относительно велик: ген с 5 ридами и геном с 5000 ридов нельзя оценивать одинаково надёжно. Поэтому грамотный анализ экспрессии — это не просто «посчитал расстояния и кластеризовал», а аккуратная статистика, учитывающая природу данных.
Полезно увидеть и весь рабочий процесс анализа экспрессии целиком, потому что кластеризация — лишь его часть. Сначала ставят прямой вопрос: какие гены меняют активность между двумя состояниями (здоровый и больной)? Это анализ дифференциальной экспрессии — для каждого гена считают, насколько и насколько надёжно изменилась его активность, получая p-value на ген. А раз генов тысячи, немедленно всплывает проблема множественных сравнений, которой посвящён отдельный урок этого раздела. Затем значимо изменившиеся гены группируют (кластеризация) и проверяют, какие биологические пути обогащены среди них (enrichment-анализ). Так разрозненные навыки — расстояния, кластеризация, статистика поправок — складываются в осмысленный конвейер от сырых данных к биологическому выводу «при этой болезни активируется воспалительный путь».
Частые ошибки
- Сравнивать ненормализованные данные. Различия в глубине и длине генов исказят кластеры.
- Путать экспрессию и наличие гена. Ген есть во всех клетках; экспрессия — насколько он активен здесь.
- Видеть смысл в каждом кластере. Часть кластеров — шум; биологическую осмысленность надо проверять.
Итог
- Экспрессия — активность гена (количество его мРНК); матрица экспрессии — «гены × условия».
- Похожесть профилей измеряют расстоянием; близкие гены кластеризуют вместе.
- Кластеризация и снижение размерности — это машинное обучение, перенесённое на биоданные.
- Нормализация обязательна: иначе кластеры отразят артефакты, а не биологию.