Многие биологические эксперименты производят огромные файлы данных, к которым трудно получить доступ из-за их размера, что может вызвать проблемы с памятью при чтении файла в MATLAB® Рабочая область. Можно создать BioIndexedFile
объект для доступа к содержимому большого текстового файла, содержащего неоднородные значения размера, такие как последовательности, аннотации и перекрестные ссылки на наборы данных. BioIndexedFile
Объект позволяет быстро и эффективно получить доступ к этим данным без загрузки исходного файла в память.
Вы можете использовать BioIndexedFile
объект для доступа к отдельным записям или подмножеству записей, когда исходный файл слишком велик, чтобы помещаться в память. Вы можете получить доступ к записям с помощью индексов или ключей. Вы можете считать и анализировать одну или несколько записей с помощью предоставленных интерпретаторов или пользовательской функции интерпретатора.
Используйте BioIndexedFile
объект в сочетании с вашим большим исходным файлом для:
Доступ к подмножеству записей для валидации или последующего анализа.
Анализируйте записи с помощью пользовательской функции интерпретатора.
Вы можете использовать BioIndexedFile
объект для доступа к большим текстовым файлам.
Ваш исходный файл может иметь следующие специфичные для приложения форматы:
FASTA
FASTQ
СЭМ
Ваш исходный файл также может иметь следующие общие форматы:
Table - таблица с разделителем табуляцией с несколькими столбцами. Ключи могут находиться в любом столбце. Строки с тем же ключом рассматриваются как отдельные записи.
Multi-row Table - таблица с разделителем табуляцией с несколькими столбцами. Ключи могут находиться в любом столбце. Смежные строки с тем же ключом рассматриваются как одна запись. Несмежные строки с одним и тем же ключом считаются отдельными записями.
Flat - плоский файл с конкатенированными записями, разделенными вектором символов, обычно //
. Внутри записи ключ отделяется от остальной части записи белым пространством.
Перед построением BioIndexedFile
найдите исходный файл на жестком диске или в локальной сети.
Когда вы создаете BioIndexedFile
объект из вашего исходного файла впервые, вы также создаете вспомогательный файл индекса, который по умолчанию сохраняется в том же месте, что и ваш исходный файл. Однако, если ваш исходный файл находится только для чтения, можно указать другое место для сохранения индекса файла.
Совет
Если вы создаете BioIndexedFile
объект из вашего исходного файла в последующих случаях использует преимущества существующего индексного файла, что экономит время. Однако файл индекса должен находиться в том же месте или в том же месте, указанном в последующем синтаксисе конструкции.
Совет
Если недостаточная память не является проблемой при доступе к исходному файлу, можно попробовать соответствующую функцию чтения, такую как genbankread
, для импорта данных из GenBank® файлов.
Кроме того, несколько функций чтения, таких как fastaread
, fastqread
, samread
, и sffread
включить Blockread
свойство, которое позволяет вам считать подмножество записей из файла, таким образом сохраняя память.
Чтобы создать a BioIndexedFile
объект из файла таблицы с несколькими строками:
Создайте переменную, содержащую полный абсолютный путь к вашему исходному файлу. Для вашего исходного файла используйте yeastgenes.sgd
файл, который включен в программное обеспечение Bioinformatics Toolbox™.
sourcefile = which('yeastgenes.sgd');
Используйте BioIndexedFile
функция конструктора для создания BioIndexedFile
объект из yeastgenes.sgd
исходный файл, являющийся файлом таблицы с несколькими строками. Сохраните файл индекса в текущей папке. Укажите, что ключи исходного файла указаны в столбце 3. Кроме того, укажите, что линии заголовка в исходном файле предварительно заданы !
, поэтому конструктор игнорирует их.
gene2goObj = BioIndexedFile('mrtab', sourcefile, '.', ... 'KeyColumn', 3, 'HeaderPrefix','!')
BioIndexedFile
конструктор создает gene2goObj
, а BioIndexedFile
объект, а также создает файл индекса с таким же именем, как и исходный файл, но с расширением IDX. Этот файл индекса хранится в текущей папке, поскольку мы указали это место. Однако расположение по умолчанию для файла индекса совпадает с расположением исходного файла.
Внимание
Не изменяйте файл индекса. Если вы измените его, можно получить недопустимые результаты. Кроме того, функция конструктора не может использовать измененный индексный файл для создания будущих объектов из связанного исходного файла.
Чтобы определить количество записей, индексируемых 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
объект.
Перед использованием read
метод, убедитесь, что Interpreter
свойство BioIndexedFile
объект задается соответствующим образом.
Если вы создали объект BioIndexedFile из... | Свойство Interpreter... |
---|---|
Исходный файл с специфичным для приложения форматом (FASTA, FASTQ или SAM) | По умолчанию это указатель на функцию, подходящую для этого типа файла, и обычно не требует от вас его изменения. |
Исходный файл с таблицей, многострочной таблицей или плоским форматом | По умолчанию это [] , что означает, что интерпретатор является анонимной функцией, в которой выход эквивалентен входу. Можно изменить это на указатель на функцию, которая принимает вектор символов одной или нескольких конкатенированных записей и возвращает структуру или массив структур, содержащих интерпретированные данные. |
Существует два способа задать Interpreter
свойство BioIndexedFile
объект:
При построении BioIndexedFile
объект, используйте Interpreter
пара имя/значение свойства
После построения BioIndexedFile
объект, установите Interpreter
свойство
Примечание
Для получения дополнительной информации об установке Interpreter
свойство объекта, см. BioIndexedFile
.
read
метод читает и анализирует подмножество значений, которые вы задаете, используя индексы входа или ключи.
Чтобы быстро найти все условия генной онтологии (GO), связанные с конкретным геном, потому что ключи входа являются именами генов:
Установите Interpreter
свойство gene2goObj
BioIndexedFile
объект указателю на функцию, которая считывает записи и возвращает только столбец, содержащий термин GO. В этом случае интерпретатор является указателем на анонимную функцию, которая принимает векторы символов и извлекает те, которые начинаются с символов GO
.
gene2goObj.Interpreter = @(x) regexp(x,'GO:\d+','match')
Считывайте только записи, которые имеют ключ YAT2, и возвращайте их условия GO.
GO_YAT2_entries = read(gene2goObj, 'YAT2')
GO_YAT2_entries = 'GO:0004092' 'GO:0005737' 'GO:0006066' 'GO:0006066' 'GO:0009437'