Хранение и управление аннотациями функций

Представление аннотаций функций в объекте GFFAnotation или GTFAnotation

The GFFAnnotation и GTFAnnotation объекты представляют набор аннотаций функций для одной или нескольких ссылочных последовательностей. Эти объекты создаются из файлов GFF (General Feature Format) и GTF (Gene Transfer Format). Каждый элемент объекта представляет одну аннотацию. Свойства и методы, связанные с объектами, позволяют вам исследовать и фильтровать данные на основе ссылки последовательности, функции (такого как CDS или экзон) или определенного гена или транскрипта.

Создание объекта аннотации

Используйте GFFAnnotation функция конструктора для создания GFFAnnotation объект из GFF- или GTF-форматированного файла:

GFFAnnotObj = GFFAnnotation('tair8_1.gff')
GFFAnnotObj = 

  GFFAnnotation with properties:

    FieldNames: {1x9 cell}
    NumEntries: 3331

Используйте GTFAnnotation функция конструктора для создания GTFAnnotation объект из GTF-форматированного файла:

GTFAnnotObj = GTFAnnotation('hum37_2_1M.gtf')
GTFAnnotObj = 

  GTFAnnotation with properties:

    FieldNames: {1x11 cell}
    NumEntries: 308

Получение общей информации из объекта аннотации

Определите имена полей и количество записей в объекте аннотации путем доступа к FieldNames и NumEntries свойства. Для примера, чтобы увидеть имена полей для каждого объекта аннотации, созданного в предыдущем разделе, запросите FieldNames свойство:

GFFAnnotObj.FieldNames
ans = 

  Columns 1 through 6

   'Reference'   'Start'   'Stop'   'Feature'   'Source'   'Score'

  Columns 7 through 9

   'Strand'   'Frame'   'Attributes'
GTFAnnotObj.FieldNames
ans = 

  Columns 1 through 6

   'Reference'   'Start'   'Stop'   'Feature'   'Gene'   'Transcript'

  Columns 7 through 11

   'Source'   'Score'   'Strand'   'Frame'   'Attributes'

Определите область значений ссылочных последовательностей, которые покрываются аннотациями функций, используя getRange метод с объектом аннотации, созданным в предыдущем разделе:

range = getRange(GFFAnnotObj)
range =

        3631      498516

Доступ к данным в объекте аннотации

Создайте структуру данных аннотации

Создание структуры данных аннотации позволяет вам получить доступ к значениям полей. Используйте getData метод для создания структуры, содержащей подмножество данных в GFFAnnotation объект, созданный в предыдущем разделе.

% Extract annotations for positions 1 through 10000 of the 
% reference sequence
AnnotStruct = getData(GFFAnnotObj,1,10000)
AnnotStruct = 

60x1 struct array with fields:
    Reference
    Start
    Stop
    Feature
    Source
    Score
    Strand
    Frame
    Attributes

Доступ к значениям полей в структуре

Используйте индексацию точек для доступа ко всем или определенным значениям полей в структуре.

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

Starts = AnnotStruct.Start;

Извлеките начальные положения для аннотаций с 12 по 17. Заметьте, что при индексации области значений положений необходимо использовать квадратные скобки:

Starts_12_17 = [AnnotStruct(12:17).Start]
Starts_12_17 =

   4706        5174        5174        5439        5439        5631

Извлеките начальное положение и функцию для 12-й аннотации:

Start_12 = AnnotStruct(12).Start
Start_12 =

        4706
Feature_12 = AnnotStruct(12).Feature
Feature_12 =

CDS

Использование аннотаций функций с данными чтения последовательности

Исследуйте результаты экспериментов по секвенированию HTS с помощью GFFAnnotation и GTFAnnotation объекты с BioMap объекты. Для примера можно:

  • Определите счетчики чтений последовательности, выровненных по областям ссылочной последовательности, сопоставленным со специфическими аннотациями, такими как в рабочих процессах RNA-Seq.

  • Найдите аннотации в определенной области значений пика интереса в ссылочной последовательности, например, в рабочих процессах ChIP-Seq.

