Bio.SeqIO.FastaIO 模块
Bio.SeqIO 对“fasta”(也称为 FastA 或 Pearson)文件格式的支持。
您应该通过 Bio.SeqIO 函数使用此模块。
- Bio.SeqIO.FastaIO.SimpleFastaParser(handle)
将 Fasta 记录迭代为字符串元组。
- 参数
handle - 以文本模式打开的输入流
对于每个记录,将返回一个包含两个字符串的元组,即 FASTA 标题行(不含前导“>”字符)和序列(去除所有空格)。标题行不会被划分为标识符(第一个单词)和注释或描述。
>>> with open("Fasta/dups.fasta") as handle: ... for values in SimpleFastaParser(handle): ... print(values) ... ('alpha', 'ACGTA') ('beta', 'CGTC') ('gamma', 'CCGCC') ('alpha (again - this is a duplicate entry to test the indexing code)', 'ACGTA') ('delta', 'CGCGC')
- Bio.SeqIO.FastaIO.FastaTwoLineParser(handle)
将无换行 Fasta 记录迭代为字符串元组。
- 参数
handle - 以文本模式打开的输入流
在功能上与 SimpleFastaParser 相同,但严格解释 FASTA 格式,每条记录恰好两行,大于号标识符带描述,序列不换行。
任何换行都会引发异常,多余的空行也会引发异常(除了零长度序列作为记录的第二行这种特殊情况)。
示例
此文件每条 FASTA 记录使用两行
>>> with open("Fasta/aster_no_wrap.pro") as handle: ... for title, seq in FastaTwoLineParser(handle): ... print("%s = %s..." % (title, seq[:3])) ... gi|3298468|dbj|BAA31520.1| SAMIPF = GGH...
此等效文件使用换行
>>> with open("Fasta/aster.pro") as handle: ... for title, seq in FastaTwoLineParser(handle): ... print("%s = %s..." % (title, seq[:3])) ... Traceback (most recent call last): ... ValueError: Expected FASTA record starting with '>' character. Perhaps this file is using FASTA line wrapping? Got: 'MTFGLVYTVYATAIDPKKGSLGTIAPIAIGFIVGANI'
- class Bio.SeqIO.FastaIO.FastaIterator(source: IO[str] | PathLike | str | bytes, alphabet: None = None)
-
Fasta 文件解析器。
- __init__(source: IO[str] | PathLike | str | bytes, alphabet: None = None) None
将 Fasta 记录迭代为 SeqRecord 对象。
- 参数
source - 以文本模式打开的输入流,或指向文件的路径
alphabet - 可选的字母表,未使用。保留为 None。
默认情况下,这将类似于调用 Bio.SeqIO.parse(handle, “fasta”),而不进行自定义的标题行处理
>>> with open("Fasta/dups.fasta") as handle: ... for record in FastaIterator(handle): ... print(record.id) ... alpha beta gamma alpha delta
如果您希望在写入之前修改记录,例如更改每个记录的 ID,可以使用生成器函数,如下所示
>>> def modify_records(records): ... for record in records: ... record.id = record.id.upper() ... yield record ... >>> with open('Fasta/dups.fasta') as handle: ... for record in modify_records(FastaIterator(handle)): ... print(record.id) ... ALPHA BETA GAMMA ALPHA DELTA
- parse(handle)
开始解析文件,并返回 SeqRecord 生成器。
- iterate(handle)
解析文件并生成 SeqRecord 对象。
- __abstractmethods__ = frozenset({})
- __parameters__ = ()
- class Bio.SeqIO.FastaIO.FastaTwoLineIterator(source)
-
每条记录正好两行的 Fasta 文件解析器。
- __init__(source)
将两行 Fasta 记录(作为 SeqRecord 对象)迭代。
- 参数
source - 以文本模式打开的输入流,或指向文件的路径
这使用严格的 FASTA 解释,要求每条记录正好两行(不换行)。
仅提供由宽松的 FASTA 解析器提供的默认标题到 ID/名称/描述解析。
- parse(handle)
开始解析文件,并返回 SeqRecord 生成器。
- iterate(handle)
解析文件并生成 SeqRecord 对象。
- __abstractmethods__ = frozenset({})
- __parameters__ = ()
- class Bio.SeqIO.FastaIO.FastaWriter(target, wrap=60, record2title=None)
-
用于写入 Fasta 格式文件的类(已过时)。
请改用
as_fasta
函数,或使用format="fasta"
改用顶层Bio.SeqIO.write()
函数。- __init__(target, wrap=60, record2title=None)
创建 Fasta 写入器(已过时)。
- 参数
target - 以文本模式打开的输出流,或指向文件的路径。
wrap - 用于换行序列行的可选行长度。默认情况下,将序列在 60 个字符处换行。使用零(或 None)表示不换行,为序列提供一条长线。
record2title - 可选函数,用于返回将用于每个记录的标题行的文本。默认情况下,使用 record.id 和 record.description 的组合。如果 record.description 以 record.id 开头,则仅使用 record.description。
您可以使用
handle = open(filename, "w") writer = FastaWriter(handle) writer.write_file(myRecords) handle.close()
或者,遵循顺序文件写入器系统,例如
handle = open(filename, "w") writer = FastaWriter(handle) writer.write_header() # does nothing for Fasta files ... Multiple writer.write_record() and/or writer.write_records() calls ... writer.write_footer() # does nothing for Fasta files handle.close()
- write_record(record)
将单个 Fasta 记录写入文件。
- class Bio.SeqIO.FastaIO.FastaTwoLineWriter(handle, record2title=None)
基类:
FastaWriter
用于写入每条记录两行的 Fasta 格式文件的类(已过时)。
这意味着我们将在不换行的情况下写入序列信息,并且始终为空序列写入空行。
请改用
as_fasta_2line
函数,或使用format="fasta"
在顶层使用Bio.SeqIO.write()
函数。- __init__(handle, record2title=None)
创建每条记录两行的 Fasta 编写器(已过时)。
- 参数
handle - 输出文件的句柄,例如由 open(filename, “w”) 返回的句柄。
record2title - 可选函数,用于返回将用于每个记录的标题行的文本。默认情况下,使用 record.id 和 record.description 的组合。如果 record.description 以 record.id 开头,则仅使用 record.description。
您可以使用
handle = open(filename, "w") writer = FastaWriter(handle) writer.write_file(myRecords) handle.close()
或者,遵循顺序文件写入器系统,例如
handle = open(filename, "w") writer = FastaWriter(handle) writer.write_header() # does nothing for Fasta files ... Multiple writer.write_record() and/or writer.write_records() calls ... writer.write_footer() # does nothing for Fasta files handle.close()
- Bio.SeqIO.FastaIO.as_fasta(record)
将 SeqRecord 转换为 FASTA 格式的字符串。
这在 SeqRecord 的 .format(“fasta”) 方法和 SeqIO.write(…, …, “fasta”) 函数中被内部使用。
- Bio.SeqIO.FastaIO.as_fasta_2line(record)
将 SeqRecord 转换为两行 FASTA 格式的字符串。
这在 SeqRecord 的 .format(“fasta-2line”) 方法和 SeqIO.write(…, …, “fasta-2line”) 函数中被内部使用。