Автор:
Желтова Полина Артёмовна

В современной биологии и медицине анализ экспрессии генов является ключевой методологией для понимания молекулярных механизмов развития различных заболеваний, особенно злокачественных опухолей. Развитие высокопроизводительных технологий секвенирования РНК позволило исследователям одновременно анализировать уровни экспрессии тысяч генов в различных типах тканей и физиологических условиях. Однако эффективная обработка и интерпретация таких больших объёмов данных требует применения специализированных биоинформатических методов и программных инструментов.

Глобальная эпидемиологическая ситуация с онкологическими заболеваниями подчеркивает необходимость разработки новых методов диагностики и молекулярного анализа. По данным Всемирной организации здравоохранения, в 2022 году зарегистрировано около 20 миллионов новых случаев рака и почти 10 миллионов смертей от этого заболевания. Прогнозы указывают на дальнейший рост заболеваемости, что делает актуальной разработку инструментов для анализа молекулярных профилей опухолей.

Кластерный анализ данных экспрессии генов позволяет выявлять группы генов с подобными паттернами активности, что способствует пониманию регуляторных механизмов, идентификации биомаркеров и разработке персонализированных терапевтических стратегий. Создание доступного программного приложения с интуитивным графическим интерфейсом делает мощные методы машинного обучения доступными для широкого круга исследователей, не обладающих глубокими навыками программирования.

Настоящая работа посвящена разработке программного приложения для кластерного анализа данных экспрессии генов с использованием алгоритма K-means, обеспечивающего загрузку данных, выполнение кластеризации, визуализацию результатов в виде графиков и тепловых карт, а также предоставляющего интерактивный пользовательский интерфейс для управления процессом анализа.

Первый раздел

Цель работы

Целью данной работы является разработка и тестирование программного приложения для кластерного анализа данных экспрессии генов, объединяющего:

  • Алгоритм машинного обучения K-means для группировки генов по паттернам экспрессии

  • Инструменты визуализации результатов (графики экспрессии, тепловые карты)

  • Интуитивный графический интерфейс для управления процессом анализа

  • Возможность итеративного уточнения кластеров и сохранения результатов

Актуальность

Актуальность работы обусловлена несколькими факторами:

Медицинская значимость. Изучение различий в экспрессии генов между опухолевыми и нормальными тканями критично для понимания молекулярных механизмов онкогенеза, выявления потенциальных терапевтических мишеней и разработки диагностических биомаркеров.

Технологический прогресс. Современные технологии секвенирования генерируют огромные объёмы данных, требующие эффективных вычислительных инструментов для анализа и интерпретации.

Доступность инструментов. Разработка программных решений с графическим интерфейсом делает сложные биоинформатические методы доступными для биологов и медицинских исследователей без глубоких навыков программирования.

Персонализированная медицина. Кластерный анализ молекулярных профилей способствует стратификации пациентов и разработке персонализированных терапевтических подходов.

Решаемые задачи

В рамках работы решены следующие задачи:

  1. Реализация алгоритма K-means для кластеризации генов на 4 группы на основе трёх ключевых признаков: медианной экспрессии в опухолевой ткани (median_tum), медианной экспрессии в нормальной ткани (median_norm) и статистики теста Манна-Уитни (M_W).

  2. Разработка модуля загрузки и предварительной обработки данных экспрессии генов и статистических данных из CSV-файлов.

  3. Создание инструментов визуализации результатов: построение графиков экспрессии для каждого кластера и генерация тепловых карт для анализа паттернов экспрессии.

  4. Проектирование и реализация интерактивного графического интерфейса на базе библиотеки tkinter с функциональностью управления процессом анализа, повторной кластеризации выбранных групп и сохранения результатов.

3. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ КЛАСТЕРНОГО АНАЛИЗА ЭКСПРЕССИИ ГЕНОВ

1.1. Концепция экспрессии генов и дифференциальный анализ

Экспрессия генов представляет собой процесс, при котором информация, закодированная в последовательности ДНК, используется для синтеза функциональных продуктов – матричной РНК (мРНК) и белков. Уровень экспрессии конкретного гена отражает его транскрипционную активность и может значительно варьироваться в зависимости от типа клетки, стадии развития организма, условий окружающей среды и наличия патологических процессов.

