3.3.1.39. NXpdb¶
Status:
base class, extends NXobject
Description:
A NeXus transliteration of a PDB file, to be validated only as a PDB rather than in NeXus.
Use NXpdb to incorporate the information in an arbitrary PDB into a NeXus file.
The main suggestion is to use this as a container class for a PDB entry to describe a sample in NXsample, but it may be more appropriate to place this higher in the hierarchy, say in NXentry.
The structure has to follow the structure of a PDB with each PDB data block mapped to a NeXus group of class NXpdb, using a lowercase version of the data block name as the name of the NeXus group, each PDB category in that data block mapped to a NeXus group of class NXpdb and with each PDB column mapped to a NeXus field. Each column in a looped PDB category should always be presented as a 1-dimensional array. The columns in an unlooped PDB category should be presented as scalar values. If a PDB category specifies particular units for columns, the same units should beused for the corresponding fields.
A PDB entry is unambigous when all information is carried as text. All text data should be presented as quoted strings, with the quote marks except for the null values “.” or “?”
For clarity in NXpdb form, numeric data may be presented using the numeric types specified in the mmCIF dictionary. In that case, if a PDB null value, “.” or “?”, is contained in a numeric column, the IEEE nan should be used for “?” and the IEEE inf should be used for “.”.
An arbitrary DDL2 CIF file can be represented in NeXus using NXpdb. However, if save frames are required, an NXpdb_class attribute with the value “CBF_cbfsf” is required for each NeXus group representing a save frame. NXpdb attributes are not required for other CIF components, but may be used to provide internal documentation.
The nesting of NXpdb groups and datasets that correspond to a CIF with two categories and one saveframe, including the NXpdb_class attribues is:
(datablock1):NXpdb @NXpdb_class:CBF_cbfdb (category1):NXpdb @NXpdb_class:CBF_cbfcat (column_name1):[...] (column_name2):[...] (column_name3):[...] ... (category2):NXpdb @NXpdb_class:CBF_cbfcat (column_name4):[...] (column_name5):[...] (column_name6):[...] ... (saveframe1):NXpdb @NXpdb_class:CBF_cbfsf (category3):NXpdb @NXpdb_class:CBF_cbfcat (column_name7):[...] (column_name8):[...] (column_name9):[...] ... ... ...For example, a PDB entry that begins:
data_1YVA # _entry.id 1YVA # _audit_conform.dict_name mmcif_pdbx.dic _audit_conform.dict_version 5.279 _audit_conform.dict_location http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic # loop_ _database_2.database_id _database_2.database_code PDB 1YVA RCSB RCSB031959 WWPDB D_1000031959 #would produce:
sample:NXsample 1yva:NXpdb entry:NXpdb id:"1YVA" audit_conform:NXpdb dict_name:"mmcif_pdbx.dic" dict_version:"5.279" dict_location:"http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic" database_2:NXpdb database_id:["PDB","RCSB","WWPDB"] database_code:["1YVA","RCSB031959","D_1000031959"]another example is the following excerpt from pdb entry 9ins, giving the sequences of the two chains:
loop_ _entity_poly.entity_id _entity_poly.nstd_linkage _entity_poly.nstd_monomer _entity_poly.pdbx_seq_one_letter_code _entity_poly.pdbx_seq_one_letter_code_can _entity_poly.type 1 no no GIVEQCCTSICSLYQLENYCN GIVEQCCTSICSLYQLENYCN polypeptide(L) 2 no no FVNQHLCGSHLVEALYLVCGERGFFYTPKA FVNQHLCGSHLVEALYLVCGERGFFYTPKA polypeptide(L)which converts to:
entity_poly:NXpdb @NXpdb_class:CBF_cbfcat entity_id:["1", "2"] nstd_linkage:["no", "no"] nstd_monomer:["no", "no"] pdbx_seq_one_letter_code:["GIVEQCCTSICSLYQLENYCN","FVNQHLCGSHLVEALYLVCGERGFFYTPKA"] pdbx_seq_one_letter_code_can:["GIVEQCCTSICSLYQLENYCN","FVNQHLCGSHLVEALYLVCGERGFFYTPKA"] type:["polypeptide(L)", "polypeptide(L)"]
Symbols:
No symbol table
- Groups cited:
none
Structure: