Визуализация микроданных массива

Этот пример показывает различные способы исследовать и визуализировать необработанные микроданные массива. Пример использует микроданные массива от исследования экспрессии гена в мозгах мыши [1].

Исследование набора микроданных массива

Браун, V.M et.al. [1] используемые микромассивы, чтобы исследовать шаблоны экспрессии гена в мозгу мыши, в которой фармакологическая модель болезни Паркинсона (PD) была вызвана с помощью метамфетамина. Необработанные данные для этого эксперимента доступны от веб-дополнения до [1] или от веб-сайта Автобуса Экспрессии гена с помощью инвентарного номера GSE30.

Файл mouse_h3pd.gpr содержит данные для одного из микромассивов, используемых в исследовании, в частности от выборки, собранной из воксела H3 мозга в мыши модели болезни Паркинсона (PD). Файл использует формат файла GenePix® GPR. Выборка воксела была маркирована (зеленым) Cy3, и управление (RNA от общего количества, не voxelated, нормальный мозг мыши) было маркировано Cy5.

Отформатированные файлы GPR обеспечивают большой объем информации о массиве включая среднее значение, среднее и стандартное отклонение переднего плана и фоновую интенсивность каждого пятна в длине волны на 635 нм (красный, канал Cy5) и длине волны на 532 нм (зеленый, канал Cy3).

Команда gprread считывает данные из файла в структуру.

pd = gprread('mouse_h3pd.gpr')
pd = 

  struct with fields:

         Header: [1x1 struct]
           Data: [9504x38 double]
         Blocks: [9504x1 double]
        Columns: [9504x1 double]
           Rows: [9504x1 double]
          Names: {9504x1 cell}
            IDs: {9504x1 cell}
    ColumnNames: {38x1 cell}
        Indices: [132x72 double]
          Shape: [1x1 struct]

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

pd.ColumnNames(1:10)
ans =

  10x1 cell array

    {'X'           }
    {'Y'           }
    {'Dia.'        }
    {'F635 Median' }
    {'F635 Mean'   }
    {'F635 SD'     }
    {'B635 Median' }
    {'B635 Mean'   }
    {'B635 SD'     }
    {'% > B635+1SD'}

Можно также получить доступ к первым десяти названиям генов.

pd.Names(1:10)
ans =

  10x1 cell array

    {'AA467053'}
    {'AA388323'}
    {'AA387625'}
    {'AA474342'}
    {'Myo1b'   }
    {'AA473123'}
    {'AA387579'}
    {'AA387314'}
    {'AA467571'}
    {0x0 char  }

Пространственные изображения микроданных массива

Команда maimage может взять структуру микроданных массива и создать псевдоцветное изображение данных, расположенных в том же порядке как пятна на массиве, т.е. пространственный график микромассива. Поле "F635 Median" показывает средние пиксельные значения для переднего плана красного (Cy5) канал.

figure
maimage(pd,'F635 Median','title',{'Parkinson''s Model','Foreground Median Pixels','Red Channel'})

Поле "F532 Median" соответствует переднему плану зеленого (Cy3) канал.

figure
maimage(pd,'F532 Median','title',{'Parkinson''s Model','Foreground Median Pixels','Green Channel'})

Поле "B635 Median" показывает средние значения для фона красного канала. Заметьте, что очень высокий фон уравнивает правую сторону массива.

figure
maimage(pd,'B635 Median','title',{'Parkinson''s Model','Background Median Pixels','Red Channel'})

"Медиана B532" показывает средние значения для фона зеленого канала.

figure
maimage(pd,'B532 Median','title',{'Parkinson''s Model','Background Median Pixels','Green Channel'})

Можно теперь считать данные полученными для того же мозгового воксела в невылеченной контрольной мыши. В этом случае выборка воксела была маркирована Cy3, и управление (RNA от общего количества, не voxelated мозг) было маркировано Cy5.

wt = gprread('mouse_h3wt.gpr')
wt = 

  struct with fields:

         Header: [1x1 struct]
           Data: [9504x38 double]
         Blocks: [9504x1 double]
        Columns: [9504x1 double]
           Rows: [9504x1 double]
          Names: {9504x1 cell}
            IDs: {9504x1 cell}
    ColumnNames: {38x1 cell}
        Indices: [132x72 double]
          Shape: [1x1 struct]

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

