PDBx/mmCIF 文件格式(一)

PDBx/mmCIF Syntax

原文链接:PDBx/mmCIF Syntax (wwpdb.org)

mmCIF数据文件和字典中使用的语法来自STAR(Self-defining Text Archive and Retrieval)语法。在其最简单的形式中,mmCIF文件看起来像一个成对的数据项名称和值的集合。例如,在下面这个为单元格常数赋值的例子中,对语法的解释是直接的。

# 
_cell.entry_id           4HHB 
_cell.length_a           63.150 
_cell.length_b           83.590 
_cell.length_c           53.800 
_cell.angle_alpha        90.00 
_cell.angle_beta         99.34 
_cell.angle_gamma        90.00 
_cell.Z_PDB              4 

mmCIF的数据项目名称是由前面的下划线字符来识别。下划线后面是一个文本字符串,在mmCIF中被解释为包含一个类别名称和一个关键词名称,用句号分开。名称中的关键字部分是该类别中数据项的唯一标识符。在上面的例子中,所有的数据项都属于CELL类别。上面的例子也说明了项目名称和项目值之间需要一对一的对应关系。数据类别和数据项的名称不区分大小写。

下一个例子说明了文本字符串如何在mmCIF中表达。短的文字串可以用单引号或双引号括起来。跨越多行的文本字符串用分号括起来,分号放置在该行的第一个字符位置。有两个特殊字符作为mmCIF项目值的占位符,由于某些原因不能明确分配。问号(?)用于标记一个项目值为缺失。句号(.)可用于识别该项目没有合适的值,或一个值被有意省略。

_entity_src_gen.entity_id                          1 
_entity_src_gen.pdbx_gene_src_gene                 'MT3707, MTCY07H7B.20, panC, Rv3602c' 
_entity_src_gen.pdbx_gene_src_scientific_name      'Mycobacterium tuberculosis' 
_entity_src_gen.pdbx_gene_src_ncbi_taxonomy_id     1773 
_entity_src_gen.pdbx_host_org_scientific_name      'Escherichia coli' 
_entity_src_gen.pdbx_host_org_ncbi_taxonomy_id     562 
_entity_src_gen.pdbx_host_org_vector_type          plasmid 
_entity_src_gen.pdbx_host_org_tissue               ? 
_entity_src_gen.pdbx_host_org_vector               ? 
_entity_src_gen.plasmid_name                       pET30a 

_struct_ref.id                         1 
_struct_ref.db_name                    UNP 
_struct_ref.db_code                    PANC_MYCTU 
_struct_ref.pdbx_db_accession          P0A5R0 
_struct_ref.entity_id                  1 
_struct_ref.biol_id                    . 
_struct_ref.pdbx_seq_one_letter_code   
;MTIPAFHPGELNVYSAPGDVADVSRALRLTGRRVMLVPTMGALHEGHLALVRAAKRVPGS 
VVVVSIFVNPMQFGAGEDLDAYPRTPDDDLAQLRAEGVEIAFTPTTAAMYPDGLRTTVQP 
GPLAAELEGGPRPTHFAGVLTVVLKLLQIVRPDRVFFGEKDYQQLVLIRQLVADFNLDVA 
VVGVPTVREADGLAMSSRNRYLDPAQRAAAVALSAALTAAAHAATAGAQAALDAARAVLD 
AAPGVAVDYLELRDIGLGPMPLNGSGRLLVAARLGTTRLLDNIAIEIGTFAGTDRPDGYR 
;

矢量和表格的数据可以用loop_指令在mmCIF中进行编码。要建立一个表格,与表格列相对应的数据项名称前面要有loop_指令,后面要有相应的数据行。下面的例子建立了一个作者姓名的表格。

# 
loop_
_citation_author.citation_id 
_citation_author.name 
_citation_author.ordinal 
primary 'Fermi, G.'     1  
primary 'Perutz, M.F.'  2  
primary 'Shaanan, B.'   3  
primary 'Fourme, R.'    4  
1       'Perutz, M.F.'  5  
1       'Hasnain, S.S.' 6  
1       'Duke, P.J.'    7  
1       'Sessler, J.L.' 8  
1       'Hahn, J.E.'    9  
2       'Fermi, G.'     10 
2       'Perutz, M.F.'  11 
3       'Perutz, M.F.'  12 
4       'Teneyck, L.F.' 13 
4       'Arnone, A.'    14 
5       'Fermi, G.'     15 
6       'Muirhead, H.'  16 
6       'Greer, J.'     17 
# 

