Анализ Illumina® Bead Summary Gene Expression Data

Этот пример показывает, как анализировать сводные данные Illumina BeadChip экспрессии гена с помощью функций Bioinformatics Toolbox™ и MATLAB®.

Введение

Этот пример показывает, как импортировать и анализировать данные об экспрессии гена из платформы Illumina BeadChip микромассивов. Набор данных в примере от исследования профилей экспрессии гена человеческого сперматогенеза Platts и др. [1]. Уровни экспрессии были измерены на Человеке Illumina Sentrix 6 BeadChips (WG6).

Данные из большинства экспериментов экспрессии гена микромассивов обычно состоят из четырех компонентов: экспериментируйте значения данных, демонстрационная информация, аннотации функции и информация об эксперименте. Вы будете работать с микроданными массива, создать каждый из этих четырех компонентов, собрать их в объект ExpressionSet и найти дифференцированно выраженные гены. Для большего количества примеров о классе ExpressionSet смотрите Работу с Объектами для Данных об Эксперименте Микромассивов.

Импортирование экспериментальных данных от ГЕО базы данных

Выборки были гибридизированы на трех Человеке Illumina Sentrix 6 BeadChips (WG6). Получите ГЕО Серийные данные GSE6967 с помощью функции getgeodata.

TNGEOData = getgeodata('GSE6967')
TNGEOData = 

  struct with fields:

    Header: [1×1 struct]
      Data: [47293×13 bioma.data.DataMatrix]

Структура TNGEOData содержит поля Header и Data. Поле Header имеет два поля, Series и Samples, содержа описание эксперимента и выборок соответственно. Поле Data содержит DataMatrix нормированных итоговых уровней экспрессии из эксперимента.

Определите количество выборок в эксперименте.

nSamples = numel(TNGEOData.Header.Samples.geo_accession)
nSamples =

    13

Осмотрите демонстрационные заголовки от поля Header.Samples.

TNGEOData.Header.Samples.title'
ans =

  13×1 cell array

    {'Teratozoospermic individual: Sample T2'}
    {'Teratozoospermic individual: Sample T1'}
    {'Teratozoospermic individual: Sample T6'}
    {'Teratozoospermic individual: Sample T4'}
    {'Teratozoospermic individual: Sample T8'}
    {'Normospermic individual: Sample N11'   }
    {'Teratozoospermic individual: Sample T3'}
    {'Teratozoospermic individual: Sample T7'}
    {'Teratozoospermic individual: Sample T5'}
    {'Normospermic individual: Sample N6'    }
    {'Normospermic individual: Sample N12'   }
    {'Normospermic individual: Sample N5'    }
    {'Normospermic individual: Sample N1'    }

Для простоты извлеките демонстрационные метки из демонстрационных заголовков.

sampleLabels = cellfun(@(x) char(regexp(x, '\w\d+', 'match')),...
                TNGEOData.Header.Samples.title, 'UniformOutput',false)
sampleLabels =

  1×13 cell array

  Columns 1 through 7

    {'T2'}    {'T1'}    {'T6'}    {'T4'}    {'T8'}    {'N11'}    {'T3'}

  Columns 8 through 13

    {'T7'}    {'T5'}    {'N6'}    {'N12'}    {'N5'}    {'N1'}

Импортирование данных о выражении от сводных файлов Illumina BeadStudio

Загрузите дополнительный файл GSE6967_RAW.tar и разархивируйте файл, чтобы получить доступ к этим 13 текстовым файлам, произведенным программным обеспечением BeadStudio, которые содержат сырые данные, ненормированные значения сводных данных бусинки.

Файлы необработанных данных называют с их инвентарными номерами GSM. В данном примере создайте имена файлов текстовых файлов данных с помощью пути, где текстовые файлы расположены.

rawDataFiles = cell(1,nSamples);
for i = 1:nSamples
    rawDataFiles {i} = [TNGEOData.Header.Samples.geo_accession{i} '.txt'];
end

Установите переменную rawDataPath на путь и директорию, к которой вы извлекли файлы данных.

rawDataPath = 'C:\Examples\illuminagedemo\GSE6967';

Используйте функцию ilmnbsread, чтобы считать первый из сводных файлов и сохранить содержимое в структуре.

