Работа с Affymetrix® Data

В этом примере показано, как использовать функции в Bioinformatics Toolbox™ для работы с данными Affymetrix® GeneChip®.

О файлах данных Affymetrix

Функциональный affyread может считать четыре типа файлов данных Affymetrix. Это Dat-файлы, которые содержат необработанные данные изображения, файлы CEL, которые содержат информацию о значениях интенсивности отдельных зондов, файлы CHP, которые содержат информацию о тестовых наборах и файлы EXP, которые содержат информацию об экспериментальных условиях и протоколах. affyread может также считать файлы библиотеки CDF и GIN. CDF-файл содержит информацию, о которой принадлежат зонды, к которому тестовый набор и файл GIN содержат информацию о тестовых наборах, таких как название гена, с которым сопоставлен тестовый набор. Чтобы узнать больше о фактических файлах, можно загрузить файлы выборочных данных с сайта поддержки Affymetrix. Большинство наборов данных хранится в архивах DTT. Чтобы извлечь DAT, CEL и файлы CHP, необходимо будет установить Инструмент Передачи данных.

Загрузка E. coli Набор данных Антисмысла

В данном примере вам будут нужны некоторые файлы выборочных данных (DAT, CEL, CHP) от E. coli Массив Генома Антисмысла. Загрузите их с Извлечения Demo_Data_E-coli-antisense.zip файлы данных из архива DTT использование Инструмента Передачи данных. Установите переменную exampleDataDir к имени пути и директории, к которой вы извлекли файлы выборочных данных.

exampleDataDir = 'C:\Examples\affydemo\data';

Загрузка E. coli Файлы Библиотеки Антисмысла

В дополнение к файлам данных вам также будет нужен Ecoli_ASv2. CDF и Ecoli_ASv2. GIN, файлы библиотеки для E. coli Массив Генома Антисмысла. У вас могут уже быть эти файлы, если у вас есть какое-либо программное обеспечение Affymetrix GeneChip, установленное на вашей машине. В противном случае получите файлы библиотеки путем загрузки и разархивации E. coli zip-файл Генома Антисмысла Массивов

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

Только необходимо разархивировать файлы, вы не должны запускать файл Setup.exe в архиве.

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

libDir = 'C:\Examples\affydemo\libfiles';

Файлы изображений (dat-файлы)

Необработанные данные изображения с помощью сканера чипа сохранены в Dat-файле. Если вы используете affyread чтобы считать Dat-файл, вы будете видеть, что он создает структуру MATLAB®.

datStruct = affyread(fullfile(exampleDataDir,'Ecoli-antisense-121502.dat'))
datStruct = 

  struct with fields:

               Name: 'Ecoli-antisense-121502.dat'
           DataPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data'
            LibPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data'
       FullPathName: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data/Ecoli-antisense-121502.dat'
           ChipType: 'Ecoli_ASv2'
    NumPixelsPerRow: 4733
            NumRows: 4733
            MinData: 0
            MaxData: 46108
          PixelSize: 3
         CellMargin: 2
          ScanSpeed: 17
           ScanDate: '13-Aug-0001 11:31:58'
          ScannerID: ''
         UpperLeftX: 231
         UpperLeftY: 235
        UpperRightX: 4492
        UpperRightY: 253
         LowerLeftX: 220
         LowerLeftY: 4501
        LowerRightX: 4482
        LowerRightY: 4519
         ServerName: ''
              Image: [4733x4733 uint16]

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

datStruct.NumRows
ans =

        4733

Отображение файла изображения

Можно использовать imagesc команда, чтобы отобразить изображение.

datFigure = figure;
imagesc(datStruct.Image);

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

colormap pink

Можно увеличить масштаб конкретной области при помощи инструмента Zoom In с мышью, или при помощи axis команда. Заметьте, что это расширяет ось Y.

axis([1900 2800 160 650])

Можно использовать axis image команда, чтобы установить правильное соотношение сторон.

axis image
axis([1900 2800 160 650])

Тестовые файлы результатов (файлы CEL)

Информация о каждом зонде на чипе извлечена из данных изображения программным обеспечением анализа изображения Affymetrix. Информация хранится в файле CEL. affyread читает файл CEL в структуру. Заметьте, что многие поля совпадают с теми в структуре DAT.

