Bio.AlignIO.StockholmIO模块

Bio.AlignIO支持“stockholm”格式(用于PFAM数据库)。

预计您将通过Bio.AlignIO函数(或者,如果您想直接处理间隔序列,则通过Bio.SeqIO函数)使用此模块。

例如,考虑包含以下内容的斯德哥尔摩对齐文件::

# STOCKHOLM 1.0
#=GC SS_cons       .................<<<<<<<<...<<<<<<<........>>>>>>>..
AP001509.1         UUAAUCGAGCUCAACACUCUUCGUAUAUCCUC-UCAAUAUGG-GAUGAGGGU
#=GR AP001509.1 SS -----------------<<<<<<<<---..<<-<<-------->>->>..--
AE007476.1         AAAAUUGAAUAUCGUUUUACUUGUUUAU-GUCGUGAAU-UGG-CACGA-CGU
#=GR AE007476.1 SS -----------------<<<<<<<<-----<<.<<-------->>.>>----

#=GC SS_cons       ......<<<<<<<.......>>>>>>>..>>>>>>>>...............
AP001509.1         CUCUAC-AGGUA-CCGUAAA-UACCUAGCUACGAAAAGAAUGCAGUUAAUGU
#=GR AP001509.1 SS -------<<<<<--------->>>>>--->>>>>>>>---------------
AE007476.1         UUCUACAAGGUG-CCGG-AA-CACCUAACAAUAAGUAAGUCAGCAGUGAGAU
#=GR AE007476.1 SS ------.<<<<<--------->>>>>.-->>>>>>>>---------------
//

这是单个多序列比对,因此您可能会使用Bio.AlignIO.read()函数加载它:

>>> from Bio import AlignIO
>>> align = AlignIO.read("Stockholm/simple.sth", "stockholm")
>>> print(align)
Alignment with 2 rows and 104 columns
UUAAUCGAGCUCAACACUCUUCGUAUAUCCUC-UCAAUAUGG-G...UGU AP001509.1
AAAAUUGAAUAUCGUUUUACUUGUUUAU-GUCGUGAAU-UGG-C...GAU AE007476.1
>>> for record in align:
...     print("%s %i" % (record.id, len(record)))
AP001509.1 104
AE007476.1 104

除了序列本身之外,该示例比对还包括序列二级结构的一些GR线。 这些是字符串,相关序列中的每个字母对应一个字符:

>>> for record in align:
...     print(record.id)
...     print(record.seq)
...     print(record.letter_annotations['secondary_structure'])
AP001509.1
UUAAUCGAGCUCAACACUCUUCGUAUAUCCUC-UCAAUAUGG-GAUGAGGGUCUCUAC-AGGUA-CCGUAAA-UACCUAGCUACGAAAAGAAUGCAGUUAAUGU
-----------------<<<<<<<<---..<<-<<-------->>->>..---------<<<<<--------->>>>>--->>>>>>>>---------------
AE007476.1
AAAAUUGAAUAUCGUUUUACUUGUUUAU-GUCGUGAAU-UGG-CACGA-CGUUUCUACAAGGUG-CCGG-AA-CACCUAACAAUAAGUAAGUCAGCAGUGAGAU
-----------------<<<<<<<<-----<<.<<-------->>.>>----------.<<<<<--------->>>>>.-->>>>>>>>---------------

每行的任何常规注释都记录在SeqRecord的注释字典中。 整个比对的任何每列注释都在比对的列注释字典中,例如本示例中的二级结构共有序列:

>>> sorted(align.column_annotations.keys())
['secondary_structure']
>>> align.column_annotations["secondary_structure"]
'.................<<<<<<<<...<<<<<<<........>>>>>>>........<<<<<<<.......>>>>>>>..>>>>>>>>...............'

您可以使用Bio.AlignIO. writer()或MultipleSeqEquality对象的格式方法以多种不同的文件格式输出此对齐方式:

>>> print(format(align, "fasta"))
>AP001509.1
UUAAUCGAGCUCAACACUCUUCGUAUAUCCUC-UCAAUAUGG-GAUGAGGGUCUCUAC-A
GGUA-CCGUAAA-UACCUAGCUACGAAAAGAAUGCAGUUAAUGU
>AE007476.1
AAAAUUGAAUAUCGUUUUACUUGUUUAU-GUCGUGAAU-UGG-CACGA-CGUUUCUACAA
GGUG-CCGG-AA-CACCUAACAAUAAGUAAGUCAGCAGUGAGAU

大多数输出格式无法在斯德哥尔摩文件中保存可能的注释:

>>> print(format(align, "stockholm"))
# STOCKHOLM 1.0
#=GF SQ 2
AP001509.1 UUAAUCGAGCUCAACACUCUUCGUAUAUCCUC-UCAAUAUGG-GAUGAGGGUCUCUAC-AGGUA-CCGUAAA-UACCUAGCUACGAAAAGAAUGCAGUUAAUGU
#=GS AP001509.1 AC AP001509.1
#=GS AP001509.1 DE AP001509.1
#=GR AP001509.1 SS -----------------<<<<<<<<---..<<-<<-------->>->>..---------<<<<<--------->>>>>--->>>>>>>>---------------
AE007476.1 AAAAUUGAAUAUCGUUUUACUUGUUUAU-GUCGUGAAU-UGG-CACGA-CGUUUCUACAAGGUG-CCGG-AA-CACCUAACAAUAAGUAAGUCAGCAGUGAGAU
#=GS AE007476.1 AC AE007476.1
#=GS AE007476.1 DE AE007476.1
#=GR AE007476.1 SS -----------------<<<<<<<<-----<<.<<-------->>.>>----------.<<<<<--------->>>>>.-->>>>>>>>---------------
#=GC SS_cons .................<<<<<<<<...<<<<<<<........>>>>>>>........<<<<<<<.......>>>>>>>..>>>>>>>>...............
//