rawData = ilmnbsread(fullfile(rawDataPath, rawDataFiles{1}))
rawData = 

  struct with fields:

             Header: [1×1 struct]
           TargetID: {47293×1 cell}
        ColumnNames: {1×8 cell}
               Data: [47293×8 double]
    TextColumnNames: {}
           TextData: {}

Осмотрите имена столбцов в структуре rawData.

rawData.ColumnNames'
ans =

  8×1 cell array

    {'MIN_Signal-1412091085_A' }
    {'AVG_Signal-1412091085_A' }
    {'MAX_Signal-1412091085_A' }
    {'NARRAYS-1412091085_A'    }
    {'ARRAY_STDEV-1412091085_A'}
    {'BEAD_STDEV-1412091085_A' }
    {'Avg_NBEADS-1412091085_A' }
    {'Detection-1412091085_A'  }

Определите количество целевых зондов.

nTargets = size(rawData.Data, 1)
nTargets =

       47293

Считайте ненормированные значения выражения (Avg_Signal), пределы достоверности обнаружения и идентификаторы чипа Sentrix из файлов сводных данных. Значения экспрессии гена идентифицированы с целевыми идентификаторами зонда Illumina. Можно задать столбцы, чтобы читать из файла данных.

rawMatrix = bioma.data.DataMatrix(zeros(nTargets, nSamples),...
                                  rawData.TargetID, sampleLabels);
detectionConf = bioma.data.DataMatrix(zeros(nTargets, nSamples),...
                                      rawData.TargetID, sampleLabels);
chipIDs = categorical([]);

for i = 1:nSamples
    rawData =ilmnbsread(fullfile(rawDataPath, rawDataFiles{i}),...
                                'COLUMNS', {'AVG_Signal', 'Detection'});
    chipIDs(i) = regexp(rawData.ColumnNames(1), '\d*', 'match', 'once');
    rawMatrix(:, i) = rawData.Data(:, 1);
    detectionConf(:,i) = rawData.Data(:,2);
end

Существует три Sentrix BeadChips, используемые в эксперименте. Осмотрите идентификаторы Illumina Sentrix BeadChip в chipIDs, чтобы определить количество выборок, гибридизированных на каждом чипе.

summary(chipIDs)

samplesChip1 = sampleLabels(chipIDs=='1412091085')
samplesChip2 = sampleLabels(chipIDs=='1412091086')
samplesChip3 = sampleLabels(chipIDs=='1477791158')
     1412091085      1412091086      1477791158 
              6               4               3 

samplesChip1 =

  1×6 cell array

    {'T2'}    {'T1'}    {'T6'}    {'T4'}    {'T8'}    {'N11'}


samplesChip2 =

  1×4 cell array

    {'T3'}    {'T7'}    {'T5'}    {'N6'}


samplesChip3 =

  1×3 cell array

    {'N12'}    {'N5'}    {'N1'}

Шесть выборок (T2, T1, T6, T4, T8 и N11) были гибридизированы к шести массивам на первом чипе, четыре выборки (T3, T7, T5 и N6) на втором чипе и трех выборках (N12, N5 и N1) на третьем чипе.

Нормализация данных о выражении

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

logRawExprs = log2(rawMatrix);

maboxplot(logRawExprs, 'Orientation', 'horizontal')
ylabel('Sample Labels')
xlabel('log2(Expression Value)')
title('Before Normalization')

Различие в интенсивности между выборками на том же чипе и выборками на различных микросхемах не кажется слишком большим. Первый BeadChip, содержа выборки T2, T1, T6, T4, T8 и N11, кажется, немного больше переменной, чем другие.

Используя MA и графики XY сделать попарное сравнение массивов на BeadChip может быть информативным. На графике MA среднее значение (A) уровней экспрессии двух массивов построено на оси X и различии (M) в измерении на оси y. График XY является графиком рассеивания одного массива против другого. Этот пример использует функцию помощника maxyplot, чтобы построить графики MAXY для попарного сравнения этих трех массивов на первом чипе, гибридизированном с teratozoospermic выборками (T2, T1 и T6).

Примечание: можно также использовать функцию mairplot, чтобы создать MA или IR (Интенсивность/Отношение) графики для сравнения определенных массивов.

inspectIdx = 1:3;
maxyplot(rawMatrix, inspectIdx)
suptitle('Before Normalization')

В графике MAXY графики MA для всех попарных сравнений находятся в верхнем правом углу. В нижнем левом углу графики XY сравнений. График MAXY показывает эти два массива, T1 и T2, чтобы быть весьма схожим, в то время как отличающийся от другого массива, T6.