figure
subplot(2,2,1);
maimage(wt,'F635 Median','title',{'Foreground','(Red)'})
subplot(2,2,2);
maimage(wt,'F532 Median','title',{'Foreground','(Green)'})
subplot(2,2,3);
maimage(wt,'B635 Median','title',{'Background','(Red)'})
subplot(2,2,4);
maimage(wt,'B532 Median','title',{'Background','(Green)'})

annotation('textbox','String','Wild Type Median Pixel Values', ...
	'Position', [0.3 0.05 0.9 0.01],'EdgeColor','none','FontSize',12);

Если вы посмотрите на шкалу для фоновых изображений, вы заметите, что фоновые уровни намного выше, чем те для мыши PD и, кажется, существует что-то не случайное влияние на фон канала Cy3 этого понижения. Изменение палитры может иногда обеспечивать больше понимания, что продолжается в графиках псевдоцвета. Для большего количества управления цветом попробуйте функцию colormapeditor. Можно также щелкнуть правой кнопкой по шкале палитры, чтобы поднять различные варианты для изменения палитры графика включая интерактивную перемену палитры.

colormap hot

Команда maimage является простым способом быстро создать псевдоцветные изображения микроданных массива. Однако иногда удобно создать настраиваемые графики с помощью команды imagesc, как показано ниже.

Используйте magetfield, чтобы извлечь данные для среднего поля B532 и поля Indices, чтобы индексировать в Данные. Вы можете, связал интенсивность фонового графика дать больше контраста в изображении.

b532Data = magetfield(wt,'B532 Median');
maskedData = b532Data;
maskedData(b532Data<500) = 500;
maskedData(b532Data>2000) = 2000;

figure
subplot(1,2,1);
imagesc(b532Data(wt.Indices))
axis image
colorbar
title('B532, WT')

subplot(1,2,2);
imagesc(maskedData(wt.Indices))
axis image
colorbar
title('Enhanced B532, WT')

Статистика микромассивов

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

figure
subplot(2,1,1)
maboxplot(pd,'F532 Median','title','Parkinson''s Disease Model Mouse')
subplot(2,1,2)
maboxplot(pd,'B532 Median','title','Parkinson''s Disease Model Mouse')

figure
subplot(2,1,1)
maboxplot(wt,'F532 Median','title','Untreated Mouse')
subplot(2,1,2)
maboxplot(wt,'B532 Median','title','Untreated Mouse')

От диаграмм можно ясно видеть пространственные эффекты в фоновом режиме интенсивность. Блоки номер 1,3,5 и 7 находятся на левой стороне массивов, и блоки номер 2,4,6 и 8 находятся на правой стороне.

Существует два столбца в структуре микроданных массива, маркировал "F635 Median - B635" и "F532 Median - B532". Эти столбцы являются различиями между средним передним планом и средним фоном для канала на 635 нм и канала на 532 нм соответственно. Они дают меру фактических уровней экспрессии. Пространственный эффект менее примечателен в этих графиках.

figure
subplot(2,1,1)
maboxplot(pd,'F635 Median - B635','title','Parkinson''s Disease Model Mouse ')
subplot(2,1,2)
maboxplot(pd,'F532 Median - B532','title','Parkinson''s Disease Model Mouse')

figure
subplot(2,1,1)
maboxplot(wt,'F635 Median - B635','title','Untreated Mouse')
subplot(2,1,2)
maboxplot(wt,'F532 Median - B532','title','Untreated Mouse')

Графики поля точек микроданных массива

Вместо того, чтобы работать с данными в большей структуре, часто легче извлечь данные в отдельные переменные.

cy5Data = magetfield(pd,'F635 Median - B635');
cy3Data = magetfield(pd,'F532 Median - B532');

Простой способ сравнить два канала с графиком loglog. Функциональный maloglog используется, чтобы сделать это. Точки, которые являются выше диагонали в этом графике, соответствуют генам, которые имеют более высокие уровни экспрессии в вокселе H3, чем в мозгу в целом.

figure
maloglog(cy5Data,cy3Data)
title('Loglog Scatter Plot of PD Model');
xlabel('F635 Median - B635 (Control)');
ylabel('F532 Median - B532 (Voxel H3)');
Warning: Zero values are ignored. 
Warning: Negative values are ignored. 