Дифференциальная экспрессия генов (Differential Gene Expression, DGE) означает статистически или биологически значимое различие в уровне экспрессии конкретного гена между двумя или более условиями. В онкологических исследованиях типичной задачей является сравнение профилей экспрессии между опухолевыми и нормальными тканями для выявления генов, чья дисрегуляция связана с развитием и прогрессией рака.

Ключевые статистические показатели при анализе дифференциальной экспрессии включают:

Медианная экспрессия (median expression). Медиана используется как робастная мера центральной тенденции, менее чувствительная к выбросам по сравнению со средним арифметическим. В контексте данного приложения используются два показателя: median_tum (медианная экспрессия в опухолевой ткани) и median_norm (медианная экспрессия в нормальной ткани).

Тест Манна-Уитни (Mann-Whitney U test, M_W). Непараметрический статистический тест для сравнения двух независимых выборок. Проверяет нулевую гипотезу о том, что распределения двух групп идентичны. В биоинформатике широко применяется для определения статистической значимости различий в экспрессии между опухолевыми и нормальными образцами.

Анализ дифференциальной экспрессии позволяет выявить гены, которые сверхэкспрессированы или подавлены в опухолевых тканях. Тканеспецифичные гены, как правило, подавляются в раковых клетках, что согласуется с представлением о раке как процессе дедифференцировки. Напротив, гены, связанные с пролиферацией клеток, выживанием и ангиогенезом, часто сверхэкспрессируются в опухолях.

1.2. Методы измерения экспрессии генов

1.2.1. Технология микрочипов

Технология ДНК-микрочипов (gene expression microarrays) произвела революцию в геномных исследованиях, позволив одновременно анализировать экспрессию тысяч генов. Принцип работы основан на гибридизации между иммобилизованными на твердой подложке ДНК-зондами и флуоресцентно меченными молекулами комплементарной ДНК (кДНК), полученными из образца мРНК.

Основные этапы анализа на микрочипах:

  1. Выделение мРНК из исследуемых образцов

  2. Обратная транскрипция мРНК в кДНК

  3. Фрагментация и мечение кДНК флуоресцентными красителями

  4. Гибридизация меченой кДНК с зондами на микрочипе

  5. Сканирование и количественный анализ интенсивности флуоресцентных сигналов

Преимущества микрочипов включают высокую пропускную способность, относительно низкую стоимость на один ген и отработанные протоколы анализа. Однако технология имеет ограничения: ограниченный динамический диапазон измерений, необходимость предварительного знания последовательностей исследуемых генов и высокий уровень фонового шума.

1.2.2. RNA-seq – современный стандарт секвенирования

RNA-секвенирование (RNA-seq) представляет собой современную технологию высокопроизводительного секвенирования молекул РНК, которая вытесняет микрочипы в качестве золотого стандарта анализа транскриптома. RNA-seq основан на прямом секвенировании комплементарных ДНК, полученных из РНК, что позволяет получить как качественную, так и количественную информацию о составе транскриптома.

Преимущества RNA-seq перед микрочипами:

  • Высокая разрешающая способность при измерении уровней экспрессии

  • Широкий динамический диапазон (до 6 порядков величины)

  • Обнаружение новых транскриптов без предварительных знаний о последовательностях

  • Выявление альтернативного сплайсинга и изоформ генов

  • Точное определение границ транскриптов и их структуры

  • Возможность количественного анализа без необходимости в стандартных кривых

RNA-seq генерирует миллионы коротких прочтений (reads), которые затем картируются на референсный геном или транскриптом. Количество прочтений, соответствующих каждому гену, пропорционально его экспрессии в образце. Полученные данные требуют сложной биоинформатической обработки, включая нормализацию, статистический анализ и визуализацию.

1.3. Кластерный анализ в биоинформатике

Кластерный анализ представляет собой метод группировки объектов на основе их сходства, при котором объекты внутри каждой группы (кластера) более похожи друг на друга, чем на объекты из других групп. В контексте анализа экспрессии генов кластеризация позволяет выявлять группы генов с подобными паттернами экспрессии, что указывает на возможную функциональную взаимосвязь и совместную регуляцию.

Алгоритм K-means является одним из наиболее популярных и широко применяемых методов кластеризации благодаря своей простоте, вычислительной эффективности и хорошей масштабируемости. Алгоритм направлен на разбиение N наблюдений на K кластеров таким образом, чтобы минимизировать внутрикластерную дисперсию – сумму квадратов расстояний между точками данных и центроидами (средними точками) их кластеров.

