Управление данными чтения последовательности в объектах

Обзор

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

Bioinformatics Toolbox™ включает два объекта для работы с данными считывания последовательности.

ОбъектСодержит эту информацию Конструкция из одного из этих
BioRead
  • Заголовки последовательности

  • Чтение последовательностей

  • Качества последовательности (базовый вызов)

  • Файл FASTQ

  • Система SAM файла

  • Структура FASTQ (создается с помощью fastqread функция)

  • Структура SAM (создается с помощью samread функция)

  • Массивы ячеек, содержащие заголовок, последовательность и информацию о качестве (созданные с помощью fastqread функция)

BioMap
  • Заголовки последовательности

  • Чтение последовательностей

  • Качества последовательности (базовый вызов)

  • Информация о выравнивании и отображении последовательности (относительно одной опорной последовательности), включая качество отображения

  • Система SAM файла

  • Файл BAM

  • Структура SAM (создается с помощью samread функция)

  • Структура BAM (создается с использованием bamread функция)

  • Массивы ячеек, содержащие заголовок, последовательность, качество и информацию о сопоставлении/выравнивании (созданные с помощью samread или bamread функция)

Представление данных последовательности и качества в объекте BioRead

Необходимые условия

A BioRead объект представляет набор чтений последовательности. Каждый элемент объекта связан с последовательностью, заголовком последовательности и информацией о качестве последовательности.

Создайте a BioRead объект одним из двух способов:

  • Индексированные - данные остаются в исходном файле. Построение объекта и доступ к его содержимому является эффективной памятью. Однако вы не можете изменять свойства объекта, кроме Name свойство. Это метод по умолчанию, если вы создаете BioRead объект из FASTQ- или SAM-форматированного файла.

  • В памяти - данные считываются в память. Построение объекта и доступ к его содержимому ограничивается объемом доступной памяти. Однако можно изменять свойства объекта. Когда вы создаете BioRead объект из структуры FASTQ или массивов ячеек, данные считываются в память. Когда вы создаете BioRead объект из FASTQ- или SAM-форматированного файла, используйте InMemory аргумент пары "имя-значение" для чтения данных в память.

Создайте объект BioRead из FASTQ- или SAM-форматированного файла

Примечание

Этот пример создает BioRead объект из FASTQ-форматированного файла. Используйте аналогичные шаги, чтобы создать BioRead объект из файла с форматированием SAM.

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

BRObj1 = BioRead('SRR005164_1_50.fastq', 'Name', 'MyObject')
BRObj1 = 

  BioRead with properties:

     Quality: [50x1 File indexed property]
    Sequence: [50x1 File indexed property]
      Header: [50x1 File indexed property]
       NSeqs: 50
        Name: 'MyObject'

Функция конструктора создает a BioRead Объект и, если файл индекса еще не существует, он также создает файл индекса с таким же именем файла, но с расширением .IDX. Этот индексный файл по умолчанию хранится в том же месте, что и исходный файл.

Внимание

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

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

  • Если вы измените исходный файл, удалите файл индекса, поэтому конструктор объекта создает новый файл индекса при построении новых объектов.

Примечание

Потому что вы построили это BioRead объект из исходного файла, вы не можете изменить свойства (кроме Name) BioRead объект.

Представление данных последовательности, качества и выравнивания/отображения в объекте BioMap

Необходимые условия

A BioMap объект представляет набор чтений последовательности, сопоставленных с одной ссылочной последовательностью. Каждый элемент объекта связан с последовательностью чтения, заголовком последовательности, информацией о качестве последовательности и информацией о выравнивании/отображении.

При построении BioMap объект из файла BAM, максимальный размер файла ограничен операционной системой и доступной памятью.

Создайте a BioMap объект одним из двух способов:

  • Индексированные - данные остаются в исходном файле. Построение объекта и доступ к его содержимому является эффективной памятью. Однако вы не можете изменять свойства объекта, кроме Name свойство. Это метод по умолчанию, если вы создаете BioMap объект из сам- или BAM-форматированного файла.

  • В памяти - данные считываются в память. Построение объекта и доступ к его содержимому ограничивается объемом доступной памяти. Однако можно изменять свойства объекта. Когда вы создаете BioMap объект из структуры, данные остаются в памяти. Когда вы создаете BioMap объект из файла САМ- или БАМ-форматированного, используйте InMemory аргумент пары "имя-значение" для чтения данных в память.