celStruct = affyread(fullfile(exampleDataDir,'Ecoli-antisense-121502.CEL'))
celStruct = 

  struct with fields:

                Name: 'Ecoli-antisense-121502.CEL'
            DataPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data'
             LibPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data'
        FullPathName: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data/Ecoli-antisense-121502.CEL'
            ChipType: 'Ecoli_ASv2'
                Date: '01-Feb-2013 11:55:24'
         FileVersion: 3
           Algorithm: 'Percentile'
           AlgParams: 'Percentile:75;CellMargin:2;OutlierHigh:1.500;OutlierLow:1.004'
        NumAlgParams: 4
          CellMargin: 2
                Rows: 544
                Cols: 544
           NumMasked: 0
         NumOutliers: 115
           NumProbes: 295936
          UpperLeftX: 231
          UpperLeftY: 235
         UpperRightX: 4492
         UpperRightY: 253
          LowerLeftX: 220
          LowerLeftY: 4501
         LowerRightX: 4482
         LowerRightY: 4519
    ProbeColumnNames: {8x1 cell}
              Probes: [295936x8 single]

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

celFigure = figure;
maimage(celStruct)

Снова, можно увеличить масштаб определенной области.

axis([200 340 0 70])

Если вы сравните изображение, созданное из файла CEL и изображения, созданного из Dat-файла, вы заметите, что изображение CEL является более низким разрешением. Это вызвано тем, что в этом изображении существует только один пиксель за зонд, тогда как изображение Dat-файла имеет много пикселей на зонд.

Структуры создаются affyread может быть очень большим. Это - хорошая идея очистить их из памяти, если они больше не необходимы.

clear datStruct
close(datFigure); close(celFigure);

Probes поле структуры CEL содержит информацию об отдельных зондах. Существует восемь значений на зонд. Они хранятся в ProbeColumnNames поле структуры.

celStruct.ProbeColumnNames
ans =

  8x1 cell array

    {'PosX'     }
    {'PosY'     }
    {'Intensity'}
    {'StdDev'   }
    {'Pixels'   }
    {'Outlier'  }
    {'Masked'   }
    {'ProbeType'}

Таким образом, если вы смотрите на одну строку Probes поле структуры CEL вы будете видеть, что восемь значений соответствуют X положениям, Y положение, интенсивность, и т.д.

celStruct.Probes(1:10,:)
ans =

  10x8 single matrix

   1.0e+04 *

  Columns 1 through 7

         0         0    0.0082    0.0030    0.0036         0         0
    0.0001         0    1.4202    0.3160    0.0036         0         0
    0.0002         0    0.0080    0.0014    0.0030         0         0
    0.0003         0    1.4760    0.2265    0.0036         0         0
    0.0004         0    0.0050    0.0014    0.0036         0         0
    0.0005         0    0.0073    0.0015    0.0036         0         0
    0.0006         0    1.3595    0.2367    0.0036         0         0
    0.0007         0    0.0087    0.0018    0.0036         0         0
    0.0008         0    1.3284    0.2926    0.0036         0         0
    0.0009         0    0.0104    0.0018    0.0030         0         0

  Column 8

    0.0001
    0.0001
    0.0001
    0.0001
    0.0001
    0.0001
    0.0001
    0.0001
    0.0001
    0.0001

Файлы результатов (файлы CHP)

Файл CHP содержит результаты эксперимента. Они включают средние меры сигнала для каждого тестового набора, как определено программным обеспечением Affymetrix и информацией, о которой тестовые наборы называются как подарок, отсутствующий или крайний и p-значения для этих вызовов.

chpStruct = affyread(fullfile(exampleDataDir,'Ecoli-antisense-121502.CHP'),libDir)
chpStruct = 

  struct with fields:

               Name: 'Ecoli-antisense-121502.CHP'
           DataPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data'
            LibPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/libfiles'
       FullPathName: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/data/Ecoli-antisense-121502.CHP'
           ChipType: 'Ecoli_ASv2'
          AssayType: 'Expression'
               Date: '01-Feb-2013 11:55:24'
           CellFile: 'c:\documents and settings\bkolou\desktop\demo_data_e-coli-antisense\Ecoli-antisense-121502.CEL'
          Algorithm: 'ExpressionStat'
         AlgVersion: '5.0'
       NumAlgParams: 13
          AlgParams: 'SFGene=All SF=5.578290 NF=1.000000 TGT=500 Perturbation=1.1 Gamma2L=0.006 Gamma2H=0.006 Gamma1L=0.0045 Gamma1H=0.0045 Tau=0.015 Alpha2=0.065 Alpha1=0.05 BF= '
     NumChipSummary: 3
        ChipSummary: 'RawQ=1.62 Noise=Avg:1.33,Stdev:0.20,Max:1.7,Min:1.0 Background=Avg:42.81,Stdev:1.91,Max:46.5,Min:38.1 '
    BackgroundZones: [1x1 struct]
               Rows: 544
               Cols: 544
       NumProbeSets: 7312
     NumQCProbeSets: 0
          ProbeSets: [7312x1 struct]

