exponenta event banner

Работа с функцией Clustergram

В этом примере показано, как работать с clustergram функция.

clustergram функция создает тепловую карту с дендрограммами, чтобы показать иерархическую кластеризацию данных. Эти типы тепловых карт стали стандартным методом визуализации данных микрочипов с тех пор, как они были впервые применены Eisen et al. [1]. Этот пример иллюстрирует некоторые из опций clustergram функция. В примере используются данные van 't Veer et al. исследование микрочипов рака молочной железы [2].

Импорт данных

Исследование van 't Veer et al. исследовали, получена ли способность опухоли к метастазированию позже в развитии или присуща исходной сигнатуре экспрессии гена [2]. В исследовании были проанализированы образцы опухолей у 117 молодых пациентов с раком молочной железы, из которых 78 были спорадическими лимфоузлами-отрицательными. Профили экспрессии генов этих 78 пациентов были найдены для прогностических признаков. Из 78 пациентов 44 имели рецидивы в течение пяти лет после хирургического лечения, а 34 имели рецидивы. Образцы гибридизовали с двухцветными олигонуклеотидными микрочипами Agilent ®, представляющими приблизительно 25000 генов человека. Авторы выбрали 4918 значимых генов, которые имели, по меньшей мере, двукратную дифференциальную экспрессию относительно эталона и p-значение для экспрессии < 0,01 в, по меньшей мере, 3 образцах. Используя контролируемую классификацию, авторы выявили плохую сигнатуру экспрессии генов прогноза 231 гена [2].

Подмножество предварительно обработанных данных экспрессии генов из [2] представлено в bc_train_filtered.mat MAT-файл. Включены образцы для 78 пациентов с отрицательным лимфатическим узлом, каждый из которых содержит значения экспрессии генов для 4918 значимых генов. Значения экспрессии генов уже предварительно обработаны путем нормализации и фонового вычитания, как описано в [2].

load bc_train_filtered
bcTrainData
bcTrainData = 

  struct with fields:

       Samples: {78x1 cell}
    Log10Ratio: [4918x78 single]
     Accession: {4918x1 cell}

Список 231 гена в профиле прогноза, предложенный van 't Veer et al. также предусмотрено в bc_proggenes231.mat MAT-файл. Гены упорядочены по их коэффициенту корреляции с прогностическими группами.

load bc_proggenes231

Извлеките значения экспрессии генов для профиля прогноза.

[tf, idx] = ismember(bcProgGeneList.Accession, bcTrainData.Accession);
progValues = bcTrainData.Log10Ratio(idx, :);
progAccession = bcTrainData.Accession(idx);
progSamples = bcTrainData.Samples;

В этом примере вы будете работать с 35 самыми положительными коррелированными генами и 35 самыми отрицательными коррелированными генами.

progValues = progValues([1:35 197:231],:);
progAccession = progAccession([1:35 197:231]);

Объединение в кластеры

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

Матрица данных экспрессии генов, progValues, содержит отсутствующие данные. Они помечены как NaN. Необходимо указать имя функции вменения или дескриптор функции для вменения значений для отсутствующих данных. В этом примере используется процедура вменения k-ближайших соседей, реализованная в функции knnimpute.

cg_s = clustergram(progValues, 'RowLabels', progAccession,...
                               'ColumnLabels', progSamples,...
                               'Cluster', 'Row',...
                               'ImputeFun', @knnimpute)
Clustergram object with 78 columns of nodes.

Дендрограмма в верхней части тепловой карты показывает кластеризацию образцов. Недостающие данные отображаются на тепловой карте серым цветом. Данные были стандартизированы по всем образцам для каждого гена, так что среднее значение равно 0, а стандартное отклонение равно 1.

Проверка и изменение параметров кластеризации

Можно определить и изменить свойства объекта кластерграммы. Например, можно узнать, какая метрика расстояния использовалась в кластеризации.

cg_s.ColumnPDist
ans =

  1x1 cell array

    {'Euclidean'}

Затем можно изменить метрику расстояния для столбцов на correlation.

cg_s.ColumnPDist = 'correlation';

Изменяя метрику расстояния от евклидова до корреляции, образцы опухоли явно группируются в хорошую группу прогноза и плохую группу прогноза.

Чтобы увидеть все свойства кластерграммы, просто используйте get способ.

get(cg_s)
               Cluster: 'ROW'
              RowPDist: {'Euclidean'}
           ColumnPDist: {'correlation'}
               Linkage: {'Average'}
            Dendrogram: {}
      OptimalLeafOrder: 1
              LogTrans: 0
          DisplayRatio: [0.2000 0.2000]
        RowGroupMarker: []
     ColumnGroupMarker: []
        ShowDendrogram: 'on'
           Standardize: 'NONE'
             Symmetric: 1
          DisplayRange: 3
              Colormap: [11x3 double]
             ImputeFun: {@knnimpute}
          ColumnLabels: {1x78 cell}
             RowLabels: {70x1 cell}
    ColumnLabelsRotate: 90
       RowLabelsRotate: 0
              Annotate: 'off'
        AnnotPrecision: 2
            AnnotColor: 'w'
     ColumnLabelsColor: []
        RowLabelsColor: []
     LabelsWithMarkers: 0