Графики поля выражений и графики MAXY показывают, что существуют различия в уровнях экспрессии в микросхемах и между микросхемами; следовательно, данные требуют нормализации. Используйте функцию quantilenorm, чтобы применить нормализацию квантиля к необработанным данным.

Примечание: можно также попробовать инвариантную нормализацию набора с помощью функции mainvarsetnorm.

normExprs = rawMatrix;
normExprs(:, :) = quantilenorm(rawMatrix.(':')(':'));

log2NormExprs = log2(normExprs);

Отобразите и осмотрите нормированные уровни экспрессии в диаграмме.

figure;
maboxplot(log2NormExprs, 'ORIENTATION', 'horizontal')
ylabel('Sample Labels')
xlabel('log2(Expression Value)')
title('After Quantile Normalization')

Отобразите и осмотрите график MAXY этих трех массивов (T2, T1 и T6) на первом чипе после нормализации.

maxyplot(normExprs, inspectIdx)
suptitle('After Quantile Normalization')

Многих генов в этом исследовании не выражают или имеют только маленькую изменчивость через выборки.

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

[mask, log2NormExprs] = genelowvalfilter(log2NormExprs);
detectionConf = detectionConf(mask, :);

Во-вторых, отфильтруйте гены с небольшим отклонением через выборки с помощью genevarfilter.

[mask, log2NormExprs] = genevarfilter(log2NormExprs);
detectionConf = detectionConf(mask, :);

Импорт метаданных функции из файла аннотации BeadChip

Производители микромассивов обычно предоставляют аннотации набора функций каждого типа чипа. Файлы аннотации чипа содержат метаданные, такие как название гена, символ, инвентарный номер NCBI, местоположение хромосомы и информация о трассе. Прежде, чем собрать объект ExpressionSet для эксперимента, получите аннотации о функциях или зондах на BeadChip. Можно загрузить файл аннотации Human_WG-6.csv для Человеческих 6 BeadChips (WG6) Sentrix от Страницы поддержки на веб-сайте Illumina и сохранить файл локально. Считайте файл аннотации в MATLAB как массив dataset. Установите переменную annotPath на путь и директорию, на которую вы загрузили файл аннотации.

annotPath = fullfile('C:\Examples\illuminagedemo\Annotation');
WG6Annot = dataset('xlsfile', fullfile(annotPath, 'Human_WG-6.csv'));

Осмотрите свойства этого массива dataset.

get(WG6Annot)
       Description: ''
    VarDescription: {}
             Units: {}
          DimNames: {'Observations'  'Variables'}
          UserData: []
          ObsNames: {}
          VarNames: {1×13 cell}

Получите имена переменных, описывающих функции на чипе.

fDataVariables = get(WG6Annot, 'VarNames')
fDataVariables =

  1×13 cell array

  Columns 1 through 5

    {'Search_key'}    {'Target'}    {'ProbeId'}    {'Gid'}    {'Transcript'}

  Columns 6 through 10

    {'Accession'}    {'Symbol'}    {'Type'}    {'Start'}    {'Probe_Sequence'}

  Columns 11 through 13

    {'Definition'}    {'Ontology'}    {'Synonym'}

Проверяйте количество тестовых целевых идентификаторов в файле аннотации.

numel(WG6Annot.Target)
ans =

       47296

Поскольку данные о выражении в этом примере являются только маленьким набором полных значений выражения, вы будете работать только с функциями в объекте DataMatrix log2NormExprs. Найдите соответствующие функции в log2NormExprs и WG6Annot.Target.

[commTargets, fI, WGI] = intersect(rownames(log2NormExprs), WG6Annot.Target);

Создание объекта ExpressionSet для экспериментальных данных

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

fNames = rownames(log2NormExprs);
TNExptData = bioma.data.ExptData({log2NormExprs(fI, :), 'ExprsValues'},...
                                 {detectionConf(fI, :), 'DetectionConfidences'})
TNExptData = 

Experiment Data:
  42313 features,  13 samples
  2 elements
  Element names: ExprsValues, DetectionConfidences

Создание объекта ExpressionSet для демонстрационной информации