ProbeSets поле содержит информацию о тестовых наборах. Это включает некоторую информацию о библиотеке, такую как ID и тип тестового набора, и также заканчивается информация, такая как расчетное значение сигналов и Present/Absent/Marginal вызовите информацию. Вызов дан в Detection поле структуры ProbeSets. Набор зонда 'argG_b3172_at' называется как являющийся 'Present'.

chpStruct.ProbeSets(5213)
ans = 

  struct with fields:

                  Name: 'argG_b3172_at'
          ProbeSetType: 'Expression'
        CompDataExists: 0
              NumPairs: 15
          NumPairsUsed: 15
                Signal: 127.6070
             Detection: 'Present'
       DetectionPValue: 0.0134
           CommonPairs: []
        SignalLogRatio: []
     SignalLogRatioLow: []
    SignalLogRatioHigh: []
                Change: []
          ChangePValue: []

Однако набор зонда 'IG_2069_3319273_3319712_rev_at' называется 'Absent'.

chpStruct.ProbeSets(5216)
ans = 

  struct with fields:

                  Name: 'IG_2069_3319273_3319712_rev_at'
          ProbeSetType: 'Expression'
        CompDataExists: 0
              NumPairs: 15
          NumPairsUsed: 15
                Signal: 35.0037
             Detection: 'Absent'
       DetectionPValue: 0.2661
           CommonPairs: []
        SignalLogRatio: []
     SignalLogRatioLow: []
    SignalLogRatioHigh: []
                Change: []
          ChangePValue: []

И набор зонда 'yhbX_b3173_at' называется 'Крайний'.

chpStruct.ProbeSets(5215)
ans = 

  struct with fields:

                  Name: 'yhbX_b3173_at'
          ProbeSetType: 'Expression'
        CompDataExists: 0
              NumPairs: 15
          NumPairsUsed: 15
                Signal: 147.7237
             Detection: 'Marginal'
       DetectionPValue: 0.0559
           CommonPairs: []
        SignalLogRatio: []
     SignalLogRatioLow: []
    SignalLogRatioHigh: []
                Change: []
          ChangePValue: []

Можно вычислить, сколько тестовых наборов называется как являющийся 'Present',

numPresent = sum(strcmp('Present',{chpStruct.ProbeSets.Detection}))
numPresent =

        4605

'Absent',

numAbsent = sum(strcmp('Absent',{chpStruct.ProbeSets.Detection}))
numAbsent =

        2524

и 'Marginal'.

numMarginal = sum(strcmp('Marginal',{chpStruct.ProbeSets.Detection}))
numMarginal =

   183

maboxplot отобразит диаграмму log2 значений сигналов для всех тестовых наборов.

maboxplot(chpStruct,'Signal','title',chpStruct.Name)

Файлы библиотеки (CDF-файлы)

Файл CHP дает итоговую информацию о тестовых наборах, но если вы хотите более подробную информацию о том, как отдельные зонды в тестовом наборе ведут себя, необходимо соединить тестовую информацию в файле CEL к соответствующим тестовым наборам. Эта информация хранится в файле библиотеки CDF, сопоставленном с типом чипа. CDF-файлы обычно хранятся в директории центральной библиотеки.

cdfStruct = affyread('Ecoli_ASv2.cdf',libDir)
cdfStruct = 

  struct with fields:

                   Name: 'Ecoli_ASv2.cdf'
               ChipType: 'Ecoli_ASv2'
                LibPath: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/libfiles'
           FullPathName: '/mathworks/hub/qe/test_data/Bioinformatics_Toolbox/v000/demoData/affydemo/libfiles/Ecoli_ASv2.cdf'
                   Date: '04-Feb-2013 11:14:01'
                   Rows: 544
                   Cols: 544
           NumProbeSets: 7312
         NumQCProbeSets: 13
    ProbeSetColumnNames: {6x1 cell}
              ProbeSets: [7325x1 struct]

Большая часть информации в файле о тестовых наборах. В этом примере существует 7 312 регулярных тестовых наборов и 13 наборов зонда Qc. ProbeSets поле структуры 7325x1 массив структур.

cdfStruct.ProbeSets
ans = 

  7325x1 struct array with fields:

    Name
    ProbeSetType
    CompDataExists
    NumPairs
    NumQCProbes
    QCType
    GroupNames
    ProbePairs

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

