Высокопроизводительные инструменты секвенирования дают большие объемы считанных данных, которые могут быть трудными для хранения и управления. Использование объектов, содержащих эти данные, позволяет вам легко получить доступ к данным, управлять ими и фильтровать их.
Bioinformatics Toolbox™ включает два объекта для работы с данными считывания последовательности.
Объект | Содержит эту информацию | Конструкция из одного из этих |
---|---|---|
BioRead
|
| |
BioMap
|
|
A BioRead
объект представляет набор чтений последовательности. Каждый элемент объекта связан с последовательностью, заголовком последовательности и информацией о качестве последовательности.
Создайте a BioRead
объект одним из двух способов:
Индексированные - данные остаются в исходном файле. Построение объекта и доступ к его содержимому является эффективной памятью. Однако вы не можете изменять свойства объекта, кроме Name
свойство. Это метод по умолчанию, если вы создаете BioRead
объект из FASTQ- или SAM-форматированного файла.
В памяти - данные считываются в память. Построение объекта и доступ к его содержимому ограничивается объемом доступной памяти. Однако можно изменять свойства объекта. Когда вы создаете BioRead
объект из структуры FASTQ или массивов ячеек, данные считываются в память. Когда вы создаете BioRead
объект из FASTQ- или SAM-форматированного файла, используйте InMemory
аргумент пары "имя-значение" для чтения данных в память.
Примечание
Этот пример создает 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
объект.
A BioMap
объект представляет набор чтений последовательности, сопоставленных с одной ссылочной последовательностью. Каждый элемент объекта связан с последовательностью чтения, заголовком последовательности, информацией о качестве последовательности и информацией о выравнивании/отображении.
При построении BioMap
объект из файла BAM, максимальный размер файла ограничен операционной системой и доступной памятью.
Создайте a BioMap
объект одним из двух способов:
Индексированные - данные остаются в исходном файле. Построение объекта и доступ к его содержимому является эффективной памятью. Однако вы не можете изменять свойства объекта, кроме Name
свойство. Это метод по умолчанию, если вы создаете BioMap
объект из сам- или BAM-форматированного файла.
В памяти - данные считываются в память. Построение объекта и доступ к его содержимому ограничивается объемом доступной памяти. Однако можно изменять свойства объекта. Когда вы создаете BioMap
объект из структуры, данные остаются в памяти. Когда вы создаете BioMap
объект из файла САМ- или БАМ-форматированного, используйте InMemory
аргумент пары "имя-значение" для чтения данных в память.
Примечание
Этот пример создает BioMap
объект из файла с форматированием SAM. Используйте аналогичные шаги, чтобы создать BioMap
объект из файла в формате BAM.
Если вы не знаете количества и имен ссылочных последовательностей в вашем исходном файле, определите их с помощью saminfo
или baminfo
функции и ScanDictionary
аргумент пары "имя-значение".
samstruct = saminfo('ex2.sam', 'ScanDictionary', true); samstruct.ScannedDictionary
ans = 'seq1' 'seq2'
Совет
Предыдущий синтаксис сканирует весь файл SAM, что занимает много времени. Если вы уверены, что информация Заголовка файла SAM верна, опустите ScanDictionary
аргумент пары "имя-значение" и осмотр SequenceDictionary
вместо этого поле.
Используйте 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, используя samread
. Используйте аналогичные шаги, чтобы создать BioMap
объект из структуры BAM с использованием bamread
.
Используйте samread
функция для создания структуры SAM из файла с форматированием SAM:
SAMStruct = samread('ex2.sam');
Чтобы создать допустимое BioMap
объект из файла в формате SAM, файл должен содержать только одну ссылочную последовательность. Определите количество и имена ссылочных последовательностей в файле с форматированием SAM с помощью unique
функция для поиска уникальных имен в ReferenceName
поле структуры:
unique({SAMStruct.ReferenceName})
ans = 'seq1' 'seq2'
Используйте 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
объект, используйте Header
свойство следующим образом:
allHeaders = BRObj1.Header;
Этот синтаксис возвращает массив ячеек, содержащий заголовки для всех элементов в BioRead
объект.
Точно так же, чтобы извлечь все начальные положения выровненных последовательностей чтения из BioMap
объект, используйте Start
свойство объекта:
allStarts = BMObj1.Start;
Этот синтаксис возвращает вектор, содержащий начальные положения выровненных последовательностей чтения относительно номеров позиций в ссылочной последовательности в BioMap
объект.
Можно получить несколько свойств из a BioRead
или BioMap
объект в одной команде с использованием get
способ. Например, чтобы извлечь и начальные положения, и заголовки информации о BioMap
объект, используйте get
способ следующим образом:
multiProp = get(BMObj1, {'Start', 'Header'});
Этот синтаксис возвращает массив ячеек, содержащий все начальные положения и информацию о заголовках a 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-форматированный вектор символов) для последовательности
Последовательность
Счета качества для позиций последовательности
Изменение свойств (кроме 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
объект.
При работе с 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'
САМ- и BAM-форматированные файлы включают статус 11 двоичных флагов для каждой последовательности чтения. Эти флаги описывают различные аспекты секвенирования и выравнивания последовательности чтения. Для получения дополнительной информации о флагах см. «Спецификация формата SAM». The filterByFlag
метод позволяет вам фильтровать считанные последовательности в BioMap
объект при помощи этих флагов.
Создайте a BioMap
объект из файла с форматированием SAM.
BMObj2 = BioMap('ex1.sam');
Используйте filterByFlag
метод для создания логического вектора, указывающий считанные последовательности в BioMap
сопоставленный объект.
LogicalVec_mapped = filterByFlag(BMObj2, 'unmappedQuery', false);
Используйте этот логический вектор и getSubset
метод для создания нового BioMap
объект, содержащий только сопоставленные последовательности чтения.
filteredBMObj_1 = getSubset(BMObj2, LogicalVec_mapped);
Создайте a BioMap
объект из файла с форматированием SAM.
BMObj2 = BioMap('ex1.sam');
Используйте filterByFlag
метод для создания логического вектора, указывающий считанные последовательности в BioMap
объект, который сопоставлен в правильной паре, то есть и последовательность чтения, и ее совмещение сопоставлены с ссылочной последовательностью.
LogicalVec_paired = filterByFlag(BMObj2, 'pairedInMap', true);
Используйте этот логический вектор и getSubset
метод для создания нового BioMap
объект, содержащий только последовательности чтения, которые отображены в правильной паре.
filteredBMObj_2 = getSubset(BMObj2, LogicalVec_paired);