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不支持对保存框架的引用,也不支持为封装字典定义以外的目的使用保存框架。

你可能感兴趣的:(PDBx/mmCIF 文件格式(一))