Основные этапы работы алгоритма K-means:

  1. Инициализация: Случайный выбор K начальных центроидов из набора данных

  2. Назначение: Каждому объекту присваивается кластер с ближайшим центроидом (обычно используется евклидово расстояние)

  3. Обновление: Пересчёт центроидов как среднего значения всех объектов, принадлежащих каждому кластеру

  4. Итерация: Повторение шагов 2-3 до достижения сходимости (когда назначения кластеров больше не изменяются или изменения минимальны)

В контексте анализа экспрессии генов применение K-means позволяет решать следующие задачи:

Функциональная аннотация генов. Гены с похожими паттернами экспрессии часто участвуют в одних и тех же биологических процессах. Кластеризация позволяет аннотировать функции неизвестных генов на основе их принадлежности к кластеру с известными генами.

Идентификация регуляторных механизмов. Совместно экспрессирующиеся гены могут регулироваться общими транскрипционными факторами. Анализ промоторных последовательностей генов внутри одного кластера может выявить общие регуляторные элементы.

Классификация образцов. Кластеризация профилей экспрессии образцов (а не генов) позволяет выявлять молекулярные подтипы заболеваний и группы пациентов с различными клиническими характеристиками.

Уменьшение размерности данных. Группировка генов в кластеры позволяет представить сложные данные экспрессии в более компактной форме для последующего анализа.

Для эффективного применения K-means к данным экспрессии генов критически важна предварительная обработка данных, включающая:

  • Нормализацию данных для устранения технических вариаций

  • Стандартизацию (z-score нормализацию) для приведения признаков к единой шкале

  • Фильтрацию генов с низкой вариабельностью экспрессии

  • Логарифмическое преобразование для стабилизации дисперсии

В разработанном приложении для кластеризации используются три ключевых признака: median_tum (медианная экспрессия в опухоли), median_norm (медианная экспрессия в норме) и M_W (статистика теста Манна-Уитни). Эти признаки отражают как абсолютные уровни экспрессии, так и статистическую значимость различий между опухолевыми и нормальными тканями.

4. РАЗРАБОТКА ПРОГРАММНОГО ПРИЛОЖЕНИЯ

2.1. Архитектура приложения и технический стек

Разработанное приложение для кластерного анализа экспрессии генов построено по модульному принципу, разделяющему логику обработки данных и пользовательский интерфейс. Такая архитектура обеспечивает гибкость, возможность тестирования отдельных компонентов и удобство сопровождения кода.

Структура приложения

Приложение состоит из двух основных модулей:

  1. zhelt_functions.py – модуль бизнес-логики, содержащий класс ClusterAnalyzer, который реализует загрузку данных, выполнение кластеризации и генерацию визуализаций.

  2. main.py – модуль пользовательского интерфейса, содержащий класс ClusterAnalysisApp, который создаёт графический интерфейс и обеспечивает взаимодействие пользователя с функциональностью анализа.

Технологический стек

Приложение разработано на языке Python с использованием следующих библиотек:

  • pandas (версия 1.3.5+) – библиотека для работы с табличными данными, обеспечивающая загрузку CSV-файлов, манипуляцию данными и фильтрацию.

  • numpy (версия 1.21.6+) – фундаментальная библиотека для научных вычислений, предоставляющая эффективные структуры данных для работы с массивами.

  • scikit-learn (версия 1.0.2+) – библиотека машинного обучения, предоставляющая реализацию алгоритма K-means и других методов кластеризации.

  • matplotlib (версия 3.5.3+) – библиотека для создания статических, анимированных и интерактивных визуализаций в Python.

  • seaborn (версия 0.11.2+) – высокоуровневая библиотека визуализации на основе matplotlib, специализирующаяся на статистических графиках, включая тепловые карты.

  • tkinter – стандартная библиотека Python для создания графических интерфейсов, не требующая дополнительной установки.

Требования к входным данным

Приложение работает с двумя типами CSV-файлов:

  1. Файл экспрессии генов: Содержит матрицу экспрессии, где строки соответствуют генам, а столбцы – образцам. Обязательный столбец: gene_id (идентификатор гена).

Пример структуры:

text

gene_id,sample1,sample2,sample3,...

GENE001,10.2,8.5,12.1,...

