主要内容

使用下一代测序数据

概述

许多生物实验产生巨大的数据文件,由于其大小而难以访问,这可能导致在将文件读入MATLAB时出现内存问题®工作区。你可以构造一个BioIndexedFile对象来访问包含大小不一条目的大型文本文件的内容,如序列、注释和对数据集的交叉引用。的BioIndexedFile对象允许您快速有效地访问该数据,而无需将源文件加载到内存中。

你可以使用BioIndexedFile对象在源文件太大而无法放入内存时访问单个项或项的子集。您可以使用索引或键来访问条目。您可以使用提供的解释器或自定义解释器函数读取和解析一个或多个条目。

使用BioIndexedFile对象与你的大源文件结合,以:

  • 访问条目的子集以进行验证或进一步分析。

  • 使用自定义解释器函数解析条目。

你可以访问哪些文件?

你可以使用BioIndexedFile对象来访问大型文本文件。

你的源文件可以有以下特定于应用程序的格式:

  • FASTA

  • FASTQ

  • 山姆

你的源文件也可以有这些通用格式:

  • 表格-用tab分隔的多列表。键可以在任何列中。具有相同键的行被视为单独的条目。

  • 多行表-用tab分隔的多列表。键可以在任何列中。具有相同键的连续行被视为单个条目。具有相同键的不连续行被认为是单独的条目。

  • -通常由字符向量分隔的连接条目的平面文件//.在条目中,键与条目的其余部分用空格分隔。

在你开始之前

之前构建一个BioIndexedFile对象,在硬盘驱动器或本地网络上找到源文件。

当你构造一个BioIndexedFile对象,您还将创建一个辅助索引文件,该文件在默认情况下被保存到与源文件相同的位置。但是,如果源文件位于只读位置,则可以指定另一个位置来保存索引文件。

提示

如果你构造一个BioIndexedFile对象,它将利用现有索引文件,从而节省时间。但是,索引文件必须位于相同的位置或由后续构造语法指定的位置。

提示

如果在访问源文件时内存不足不是问题,那么可以尝试使用适当的读函数,例如genbankread,用于从GenBank导入数据®文件。。

此外,一些读取函数,如fastareadfastqreadsamread,sffread包括一个Blockread属性,该属性允许您从文件中读取条目的子集,从而节省内存。

创建BioIndexedFile对象来访问源文件

构建一个BioIndexedFile对象从多行表文件:

  1. 创建一个变量,包含源文件的完整绝对路径。对于源文件,请使用yeastgenes.sgd文件,该文件包含在生物信息学工具箱™软件中。

    源文件=(“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方法检索源文件中与指定索引对应的条目子集。例如,从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对象包含了一个方法,可以使用该方法从源文件中读取和解析条目的子集。的方法使用指定的解释器函数解析条目翻译财产的BioIndexedFile对象。

设置解释器属性

在使用之前方法,确保翻译财产的BioIndexedFile对象的值。

如果你构造一个BioIndexedFile对象… 解释器属性…
具有特定于应用程序格式(FASTA、FASTQ或SAM)的源文件 默认情况下是适合于该文件类型的函数句柄,通常不需要您更改它。
具有表、多行表或平面格式的源文件 默认情况下是[],这意味着解释器是一个匿名函数,其中输出等同于输入。您可以将其更改为函数的句柄,该函数接受由一个或多个连接条目组成的字符向量,并返回包含解释过的数据的结构或结构数组。

有两种方法来设置翻译财产的BioIndexedFile对象:

  • 当构建BioIndexedFile对象,使用翻译属性名称/属性值对

  • 在构建BioIndexedFile对象,设置翻译财产

请注意

有关设置的更多信息翻译对象的属性,参见BioIndexedFile

读取一个条目子集

方法读取并解析使用条目索引或键指定的条目子集。

例子

快速查找与特定基因相关的所有基因本体论(GO)术语,因为输入键是基因名称:

  1. 设置翻译财产的gene2goObjBioIndexedFile对象转换为函数的句柄,该函数读取条目并仅返回包含GO项的列。在本例中,解释器是一个匿名函数的句柄,该函数接受字符向量并提取以字符开头的字符向量

    gene2goObj。翻译= @(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'