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

Этот пример показывает, как работать с функцией clustergram.

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

Импортирование данных

Исследование van't Вира и др. занялось расследованиями, получена ли способность к опухоли к метастазу позже в разработке или свойственная от начальной подписи [2] экспрессии гена. Исследование анализировало выборки опухоли от 117 молодых больных раком молочной железы, из которых 78 были спорадический отрицательный лимфатическим узлом. Профили экспрессии гена этих 78 пациентов искались предвещающие подписи. Из этих 78 пациентов, 44 показанных неповторений в течение пяти лет после хирургического лечения, в то время как 34 имел повторения. Выборки были гибридизированы к Agilent® двухцветные микромассивы олигонуклеотида, представляющие приблизительно 25 000 человеческих генов. Авторы выбрали 4 918 значительных генов, которые имели, по крайней мере, двукратное дифференциальное выражение относительно ссылки и p-значения для того, чтобы быть выраженными <0.01 по крайней мере в 3 выборках. При помощи контролируемой классификации авторы идентифицировали плохую подпись экспрессии гена прогноза 231 гена [2].

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

load bc_train_filtered
bcTrainData
bcTrainData = 

  struct with fields:

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

Список 231 гена в профиле прогноза, предложенном van't Виром и др., также предоставлен в MAT-файле bc_proggenes231.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-nearest, реализованную в функциональном knnimpute.

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

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

Осмотр и изменение кластеризирующихся опций

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

cg_s.ColumnPDist
ans =

  1x1 cell array

    {'Euclidean'}

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

cg_s.ColumnPDist = 'correlation';

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

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

Нажмите кнопку Insert Colorbar, чтобы показать цветовую шкалу карты тепла.

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

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

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

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

Например, выберите группу 55 из генной древовидной схемы кластеризации и экспортируйте его в MATLAB® Workspace путем щелчка правой кнопкой по затем выбору Export Group to Workspace. Можно просмотреть древовидные схемы и нагреть карту для этого объекта 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]});

Добавьте маркеры в clustergram.

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

Кластеризация 5 000 значительных генов

В этом примере вы выполните иерархическую кластеризацию почти для 5 000 генов отфильтрованных данных [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 уже являются одинарной точностью.

Можно изменить размер clustergram окна как любое другое Окно рисунка MATLAB® перетаскиванием нажатия кнопки ребро окна.

Если вы хотите еще больше управления кластеризацией, можно использовать кластеризирующиеся функции в Statistics and Machine Learning Toolbox™ непосредственно. Смотрите Аналитический пример Профиля Экспрессии гена для некоторых примеров того, как сделать это.

Ссылки

[1] Эйсен, M. B. и др., "Кластерный анализ и отображение характера экспрессии всего генома", PNAS, 95 (25):14863-8, 1998.

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