斯德哥尔摩格式 (skbio.io.format.stockholm
)¶
斯德哥尔摩格式是一种多序列对齐格式(MSA),可以选择支持存储任意对齐特征(元数据)。特性可以分为四个不同的类别:GF、GS、GR和GC(下面将更详细地描述)。
斯德哥尔摩文件示例,摘自 [1]:
# STOCKHOLM 1.0
#=GF ID UPSK
#=GF SE Predicted; Infernal
#=GF SS Published; PMID 9223489
#=GF RN [1]
#=GF RM 9223489
#=GF RT The role of the pseudoknot at the 3' end of turnip yellow mosaic
#=GF RT virus RNA in minus-strand synthesis by the viral RNA-dependent RNA
#=GF RT polymerase.
#=GF RA Deiman BA, Kortlever RM, Pleij CW;
#=GF RL J Virol 1997;71:5990-5996.
AF035635.1/619-641 UGAGUUCUCGAUCUCUAAAAUCG
M24804.1/82-104 UGAGUUCUCUAUCUCUAAAAUCG
J04373.1/6212-6234 UAAGUUCUCGAUCUUUAAAAUCG
M24803.1/1-23 UAAGUUCUCGAUCUCUAAAAUCG
#=GC SS_cons .AAA....<<<<aaa....>>>>
//
格式支持¶
有嗅探员:是的
状态:从0.4.2开始实验。
读者 |
writer |
对象类 |
---|---|---|
是的 |
是的 |
格式规范¶
斯德哥尔摩格式由页眉、多序列对齐、关联的元数据(功能)和页脚组成。
标题¶
斯德哥尔摩文件的第一行必须是以下标题:
# STOCKHOLM 1.0
多序列比对¶
由一系列空格组成,后跟空格序列。例如::
seq1 ACG-T-GGT
seq2 ACCGTTCG-
序列名称 (seq1
, seq2
)存储在 TabularMSA
index
.
备注
scikit-bio目前支持读取斯德哥尔摩文件,其中每个序列都包含在一行中。不支持交错/环绕斯德哥尔摩文件。写的时候,每个序列都会放在自己的行上。
警告
序列名在斯德哥尔摩文件中必须是唯一的。同样,当从 TabularMSA
, index
必须是独一无二的。
元数据¶
斯德哥尔摩文件支持存储关于MSA的任意元数据(特性)。以下各节中描述的所有元数据都是可选的,可以以任何顺序出现。元数据“标记”行以 #=GF
, #=GS
, #=GR
或 #=GC
,每一行描述路线的一个特征。
备注
斯德哥尔摩格式支持通用功能。 [1] 和 [2] 提供Pfam/Rfam输出的通用特性列表。scikit-bio不需要这些特性。这些特性的处理方式与任何任意特性的处理方式相同,都是简单的字符串键值对。写入时,要素名称、要素数据和序列名称将转换为类型 str
.
备注
在编写斯德哥尔摩文件时,scikit-bio将按建议的格式顺序放置元数据:
GF:定线上方
GS:对准上方(GF后)
GR:在相应的顺序下
GC:路线下方
GF元数据¶
与多序列比对作为一个整体有关的数据,如比对中的作者或序列数。开始于 #=GF
后跟功能名称和与功能相关的数据。通常在斯德哥尔摩的文件中排名第一。
例如(取自 [2]) :
#=GF DE CBS domain
哪里 DE
是功能名称,并且 CBS Domain
是要素数据。
GF元数据存储在 TabularMSA
metadata
字典。
备注
读取时,重复的GF要素名称将按其在文件中出现的顺序连接其值。为了避免将单词连接在一起,串联还将在行间添加空格(如果行间没有空格)。写作时,每一个GF特征将被放在自己的行上,而不考虑长度。
备注
标记有 NH
/TN
处理方式与其他GF功能不同。当阅读具有这些功能的斯德哥尔摩文件时,读者将遵循中描述的规则 [2]. 在多行上拆分的树将连接它们的值。与其他GF特性不同的是,树在连接时永远不会添加空格。
没有标识符的单个树将存储为:
metadata = {
'NH': 'tree in NHX format'
}
具有标识符的单个树将存储为:
metadata = {
'NH': {
'tree-id': 'tree in NHX format'
}
}
多个树(必须具有标识符)将存储为:
metadata = {
'NH': {
'tree-id-1': 'tree in NHX format',
'tree-id-2': 'tree in NHX format'
}
}
备注
标记为 RN
/RM
/RT`/``RA`/``RL
/RC``的处理方式与其他GF功能不同。当阅读具有这些特性的斯德哥尔摩文件时,读者会填充一个字典列表,其中每个字典代表一个引用。列表中包含的引用的顺序与它们在文件中的显示顺序无关,而与提供的值无关 ``RN` . 如果引用不包括所有可能的引用标记(例如。 RC
,字典将只包含该引用的引用标记。写作时,作者加上参考号 (RN
)写每个引用之前的行,例如:
#=GF RN [1]
#=GF RA Kestrel Gorlick
...
#=GF RN [2]
...
引用将存储为:
metadata = {
'RN': [{
'RM': 'reference medline',
'RT': 'reference title',
'RA': 'reference author',
'RL': 'reference location',
'RC': 'reference comment'
}, {
'RM': 'reference medline',
...
}]
}
GS元数据¶
多序列比对中与特定序列有关的数据。开始于 #=GS
后跟序列名,然后是功能名称和与功能相关的数据。通常在斯德哥尔摩文件中的GF元数据之后。
例如(取自 [2]) :
#=GS O83071/259-312 AC O83071
哪里 O83071/259-312
是序列名称, AC
是功能名称,并且 083071
是要素数据。
GS元数据存储在特定序列中 metadata
字典。
备注
读取时,重复的GS要素名称将按照它们在文件中出现的顺序连接其值。为了避免将单词连接在一起,串联还将在行间添加空格(如果行间没有空格)。在编写时,每个GS特征将被放在自己的行上,而不考虑长度。
GR元数据¶
与多序列比对中特定序列的列有关的数据。开始于 #=GR
后跟序列名,后跟功能名称和与功能相关的数据,每列一个字符。通常在它相关的序列行之后。
例如(取自 [2]) :
#=GR O31698/18-71 SS CCCHHHHHHHHHHHHHHH..EEEEEEEE....EEEEEEEEHHH
哪里 O31698/18-71
是序列名称, SS
是功能名称,并且 CCCHHHHHHHHHHHHHHH..EEEEEEEE....EEEEEEEEHHH
是要素数据。
GR元数据以特定顺序存储 positional_metadata
.
备注
不允许将重复的GR功能名称归因于单个序列。
GC元数据¶
作为一个整体,与多序列对齐列相关的数据。开始于 #=GC
后跟功能名称和与功能相关的数据,每列一个字符。通常出现在多序列比对的末尾。
例如(取自 [2]) :
#=GC SS_cons CCCCCHHHHHHHHHHHHH..EEEEEEEE....EEEEEEEEEEH
哪里 SS_cons
是功能名称,并且 CCCCCHHHHHHHHHHHHH..EEEEEEEE....EEEEEEEEEEH
是要素数据。
GC元数据存储在 TabularMSA
positional_metadata
.
备注
不允许重复的GC功能名称。
格式参数¶
唯一支持的格式参数是 constructor
,指定要将每个对齐序列读入的内存序列对象的类型。这必须是 GrammaredSequence
(例如, DNA
, RNA
, Protein
)是必需的格式参数。例如,如果你知道你正在读的斯德哥尔摩文件包含DNA序列,你就可以通过 constructor=DNA
给读者打电话。
示例
假设我们有一个包含蛋白质序列的MSA的斯德哥尔摩文件(修改自 [2]) :
>>> import skbio.io
>>> from io import StringIO
>>> from skbio import Protein, TabularMSA
>>> fs = '\n'.join([
... '# STOCKHOLM 1.0',
... '#=GF CC CBS domains are small intracellular modules mostly'
... ' found',
... '#=GF CC in 2 or four copies within a protein.',
... '#=GS O83071/192-246 AC O83071',
... '#=GS O31698/88-139 OS Bacillus subtilis',
... 'O83071/192-246 MTCRAQLIAVPRASSLAE..AIACAQKM....RVSRV',
... '#=GR O83071/192-246 SA 999887756453524252..55152525....36463',
... 'O83071/259-312 MQHVSAPVFVFECTRLAY..VQHKLRAH....SRAVA',
... 'O31698/18-71 MIEADKVAHVQVGNNLEH..ALLVLTKT....GYTAI',
... 'O31698/88-139 EVMLTDIPRLHINDPIMK..GFGMVINN......GFV',
... 'O31699/88-139 EVMLTDIPRLHINDPIMK..GFGMVINN......GFV',
... '#=GR O31699/88-139 AS ________________*____________________',
... '#=GR O31699/88-139 IN ____________1______________2_________',
... '#=GC SS_cons CCCCCHHHHHHHHHHHHH..EEEEEEEE....EEEEE',
... '//'
... ])
>>> fh = StringIO(fs)
>>> msa = TabularMSA.read(fh, constructor=Protein)
>>> msa
TabularMSA[Protein]
----------------------------------------------------------------------
Metadata:
'CC': 'CBS domains are small intracellular modules mostly found in
2 or four copies within a protein.'
Positional metadata:
'SS_cons': <dtype: object>
Stats:
sequence count: 5
position count: 37
----------------------------------------------------------------------
MTCRAQLIAVPRASSLAE..AIACAQKM....RVSRV
MQHVSAPVFVFECTRLAY..VQHKLRAH....SRAVA
MIEADKVAHVQVGNNLEH..ALLVLTKT....GYTAI
EVMLTDIPRLHINDPIMK..GFGMVINN......GFV
EVMLTDIPRLHINDPIMK..GFGMVINN......GFV
序列名存储在 index
:
>>> msa.index
Index(['O83071/192-246', 'O83071/259-312', 'O31698/18-71', 'O31698/88-139',
'O31699/88-139'],
dtype='object')
这个 TabularMSA
GF元数据是否存储在其 metadata
字典:
>>> msa.metadata
OrderedDict([('CC', 'CBS domains are small intracellular modules mostly found in 2 or four copies within a protein.')])
GC元数据存储在 TabularMSA
positional_metadata
:
>>> msa.positional_metadata
SS_cons
0 C
1 C
2 C
3 C
4 C
5 H
6 H
7 H
8 H
9 H
...
GS元数据存储在特定序列中 metadata
字典:
>>> msa[0].metadata
OrderedDict([('AC', 'O83071')])
GR元数据以特定顺序存储 positional_metadata
:
>>> msa[4].positional_metadata
AS IN
0 _ _
1 _ _
2 _ _
3 _ _
4 _ _
5 _ _
6 _ _
7 _ _
8 _ _
9 _ _
...
我们来写这个 TabularMSA
斯德哥尔摩格式:
>>> fh = StringIO()
>>> _ = msa.write(fh, format='stockholm')
>>> print(fh.getvalue())
# STOCKHOLM 1.0
#=GF CC CBS domains are small intracellular modules mostly found in 2 or four copies within a protein.
#=GS O83071/192-246 AC O83071
#=GS O31698/88-139 OS Bacillus subtilis
O83071/192-246 MTCRAQLIAVPRASSLAE..AIACAQKM....RVSRV
#=GR O83071/192-246 SA 999887756453524252..55152525....36463
O83071/259-312 MQHVSAPVFVFECTRLAY..VQHKLRAH....SRAVA
O31698/18-71 MIEADKVAHVQVGNNLEH..ALLVLTKT....GYTAI
O31698/88-139 EVMLTDIPRLHINDPIMK..GFGMVINN......GFV
O31699/88-139 EVMLTDIPRLHINDPIMK..GFGMVINN......GFV
#=GR O31699/88-139 AS ________________*____________________
#=GR O31699/88-139 IN ____________1______________2_________
#=GC SS_cons CCCCCHHHHHHHHHHHHH..EEEEEEEE....EEEEE
//
>>> fh.close()
引用