Выборочные данные в поле Header.Samples структуры TNGEOData могут быть подавляющими и трудными перейти через. От данных в поле Header.Samples можно собрать важную информацию о выборках, таких как демонстрационные заголовки, ГЕО демонстрационные инвентарные номера, и т.д., и сохранить выборочные данные как объект MetaData.

Получите описания о демонстрационных характеристиках.

sampleChars = cellfun(@(x) char(regexp(x, '\w*tile', 'match')),...
               TNGEOData.Header.Samples.characteristics_ch1, 'UniformOutput', false)
sampleChars =

  1×13 cell array

  Columns 1 through 4

    {'Infertile'}    {'Infertile'}    {'Infertile'}    {'Infertile'}

  Columns 5 through 8

    {'Infertile'}    {'Fertile'}    {'Infertile'}    {'Infertile'}

  Columns 9 through 13

    {'Infertile'}    {'Fertile'}    {'Fertile'}    {'Fertile'}    {'Fertile'}

Создайте массив dataset, чтобы сохранить выборочные данные, которые вы только извлекли.

sampleDS = dataset({TNGEOData.Header.Samples.geo_accession', 'GSM'},...
                   {strtok(TNGEOData.Header.Samples.title)', 'Type'},...
                   {sampleChars', 'Characteristics'}, 'obsnames', sampleLabels')
sampleDS = 

           GSM                Type                      Characteristics
    T2     'GSM160620'        'Teratozoospermic'        'Infertile'    
    T1     'GSM160621'        'Teratozoospermic'        'Infertile'    
    T6     'GSM160622'        'Teratozoospermic'        'Infertile'    
    T4     'GSM160623'        'Teratozoospermic'        'Infertile'    
    T8     'GSM160624'        'Teratozoospermic'        'Infertile'    
    N11    'GSM160625'        'Normospermic'            'Fertile'      
    T3     'GSM160626'        'Teratozoospermic'        'Infertile'    
    T7     'GSM160627'        'Teratozoospermic'        'Infertile'    
    T5     'GSM160628'        'Teratozoospermic'        'Infertile'    
    N6     'GSM160629'        'Normospermic'            'Fertile'      
    N12    'GSM160630'        'Normospermic'            'Fertile'      
    N5     'GSM160631'        'Normospermic'            'Fertile'      
    N1     'GSM160632'        'Normospermic'            'Fertile'      

Сохраните демонстрационные метаданные как объект класса MetaData, включая краткое описание для каждой переменной.

TNSData = bioma.data.MetaData(sampleDS,...
    {'Sample GEO accession number',...
    'Spermic type',...
    'Fertility characteristics'})
TNSData = 

Sample Names:
    T2, T1, ...,N1 (13 total)
Variable Names and Meta Information:
                       VariableDescription              
    GSM                'Sample GEO accession number'    
    Type               'Spermic type'                   
    Characteristics    'Fertility characteristics'      

Создание объекта ExpressionSet для аннотаций функции

Набор метаданных функции для Человеческих 6 BeadChips Sentrix является большим и разнообразным. Выберите информацию о функциях, которые уникальны для эксперимента и сохраняют информацию как объект MetaData. Извлеките аннотации интереса, например, Accession и Symbol.

fIdx = ismember(fDataVariables, {'Accession', 'Symbol'});

featureAnnot = WG6Annot(WGI, fDataVariables(fIdx));
featureAnnot = set(featureAnnot, 'ObsNames', WG6Annot.Target(WGI));

Создайте объект MetaData для получения информации об аннотации функции с краткими описаниями о двух переменных метаданных.

WG6FData = bioma.data.MetaData(featureAnnot, ...
            {'Accession number of probe target', 'Gene Symbol of probe target'})
WG6FData = 

Sample Names:
    GI_10047089-S, GI_10047091-S, ...,hmm9988-S (42313 total)
Variable Names and Meta Information:
                 VariableDescription                   
    Accession    'Accession number of probe target'    
    Symbol       'Gene Symbol of probe target'         

Создание объекта ExpressionSet для получения информации об эксперименте

Большинство описаний эксперимента в поле Header.Series структуры TNGEOData может быть реорганизовано и сохранено как объект MIAME, который вы будете использовать, чтобы собрать объект ExpressionSet для эксперимента.

TNExptInfo = bioma.data.MIAME(TNGEOData)
TNExptInfo = 

Experiment Description:
  Author name: Adrian,E,Platts
David,J,Dix
Hector,E,Chemes
Kary,E,Thompson
Robert,,Goodrich
John,C,Rockett
Vanesa,Y,Rawe
Silvina,,Quintana
Michael,P,Diamond
Lillian,F,Strader
Stephen,A,Krawetz
  Laboratory: Wayne State University
  Contact information: Stephen,A,Krawetz
  URL: http://compbio.med.wayne.edu
  PubMedIDs: 17327269
  Abstract: A 82 word abstract is available. Use the Abstract property.
  Experiment Design: A 61 word summary is available. Use the ExptDesign property.
  Other notes: 
    'ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE6nnn/GSE6967/suppl/GSE6967_RAW.tar'

Сборка объекта ExpressionSet

Теперь, когда вы создали все компоненты, можно создать объект класса ExpressionSet сохранить значения выражения, демонстрационную информацию, аннотации функции чипа и информацию об описании об этом эксперименте.

TNExprSet = bioma.ExpressionSet(TNExptData, 'sData', TNSData,...
                                            'fData', WG6FData,...
                                            'eInfo', TNExptInfo)
TNExprSet = 

ExpressionSet
Experiment Data: 42313 features, 13 samples
  Element names: Expressions, DetectionConfidences
Sample Data:
    Sample names:     T2, T1, ...,N1 (13 total)
    Sample variable names and meta information: 
        GSM: Sample GEO accession number
        Type: Spermic type
        Characteristics: Fertility characteristics
Feature Data:
    Feature names:     GI_10047089-S, GI_10047091-S, ...,hmm9988-S (42313 total)
    Feature variable names and meta information: 
        Accession: Accession number of probe target
        Symbol: Gene Symbol of probe target
Experiment Information: use 'exptInfo(obj)'

Примечание: элемент ExprsValues в объекте ExptData, TNExptData, переименован к Expressions в TNGeneExprSet.

Можно сохранить объект класса ExpressionSet как файл MAT для дальнейшего анализа данных.

save TNGeneExprSet TNExprSet

Профилирование экспрессии гена при помощи T-тестов перестановки

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

load TNGeneExprSet

Чтобы идентифицировать дифференциальные изменения на уровнях расшифровок стенограммы в normospermic Ns и teratozoospermic выборках Tz, сравните значения экспрессии гена между двумя группами данных: Tz и Ns.

TNSamples = sampleNames(TNExprSet);
Tz = strncmp(TNSamples, 'T', 1);
Ns = strncmp(TNSamples, 'N', 1);
nTz = sum(Tz)
nNs = sum(Ns)

TNExprs = expressions(TNExprSet);
TzData = TNExprs(:,Tz);
NsData = TNExprs(:,Ns);
meanTzData = mean(TzData,2);
meanNsData = mean(NsData,2);
groupLabels = [TNSamples(Tz), TNSamples(Ns)];
nTz =

     8


nNs =

     5

Выполните t-тест перестановки с помощью функции mattest, чтобы переставить столбцы матрицы данных экспрессии гена TzData и NsData. Примечание: В зависимости от объема выборки, не может быть выполнимо рассмотреть все возможные перестановки. Обычно, случайное подмножество перестановок рассматриваются в случае размера большой выборки.

Используйте функцию nchoosek в Statistics and Machine Learning Toolbox™, чтобы определить количество всех возможных перестановок выборок в этом примере.

perms = nchoosek(1:nTz+nNs, nTz);
nPerms = size(perms,1)
nPerms =

        1287

Используйте опцию PERMUTE функции mattest, чтобы вычислить p-значения всех перестановок.

pValues = mattest(TzData, NsData, 'Permute', nPerms);

Можно также вычислить дифференциальный счет из p-значений с помощью следующей анонимной функции [1].

diffscore = @(p, avgTest, avgRef) -10*sign(avgTest - avgRef).*log10(p);

Дифференциальный счет 13 соответствует p-значению 0,05, дифференциальный счет 20 соответствует p-значению 0,01, и дифференциальный счет 30 соответствует p-значению 0,001. Положительный дифференциальный счет представляет-регулирование, в то время как отрицательный счет представляет вниз-регулирование генов.

diffScores = diffscore(pValues, meanTzData, meanNsData);

Определите количество генов, которые, как рассматривают, имели дифференциальный счет, больше, чем 20. Примечание: можно получить различное количество генов из-за тестового результата перестановки.

up = sum(diffScores > 20)

down = sum(diffScores < -20)
up =

        3741


down =

        3033

Оценка Ложного уровня открытия (FDR)

В нескольких тестирование гипотезы, где мы одновременно тестируем нулевую гипотезу тысяч генов, каждый тест, имеет определенный ложный положительный уровень или ложный уровень открытия (FDR) [2]. Оцените ФРГ и q-значения для каждого теста с помощью функции mafdr.

figure;
[pFDR, qValues] = mafdr(pValues, 'showplot', true);
diffScoresFDRQ = diffscore(qValues, meanTzData, meanNsData);

Определите количество генов с абсолютным дифференциальным счетом, больше, чем 20. Примечание: можно получить различное количество генов из-за теста перестановки и результатов начальной загрузки.

sum(abs(diffScoresFDRQ)>=20)
ans =

        3121

Идентификация Генов, которые Дифференцированно Выражаются

Постройте-log10 p-значений против изменений сгиба в графике вулкана.

diffStruct = mavolcanoplot(TzData, NsData, qValues,...
                                   'pcutoff', 0.01, 'foldchange', 5);

Примечание: Из графика вулкана пользовательский интерфейс, можно в интерактивном режиме изменить сокращение p-значения и предел изменения сгиба, и экспортировать дифференцированно выраженные гены.

Определите количество дифференцированно выраженных генов.

nDiffGenes = numel(diffStruct.GeneLabels)
nDiffGenes =

   451

Получите список отрегулированных генов для выборок Tz по сравнению с выборками Ns.

up_genes = diffStruct.GeneLabels(diffStruct.FoldChanges > 0);
nUpGenes = length(up_genes)
nUpGenes =

   223

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

down_genes = diffStruct.GeneLabels(diffStruct.FoldChanges < 0);
nDownGenes = length(down_genes)
nDownGenes =

   228

Извлеките список дифференцированно выраженных генов.

diff_geneidx = zeros(nDiffGenes, 1);
for i = 1:nDiffGenes
    diff_geneidx(i) = find(strncmpi(TNExprSet.featureNames, ...
                            diffStruct.GeneLabels{i}, length(diffStruct.GeneLabels{i})), 1);
end

Можно получить подмножество данных об эксперименте, содержащих только дифференцированно выраженные гены.

TNDiffExprSet = TNExprSet(diff_geneidx, groupLabels);

Выполнение PCA и кластеризация анализа значительных генных профилей

Анализ главных компонентов (PCA) дифференцированно выраженных генов показывает линейную отделимость выборок Tz от выборок Ns.

PCAScore = pca(TNDiffExprSet.expressions);

Отобразите коэффициенты первых и шестых основных компонентов.

figure;
plot(PCAScore(:,1), PCAScore(:,6), 's', 'MarkerSize',10, 'MarkerFaceColor','g');
hold on
text(PCAScore(:,1)+0.02, PCAScore(:,6), TNDiffExprSet.sampleNames)
plot([0,0], [-0.5 0.5], '--r')
ax = gca;
ax.XTick = [];
ax.YTick = [];
ax.YTickLabel = [];
title('PCA Mapping')
xlabel('Principal Component 1')
ylabel('Principal Component 6')

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

mapcaplot((TNDiffExprSet.expressions)')

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

sampleDist = pdist(TNDiffExprSet.expressions','correlation');
sampleLink = linkage(sampleDist);

figure;
dendrogram(sampleLink, 'labels', TNDiffExprSet.sampleNames,'ColorThreshold',0.5)
ax = gca;
ax.YTick = [];
ax.Box = 'on';
title('Hierarchical Sample Clustering')

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

cmap = redbluecmap(9);
cg = clustergram(TNDiffExprSet.expressions,'Colormap',cmap,'Standardize',2);
addTitle(cg,'Hierarchical Gene Clustering')

Кластеризация наиболее дифференцированно богатых расшифровок стенограммы ясно разделы teratozoospermic (Tz) и normospermic (Ns) spermatozoal РНК.

Ссылки

[1] Platts, A.E., и др., "Успех и провал в человеческом сперматогенезе, как показано teratozoospermic РНК", Человеческая Молекулярная Генетика, 16 (7):763-73, 2007.

[2] Ярус, J.D. и Tibshirani, R., "Статистическое значение для genomewide исследований", PNAS, 100 (16):9440-5, 2003.