请注意,在编写斯德哥尔摩文件时,AlignIO不会分解长序列并交叉它们(如上面显示的输入文件)。 该标准允许这种更简单的布局,并且更有可能被其他工具理解。

最后,顺便说一句,有时候使用Bio.SeqIO.parse()将对齐行作为SeqRecord对象进行重定向会很有用--而不是使用Alignment对象。

>>> from Bio import SeqIO
>>> for record in SeqIO.parse("Stockholm/simple.sth", "stockholm"):
...     print(record.id)
...     print(record.seq)
...     print(record.letter_annotations['secondary_structure'])
AP001509.1
UUAAUCGAGCUCAACACUCUUCGUAUAUCCUC-UCAAUAUGG-GAUGAGGGUCUCUAC-AGGUA-CCGUAAA-UACCUAGCUACGAAAAGAAUGCAGUUAAUGU
-----------------<<<<<<<<---..<<-<<-------->>->>..---------<<<<<--------->>>>>--->>>>>>>>---------------
AE007476.1
AAAAUUGAAUAUCGUUUUACUUGUUUAU-GUCGUGAAU-UGG-CACGA-CGUUUCUACAAGGUG-CCGG-AA-CACCUAACAAUAAGUAAGUCAGCAGUGAGAU
-----------------<<<<<<<<-----<<.<<-------->>.>>----------.<<<<<--------->>>>>.-->>>>>>>>---------------

请记住,如果您对SeqRecord进行切片,则这里的二级结构字符串等按字母的注释也会被切片:

>>> sub_record = record[10:20]
>>> print(sub_record.seq)
AUCGUUUUAC
>>> print(sub_record.letter_annotations['secondary_structure'])
-------<<<

对于对齐对象来说,只要不删除任何行,切片对齐的特定列就会切片任何每列注释:

>>> align.column_annotations["secondary_structure"]
'.................<<<<<<<<...<<<<<<<........>>>>>>>........<<<<<<<.......>>>>>>>..>>>>>>>>...............'
>>> part_align = align[:,10:20]
>>> part_align.column_annotations["secondary_structure"]
'.......<<<'

您还可以在此部分对齐的斯德哥尔摩输出中看到这一点:

>>> print(format(part_align, "stockholm"))
# STOCKHOLM 1.0
#=GF SQ 2
AP001509.1 UCAACACUCU
#=GS AP001509.1 AC AP001509.1
#=GS AP001509.1 DE AP001509.1
#=GR AP001509.1 SS -------<<<
AE007476.1 AUCGUUUUAC
#=GS AE007476.1 AC AE007476.1
#=GS AE007476.1 DE AE007476.1
#=GR AE007476.1 SS -------<<<
#=GC SS_cons .......<<<
//
class Bio.AlignIO.StockholmIO.StockholmWriter(handle)

基类:SequentialAlignmentWriter

斯德哥尔摩/PFAM校准作家。

pfam_gr_mapping = {'active_site': 'AS', 'intron': 'IN', 'ligand_binding': 'LI', 'posterior_probability': 'PP', 'secondary_structure': 'SS', 'surface_accessibility': 'SA', 'transmembrane': 'TM'}
pfam_gc_mapping = {'model_mask': 'MM', 'reference_annotation': 'RF'}
pfam_gs_mapping = {'look': 'LO', 'organism': 'OS', 'organism_classification': 'OC'}
write_alignment(alignment)

使用此功能将(另一个)单一对齐写入打开的文件。

请注意,序列及其注释被记录在一起(而不是在注释块后面跟着对齐的序列块)。

__annotations__ = {}
__firstlineno__ = 164
__static_attributes__ = ('_ids_written', '_length_of_sequences')
class Bio.AlignIO.StockholmIO.StockholmIterator(handle, seq_count=None)

基类:AlignmentIterator

将Stockholm文件从PFAM加载到MultipleSeqAlliance对象中。

该文件可能包含多个级联的对齐,这些对齐是增量加载和返回的。

此解析器将检测Stockholm文件是否遵循序列特定元数据的PFAM惯例(从#=GS和#=GR开始的行),并相应地填充SeqRecord字段。

任何不遵循PFAM惯例的注释目前都被忽略。

如果为Meta数据中的条目提供了访问权限,则它不会用作record.id(它将记录在记录的注释中)。 这是因为某些文件具有来自同一访问不同部分的(子)序列(通过不同的开始-结束位置区分)。

不支持环绕比对-每个序列必须在一条线上。 然而,交错序列应该有效。

有关文件格式的更多信息,请参阅:http://sonnhammer.sbc.su.se/Stockholm.html https://en.wikipedia.org/wiki/Stockholm_format http://bioperl.org/formats/alignment_formats/Stockholm_multiple_alignment_format.html

为了与BioPerl和CLASS保持一致,我们将其称为“斯德哥尔摩”格式。

pfam_gr_mapping = {'AS': 'active_site', 'IN': 'intron', 'LI': 'ligand_binding', 'PP': 'posterior_probability', 'SA': 'surface_accessibility', 'SS': 'secondary_structure', 'TM': 'transmembrane'}
pfam_gc_mapping = {'MM': 'model_mask', 'RF': 'reference_annotation'}
pfam_gs_mapping = {'LO': 'look', 'OC': 'organism_classification', 'OS': 'organism'}
__next__()

从手柄解析下一个对齐方式。

__annotations__ = {}
__firstlineno__ = 302
__static_attributes__ = ('_header', 'ids', 'seq_annotation', 'seq_col_annotation', 'sequences')