exponenta event banner

Работа с данными секвенирования следующего поколения

Обзор

Во многих биологических экспериментах создаются огромные файлы данных, доступ к которым затруднен из-за их размера, что может вызвать проблемы с памятью при чтении файла в MATLAB ® Workspace. Можно создать BioIndexedFile объект для доступа к содержимому большого текстового файла, содержащего записи неравномерного размера, такие как последовательности, аннотации и перекрестные ссылки на наборы данных. BioIndexedFile объект позволяет быстро и эффективно получать доступ к этим данным без загрузки исходного файла в память.

Вы можете использовать BioIndexedFile объект для доступа к отдельным записям или подмножеству записей, если исходный файл слишком велик для размещения в памяти. Доступ к записям можно получить с помощью индексов или ключей. Можно считывать и анализировать одну или несколько записей с помощью предоставленных интерпретаторов или пользовательской функции интерпретатора.

Используйте BioIndexedFile объект в сочетании с большим исходным файлом для:

  • Доступ к подмножеству записей для проверки или дальнейшего анализа.

  • Анализ записей с помощью пользовательской функции интерпретатора.

К каким файлам можно получить доступ?

Вы можете использовать BioIndexedFile объект для доступа к большим текстовым файлам.

Исходный файл может иметь следующие форматы, зависящие от приложения:

  • FASTA

  • FASTQ

  • СЭМ

Исходный файл также может иметь следующие общие форматы:

  • Таблица - таблица с разделителями табуляции с несколькими столбцами. Ключи могут находиться в любом столбце. Строки с одним и тем же ключом считаются отдельными записями.

  • Многострочная таблица - таблица с разделителями табуляции с несколькими столбцами. Ключи могут находиться в любом столбце. Смежные строки с одним и тем же ключом считаются одной записью. Несмежные строки с одним и тем же ключом считаются отдельными записями.

  • Плоский - плоский файл с объединенными элементами, разделенными символьным вектором, как правило //. В пределах записи ключ отделяется от остальной части записи пробелом.

Перед началом работы

Перед созданием BioIndexedFile найдите исходный файл на жестком диске или в локальной сети.

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

Совет

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

Совет

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

Кроме того, несколько функций считывания, таких как fastaread, fastqread, samread, и sffread включить Blockread свойство, которое позволяет считывать подмножество записей из файла, сохраняя таким образом память.

Создание объекта BioIndexedFile для доступа к исходному файлу

Для построения BioIndexedFile объект из многострочного файла таблицы:

  1. Создайте переменную, содержащую полный абсолютный путь к исходному файлу. Для исходного файла используйте yeastgenes.sgd файл, который входит в состав программного обеспечения Bioinformatics Toolbox™.

    sourcefile = which('yeastgenes.sgd');
  2. Используйте BioIndexedFile функция конструктора для построения BioIndexedFile объект из yeastgenes.sgd исходный файл, который является многострочным файлом таблицы. Сохраните индексный файл в текущей папке. Укажите, что ключи исходного файла находятся в столбце 3. Кроме того, укажите, что строки заголовка в исходном файле имеют предварительный вид !поэтому конструктор игнорирует их.

    gene2goObj = BioIndexedFile('mrtab', sourcefile, '.', ...
                                'KeyColumn', 3, 'HeaderPrefix','!')

    BioIndexedFile конструкторы функций конструктора gene2goObj, a BioIndexedFile , а также создает индексный файл с тем же именем, что и исходный файл, но с расширением IDX. Он сохраняет этот индексный файл в текущей папке, поскольку мы указали это расположение. Однако расположение по умолчанию для индексного файла совпадает с расположением исходного файла.

    Внимание

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

Определение количества записей, индексированных объектом BioIndexedFile

Определение количества записей, индексированных BioIndexedFile объект, используйте NumEntries имущества BioIndexedFile объект. Например, для gene2goObj объект:

gene2goObj.NumEntries
ans =

        6476

Примечание

Список и описание всех свойств объекта см. в разделе BioIndexedFile.

Извлечь записи из исходного файла

Извлеките записи из исходного файла с помощью одного из следующих способов:

  • Индекс записи

  • Ключ ввода

Извлечение записей с помощью индексов

Используйте getEntryByIndex метод для извлечения подмножества записей из исходного файла, соответствующих указанным индексам. Например, извлеките первые 12 записей из yeastgenes.sgd исходный файл:

subset_entries = getEntryByIndex(gene2goObj, [1:12]);

Извлечение записей с помощью ключей

Используйте getEntryByKey метод для извлечения подмножества записей из исходного файла, связанных с указанными ключами. Например, извлеките все записи с ключами AAC1 и AAD10 из yeastgenes.sgd исходный файл:

subset_entries = getEntryByKey(gene2goObj, {'AAC1' 'AAD10'});

Продукция subset_entries - символьный вектор конкатенированных записей. Потому что ключи в yeastgenes.sgd исходные файлы не уникальны, этот метод возвращает все записи, имеющие ключ AAC1 или AAD10.

Чтение записей из исходного файла

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

Установка свойства интерпретатора

Перед использованием read , убедитесь, что Interpreter имущества BioIndexedFile объект установлен соответствующим образом.

Если был создан объект BioIndexedFile из...Свойство Интерпретатор...
Исходный файл со специфичным для приложения форматом (FASTA, FASTQ или SAM)По умолчанию является дескриптором функции, подходящей для данного типа файла и обычно не требующей изменения.
Исходный файл с таблицей, таблицей из нескольких строк или плоским форматомПо умолчанию имеет значение [], что означает, что интерпретатор является анонимной функцией, в которой выходной сигнал эквивалентен входному сигналу. Это можно изменить на дескриптор функции, которая принимает символьный вектор одной или нескольких конкатенированных записей и возвращает структуру или массив структур, содержащих интерпретируемые данные.

Существует два способа установки Interpreter имущества BioIndexedFile объект:

  • При построении BioIndexedFile объект, используйте Interpreter пара имя свойства/значение свойства

  • После построения BioIndexedFile объект, установите Interpreter собственность

Примечание

Дополнительные сведения о настройке Interpreter свойства объекта, см. BioIndexedFile.

Прочитать подмножество записей

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

Пример

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

  1. Установите Interpreter имущества gene2goObj BioIndexedFile объект дескриптору функции, считывающей записи и возвращающей только столбец, содержащий термин GO. В этом случае интерпретатор является дескриптором анонимной функции, которая принимает векторы символов и извлекает те, которые начинаются с символов GO.

    gene2goObj.Interpreter = @(x) regexp(x,'GO:\d+','match')
  2. Считывайте только записи с ключом YAT2 и возвращайте условия GO.

    GO_YAT2_entries = read(gene2goObj, 'YAT2')
    GO_YAT2_entries = 
    
    'GO:0004092' 'GO:0005737' 'GO:0006066' 'GO:0006066' 'GO:0009437'