GenBank格式 (skbio.io.format.genbank
)¶
GenBank格式(GenBank平面文件格式)将序列及其注释存储在一起。注释部分的开始用一条以单词“轨迹”开头的线标记。序列的开始部分用一个以单词“ORIGIN”开头的行来标记,而该部分的结尾则用一个只有“//”的行来标记。
GenBank文件通常以.gb结尾,有时以.gbk结尾。蛋白质的GenBank格式已改名为GenPept。GenBank(用于核苷酸)和Genpept基本上是相同的格式。这里可以看到GenBank文件的一个例子 [1].
格式支持¶
有嗅探员:是的
读者 |
writer |
对象类 |
---|---|---|
是的 |
是的 |
|
是的 |
是的 |
|
是的 |
是的 |
|
是的 |
是的 |
|
是的 |
是的 |
发电机 |
格式规范¶
状态:从0.4.1开始试验。
前面的节 FEATURES
¶
之前的所有章节 FEATURES
将被读入 metadata
. 节的头及其内容作为一对键和值存储在 metadata
. 对于 REFERENCE
节,其值以列表形式存储,因为在一个GenBank记录中通常有多个引用节。
FEATURES
部分¶
国际核苷酸序列数据库合作组织 [2]) 是DDBJ、EMBL和GenBank的共同努力。这些组织在它们的纯文本平面文件格式中都使用相同的“特征表”布局,这些格式都有详细的文档记录 [3]. 功能键及其限定符也在本网页中介绍 [4].
这个 FEATURES
节将存储在 interval_metadata
属于 Sequence
或者它的子类。每个子部分存储为 Interval
中的对象 interval_metadata
.每个 Interval
对象具有 metadata
在小节中保留此功能的信息。
为了规范多种格式(目前只有INSDC Feature Table和GFF3)之间的词汇表来存储区间特征的元数据,我们在将一些格式的术语解析到内存中时,将它们重命名为相同的通用名称,如下表所述:
INSDC特征表 |
GFF3列或属性 |
密钥已存储 |
存储的值类型 |
描述 |
---|---|---|---|---|
推论 |
来源(第2列) |
来源 |
STR |
用于生成此特征的算法或实验 |
功能键 |
类型(第3列) |
类型 |
STR |
功能的类型 |
不适用 |
得分(第6栏) |
分数 |
浮动 |
特征的分数 |
不适用 |
钢绞线(第7列) |
搁浅 |
STR |
特性的链。+对于正链,-对于负链,以及。对于不搁浅的功能部件。另外?可用于未知特征,但可用于相关特征。 |
codon_start |
阶段(第8列) |
阶段 |
利息 |
相对于该特征的第一个基,编码特征的第一个完整密码子可以找到的偏移量。在GFF3中为0、1或2,在GenBank中为1、2或3。存储的值为0、1或2,以下为GFF3格式。 |
db_xref |
数据库外部参照 |
db_xref |
str列表 |
数据库交叉引用 |
不适用 |
ID |
ID |
STR |
功能ID |
笔记 |
注意 |
笔记 |
STR |
任何评论或附加信息 |
翻译 |
不适用 |
翻译 |
STR |
CDS特征的蛋白质序列 |
Location
一串¶
在特征表中定义了5种类型的位置描述符。这解释了如何将它们解析为 Interval
对象(请注意,它将基于1的坐标转换为基于0的坐标):
一个单一的基数。e、 g.67。它被解析为
(66, 67)
.两个相邻基地之间的地点。e、 公元67^68年。它被解析为
(66, 67)
.一个范围内的单一基地。e、 g.67.89。它被解析为
(66, 89)
.定义序列跨度的一对基数。e、 g.67..89。它被解析为
(66, 89)
.一个远程序列标识符,后跟上面定义的位置描述符。e、 g.J00123.1:67..89。这将被丢弃,因为它不在当前序列中。当它与J00123.1:67..89200..209之类的局部描述符组合时,局部部分将保持为
(199, 209)
.
备注
位置字符串完全存储在 Interval.metadata
带钥匙 __location
. 以开头的键 __
是“私有”的,应小心修改。
ORIGIN
部分¶
中的序列 ORIGIN
对于从NCBI下载的GenBank文件,节始终是小写的。对于RNA分子, t
(胸腺嘧啶),而不是 u
(尿嘧啶)用于序列中。所有GenBank编写器在编写GenBank文件时都遵循这些约定。
格式参数¶
读卡器特定参数¶
这个 constructor
参数可以与 Sequence
generator指定解析的每个GenBank记录的内存类型。 constructor
应该是 Sequence
或者是 Sequence
. 它也可以通过轨迹线上的单位标签来检测。例如,如果是 bp
,它将被读入 DNA
如果是 aa
,它将被读入 Protein
. 否则,它将被读入 Sequence
. 此默认行为由设置覆盖 constructor
.
lowercase
是所有GenBank阅读器都可用的另一个参数。默认设置为 True
在 ORIGIN
按小写字母顺序排列。此参数传递给 Sequence
或者它的子类构造函数。
seq_num
是与一起使用的参数 Sequence
, DNA
, RNA
和 Protein
GenBank阅读器。它指定从包含多个记录的GenBank文件中读取哪个GenBank记录。
示例
读写GenBank文件¶
假设我们修改了以下GenBank文件示例 [5]:
>>> gb_str = '''
... LOCUS 3K1V_A 34 bp RNA linear SYN 10-OCT-2012
... DEFINITION Chain A, Structure Of A Mutant Class-I Preq1.
... ACCESSION 3K1V_A
... VERSION 3K1V_A GI:260656459
... KEYWORDS .
... SOURCE synthetic construct
... ORGANISM synthetic construct
... other sequences; artificial sequences.
... REFERENCE 1 (bases 1 to 34)
... AUTHORS Klein,D.J., Edwards,T.E. and Ferre-D'Amare,A.R.
... TITLE Cocrystal structure of a class I preQ1 riboswitch
... JOURNAL Nat. Struct. Mol. Biol. 16 (3), 343-344 (2009)
... PUBMED 19234468
... COMMENT SEQRES.
... FEATURES Location/Qualifiers
... source 1..34
... /organism="synthetic construct"
... /mol_type="other RNA"
... /db_xref="taxon:32630"
... misc_binding 1..30
... /note="Preq1 riboswitch"
... /bound_moiety="preQ1"
... ORIGIN
... 1 agaggttcta gcacatccct ctataaaaaa ctaa
... //
... '''
现在我们可以把它理解为 DNA
对象:
>>> import io
>>> from skbio import DNA, RNA, Sequence
>>> gb = io.StringIO(gb_str)
>>> dna_seq = DNA.read(gb)
>>> dna_seq
DNA
-----------------------------------------------------------------
Metadata:
'ACCESSION': '3K1V_A'
'COMMENT': 'SEQRES.'
'DEFINITION': 'Chain A, Structure Of A Mutant Class-I Preq1.'
'KEYWORDS': '.'
'LOCUS': <class 'dict'>
'REFERENCE': <class 'list'>
'SOURCE': <class 'dict'>
'VERSION': '3K1V_A GI:260656459'
Interval metadata:
2 interval features
Stats:
length: 34
has gaps: False
has degenerates: False
has definites: True
GC-content: 35.29%
-----------------------------------------------------------------
0 AGAGGTTCTA GCACATCCCT CTATAAAAAA CTAA
因为这是一个核糖开关分子,我们可以把它解读为 RNA
. 就像GenBank文件通常所说的那样 t
而不是 u
在序列中,我们可以把它理解为 RNA
通过转换 t
到 u
:
>>> gb = io.StringIO(gb_str)
>>> rna_seq = RNA.read(gb)
>>> rna_seq
RNA
-----------------------------------------------------------------
Metadata:
'ACCESSION': '3K1V_A'
'COMMENT': 'SEQRES.'
'DEFINITION': 'Chain A, Structure Of A Mutant Class-I Preq1.'
'KEYWORDS': '.'
'LOCUS': <class 'dict'>
'REFERENCE': <class 'list'>
'SOURCE': <class 'dict'>
'VERSION': '3K1V_A GI:260656459'
Interval metadata:
2 interval features
Stats:
length: 34
has gaps: False
has degenerates: False
has definites: True
GC-content: 35.29%
-----------------------------------------------------------------
0 AGAGGUUCUA GCACAUCCCU CUAUAAAAAA CUAA
>>> rna_seq == dna_seq.transcribe()
True
>>> with io.StringIO() as fh:
... print(dna_seq.write(fh, format='genbank').getvalue())
LOCUS 3K1V_A 34 bp RNA linear SYN 10-OCT-2012
DEFINITION Chain A, Structure Of A Mutant Class-I Preq1.
ACCESSION 3K1V_A
VERSION 3K1V_A GI:260656459
KEYWORDS .
SOURCE synthetic construct
ORGANISM synthetic construct
other sequences; artificial sequences.
REFERENCE 1 (bases 1 to 34)
AUTHORS Klein,D.J., Edwards,T.E. and Ferre-D'Amare,A.R.
TITLE Cocrystal structure of a class I preQ1 riboswitch
JOURNAL Nat. Struct. Mol. Biol. 16 (3), 343-344 (2009)
PUBMED 19234468
COMMENT SEQRES.
FEATURES Location/Qualifiers
source 1..34
/db_xref="taxon:32630"
/mol_type="other RNA"
/organism="synthetic construct"
misc_binding 1..30
/bound_moiety="preQ1"
/note="Preq1 riboswitch"
ORIGIN
1 agaggttcta gcacatccct ctataaaaaa ctaa
//
引用