Заметьте, как функция loglog дает некоторые предупреждения об отрицательных и нулевых элементах. Это вызвано тем, что некоторые значения в 'Медиане F635 - B635' и 'Медиана F532 - B532' столбцы являются нулем или меньше, чем нуль. Пятна, где это произошло, могут быть дефектами или пятнами, которым не удалось гибридизировать. Точно так же пятна с положительными, но очень небольшими, различиями между передним планом и фоном также рассматриваются дефектами. Эти предупреждения могут быть отключены с помощью команды warning.

warnState = warning; % Save the current warning state
warning('off','bioinfo:maloglog:ZeroValues');
warning('off','bioinfo:maloglog:NegativeValues');

figure
maloglog(cy5Data,cy3Data)
title('Loglog Scatter Plot of PD Model');
xlabel('F635 Median - B635 (Control)');
ylabel('F532 Median - B532 (Voxel H3)');

warning(warnState); % Reset the warning state

Альтернатива простому игнорированию или отключению предупреждений должна удалить дефекты из набора данных. Это может быть сделано путем нахождения точек, где или красный или зеленый канал имеет значения, меньше чем или равные пороговому значению, например, 10.

threshold = 10;
badPoints = (cy5Data <= threshold) | (cy3Data <= threshold);

Можно затем удалить эти точки и перерисовать график loglog.

cy5Data(badPoints) = []; cy3Data(badPoints) = [];
figure
maloglog(cy5Data,cy3Data)
title('Refined Loglog Scatter Plot of PD Model');
xlabel('F635 Median - B635 (Control)');
ylabel('F532 Median - B532 (Voxel H3)');

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

figure
maloglog(cy5Data,cy3Data,'labels',pd.Names(~badPoints),'factorlines',2)
title('Loglog Scatter Plot of PD Model');
xlabel('F635 Median - B635 (Control)');
ylabel('F532 Median - B532 (Voxel H3)');

Попытайтесь использовать мышь, чтобы нажать на некоторые точки выброса. Вы будете видеть название гена, сопоставленное с точкой. Большинство выбросов ниже y = x строка. На самом деле большинство точек ниже этой строки. Идеально точки должны быть равномерно распределены по обе стороны от этой строки. Для этого, чтобы произойти, должны быть нормированы точки. Можно использовать функцию manorm, чтобы выполнить глобальную среднюю нормализацию.

normcy5 = manorm(cy5Data);
normcy3 = manorm(cy3Data);

Если вы отобразите нормированные данные на графике, то вы будете видеть, что точки более равномерно распределяются о y = x строка.

figure
maloglog(normcy5,normcy3,'labels',pd.Names(~badPoints),'factorlines',2)
title('Normalized Loglog Scatter Plot of PD Model');
xlabel('F635 Median - B635 (Control)');
ylabel('F532 Median - B532 (Voxel H3)');

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

bn_cy5Data = manorm(pd,'F635 Median - B635');
bn_cy3Data = manorm(pd,'F532 Median - B532');

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

bn_cy5Data(bn_cy5Data <= 0) = NaN;
bn_cy3Data(bn_cy3Data <= 0) = NaN;

figure
maloglog(bn_cy5Data,bn_cy3Data,'labels',pd.Names,'factorlines',2)
title('Refined, Normalized Loglog Scatter Plot of PD Model');
xlabel('F635 Median - B635 (Control)');
ylabel('F532 Median - B532 (Voxel H3)');

Функциональный mairplot используется, чтобы создать Интенсивность по сравнению с графиком Отношения для нормированных данных. Если пара "имя-значение" 'PlotOnly' установлена в ложь, можно исследовать данные в интерактивном режиме, такие как выбор указывает, чтобы видеть имена связанных генов, нормировать данные, подсветить названия генов в отрегулированных или вниз отрегулированных списках или изменить значения факторных строк.

mairplot(normcy5,normcy3,'labels',pd.Names(~badPoints),'PlotOnly',true,...
	'title','Intensity vs. Ratio of PD Model');

Можно использовать опцию Normalize для mairplot, чтобы выполнить нормализацию Lowess на данных.

mairplot(normcy5,normcy3,'labels',pd.Names(~badPoints),'PlotOnly',true,...
	'Normalize',true,'title', 'Intensity vs. Ratio of PD Model (Normalized)');

GenePix is a registered trademark of Axon Instruments, Inc.

Ссылки

[1] Браун, V.M., и др., "Мультиплексируйте трехмерное мозговое отображение экспрессии гена в модели мыши болезни Паркинсона", Исследование Генома, 12 (6):868-84, 2002.