В этом примере показано, как работать с 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).
Нажмите кнопку «Вставить Шкалу палитры», чтобы отобразить шкалу цвета тепловой карты.
Чтобы взаимодействовать с дендрограммой, убедитесь, что 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 генов отфильтрованных данных [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.