Кластеризация строк и столбцов набора данных

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

cg = clustergram(progValues, 'RowLabels', progAccession,...
                             'ColumnLabels', progSamples,...
                             'RowPdist', 'correlation',...
                             'ColumnPdist', 'correlation',...
                             'ImputeFun', @knnimpute)
Clustergram object with 70 rows of nodes and 78 columns of nodes.

Вы также можете изменить dendrogram возможность дифференцировать кластеры генов и кластеры образцов с расстояниями 1 ед.

cg.Dendrogram = 1;

Взаимодействие с тепловой картой

Можно увеличить, уменьшить и панорамировать тепловую карту, выбрав соответствующие кнопки панели инструментов или пункты меню.

Нажмите кнопку «Курсор данных» или выберите «Сервис» > «Курсор данных» для активации Data Cursor Mode. В этом режиме щелкните тепловую карту, чтобы отобразить подсказку данных, показывающую значение экспрессии, метку гена и метку образца текущей точки данных. Можно перетащить всплывающую подсказку данных в другие точки данных в тепловой карте. Чтобы удалить всплывающую подсказку, щелкните правой кнопкой мыши и выберите в контекстном меню команду «Удалить текущую информацию».

Нажмите кнопку «Вставить цветовую шкалу» для отображения цветовой шкалы тепловой карты.

Взаимодействие с дендрограммой

Чтобы взаимодействовать с дендрограммой, убедитесь, что Data Cursor Mode деактивизирован (снова нажмите кнопку Data Cursor). Наведите мышь на дендрограмму. При наведении курсора мыши на узел ветви появляется красный маркер, и ветвь подсвечивается.

Щелкните и удерживайте красный маркер, чтобы отобразить подсказку с номером группы и количеством узлов в группе. Если пространство доступно, на нем также отображаются метки узлов. Например, наведите курсор мыши и щелкните по группе кластеризации дендрограмм образцов.

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

Например, выберите группу 55 из дендрограммы кластеризации генов и экспортируйте ее в рабочую область MATLAB ®, щелкнув правой кнопкой мыши и выбрав Экспортировать группу в рабочую область. Можно просмотреть дендрограммы и тепловую карту для этого объекта clustergram в новом окне Clustergram с помощью view способ.

Изменение цветовой схемы и диапазона отображения

Цветовая схема по умолчанию - красно-зелёная цветовая шкала, широко используемая при анализе данных микрочипов. В этом примере более полезной может быть другая цветовая схема. colormap позволяет указать альтернативную карту цветов.

cg.Colormap = redbluecmap;
cg.DisplayRange = 2;

Добавление цветовых маркеров

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

Создайте структурный массив для аннотирования групп 34 и 50 в генной дендрограмме.

gene_markers = struct('GroupNumber', {34, 50},...
                      'Annotation', {'A', 'B'},...
                      'Color', {'b', 'm'});

Создайте структурный массив для аннотирования групп 63 и 65 образца дендрограммы.

sample_markers = struct('GroupNumber', {63, 65},...
                      'Annotation', {'Recurrences', 'Non-recurrences'},...
                      'Color', {[1 1 0], [0.6 0.6 1]});

Добавьте маркеры в кластерграмму.

cg.RowGroupMarker = gene_markers;
cg.ColumnGroupMarker = sample_markers;

Кластеризация 5000 значимых генов

В этом примере выполняется иерархическая кластеризация почти 5000 генов отфильтрованных данных [2].

cg_all = clustergram(bcTrainData.Log10Ratio,...
                                'RowLabels', bcTrainData.Accession,...
                                 'ColumnLabels', bcTrainData.Samples,...
                                 'RowPdist', 'correlation',...
                                 'ColumnPdist', 'correlation',...
                                 'Displayrange', 0.6,...
                                 'Standardize', 3,...
                                 'ImputeFun', @knnimpute)
Clustergram object with 4918 rows of nodes and 78 columns of nodes.

Совет: При работе с большими наборами данных MATLAB ® может исчерпать память во время кластерных вычислений. Можно преобразовать данные с двойной точностью в данные с одной точностью, используя single функция. Обратите внимание, что данные экспрессии генов в bcTrainData это уже единичная точность.

Можно изменить размер окна кластерграммы, как и любого другого окна MATLAB ® Figure, путем перетаскивания кромки окна щелчком мыши.

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

Ссылки

[1] Eisen, M.B., et al., «Кластерный анализ и отображение паттернов экспрессии по всему геному», PNAS, 95 (25): 14863-8, 1998.

[2] van 't Veer, L., et al., «Профилирование экспрессии генов предсказывает клинический исход рака молочной железы», Nature, 415 (6871): 530-6, 2002.