GENE002,5.7,6.2,4.9,...


  1. Файл статистики генов: Содержит статистические характеристики для каждого гена. Обязательные столбцы: gene_id, median_tum, median_norm, M_W.

Пример структуры:

text

gene_id,median_tum,median_norm,M_W

GENE001,15.2,10.1,0.001

GENE002,8.7,7.3,0.045


2.2. Модуль ClusterAnalyzer – ядро анализа данных

Класс ClusterAnalyzer инкапсулирует всю функциональность обработки и анализа данных экспрессии генов. Рассмотрим основные методы класса.

Инициализация и загрузка данных

Метод init() инициализирует объект анализатора с пустыми атрибутами для хранения данных:

  • expression_data – DataFrame с данными экспрессии

  • stats_data – DataFrame со статистическими данными

  • current_clusters – DataFrame с результатами текущей кластеризации

Методы load_expression_data(file_path) и load_stats_data(file_path) загружают данные из CSV-файлов с использованием pandas. Обработка исключений обеспечивает корректное отображение ошибок при проблемах с форматом файлов.

Выполнение кластеризации

Метод perform_clustering(data=None) является центральным методом класса, выполняющим кластерный анализ:

  1. Если параметр data не передан, используются загруженные статистические данные (stats_data)

  2. Извлекаются три признака для кластеризации: median_tum, median_norm, M_W

  3. Создаётся объект KMeans с параметрами n_clusters=4 (число кластеров) и random_state=42 (для воспроизводимости результатов)

  4. Выполняется обучение модели методом fit()

  5. Метки кластеров (0-3) присваиваются каждому гену и добавляются в DataFrame как столбец labels_nse

  6. Результаты сохраняются в атрибут current_clusters для последующего использования

Метод get_cluster_data(cluster_num) извлекает подмножество данных, принадлежащих указанному кластеру, что необходимо для итеративного анализа и построения визуализаций.

Визуализация результатов

Метод create_cluster_plots(data) генерирует графики экспрессии для всех четырёх кластеров:

  1. Создаётся фигура matplotlib с сеткой подграфиков 2×2

  2. Для каждого кластера (0-3) извлекаются соответствующие гены

  3. На каждом подграфике строятся две линии:

    • median_tum (опухолевая ткань) – показывает уровни экспрессии в опухоли

    • median_norm (нормальная ткань) – показывает уровни экспрессии в норме

  4. Добавляются заголовки, легенды и метки осей

  5. Возвращается объект Figure для отображения в интерфейсе

Метод create_heatmap(cluster_num) создаёт тепловую карту экспрессии для выбранного кластера:

  1. Извлекаются гены, принадлежащие указанному кластеру

  2. Из полного набора данных экспрессии фильтруются строки, соответствующие этим генам

  3. Данные транспонируются (гены становятся столбцами, образцы – строками)

  4. Выполняется предварительная обработка: удаление служебных столбцов, приведение к числовому типу

  5. С помощью seaborn.heatmap() создаётся тепловая карта с цветовой схемой 'coolwarm'

  6. Параметры визуализации: vmin=0, vmax=30, center=1 обеспечивают оптимальное отображение диапазона значений

Тепловые карты позволяют визуально оценить паттерны экспрессии множества генов одновременно, выявляя группы с согласованным поведением.

2.3. Модуль ClusterAnalysisApp – графический интерфейс

Класс ClusterAnalysisApp реализует графический пользовательский интерфейс на основе библиотеки tkinter, обеспечивая интуитивное взаимодействие с функциональностью анализа.

Инициализация интерфейса

Метод init(root) инициализирует приложение:

  • Создаёт главное окно с заголовком «Кластерный анализ генов»

  • Инициализирует счётчики итераций (iteration) и исходного кластера (initial_cluster)

  • Создаёт экземпляр ClusterAnalyzer для выполнения расчётов

  • Вызывает create_widgets() для построения интерфейса

Создание элементов управления

Метод create_widgets() формирует основные элементы интерфейса:

  1. Метка и кнопка для загрузки файла экспрессии генов

  2. Метка и кнопка для загрузки файла статистики

  3. Кнопка «Кластерный анализ», изначально неактивная (state=DISABLED)

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

Загрузка файлов

