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

Геном одинаков во всех клетках, но работают гены по-разному. Анализ экспрессии измеряет, какие гены активны — и группирует похожие.

Экспрессия гена — мера его активности: сколько мРНК этого гена в клетке. Матрица экспрессии — таблица «гены × условия» со значениями активности.

Геном — это код, но не все его участки выполняются всегда. В нейроне активны одни гены, в клетке печени — другие. Технологии (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-анализ). Так разрозненные навыки — расстояния, кластеризация, статистика поправок — складываются в осмысленный конвейер от сырых данных к биологическому выводу «при этой болезни активируется воспалительный путь».

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

  • Сравнивать ненормализованные данные. Различия в глубине и длине генов исказят кластеры.
  • Путать экспрессию и наличие гена. Ген есть во всех клетках; экспрессия — насколько он активен здесь.
  • Видеть смысл в каждом кластере. Часть кластеров — шум; биологическую осмысленность надо проверять.

Итог

  • Экспрессия — активность гена (количество его мРНК); матрица экспрессии — «гены × условия».
  • Похожесть профилей измеряют расстоянием; близкие гены кластеризуют вместе.
  • Кластеризация и снижение размерности — это машинное обучение, перенесённое на биоданные.
  • Нормализация обязательна: иначе кластеры отразят артефакты, а не биологию.
Проверьте себя
1. Что измеряет экспрессия гена?
AДлину гена
BАктивность гена — сколько его мРНК в клетке
CНаличие гена в геноме
DGC-состав гена
2. Почему гены с похожими профилями экспрессии интересны биологам?
AОни всегда соседи в геноме
BСхожее поведение намекает на общую регуляцию или участие в одном пути
CУ них одинаковая длина
DЭто случайность
3. Почему перед кластеризацией экспрессию нормализуют?
AДля красоты графиков
BЧтобы убрать влияние разной глубины секвенирования и длины генов, иначе кластеры отразят артефакты
CЧтобы уменьшить число генов
DЭто не нужно