Создайте объект BioMap из сам- или BAM-форматированного файла

Примечание

Этот пример создает BioMap объект из файла с форматированием SAM. Используйте аналогичные шаги, чтобы создать BioMap объект из файла в формате BAM.

  1. Если вы не знаете количества и имен ссылочных последовательностей в вашем исходном файле, определите их с помощью saminfo или baminfo функции и ScanDictionary аргумент пары "имя-значение".

    samstruct = saminfo('ex2.sam', 'ScanDictionary', true);
    samstruct.ScannedDictionary
    ans = 
    
        'seq1'
        'seq2'

    Совет

    Предыдущий синтаксис сканирует весь файл SAM, что занимает много времени. Если вы уверены, что информация Заголовка файла SAM верна, опустите ScanDictionary аргумент пары "имя-значение" и осмотр SequenceDictionary вместо этого поле.

  2. Используйте BioMap функция конструктора для создания BioMap объект из файла SAM и установите Name свойство. Поскольку файл в формате SAM в этом примере, ex2.sam, содержит несколько ссылочных последовательностей, используйте SelectRef аргумент пары "имя-значение" для задания одной опорной последовательности, seq1:

    BMObj2 = BioMap('ex2.sam', 'SelectRef', 'seq1', 'Name', 'MyObject')
    BMObj2 = 
    
      BioMap with properties:
    
        SequenceDictionary: 'seq1'
                 Reference: [1501x1 File indexed property]
                 Signature: [1501x1 File indexed property]
                     Start: [1501x1 File indexed property]
            MappingQuality: [1501x1 File indexed property]
                      Flag: [1501x1 File indexed property]
              MatePosition: [1501x1 File indexed property]
                   Quality: [1501x1 File indexed property]
                  Sequence: [1501x1 File indexed property]
                    Header: [1501x1 File indexed property]
                     NSeqs: 1501
                      Name: 'MyObject'

Функция конструктора создает BioMap Объект и, если индекс файлов еще не существует, это также создает один или два файла индекса:

  • При построении из файла с форматированием SAM создается один файл индекса, который имеет то же имя, что и исходный файл, но с расширением .IDX. Этот индексный файл по умолчанию хранится в том же месте, что и исходный файл.

  • При построении из файла в формате BAM создается два файла индекса с таким же именем, что и исходный файл, но с расширением .BAI и с расширением .LINEARINDEX. Эти индексы файлы по умолчанию хранятся в том же месте, что и исходный файл.

Внимание

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

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

  • Если вы измените исходный файл, удалите файлы индекса, поэтому конструктор объекта создает новые файлы индекса при построении новых объектов.

Примечание

Потому что вы построили это BioMap объект из исходного файла, вы не можете изменить свойства (кроме Name и Reference) BioMap объект.

Создайте объект BioMap из структуры SAM или BAM

Примечание

Этот пример создает BioMap объект из структуры SAM, используя samread. Используйте аналогичные шаги, чтобы создать BioMap объект из структуры BAM с использованием bamread.

  1. Используйте samread функция для создания структуры SAM из файла с форматированием SAM:

    SAMStruct = samread('ex2.sam');
    
  2. Чтобы создать допустимое BioMap объект из файла в формате SAM, файл должен содержать только одну ссылочную последовательность. Определите количество и имена ссылочных последовательностей в файле с форматированием SAM с помощью unique функция для поиска уникальных имен в ReferenceName поле структуры:

    unique({SAMStruct.ReferenceName})
    ans = 
    
        'seq1'    'seq2'
    
  3. Используйте BioMap функция конструктора для создания BioMap объект из структуры SAM. Поскольку структура SAM содержит несколько ссылочных последовательностей, используйте SelectRef аргумент пары "имя-значение" для задания одной опорной последовательности, seq1:

    BMObj1 = BioMap(SAMStruct, 'SelectRef', 'seq1')
    
    BMObj1 = 
    
      BioMap with properties:
    
        SequenceDictionary: {'seq1'}
                 Reference: {1501x1 cell}
                 Signature: {1501x1 cell}
                     Start: [1501x1 uint32]
            MappingQuality: [1501x1 uint8]
                      Flag: [1501x1 uint16]
              MatePosition: [1501x1 uint32]
                   Quality: {1501x1 cell}
                  Sequence: {1501x1 cell}
                    Header: {1501x1 cell}
                     NSeqs: 1501
                      Name: ''

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