probeSetIndex = 5213;
cdfStruct.ProbeSets(probeSetIndex)
ans = 

  struct with fields:

              Name: 'argG_b3172_at'
      ProbeSetType: 'Expression'
    CompDataExists: 0
          NumPairs: 15
       NumQCProbes: 0
            QCType: 0
        GroupNames: {'argG_b3172_at'}
        ProbePairs: [15x6 int32]

Информация о том, где зонды для тестового набора находятся на чипе, хранится в ProbePairs поле . Это - матрица с одной строкой для каждой тестовой пары и шести столбцов. Информация в столбцах соответствует ProbeSetColumnNames из структуры CDF.

cdfStruct.ProbeSetColumnNames
cdfStruct.ProbeSets(probeSetIndex).ProbePairs
ans =

  6x1 cell array

    {'GroupNumber'}
    {'Direction'  }
    {'PMPosX'     }
    {'PMPosY'     }
    {'MMPosX'     }
    {'MMPosY'     }


ans =

  15x6 int32 matrix

     1     2   430   177   430   178
     1     2   431   177   431   178
     1     2   432   177   432   178
     1     2   433   177   433   178
     1     2   434   177   434   178
     1     2   435   177   435   178
     1     2   436   177   436   178
     1     2   437   177   437   178
     1     2   438   177   438   178
     1     2   439   177   439   178
     1     2   440   177   440   178
     1     2   441   177   441   178
     1     2   442   177   442   178
     1     2   443   177   443   178
     1     2   444   177   444   178

Первый столбец показывает тестовый номер группы. Второй столбец показывает тестовое направление. Номер группы всегда 1 для массивов выражения. Направление 1 соответствует 'смыслу', и 2 соответствует 'антисмыслу'. Остальные столбцы дают координаты X и Y премьер-министра и зондов MM на чипе. Можно использовать эти координаты, чтобы найти индекс зонда в celStruct.

PMX = cdfStruct.ProbeSets(probeSetIndex).ProbePairs(1,3);
PMY = cdfStruct.ProbeSets(probeSetIndex).ProbePairs(1,4);
theProbe = find((celStruct.Probes(:,1) == PMX) & ...
                       (celStruct.Probes(:,2) == PMY))
theProbe =

       96719

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

celStruct.Probes(theProbe,:)
ans =

  1x8 single row vector

  Columns 1 through 7

  430.0000  177.0000  169.0000   35.4000   25.0000         0         0

  Column 8

    1.0000

Если вы хотите сделать этот поиск для всех зондов, можно использовать функциональный probelibraryinfo. Это создает матрицу с одной строкой на зонд и три столбца. Первый столбец является индексом тестового набора, которому принадлежит зонд. Второй столбец содержит тестовый парный индекс, и третий столбец указывает, является ли зонд идеальной парой (1), или не сочетайтесь (-1) зонд. Заметьте, что индекс тестового парного индекса равняется 1 базирующемуся.

probeinfo = probelibraryinfo(celStruct,cdfStruct);

probeinfo(theProbe,:)
ans =

        5213           1           1

Функциональный probesetvalues делает реверс этого поиска и создает матрицу информации от CEL и структур CDF, содержащих всю информацию о данном тестовом наборе. Эта матрица имеет 20 столбцов, соответствующих ProbeSetNumber, ProbePairNumber, UseProbePairФон, PMPosX, PMPosY, PMIntensity, PMStdDev, PMPixels, PMOutlier, PMMasked, MMPosX, MMPosY, MMIntensity, MMStdDev, MMPixels, MMOutlier, MMMasked, Group, и Direction.