在mmCIF中使用loop_指令有几个限制。首先,要求循环内的所有数据项都属于同一个mmCIF类别。其次,循环后的数据值的数量必须是数据项名称数量的精确倍数。最后,mmCIF禁止对loop_指令进行嵌套。

mmCIF使用数据块来组织相关信息和数据。一个数据块是一个数据文件或字典的逻辑分区,是用data_指令创建的。一个数据块可以通过在data_指令后附加一个文本字符串来命名,一个数据块可以由另一个data_指令或文件的结尾来终止。下面的例子显示了一个非常简单的例子,即一对缩写的数据块。

#
# --- Lines beginning with # are treated as comments 
#
data_X987A
_entry.id                              X987A

_exptl_crystal.id                  'Crystal A'
_exptl_crystal.colour              'pale yellow'
_exptl_crystal.density_diffrn      1.113
_exptl_crystal.density_Matthews    1.01 

_cell.entry_id                         X987A
_cell.length_a                         95.39
_cell.length_a_esd                      0.05
_cell.length_b                         48.80
_cell.length_b_esd                      0.12
_cell.length_c                         56.27
_cell.length_c_esd                      0.06

# Second data block
data_T100A

_entry.id                           T100A

_exptl_crystal.id                  'Crystal B'
_exptl_crystal.colour              'orange'
_exptl_crystal.density_diffrn      1.156
_exptl_crystal.density_Matthews    1.06

_cell.entry_id                         T100A
_cell.length_a                         68.39
_cell.length_a_esd                      0.05
_cell.length_b                         88.70
_cell.length_b_esd                      0.12
_cell.length_c                         76.27
_cell.length_c_esd                      0.06

上面的例子说明了如何使用数据块来分离与不同结构有关的类似信息。这种分离是必要的,因为mmCIF的语法禁止在同一数据块中的多个地方重复相同的类别。因此,将上述两个数据块的内容简单串联成一个数据块在语法上是不正确的。

合并上述例子中的数据块会引起一些与mmCIF数据模型和这些特定类别的结构相关的额外问题。在上面的例子中,通过使用loop_指令重组EXPTL_CRYSTAL类别,可以将该类别的信息合并为一个数据块。然而,某些mmCIF类别如CELLENTRY在数据块中可能只包含一个值,因此不能循环。这些类别中的数据项的单值属性是这两个类别中关键项定义的结果。CELL类别的关键项,_cell.entry_id,被定义为_entry.id的一个子定义。这个项目被定义为数据块的标识符,因此可以只承担一个值。

mmCIF字典中的定义被封装在命名的保存框中。一个保存框架以save_指令开始,以另一个save_指令结束。保存框的命名方式是在save_标记上附加一个文本字符串。在mmCIF字典中,保存框被用来封装项目和类别的定义。mmCIF字典由一个包含数千个保存框的数据块组成,每个保存框包含一个不同的定义。保存框只能出现在mmCIF字典中,它们不能被嵌套。下面的例子显示了包含数据项_exptl.details定义的保存框。

save__exptl.details
    _item_description.description
;              Any special information about the experimental work prior to the
               intensity measurement. See also _exptl_crystal.preparation.
;
    _item.name                  '_exptl.details'
    _item.category_id             exptl
    _item.mandatory_code          no
    _item_aliases.alias_name    '_exptl_special_details'
    _item_aliases.dictionary      cif_core.dic
    _item_aliases.version         2.0.1
    _item_type.code               text
     save_

保存框架在STAR中的作用比在mmCIF中重要得多。在一个STAR文件应用中,如NMR-STAR,保存框架作为一个可重复使用的信息单元,可以在文件中引用和扩展。在STAR文件中,保存框架的参考方法是在保存框架的名称前加上一个美元符号。mmCIF中保存框架的使用仅限于其提供的组织和范围功能。 mmCIF不支持对保存框架的引用,也不支持为封装字典定义以外的目的使用保存框架。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容