Вы можете извлечь всю или подмножество информации из BioRead или BioMap объект.

Получение свойства из объекта BioRead или BioMap

Вы можете получить определенное свойство из элементов в BioRead или BioMap объект.

Например, чтобы извлечь все заголовки из BioRead объект, используйте Header свойство следующим образом:

allHeaders = BRObj1.Header;

Этот синтаксис возвращает массив ячеек, содержащий заголовки для всех элементов в BioRead объект.

Точно так же, чтобы извлечь все начальные положения выровненных последовательностей чтения из BioMap объект, используйте Start свойство объекта:

allStarts = BMObj1.Start;

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

Получение нескольких свойств из объекта BioRead или BioMap

Можно получить несколько свойств из a BioRead или BioMap объект в одной команде с использованием get способ. Например, чтобы извлечь и начальные положения, и заголовки информации о BioMap объект, используйте get способ следующим образом:

multiProp = get(BMObj1, {'Start', 'Header'});

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

Примечание

Имена свойства учитываются в регистре.

Для получения списка и описания всех свойств a BioRead объект, см. BioRead класс. Для получения списка и описания всех свойств a BioMap объект, см. BioMap класс.

Получение подмножества информации из объекта BioRead или BioMap

Использование специализированного get методы с числовым вектором, логическим вектором или массивом ячеек заголовков, чтобы получить подмножество информации от объекта. Например, чтобы извлечь первые 10 элементов из a BioRead объект, используйте getSubset метод:

newBRObj = getSubset(BRObj1, [1:10]);

Этот синтаксис возвращает новый BioRead объект, содержащий первые 10 элементов в оригинале BioRead объект.

Для примера, чтобы извлечь первые 12 позиций последовательностей с заголовками SRR005164.1, SRR005164.7 и SRR005164.16, используйте getSubsequence метод:

subSeqs = getSubsequence(BRObj1, ...
          {'SRR005164.1', 'SRR005164.7', 'SRR005164.16'}, [1:12]')
subSeqs = 

    'TGGCTTTAAAGC'
    'CCCGAAAGCTAG'
    'AATTTTGCGGCT'

Например, чтобы получить информацию о третьем элементе в BioMap объект, используйте getInfo метод:

Info_3 = getInfo(BMObj1, 3);

Этот синтаксис возвращает разделенную табуляцией вектор символов, содержащую эту информацию для третьего элемента:

  • Заголовок последовательности

  • Флаги SAM для последовательности

  • Начальное положение выровненной последовательности чтения относительно ссылку последовательности

  • Сопоставление счета качества для последовательности

  • Сигнатура (CIGAR-форматированный вектор символов) для последовательности

  • Последовательность

  • Счета качества для позиций последовательности

Примечание

Имена методов чувствительны к регистру.

Полный список и описание методов BioRead объект, см. BioRead класс. Полный список и описание методов BioMap объект, см. BioMap класс.

Установите информацию в объект BioRead или BioMap

Необходимые условия

Изменение свойств (кроме Name и Reference) a BioRead или BioMap объект, данные должны быть в памяти, а не индексированы. Чтобы убедиться, что данные находятся в памяти, выполните одно из следующих действий:

  • Создайте объект из структуры, как описано в Construct a BioMap Object из SAM или BAM Structure.

  • Создайте объект из исходного файла с помощью InMemory аргумент пары "имя-значение".

Предоставления пользовательских заголовков для последовательностей

Во-первых, создайте объект с данными в памяти:

BRObj1 = BioRead('SRR005164_1_50.fastq','InMemory',true);

Чтобы предоставить пользовательские заголовки для интересующих последовательностей (в этом случае последовательности с 1 по 5), выполните следующее:

BRObj1.Header(1:5) = {'H1', 'H2', 'H3', 'H4', 'H5'};

Также можно использовать setHeader метод:

BRObj1 = setHeader(BRObj1, {'H1', 'H2', 'H3', 'H4', 'H5'}, [1:5]);

Несколько других специализированных set методы позволяют вам задать свойства подмножества элементов в BioRead или BioMap объект.

Примечание

Имена методов чувствительны к регистру.

Полный список и описание методов BioRead объект, см. BioRead класс. Полный список и описание методов BioMap объект, см. BioMap класс.

Определите покрытие последовательности Ссылки

При работе с a BioMap объект, можно определить количество считанных последовательностей, которые:

  • Выровняйте внутри определенной области ссылки последовательности

  • Выровняйте по каждому положению в определенной области ссылки последовательности

Для примера можно вычислить число, индексы и начальные положения считанных последовательностей, которые выравниваются в первых 25 позициях ссылки последовательности. Для этого используйте getCounts, getIndex, и getStart методы:

Cov = getCounts(BMObj1, 1, 25)
Cov =

    12
Indices = getIndex(BMObj1, 1, 25)
Indices =

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
startPos = getStart(BMObj1, Indices)
startPos =

           1
           3
           5
           6
           9
          13
          13
          15
          18
          22
          22
          24

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

Для примера можно также вычислить количество считанных последовательностей, которые выравниваются по каждой из первых 10 позиций ссылки последовательности. Для этого расчета используйте getBaseCoverage метод:

Cov = getBaseCoverage(BMObj1, 1, 10)
Cov =

     1     1     2     2     3     4     4     4     5     5

Конструкция выравниваний последовательности для ссылочной последовательности

Полезно создавать и просматривать выравнивание считанных последовательностей, которые выравниваются к определенной области ссылки последовательности. Также полезно знать, какие последовательности чтения совпадают с этой областью в BioMap объект.

Например, чтобы извлечь выравнивание считанных последовательностей к первым 12 положениям ссылочной последовательности в BioMap объект, используйте getAlignment метод:

[Alignment_1_12, Indices] = getAlignment(BMObj2, 1, 12)
Alignment_1_12 =

CACTAGTGGCTC
  CTAGTGGCTC
    AGTGGCTC
     GTGGCTC
        GCTC


Indices =

     1
     2
     3
     4
     5

Верните заголовки считанных последовательностей, которые выравниваются по определенной области ссылочной последовательности:

alignedHeaders = getHeader(BMObj2, Indices)
alignedHeaders = 

    'B7_591:4:96:693:509'
    'EAS54_65:7:152:368:113'
    'EAS51_64:8:5:734:57'
    'B7_591:1:289:587:906'
    'EAS56_59:8:38:671:758'

Фильтруйте последовательности чтения с помощью флагов SAM

САМ- и BAM-форматированные файлы включают статус 11 двоичных флагов для каждой последовательности чтения. Эти флаги описывают различные аспекты секвенирования и выравнивания последовательности чтения. Для получения дополнительной информации о флагах см. «Спецификация формата SAM». The filterByFlag метод позволяет вам фильтровать считанные последовательности в BioMap объект при помощи этих флагов.

Фильтрация несопоставленных последовательностей чтения

  1. Создайте a BioMap объект из файла с форматированием SAM.

    BMObj2 = BioMap('ex1.sam');
  2. Используйте filterByFlag метод для создания логического вектора, указывающий считанные последовательности в BioMap сопоставленный объект.

    LogicalVec_mapped = filterByFlag(BMObj2, 'unmappedQuery', false);
    
  3. Используйте этот логический вектор и getSubset метод для создания нового BioMap объект, содержащий только сопоставленные последовательности чтения.

    filteredBMObj_1 = getSubset(BMObj2, LogicalVec_mapped);

Фильтруйте последовательности чтения, которые не отображены в пару

  1. Создайте a BioMap объект из файла с форматированием SAM.

    BMObj2 = BioMap('ex1.sam');
  2. Используйте filterByFlag метод для создания логического вектора, указывающий считанные последовательности в BioMap объект, который сопоставлен в правильной паре, то есть и последовательность чтения, и ее совмещение сопоставлены с ссылочной последовательностью.

    LogicalVec_paired = filterByFlag(BMObj2, 'pairedInMap', true);
    
  3. Используйте этот логический вектор и getSubset метод для создания нового BioMap объект, содержащий только последовательности чтения, которые отображены в правильной паре.

    filteredBMObj_2 = getSubset(BMObj2, LogicalVec_paired);