probeName = cdfStruct.ProbeSets(probeSetIndex).Name;
psvals = probesetvalues(celStruct,cdfStruct,probeName);
sprintf( ['%4d %2d %d %d  PM: %3d %3d %5.1f %5.1f %2d %d %d',...
          '  MM: %3d %3d %5.1f %5.1f %2d %d %d %d %d\n'],psvals')
ans =

    '5212  0 0 4.543512e+01  PM: 430 177 169.0  35.4 25 0 0  MM: 430 178 163.5  24.1 30 0 0 1 2
     5212  1 0 4.545356e+01  PM: 431 177 127.3  21.8 30 0 0  MM: 431 178 100.3  14.6 36 0 0 1 2
     5212  2 0 4.547230e+01  PM: 432 177 127.0  23.7 30 0 0  MM: 432 178 175.0  28.6 36 0 0 1 2
     5212  3 0 4.549129e+01  PM: 433 177 133.3  25.9 36 0 0  MM: 433 178  94.0  22.7 30 0 0 1 2
     5212  4 0 4.551051e+01  PM: 434 177 212.3  43.3 36 0 0  MM: 434 178 171.8  36.5 30 0 0 1 2
     5212  5 0 4.552995e+01  PM: 435 177 149.5  27.5 36 0 0  MM: 435 178 154.0  30.3 30 0 0 1 2
     5212  6 0 4.554958e+01  PM: 436 177  50.3  11.2 30 0 0  MM: 436 178  46.0   9.8 25 0 0 1 2
     5212  7 0 4.556938e+01  PM: 437 177 152.5  37.7 36 0 0  MM: 437 178 107.0  21.0 36 0 0 1 2
     5212  8 0 4.558934e+01  PM: 438 177 164.5  31.2 36 0 0  MM: 438 178  97.3  21.9 36 0 0 1 2
     5212  9 0 4.560939e+01  PM: 439 177 126.0  23.4 36 0 0  MM: 439 178 121.3  25.3 36 0 0 1 2
     5212 10 0 4.562955e+01  PM: 440 177  54.0  11.2 36 0 0  MM: 440 178  54.0  12.9 36 0 0 1 2
     5212 11 0 4.564975e+01  PM: 441 177  83.3  17.4 36 0 0  MM: 441 178  62.3  12.5 36 0 0 1 2
     5212 12 0 4.566998e+01  PM: 442 177  95.5  17.1 30 0 0  MM: 442 178  84.0  18.6 30 0 0 1 2
     5212 13 0 4.569022e+01  PM: 443 177 110.0  19.6 36 0 0  MM: 443 178  92.5  22.0 36 0 0 1 2
     5212 14 0 4.571042e+01  PM: 444 177 251.0  46.0 36 0 0  MM: 444 178 111.8  20.7 36 0 0 1 2
     '

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

pmIntensity = psvals(:,7);
mmIntensity = psvals(:,14);
boxplot([pmIntensity,mmIntensity],'labels',{'Perfect Match','Mismatch'})
title(sprintf('Boxplot of raw intensity values for probe set %s',...
    probeName),'interpreter','none')
% Use interpreter none to prevent the TeX interpreter treating the _ as
% subscript.

Графический вывод зонда Установки значений

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

figure
plot(pmIntensity,'b'); hold on
plot(mmIntensity,'r'); hold off
title(sprintf('Probe intensity values for probe set %s',...
    probeName),'interpreter','none')

В качестве альтернативы можно использовать функциональный probesetplot создать этот график непосредственно из CEL и структур CDF. showstats опция добавляет среднее значение и линии для +/-одно стандартное отклонение и для идеальной пары и для зондов несоответствия к графику.

probesetplot(celStruct,cdfStruct,probeName,'showstats',true);

Названия генов и тестовые идентификаторы набора

Идентификаторы набора зонда Affymetrix не являются особенно описательными. Отображение между тестовыми идентификаторами набора и генными идентификаторами хранится в файле библиотеки GIN. Это - текстовый файл, таким образом, можно открыть его в редакторе и просмотреть файл, или можно использовать affyread считывать информации в структуру.

ginStruct = affyread('Ecoli_ASv2.GIN',libDir)
ginStruct = 

  struct with fields:

            Name: 'Ecoli_ASv2'
         Version: 2
    ProbeSetName: {7312x1 cell}
              ID: {7312x1 cell}
     Description: {7312x1 cell}
     SourceNames: {2x1 cell}
       SourceURL: {2x1 cell}
        SourceID: [7312x1 double]

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

info = probesetlookup(cdfStruct,probeName)
info = 

  struct with fields:

      Identifier: '3315278'
    ProbeSetName: 'argG_b3172_at'
        CDFIndex: 5213
        GINIndex: 3074
     Description: '/start=3316278 /end=3317621 /direction=+ /description=argininosuccinate synthetase'
          Source: 'NCBI EColi Genome'
       SourceURL: 'http://www.ncbi.nlm.nih.gov/cgi-bin/Entrez/altvik?gi=115&db=g&from=3315278'

Получение информации последовательности о тестовом наборе

Функциональный probesetlink соединится с веб-сайтом NetAffx™, чтобы показать фактические последовательности, используемые в зондах. Обратите внимание на то, что необходимо будет быть зарегистрированным пользователем NetAffx, чтобы получить доступ к этой информации.

probesetlink(cdfStruct,probeName);

Affymetrix, GeneChip и NetAffx являются зарегистрированными торговыми марками Affymetrix, Inc.

Для просмотра документации необходимо авторизоваться на сайте