Высокопроизводительные инструменты секвенирования создают большие объемы данных для считывания последовательностей, которые могут быть трудными для хранения и управления. Использование объектов, содержащих эти данные, позволяет легко получать доступ к данным, управлять ими и фильтровать их.
Биоинформатика Toolbox™ включает в себя два объекта для работы с данными считывания последовательности.
| Объект | Содержит эту информацию | Конструкция из одного из них |
|---|---|---|
BioRead
|
| |
BioMap
|
|
A BioRead объект представляет коллекцию операций чтения последовательности. Каждый элемент объекта связан с последовательностью, заголовком последовательности и информацией о качестве последовательности.
Построить 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'Функция конструктора создает BioRead и, если индексный файл еще не существует, он также создает индексный файл с тем же именем, но с расширением .IDX. Этот индексный файл по умолчанию хранится в том же расположении, что и исходный файл.
Внимание
Исходный файл и индексный файл всегда должны быть синхронизированы.
После построения BioRead объект, не изменять индексный файл или получить недопустимые результаты при использовании существующего объекта или создании новых объектов.
При изменении исходного файла удалите индексный файл, поэтому конструктор объекта создает новый индексный файл при создании новых объектов.
Примечание
Потому что вы построили это BioRead объект из исходного файла, изменение свойств невозможно (кроме Name) BioRead объект.
A BioMap объект представляет коллекцию считываний последовательности, которая сопоставляется с одной ссылочной последовательностью. Каждый элемент в объекте связан с последовательностью считывания, заголовком последовательности, информацией о качестве последовательности и информацией выравнивания/отображения.
При создании BioMap объект из файла BAM, максимальный размер файла ограничен операционной системой и доступной памятью.
Построить BioMap объект одним из двух способов:
Индексировано - данные остаются в исходном файле. Создание объекта и доступ к его содержимому эффективны с точки зрения памяти. Однако изменить свойства объекта, кроме Name собственность. Этот метод используется по умолчанию при построении BioMap из файла в формате SAM- или BAM.
В памяти - данные считываются в память. Построение объекта и доступ к его содержимому ограничен объемом доступной памяти. Однако можно изменять свойства объекта. При построении BioMap объект из структуры, данные остаются в памяти. При построении BioMap из файла, отформатированного в формате SAM или BAM, используйте 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 объект.
Можно получить несколько свойств из BioRead или BioMap в одной команде с использованием get способ. Например, для получения информации о начальных позициях и заголовках BioMap объект, используйте get способ следующим образом:
multiProp = get(BMObj1, {'Start', 'Header'});Этот синтаксис возвращает массив ячеек, содержащий все начальные позиции и заголовки 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 для последовательности
Начальное положение выровненной последовательности считывания по отношению к исходной последовательности
Оценка качества мэппинга для последовательности
Подпись (символьный вектор в формате CIGAR) для последовательности
Последовательность
Показатели качества для позиций последовательности
Изменение свойств (кроме Name и Reference) BioRead или BioMap , данные должны находиться в памяти, а не индексироваться. Чтобы убедиться, что данные находятся в памяти, выполните одно из следующих действий:
Создайте объект из структуры, как описано в разделе Конструирование объекта BioMap из структуры SAM или BAM.
Создайте объект из исходного файла с помощью 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 объект.
При работе с 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. filterByFlag метод позволяет фильтровать считанные последовательности в BioMap с помощью этих флагов.
Построить BioMap из файла в формате SAM.
BMObj2 = BioMap('ex1.sam');Используйте filterByFlag способ создания логического вектора, указывающего считанные последовательности в BioMap сопоставленные объекты.
LogicalVec_mapped = filterByFlag(BMObj2, 'unmappedQuery', false);
Используйте этот логический вектор и getSubset метод создания нового BioMap объект, содержащий только сопоставленные последовательности чтения.
filteredBMObj_1 = getSubset(BMObj2, LogicalVec_mapped);
Построить BioMap из файла в формате SAM.
BMObj2 = BioMap('ex1.sam');Используйте filterByFlag способ создания логического вектора, указывающего считанные последовательности в BioMap объект, который отображается в соответствующей паре, то есть и последовательность считывания, и его соответствие сопоставляются с ссылочной последовательностью.
LogicalVec_paired = filterByFlag(BMObj2, 'pairedInMap', true);
Используйте этот логический вектор и getSubset метод создания нового BioMap объект, содержащий только те считанные последовательности, которые сопоставлены в правильной паре.
filteredBMObj_2 = getSubset(BMObj2, LogicalVec_paired);