Высокопроизводительные инструменты секвенирования дают большие объемы считанных данных, которые могут быть трудными для хранения и управления. Использование объектов, содержащих эти данные, позволяет вам легко получить доступ к данным, управлять ими и фильтровать их.
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.ScannedDictionaryans =
'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);