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

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

The 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 или выберите инструменты > Data Cursor для активации Data Cursor Mode. В этом режиме щелкните тепловую карту, чтобы отобразить всплывающую подсказку, показывающую значение экспрессии, метку гена и метку образца текущей точки данных. Можно щелкнуть мышью, перетащить всплывающую подсказку в другие точки данных в тепловой карте. Чтобы удалить чаевые данных, щелкните правой кнопкой мыши, затем выберите в контекстном меню Удалить текущие данные (Delete Current Datip).

Нажмите кнопку «Вставить Шкалу палитры», чтобы отобразить шкалу цвета тепловой карты.

Взаимодействие с Dendrogram

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

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

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

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

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

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

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

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

The 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, щелкнув мышью, перетаскивая ребро окна.

Если вы хотите еще больше контролировать кластеризацию, можно использовать функции кластеризации в Statistics and Machine Learning 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.