Bio.AlignIO包

子模块

模块内容

作为对齐对象的多个序列对齐输入/输出。

Bio.AlignIO接口故意与Bio.SeqIO非常相似,事实上两者是内部连接的。 两个模块使用相同的文件格式名称集(大写字符串)。 从用户的角度来看,您可以使用Bio.AlignIO读取包含一个或多个比对的PHYLIP文件,或者您可以使用Bio.SeqIO读取这些比对中的序列。

Bio.AlignIO也在http://biopython.org/wiki/AlignIO和我们教程中的一整章中进行了记录:

  • HTML Tutorial _

  • PDF Tutorial _

输入

对于典型的特殊情况,当您的文件或手柄包含且仅包含一个对齐方式时,请使用函数Bio.AlignIO.read()。 这需要输入文件手柄(或者在Biopython的最新版本中,文件名作为字符串)、格式字符串和每次比对的可选序列数。 它将返回一个MultipleSeqAlliance对象(或者如果不止一个对齐,则引发异常):

>>> from Bio import AlignIO
>>> align = AlignIO.read("Phylip/interlaced.phy", "phylip")
>>> print(align)
Alignment with 3 rows and 384 columns
-----MKVILLFVLAVFTVFVSS---------------RGIPPE...I-- CYS1_DICDI
MAHARVLLLALAVLATAAVAVASSSSFADSNPIRPVTDRAASTL...VAA ALEU_HORVU
------MWATLPLLCAGAWLLGV--------PVCGAAELSVNSL...PLV CATH_HUMAN

对于一般情况,当手柄可以包含任意数量的对齐时,请使用函数Bio.AlignIO.parse(.)它采用相同的参数,但返回一个迭代器,给出MultipleSeqAlliance对象(通常用于for循环)。如果您希望按编号随机访问路线,请将其转换为列表:

>>> from Bio import AlignIO
>>> alignments = list(AlignIO.parse("Emboss/needle.txt", "emboss"))
>>> print(alignments[2])
Alignment with 2 rows and 120 columns
-KILIVDDQYGIRILLNEVFNKEGYQTFQAANGLQALDIVTKER...--- ref_rec
LHIVVVDDDPGTCVYIESVFAELGHTCKSFVRPEAAEEYILTHP...HKE gi|94967506|receiver

大多数比对文件格式都可以级联,以保存尽可能多的不同多序列比对。 一个常见的例子是PHLY IP套件中工具seqBoot的输出。 有时可能有文件头和页脚,如CLASS对齐输出中所示。

输出

使用Bio.AlignIO. writer(.)函数,它采用一组完整的对齐对象(作为列表或迭代器)、输出文件柄(或Biopython最新版本中的文件名),当然还有文件格式::

from Bio import AlignIO
alignments = ...
count = SeqIO.write(alignments, "example.faa", "fasta")

如果使用手柄,请确保关闭它以将数据刷新到磁盘::

from Bio import AlignIO
alignments = ...
with open("example.faa", "w") as handle:
    count = SeqIO.write(alignments, handle, "fasta")

一般来说,您需要调用此函数一次(使用所有对齐方式),然后关闭文件手柄。 然而,对于像PHYLIP这样的文件格式,其中多个对齐顺序存储(没有文件头和页脚),那么在使用手柄时,对写函数的多次调用应该按预期工作。

如果您使用文件名,则对写函数的重复调用每次都会覆盖现有文件。

转换

Bio.AlignIO.convert(.)该功能提供了一个简单的界面,用于简单的对齐文件格式转换。此外,它可能会使用特定于文件格式的优化,因此这也应该是最快的方法。

但一般来说,您可以组合Bio.AlignIO.parse(.)使用Bio.AlignIO. writer(.)函数用于序列文件转换的函数。使用生成器运算式提供了一种内存高效的方法来执行过滤或其他额外操作,作为流程的一部分。

文件格式

指定文件格式时,请使用MIDI字符串。 Bio.SeqIO中也使用相同格式的名称,包括以下内容:

  • 块状- 来自Classal W或X的输出。

  • 压花 - BOSS工具的“配对”和“简单”对齐格式。

  • fasta - 通用序列文件格式,其中每条记录都以“>”字符开始的标识符行开始,后面是序列行。

  • fasta-m10 -当与-m 10命令行选项一起使用时,Bill Pearson的FASTA工具输出的成对比对以获得机器可读输出。

  • IG - Intelligence Genetics文件格式,显然与MASE对齐格式相同。

  • MSF - GCG MSF对齐格式,最初来自PileUp工具。

  • Nexus - NEXUS的输出,另请参阅Bio.Nexus模块,该模块还可以读取这些文件中的任何系统发生树。

  • PHYLIP - 交织的PHYLIP,由PHYLIP工具使用。

  • phyllip-order- Sequential PHYLIP。

  • phyllip-relaxed- PHYLIP类似格式,允许更长的名称。

  • stockholm -PFAM使用的一种注释丰富的对齐文件格式。

  • 紫红色-进步Mauve/Mauve的输出

请注意,虽然Bio.AlignIO可以读取所有上述文件格式,但无法写入所有文件格式。

您还可以使用Bio.SeqIO支持的任何文件格式,例如“fasta”或“ig”(如上所列),前提是您文件中的序列长度相同。

