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

Обзор

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

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

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

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

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

  • Файл FASTQ

  • Файл СЭМА

  • Структура FASTQ (созданное использование функции fastqread)

  • Структура SAM (созданное использование функции samread)

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

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

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

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

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

  • Файл СЭМА

  • Файл BAM

  • Структура SAM (созданное использование функции samread)

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

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

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

Предпосылки

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

Создайте объект 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'

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

Внимание

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

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

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

Примечание

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

Представляйте Последовательность, Качество и Данные о Выравнивании/Отображении в Объекте BioMap

Предпосылки

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

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

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

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

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

Создайте объект BioMap из SAM-или отформатированного 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 не изменяйте индексные файлы, или можно получить недопустимые результаты при использовании существующего объекта или построения новых объектов.

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

Примечание

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

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

Примечание

Этот пример создает объект 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

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

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

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

Примечание

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

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

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

Используйте специализировал методы get с числовым вектором, логическим вектором или массивом ячеек заголовков, чтобы получить подмножество информации от объекта. Например, чтобы получить первые 10 элементов из объекта 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 отмечает для последовательности

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

  • Отображение качества выигрывает за последовательность

  • Подпись (отформатированный СИГАРОЙ вектор символов) для последовательности

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

  • Качественная музыка к положениям последовательности

Примечание

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

Для полного списка и описания методов объекта BioRead, смотрите класс BioRead. Для полного списка и описания методов объекта BioMap, смотрите класс BioMap.

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

Предпосылки

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

Обеспечьте пользовательские заголовки для последовательностей

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

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.

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

При работе с объектом 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

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

Отфильтруйте несопоставленные последовательности чтения

  1. Создайте объект 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. Создайте объект BioMap из SAM-отформатированного файла.

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

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

    filteredBMObj_2 = getSubset(BMObj2, LogicalVec_paired);