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

Обзор

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

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

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

  • Доступ к подмножеству записей для валидации или последующего анализа.

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

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

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

Ваш исходный файл может иметь следующие специфичные для приложения форматы:

  • FASTA

  • FASTQ

  • СЭМ

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

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

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

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

Прежде чем вы начнете

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

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

Совет

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

Совет

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

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

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

Чтобы создать a 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, а BioIndexedFile объект, а также создает файл индекса с таким же именем, как и исходный файл, но с расширением IDX. Этот файл индекса хранится в текущей папке, поскольку мы указали это место. Однако расположение по умолчанию для файла индекса совпадает с расположением исходного файла.

    Внимание

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

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

Чтобы определить количество записей, индексируемых a 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 объект включает в себя a read метод, который можно использовать для чтения и анализа подмножества записей из вашего исходного файла. read метод анализирует записи с помощью функции интерпретатора, заданной в Interpreter свойство BioIndexedFile объект.

Установите свойство Interpreter

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

Если вы создали объект BioIndexedFile из...Свойство Interpreter...
Исходный файл с специфичным для приложения форматом (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'