Bio.AlignIO包¶
子模块¶
- Bio.AlignIO.ClustalIO模块
- Bio.AlignIO.浮雕IO模块
- Bio.AlignIO.FastaIO模块
- Bio.AlignIO.Interfaces模块
- Bio.AlignIO.MafIO模块
- Bio.AlignIO.MauveIO模块
- Bio.AlignIO.MsfIO模块
- Bio.AlignIO.NexusIO模块
- Bio.AlignIO.PhylipIO模块
- Bio.AlignIO.StockholmIO模块
模块内容¶
作为比对对象的多序列比对输入/输出。
Bio.AlignIO接口故意与Bio.SeqIO非常相似,实际上两者是内部连接的。这两个模块使用相同的文件格式名称集(小写字符串)。从用户的角度来看,您可以使用Bio.AlignIO读入包含一个或多个比对的Phylip文件,也可以使用Bio.SeqIO读入这些比对中的序列。
Bio.AlignIO也在http://biopython.org/wiki/AlignIO和我们教程的整章中进行了说明:
输入¶
对于文件或句柄包含且只有一个对齐的典型特殊情况,请使用函数Bio.AlignIO.read()。这需要输入文件句柄(或在最新版本的Biopython中采用字符串形式的文件名)、格式字符串和每个比对的可选序列数量。它将返回单个MultipleSeqAlignment对象(如果不只有一条路线,则会引发异常):
>>> 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(.)它接受相同的参数,但返回一个给出MultipleSeqAlignment对象的迭代器(通常在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
大多数比对文件格式都可以串联,以便保存尽可能多的不同多序列比对。一个常见的示例是PHLYIP套件中工具seqboot的输出。有时可以有文件页眉和页脚,如浮雕对齐输出中所示。
输出¶
使用函数Bio.AlignIO.write(.),该函数接受一组完整的对齐对象(作为列表或迭代器)、输出文件句柄(或最新版本的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这样的文件格式,其中顺序存储多个对齐(没有文件头和页脚),那么在使用句柄时,对Write函数的多个调用应该会按预期工作。
如果您使用的是文件名,则对Write函数的重复调用每次都会覆盖现有文件。
转换¶
Bio.AlignIO.Convert(.)函数为简单的对齐文件格式转换提供了一个简单的接口。此外,它可能使用特定于文件格式的优化,因此这也应该是最快的方式。
不过,通常可以将Bio.AlignIO.parse(.)使用Bio.AlignIO.write(.)序列文件转换函数。使用生成器表达式提供了一种内存高效的方式,可以将过滤或其他额外操作作为过程的一部分来执行。
文件格式¶
指定文件格式时,请使用小写字符串。Bio.SeqIO中也使用相同的格式名称,包括以下内容:
clustal-Clustal W或X的输出,另请参阅模块Bio.Cluastw,该模块可用于从Biopython运行命令行工具。
浮雕-浮雕工具的“对”和“简单”对齐格式。
FASTA-通用序列文件格式,其中每条记录都以标识符行开头,以“>”字符开头,后跟序列行。
FASTA-m10-当与机器可读输出的-m 10命令行选项一起使用时,用于Bill Pearson的FASTA工具输出的成对比对。
IG-IntelliGenetics文件格式,显然与MASE对齐格式相同。
MSF-GCG MSF对齐格式,最初来自PileUp Tool。
Nexus-Nexus的输出,另请参阅模块Bio.Nexus,该模块还可以读取这些文件中的任何系统发育树。
PHYLIP-交错PHYLIP,由PHYLIP工具使用。
顺序式-顺序式-顺序式。
PHYLIP-REALECT-PHYLIP式格式,允许使用更长的名称。
斯德哥尔摩-PFAM使用的一种注释丰富的对齐文件格式。
Mauve-ProcedsiveMauve/Mauve的输出
请注意,虽然Bio.AlignIO可以读取上述所有文件格式,但它不能写入所有文件格式。
您还可以使用Bio.SeqIO支持的任何文件格式,例如“Fasta”或“ig”(如上所述),前提是文件中的序列长度都相同。
- Bio.AlignIO.write(alignments, handle, format)¶
将完整的路线集写入文件。
- 参数:
对齐-多个SeqAlignment对象或单个对齐对象的列表(或迭代器)。
Handle-要写入的文件句柄对象或字符串形式的文件名(请注意,旧版本的Biopython只接受句柄)。
格式-描述要写入的文件格式的小写字符串。
调用此函数后应关闭句柄。
返回写入的路线数(整数形式)。
- Bio.AlignIO.parse(handle, format, seq_count=None)¶
作为MultipleSeqAlignment对象迭代对齐文件。
- 参数:
Handle-文件的句柄,或字符串形式的文件名(请注意,旧版本的Biopython只接受句柄)。
格式-描述文件格式的字符串。
SEQ_COUNT-可选整数,每次比对中预期的序列数。建议用于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)¶
将对齐文件转换为单个MultipleSeqAlignment对象。
- 参数:
Handle-文件的句柄,或字符串形式的文件名(请注意,旧版本的Biopython只接受句柄)。
格式-描述文件格式的字符串。
SEQ_COUNT-可选整数,每次比对中预期的序列数。建议用于FASTA格式文件。
如果控制柄不包含对齐或多个对齐,则会引发异常。例如,使用包含一条路线的PFAM/斯德哥尔摩文件:
>>> 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-输出文件格式,小写字符串
MELEGLER_TYPE-要应用的可选分子类型,包含“DNA”、“RNA”或“Protein”的字符串。
NOTE -如果您提供输出文件名,它将被打开,这将在没有警告的情况下覆盖任何现有文件。即使转换中止(例如,给定的OUT_FORMAT名称无效),也可能发生这种情况。
一些输出格式要求指定分子类型,而这不能由解析器确定。例如,将FASTA、Clustal或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;