Определение интересующих аннотаций

  1. Создайте a GTFAnnotation объект из GTF- форматированного файла:

    GTFAnnotObj = GTFAnnotation('hum37_2_1M.gtf');
    
  2. Используйте getReferenceNames метод для возврата имен для ссылочных последовательностей для объекта аннотации:

    refNames = getReferenceNames(GTFAnnotObj)
    refNames = 
    
        'chr2'
  3. Используйте getFeatureNames метод для извлечения имен функции из объекта аннотации:

    featureNames = getFeatureNames(GTFAnnotObj)
    featureNames = 
    
        'CDS'
        'exon'
        'start_codon'
        'stop_codon'
    
  4. Используйте getGeneNames метод для извлечения списка уникальных имен генов из объекта аннотации:

    geneNames = getGeneNames(GTFAnnotObj)
    geneNames = 
    
        'uc002qvu.2'
        'uc002qvv.2'
        'uc002qvw.2'
        'uc002qvx.2'
        'uc002qvy.2'
        'uc002qvz.2'
        'uc002qwa.2'
        'uc002qwb.2'
        'uc002qwc.1'
        'uc002qwd.2'
        'uc002qwe.3'
        'uc002qwf.2'
        'uc002qwg.2'
        'uc002qwh.2'
        'uc002qwi.3'
        'uc002qwk.2'
        'uc002qwl.2'
        'uc002qwm.1'
        'uc002qwn.1'
        'uc002qwo.1'
        'uc002qwp.2'
        'uc002qwq.2'
        'uc010ewe.2'
        'uc010ewf.1'
        'uc010ewg.2'
        'uc010ewh.1'
        'uc010ewi.2'
        'uc010yim.1'
    

Предыдущие шаги дали нам список доступных ссылочных последовательностейфункций и генов, связанных с доступными аннотациями. Используйте эту информацию для определения интересующих аннотаций. Например, вас могут интересовать только аннотации, которые являются экзонами, связанными с геном uc002qvv.2 в хромосоме 2.

Аннотации к фильтру

Используйте getData метод фильтрации аннотаций и создания структуры, содержащей только интересующие аннотации, которые являются аннотациями, связанными с геном uc002qvv.2 на хромосоме 2.

AnnotStruct = getData(GTFAnnotObj,'Reference','chr2',...
                      'Feature','exon','Gene','uc002qvv.2')
AnnotStruct = 

12x1 struct array with fields:
    Reference
    Start
    Stop
    Feature
    Gene
    Transcript
    Source
    Score
    Strand
    Frame
    Attributes

Структура возврата содержит 12 элементов, что указывает на наличие 12 аннотаций, удовлетворяющих критериям фильтра.

Извлечение областей значений позиций для интересующих аннотаций

После фильтрации данных, чтобы включить только аннотации, которые являются экзонами, связанными с геном uc002qvv.2 в хромосоме 2, используйте поля Start и Stop, чтобы создать векторы начального и конечного положений для областей значений, сопоставленных с 12 аннотациями.

StartPos = [AnnotStruct.Start];
EndPos = [AnnotStruct.Stop];

Определите счетчики чтений последовательности, выровненных по аннотациям

Создайте a BioMap объект из файла в формате BAM, содержащего данные считывания последовательности, выровненные по хромосоме 2.

BMObj3 = BioMap('ex3.bam');

Затем используйте область значений для интересующих аннотаций как вход в getCounts метод a BioMap объект. Это возвращает счетчики коротких чтений, выровненные по интересующим аннотациям.

counts = getCounts(BMObj3,StartPos,EndPos,'independent', true)
counts =

        1399
           1
          54
         221
          97
         125
           0
           1
           0
          65
           9
          12