Bio.AlignIO.write(alignments, handle, format)

将完整的路线集写入文件。

论点:
  • 对齐-MultipleSeqAlliance对象的列表(或迭代器),或单个对齐对象。

  • 手柄 - 文件句柄对象写入,或文件名作为字符串(注意旧版本的Biopython只接受句柄)。

  • 格式 - 描述要写入的文件格式的大写字符串。

调用此函数后您应该关闭手柄。

返回写入的对齐数(作为一个整数)。

Bio.AlignIO.parse(handle, format, seq_count=None)

将对齐文件作为MultipleSeqConnection对象进行迭代。

论点:
  • 手柄 - 文件的手柄,或字符串形式的文件名(请注意,Biopython的旧版本仅采用了手柄)。

  • 格式 - 描述文件格式的字符串。

  • seq_count -可选integer,每次比对中预期的序列数。 建议用于fasta格式文件。

如果您的文件名包含在字符串“filename”中,请用途:

>>> from Bio import AlignIO
>>> filename = "Emboss/needle.txt"
>>> format = "emboss"
>>> for alignment in AlignIO.parse(filename, format):
...     print("Alignment of length %i" % alignment.get_alignment_length())
Alignment of length 124
Alignment of length 119
Alignment of length 120
Alignment of length 118
Alignment of length 125

如果您有包含文件内容的字符串“data”,请用途::

from Bio import AlignIO
from io import StringIO
my_iterator = AlignIO.parse(StringIO(data), format)

当您只需要单个记录时,请使用Bio.AlignIO.read()函数。

Bio.AlignIO.read(handle, format, seq_count=None)

将对齐文件转换为单个MultipleSeqEqualition对象。

论点:
  • 手柄 - 文件的手柄,或字符串形式的文件名(请注意,Biopython的旧版本仅采用了手柄)。

  • 格式 - 描述文件格式的字符串。

  • seq_count -可选integer,每次比对中预期的序列数。 建议用于fasta格式文件。

如果句柄不包含对齐方式或包含多个对齐方式,则会引发异常。 例如,使用包含一个比对的PFAM/Stockholm文件:

>>> from Bio import AlignIO
>>> filename = "Clustalw/protein.aln"
>>> format = "clustal"
>>> alignment = AlignIO.read(filename, format)
>>> print("Alignment of length %i" % alignment.get_alignment_length())
Alignment of length 411

但是,如果您希望从包含多个对齐的文件中获取第一个对齐,则此函数将引发异常。

>>> from Bio import AlignIO
>>> filename = "Emboss/needle.txt"
>>> format = "emboss"
>>> alignment = AlignIO.read(filename, format)
Traceback (most recent call last):
    ...
ValueError: More than one record found in handle

相反用途:

>>> from Bio import AlignIO
>>> filename = "Emboss/needle.txt"
>>> format = "emboss"
>>> alignment = next(AlignIO.parse(filename, format))
>>> print("First alignment has length %i" % alignment.get_alignment_length())
First alignment has length 124

如果您想从手柄读取多个记录,则必须使用Bio.AlignIO.parse()函数。

Bio.AlignIO.convert(in_file, in_format, out_file, out_format, molecule_type=None)

在两个对齐文件之间进行转换,返回对齐数。

论点:
  • in_file -输入手柄或文件名

  • in_format -输入文件格式,小写字符串

  • 输出-输出手柄或文件名

  • out_file -输出文件格式,大写字符串

  • molecule_ype-可选应用的分子类型,字符串包含“DNA”、“RNA”或“蛋白质”。

NOTE - 如果您提供输出文件名,它将被打开,并将覆盖任何现有文件,而没有警告。即使转换被中止(例如,给出了无效的out_form名称),也可能发生这种情况。

某些输出格式需要指定分子类型(如果解析器无法确定这一点)。例如,转换为FASTA、Classal或PHYLIP格式到NEXUS:

>>> from io import StringIO
>>> from Bio import AlignIO
>>> handle = StringIO()
>>> AlignIO.convert("Phylip/horses.phy", "phylip", handle, "nexus", "DNA")
1
>>> print(handle.getvalue())
#NEXUS
begin data;
dimensions ntax=10 nchar=40;
format datatype=dna missing=? gap=-;
matrix
Mesohippus   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Hypohippus   AAACCCCCCCAAAAAAAAACAAAAAAAAAAAAAAAAAAAA
Archaeohip   CAAAAAAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAA
Parahippus   CAAACAACAACAAAAAAAACAAAAAAAAAAAAAAAAAAAA
Merychippu   CCAACCACCACCCCACACCCAAAAAAAAAAAAAAAAAAAA
'M. secundu' CCAACCACCACCCACACCCCAAAAAAAAAAAAAAAAAAAA
Nannipus     CCAACCACAACCCCACACCCAAAAAAAAAAAAAAAAAAAA
Neohippari   CCAACCCCCCCCCCACACCCAAAAAAAAAAAAAAAAAAAA
Calippus     CCAACCACAACCCACACCCCAAAAAAAAAAAAAAAAAAAA
Pliohippus   CCCACCCCCCCCCACACCCCAAAAAAAAAAAAAAAAAAAA
;
end;