Методы load_expression_file() и load_stats_file() обеспечивают загрузку данных:

  1. Открывается диалоговое окно filedialog.askopenfilename() для выбора CSV-файла

  2. При успешном выборе файла вызывается соответствующий метод анализатора для загрузки данных

  3. Вызывается check_files_loaded() для проверки готовности к анализу

  4. В случае ошибки отображается messagebox с описанием проблемы

Метод check_files_loaded() проверяет, загружены ли оба необходимых файла, и активирует кнопку «Кластерный анализ» при выполнении условия.

Выполнение анализа

Метод perform_initial_clustering() запускает первоначальный анализ:

  • Сбрасывает счётчики итераций и исходного кластера

  • Вызывает perform_clustering() анализатора

  • Отображает результаты через show_results()

Метод perform_clustering_for_cluster(cluster_num) выполняет повторный анализ выбранного кластера:

  • Увеличивает счётчик итераций

  • Запоминает номер исходного кластера (при первой итерации)

  • Извлекает данные выбранного кластера

  • Выполняет кластеризацию для этого подмножества данных

  • Отображает результаты

Эта функциональность позволяет пользователю итеративно углубляться в анализ, последовательно разбивая интересующие кластеры на подгруппы.

Отображение результатов

Метод show_results(data) координирует отображение результатов:

  1. Вызывает show_cluster_plots() для показа графиков

  2. Вызывает show_action_buttons() для отображения панели управления

Метод show_cluster_plots(data) создаёт отдельное окно (Toplevel) с графиками:

  • Формирует заголовок окна с информацией об итерации и исходном кластере

  • Получает объект Figure от анализатора

  • Создаёт canvas для встраивания matplotlib-графика в tkinter-окно

  • Отображает графики

Метод show_action_buttons() создаёт окно с кнопками управления, организованными в три группы:

  1. Повторный анализ кластера: 4 кнопки (1-4), каждая запускает perform_clustering_for_cluster() для соответствующего кластера

  2. Построение тепловой карты: 4 кнопки (1-4), каждая вызывает show_heatmap() для визуализации соответствующего кластера

  3. Сохранение кластера: 4 кнопки (1-4), каждая запускает save_cluster_to_csv() для экспорта данных кластера

Метод show_heatmap(cluster_num) отображает тепловую карту:

  • Получает объект Figure от анализатора

  • Создаёт новое окно Toplevel с соответствующим заголовком

  • Встраивает тепловую карту в окно через FigureCanvasTkAgg

Метод save_cluster_to_csv(cluster_num) сохраняет кластер в файл:

  • Проверяет наличие данных для сохранения

  • Фильтрует данные по номеру кластера

  • Открывает диалог сохранения файла

  • Экспортирует данные в CSV формат через pandas

  • Отображает сообщение об успехе или ошибке

2.4. Визуализация результатов: графики и тепловые карты

Визуализация является критически важным аспектом анализа данных экспрессии генов, позволяя исследователям интуитивно воспринимать сложные паттерны и закономерности.

Графики экспрессии по кластерам

Графики экспрессии отображают профили медианной экспрессии генов в каждом кластере (см. рис. 1). Для каждого кластера построены две линии:

  • Синяя линия представляет median_tum (медианная экспрессия в опухолевой ткани)

  • Оранжевая линия представляет median_norm (медианная экспрессия в нормальной ткани)

Анализ графиков позволяет выявить:

  • Кластеры с генами, сверхэкспрессированными в опухоли (синяя линия выше оранжевой)

  • Кластеры с генами, подавленными в опухоли (синяя линия ниже оранжевой)

  • Кластеры с генами без значительных различий

  • Общие паттерны изменения экспрессии внутри кластеров

Тепловые карты экспрессии

Тепловые карты представляют матрицу экспрессии, где строки соответствуют образцам, столбцы – генам выбранного кластера, а цвет ячейки отражает уровень экспрессии (см. рис. 2):

  • Красный цвет указывает на высокую экспрессию

  • Синий цвет указывает на низкую экспрессию

  • Белый/светлые оттенки – промежуточные значения

Тепловые карты позволяют:

  • Выявлять гены с согласованным поведением экспрессии

  • Идентифицировать подгруппы образцов с подобными профилями

  • Обнаруживать выбросы и аномальные образцы

  • Оценивать гетерогенность опухолевых тканей

Цветовая схема 'coolwarm' обеспечивает интуитивное восприятие: холодные цвета (синие) для низких значений, тёплые (красные) для высоких.