package pdb_dtd_table; use strict; use vars qw(@ISA @EXPORT); use Exporter; @ISA = qw(Exporter); @EXPORT = qw( GetPDB_DTDTable GetSEQRESTable ); ########################################################## # PDB PARSER TABLE - Configuration Infomation. ########################################################## ######################################### # Record Type definitions and their values ######################################### ## Key my $REC_TYPE = 'RecType'; #Type of record specified. my $REF_MULTI_KEY = 'RefMultiKey';# my $REF_GROUP_KEY = 'RefGroupKey';# FOR records of type REC_GROUP my $REF_KEY_ORDER = 'RefKeyOrder';# my $REF_FIELD = 'refFieldHash'; # Ref to the Record Field data Hash. my $REF_SPECIAL = 'refSpecial'; ## Values my $REC_SINGLE = 'RecSingle'; #May appear only once, otherwise duplicate error. my $REC_SINGLE_CONT = 'RecSingleCont';#May logically appear once over multiple lines otherwise duplicate error. #Subsequent lines contain a continuation field an incrementing counter. my $REC_MULTIPLE = 'RecMultiple'; #May appear multiple times, often the information is in list form and is not #logically concatenated. These record types usually have a custom serialization #to denote order and connect to other record types. my $REC_MULTIPLE_CONT = 'RecMultipleCont';#May appear multiple times and logically over multiple lines. Subsequent #lines contain a continuation field an incrementing counter. my $REC_GROUP = 'RecGroup'; # There are three record types used to group other records. The MODEL/ENDMDL # records surround groups of ATOM, HETATM, SIGATM, ANISOU, SIGUIJ, and TER # records. TER records indicate the end of a chain. my $REC_OTHER = 'RecOther'; #The remaining record types have a detailed inner structure. ######################################### ## Key my $EXIST_TYPE = 'ExistType'; #Existence requirement. ## Values my $EXIST_REQUIRED = 'ExistRequired';#Existence Required my $EXIST_OPTIONAL = 'ExistOptional';#Existence Optional my $EXIST_DEFERED = 'ExistDefered'; #Existence Defered to the next sub-recored. ######################################### ## Key my $LOGICAL_REC_COUNT = 'LogicalRecCount'; #How many logical records occurred. #c? ## Values is iteratively set at run-time. ######################################### ## Key my $FUNCTION_NAME = 'FunctionName'; my $REF_ACTION = 'RefAction'; # Ref to the ACTION hash. my $ACTION = 'Action'; # The type of operation to perform, and criteria if warranted. my $TOKEN = 'Token'; # A char string to act upon. ## Values my $READ = 'Read'; # Read and copy the data as is. my $CONCAT = 'ConCat'; # ???????????????????????????????????????????????????????????????????????????????? my $SEARCH = 'Search'; # Determine the record type by $TOKEN. #c? my $PARSE = 'Parse'; # Parse the record's data denoted by $TOKEN. #c? my $PARSE_TO_MULTI_CHILDREN = 'ParseToMultiChildren'; my $TOKEN = 'Token'; # The data criteria if warranted. #c? declared-twice? #REC_SINGLE: $ACTION $TOKEN # $READ #REC_MULTIPLE: $ACTION $TOKEN # $READ #REC_SINGLE_CONT: $ACTION $TOKEN # $CONCAT $TOKEN => '32_70' # Get all the data found in the specified fields denoted by TOKEN on multiple lines of # # the continued record and place all gathered data in one element's pcdata. # $PARSE $TOKEN => '11_70' # Get all the data found in the specified fields denoted by TOKEN on multiple lines of # # the continued record and create a child element for each piece of data found. #REC_MULTIPLE_CONT: $ACTION $TOKEN # $PARSE, $TOKEN => '40_45' # Master Pivot on Pocessing line # $SEARCH, $TOKEN => '8_11' #$REC_OTHER: $ACTION $TOKEN # $READ ######################################### my $REF_MULTI_KEY = 'RefMultiKey';# my $REF_KEY_ORDER = 'RefKeyOrder';# ######################################### ## Key my $REF_FIELD = 'refFieldHash'; # Ref to the Record Field data Hash. ## The keys of the Record Field data Hash are preset field column locations. ## The Values are the corresponding DTD associations from the DTD file. ######################################### # PDB Parser Table ######################################### ############################################ ########## BEGIN Table section ############# ############################################ my %_PDB_DTD_TABLE = ( #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HEADER' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'header', '11_50'=>'classification', '51_59'=>'deposition_date', '63_66'=>'pdb_id'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'OBSLTE' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '32_70'}, $REF_FIELD => {'1_6'=>'deletion', '9_10' => 'CONT', '12_20'=>'dele_date', '22_25'=>'auth_pdb_id', '32_70' =>'deletion'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'TITLE' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '11_70'}, $REF_FIELD => {'1_6'=>'title', '9_10' => 'CONT', '11_70'=>'title'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'CAVEAT' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'}, $REF_FIELD => {'1_6'=>'error_warn', '9_10' => 'CONT', '12_15'=>'pdb_id', '20_70'=>'error_warn'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'COMPND' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $PARSE, $TOKEN => '11_70'}, $REF_FIELD => {'1_6'=>'compounds', '9_10' => 'CONT', '11_70'=>'compound'}}, # $REF_FIELD => {'1_6'=>'compounds', '9_10' => 'CONT', '11_70'=>'compounds'}},#in case I decide it's better for compounds to have just pcdata; in that case get the compounds DTD def saved in 'URI_DTD_Cat-old-04-11-08-diff-compnd.dtd, and change to $ACTION => $CONCAT' ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SOURCE' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $PARSE, $TOKEN => '11_70'}, $REF_FIELD => {'1_6'=>'sources', '9_10' => 'CONT', '11_70'=>'source'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'KEYWDS' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '11_70'}, $REF_FIELD => {'1_6'=>'keywords', '9_10' => 'CONT', '11_70'=>'keywords'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'EXPDTA' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '11_70'}, $REF_FIELD => {'1_6'=>'experiment_method','9_10' => 'CONT', '11_70'=>'experiment_method'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'AUTHOR' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '11_70'}, # $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => '11_70:,'}, $REF_FIELD => {'1_6'=>'annotation_authors', '9_10' => 'CONT', '11_70'=>'author'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'REVDAT' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $PARSE, $TOKEN => '40_45'}, # Master Pivot on Pocessing line $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6','8_10'], '1_6' =>'revisions', '8_10' => 'revision'}, $REF_FIELD => {'1_6'=>'revisions', '8_10'=>'revision_id', '11_12' => 'CONT', '14_22'=>'revision_date', '24_28'=>'revision_pdb_id', '32_32'=>'revision_type', '40_45'=>'revision_record_name', '47_52'=>'revision_record_name', '54_59'=>'revision_record_name', '61_66'=>'revision_record_name'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SPRSDE' => {$REC_TYPE => $REC_SINGLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '32_70'}, $REF_FIELD => {'1_6'=>'superseded_entry', '9_10' => 'CONT', '12_20'=>'superseded_date', '22_25'=>'pdb_id', '32_70'=>'superseded_entry'}}, ########################################################################### ##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'JRNL' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'},#CONCAT will use TOKEN as M. Piv for concatination, thus if an ID is to be use for a new $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '13_16'], '1_6' =>'ref_citation', '13_16' =>'citation'},#record, the M.P. should be reset to prev field. $REF_FIELD => {'1_6'=>'ref_citation', '13_16'=>'citation_type', '20_70'=>'citation'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'REMARK' => {$REC_TYPE => $REC_GROUP, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_GROUP_KEY => {$REF_KEY_ORDER => ['REMAR1', 'REMARn'], 'REMAR1' =>'1', 'REMARn' =>'OTHER'}, $REF_FIELD => {'REMAR1'=>'8_10', 'REMARn'=>'8_10'}}, 'REMAR1' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'}, #CONCAT will use TOKEN as M. Piv for concatination, thus if an ID is to be use for a new $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '12_16'], '1_6' =>'ref_remark', '12_16' =>'remark'},#record, the M.P. should be reset to prev field. $REF_FIELD => {'1_6'=>'ref_remark', '12_16'=>'remark_type', '20_70'=>'remark'}}, 'REMARn' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '12_70'}, #CONCAT will use TOKEN as M. Piv for concatination, thus if an ID is to be use for a new $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '8_10'], '1_6' =>'ref_remark', '8_10' => 'remark'},#record, the M.P. should be reset to prev field. $REF_FIELD => {'1_6'=>'ref_remark', '8_10' => 'remark_type', '12_70'=>'remark'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'DBREF' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_11'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'db_struct_refs'}, $REF_FIELD => {'1_6'=>'db_struct_refs', '8_11'=>'db_struct_ref_pdb_id', '13_13'=>'db_struct_ref_seq_type', '15_18'=>'db_struct_ref_seq_align_begin', '19_19'=>'db_struct_ref_insertion_begin', '21_24'=>'db_struct_ref_seq_align_end', '25_25'=>'db_struct_ref_insertion_end', '27_32'=>'db_struct_ref_db_name', '34_41'=>'db_struct_ref_db_accession', '43_54'=>'db_struct_ref_db_code', '56_60'=>'db_struct_ref_auth_align_begin', '61_61'=>'db_struct_ref_auth_insertion_begin', '63_67'=>'db_struct_ref_auth_align_end', '68_68'=>'db_struct_ref_auth_insertion_end'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SEQADV' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_11'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'struct_refs_seq_difs'}, $REF_FIELD => {'1_6'=>'struct_refs_seq_difs', '8_11'=>'seq_dif_pdb_id', '13_15'=>'seq_dif_pdb_residue_name', '17_17'=>'seq_dif_pdb_chain_id', '19_22'=>'seq_dif_pdb_seq_num', '23_23'=>'seq_dif_pdb_insertion_code', '25_28'=>'seq_dif_db_name', '30_38'=>'seq_dif_db_accession', '40_42'=>'seq_dif_db_residue_name', '44_48'=>'seq_dif_db_seq_num', '50_70'=>'seq_dif_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ######## not done yet: SEQRES has lots of attributes to watch and populate, plus custom functions ##### #'SEQRES' => #{$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', # $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'},#CONCAT will use TOKEN as M. Piv for concatination, thus if an ID is to be use for new record # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '12_12'], '1_6' =>'sequence', '12_12' =>'three_letter_seq'},#the M.P. should be reset to prev field. # $REF_FIELD => {'1_6'=>'sequence', '12_12'=>'seq_id', '14_17'=>'num_resds', '20_70'=>'three_letter_seq'}}, 'SEQRES' => {$REC_TYPE => $REC_OTHER, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => 'residue_count', $FUNCTION_NAME => 'ProcessSEQRES', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'},#CONCAT will use TOKEN as M. Piv for concatination, thus if an ID is to be use for new record $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'sequences'},#the M.P. should be reset to prev field. $REF_FIELD => {'1_6'=>'sequence', '12_12'=>'seq_id', '14_17'=>'num_resds', '20_70'=>'three_letter_seq'}}, #'REMARK' => #{$REC_TYPE => $REC_OTHER, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', # $REF_GROUP_KEY => {$REF_KEY_ORDER => ['REMAR1', 'REMARn'], 'REMAR1' =>'1', 'REMARn' =>'OTHER'}, # $REF_FIELD => {'REMAR1'=>'8_10', 'REMARn'=>'8_10'}}, #'SEQRES' => #{$REC_TYPE => $REC_OTHER, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', ## $FUNCTION_NAME => \&pdbparser::ProcessSEQRES, # $FUNCTION_NAME => 'ProcessSEQRES', # $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'}, #Note CONCAT will use TOKEN as M. Piv for concatination, therefore if an ID is to be use for a # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['9_10'], '1_6' =>'9_10' =>'sequence'}, #new record, the M.P. should be reset to prev field. # $REF_FIELD => {'1_6'=>'sequence', '12_12'=>'seq_type', # '14_17'=>'num_resds', # '20_22'=>'one_letter_seq;three_letter_seq:three_letter_name', # '24_26'=>'one_letter_seq;three_letter_seq:three_letter_name', # '28_30'=>'one_letter_seq;three_letter_seq:three_letter_name', # '32_34'=>'one_letter_seq;three_letter_seq:three_letter_name', # '36_38'=>'one_letter_seq;three_letter_seq:three_letter_name', # '40_42'=>'one_letter_seq;three_letter_seq:three_letter_name', # '44_46'=>'one_letter_seq;three_letter_seq:three_letter_name', # '48_50'=>'one_letter_seq;three_letter_seq:three_letter_name', # '52_54'=>'one_letter_seq;three_letter_seq:three_letter_name', # '56_58'=>'one_letter_seq;three_letter_seq:three_letter_name', # '60_62'=>'one_letter_seq;three_letter_seq:three_letter_name', # '64_66'=>'one_letter_seq;three_letter_seq:three_letter_name', # '68_70'=>'one_letter_seq;three_letter_seq:three_letter_name'}}, ########################################################################## ##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #### FTNOTE is a absolete record type, but it still exists in old PDBs #### #### (Ex: in 1MCP) In new entries this is replaced by the CISPEP record #### 'FTNOTE' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '12_70'}, #CONCAT will use TOKEN as M. Piv for concatination, thus if an ID is to be use for a new $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '9_10'], '1_6' =>'footnotes', '9_10' =>'footnote'},#record, the M.P. should be reset to prev field. $REF_FIELD => {'1_6'=>'footnotes', '9_10'=>'footnote_id', '12_70'=>'footnote'}}, ########################################################################## #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'MODRES' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_11'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'modification_resds'}, $REF_FIELD => {'1_6'=>'modification_resds', '8_11'=>'pdb_id', '13_15'=>'modification_current_resd', '17_17'=>'modification_seq_type', '19_22'=>'modification_seq_id', '23_23'=>'modification_insertion_code', '25_27'=>'modification_standard_resd', '30_70'=>'modification_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HET' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'hets'}, $REF_FIELD => {'1_6'=>'hets', '8_10'=>'pdb_het_id', '13_13'=>'het_chain_id', '14_17'=>'het_seq_id', '18_18'=>'het_insertion_code', '21_25'=>'het_num_hetatoms', '31_70'=>'het_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HETNAM' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '16_70'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '12_14'], '1_6' =>'hetnams', '12_14'=>'hetnam_details'}, $REF_FIELD => {'1_6'=>'hetnams', '9_10' => 'CONT', '12_14'=>'pdb_hetnam_id', '16_70'=>'hetnam_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HETSYN' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '16_70'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '12_14'], '1_6' =>'hetsyns', '12_14'=>'synonyms'}, $REF_FIELD => {'1_6'=>'hetsyns', '9_10' => 'CONT', '12_14'=>'hetsyn_id', '16_70'=>'synonyms'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'FORMUL' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $CONCAT, $TOKEN => '20_70'}, #cat! works but w/o concatenating $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '9_10'], '1_6' =>'formulas', '9_10' =>'formula_details'}, $REF_FIELD => {'1_6'=>'formulas', '9_10'=>'formula_component_num', '13_15'=>'formula_het_id', '17_18' => 'CONT', '19_19'=>'formula_is_water', '20_70'=>'formula_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HELIX' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'helixes'}, $REF_FIELD => {'1_6'=>'helixes', '8_10'=>'helix_number', '12_14'=>'helix_pdb_id', '16_18'=>'helix_begin_residue', '20_20'=>'helix_begin_chain_id', '22_25'=>'helix_begin_seq_num', '26_26'=>'helix_begin_insertion_code', '28_30'=>'helix_end_residue', '32_32'=>'helix_end_chain_id', '34_37'=>'helix_end_seq_num', '38_38'=>'helix_end_insertion_code', '39_40'=>'helix_class', '41_70'=>'helix_details', '72_76'=>'helix_length'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SHEET' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $PARSE_TO_MULTI_CHILDREN, $TOKEN => '18_20'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6', '12_14'], '1_6' =>'sheets', '12_14' =>'sheet'}, $REF_FIELD => {'1_6'=>'sheets', '12_14'=>'sheet_id', '15_16'=>'num_strands', '18_20'=>'strand_begin_residue', '22_22'=>'strand_begin_chain_id', '23_26'=>'strand_begin_seq_num', '27_27'=>'strand_begin_insertion_code', '29_31'=>'strand_end_residue', '33_33'=>'strand_end_chain_id', '34_37'=>'strand_end_seq_num', '38_38'=>'strand_end_insertion_code', '39_40'=>'strand_sense', '42_45'=>'curr_strand_atom', '46_48'=>'curr_strand_residue', '50_50'=>'curr_strand_chain_id', '51_54'=>'curr_strand_seq_num', '55_55'=>'curr_strand_insertion_code', '57_60'=>'prev_strand_atom', '61_63'=>'prev_strand_residue', '65_65'=>'prev_strand_chain_id', '66_69'=>'prev_strand_seq_num', '70_70'=>'prev_strand_insertion_code'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'TURN' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'turns'}, $REF_FIELD => {'1_6'=>'turns', '8_10'=>'turn_number', '12_14'=>'turn_pdb_id', '16_18'=>'turn_begin_residue', '20_20'=>'turn_begin_chain_id', '21_24'=>'turn_begin_seq_num', '25_25'=>'turn_begin_insertion_code', '27_29'=>'turn_end_residue', '31_31'=>'turn_end_chain_id', '32_35'=>'turn_end_seq_num', '36_36'=>'turn_end_insertion_code', '41_70'=>'turn_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SSBOND' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'disulfide_bonds'}, $REF_FIELD => {'1_6'=>'disulfide_bonds', '8_10'=>'ssbond_number', '12_14'=>'ss_bond_residue_1', '16_16'=>'ss_bond_chain_id_1', '18_21'=>'ss_bond_seq_Num_1', '22_22'=>'ss_bond_insertion_code_1', '26_28'=>'ss_bond_residue_2', '30_30'=>'ss_bond_chain_id_2', '32_35'=>'ss_bond_seq_Num_2', '36_36'=>'ss_bond_insertion_code_2', '60_65'=>'ss_bond_sym_oper_1', '67_72'=>'ss_bond_sym_oper_2'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'LINK' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '13_16'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'non_primary_links'}, $REF_FIELD => {'1_6'=>'non_primary_links', '13_16'=>'link_atom_1', '17_17'=>'link_alt_location_1', '18_20'=>'link_residue_1', '22_22'=>'link_chain_id_1', '23_26'=>'link_residue_seq_num_1', '27_27'=>'link_insertion_code_1', '43_46'=>'link_atom_2', '47_47'=>'link_alt_location_2', '48_50'=>'link_residue_2', '52_52'=>'link_chain_id_2', '53_56'=>'link_residue_seq_num_2', '57_57'=>'link_insertion_code_2', '60_65'=>'link_symetry_op_1', '67_72'=>'link_symetry_op_2'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HYDBND' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '13_16'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'hydrogen_bonds'}, $REF_FIELD => {'1_6'=>'hydrogen_bonds', '13_16'=>'h_bond_atom_1', '17_17'=>'h_bond_alt_location_1', '18_20'=>'h_bond_residue_1', '22_22'=>'h_bond_chain_id_1', '23_27'=>'h_bond_residue_seq_num_1', '28_28'=>'h_bond_insertion_code_1', '30_33'=>'hydr_atom', '34_34'=>'hydr_atom_alt_location', '36_36'=>'hydr_atom_chain_id', '37_41'=>'hydr_atom_residue_seq_num', '42_42'=>'hydr_atom_insertion_code', '44_47'=>'h_bond_atom_2', '48_48'=>'h_bond_alt_location_2', '49_51'=>'h_bond_residue_2', '53_53'=>'h_bond_chain_id_2', '54_58'=>'h_bond_residue_seq_num_2', '59_59'=>'h_bond_insertion_code_2', '60_65'=>'h_bond_symetry_op_1', '67_72'=>'h_bond_symetry_op_2'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SLTBRG' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '13_16'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'salt_bridges'}, $REF_FIELD => {'1_6'=>'salt_bridges', '13_16'=>'salt_br_atom_1', '17_17'=>'salt_br_alt_location_1', '18_20'=>'salt_br_residue_1', '22_22'=>'salt_br_chain_id_1', '23_26'=>'salt_br_residue_seq_num_1', '27_27'=>'salt_br_insertion_code_1', '43_46'=>'salt_br_atom_2', '47_47'=>'salt_br_alt_location_2', '48_50'=>'salt_br_residue_2', '52_52'=>'salt_br_chain_id_2', '53_56'=>'salt_br_residue_seq_num_2', '57_57'=>'salt_br_insertion_code_2', '60_65'=>'salt_br_symetry_op_1', '67_72'=>'salt_br_symetry_op_2'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'CISPEP' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'cis_peptides'}, $REF_FIELD => {'1_6'=>'cis_peptides', '8_10'=>'cis_peptide_number', '12_14'=>'cis_peptide_residue_1', '16_16'=>'cis_peptide_chain_id_1', '18_21'=>'cis_peptide_seq_Num_1', '22_22'=>'cis_peptide_insertion_code_1', '26_28'=>'cis_peptide_residue_2', '30_30'=>'cis_peptide_chain_id_2', '32_35'=>'cis_peptide_seq_Num_2', '36_36'=>'cis_peptide_insertion_code_2', '44_46'=>'cis_peptide_model_num', '54_59'=>'cis_peptide_angle'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SITE' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $PARSE_TO_MULTI_CHILDREN, $TOKEN => '19_21'}, # Master Pivot on Pocessing line $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6','12_14'], '1_6' =>'sites', '12_14' => 'site'}, $REF_FIELD => {'1_6'=>'sites', '8_10'=>'CONT', '12_14'=>'site_name', '16_17'=>'site_num', '19_21'=>'site_residue_name', '23_23'=>'site_residue_chain_id', '24_27'=>'site_residue_seq_num', '28_28'=>'site_residue_insertion_code', '30_32'=>'site_residue_name', '34_34'=>'site_residue_chain_id', '35_38'=>'site_residue_seq_num', '39_39'=>'site_residue_insertion_code', '41_43'=>'site_residue_name', '45_45'=>'site_residue_chain_id', '46_49'=>'site_residue_seq_num', '50_50'=>'site_residue_insertion_code', '52_54'=>'site_residue_name', '56_56'=>'site_residue_chain_id', '57_60'=>'site_residue_seq_num', '61_61'=>'site_residue_insertion_code'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'CRYST1' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'crystallographic_unit', '7_15'=>'length_a_Angstroms', '16_24'=>'length_b_Angstroms', '25_33'=>'length_c_Angstroms', '34_40'=>'alpha_angle', '41_47'=>'beta_angle', '48_54'=>'gamma_angle', '56_66'=>'space_group_name_H_M', '67_70'=>'Z_pdb'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'ORIGX1' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'origx1', '11_20'=>'origx11', '21_30'=>'origx12', '31_40'=>'origx13', '46_55'=>'origx1_vector'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'ORIGX2' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'origx2', '11_20'=>'origx21', '21_30'=>'origx22', '31_40'=>'origx23', '46_55'=>'origx2_vector'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'ORIGX3' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'origx3', '11_20'=>'origx31', '21_30'=>'origx32', '31_40'=>'origx33', '46_55'=>'origx3_vector'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SCALE1' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'scale1', '11_20'=>'scale11', '21_30'=>'scale12', '31_40'=>'scale13', '46_55'=>'scale1_vector'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SCALE2' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'scale2', '11_20'=>'scale21', '21_30'=>'scale22', '31_40'=>'scale23', '46_55'=>'scale2_vector'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SCALE3' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'scale3', '11_20'=>'scale31', '21_30'=>'scale32', '31_40'=>'scale33', '46_55'=>'scale3_vector'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #### This CAN RE-APPEAR as groups MTRIX1->MTRIX2->MTRIX3 #### 'MTRIX1' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'non_cryst_matrix'}, $REF_FIELD => {'1_6'=>'matrix1', '8_10'=>'matrix1_number', '11_20'=>'matrix11', '21_30'=>'matrix12', '31_40'=>'matrix13', '46_55'=>'matrix1_vector', '60_60'=>'matrix1_are_contained'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ###??? SAME COMMENT AS FOR MATRIX1 'MTRIX2' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'non_cryst_matrix'}, $REF_FIELD => {'1_6'=>'matrix2', '8_10'=>'matrix2_number', '11_20'=>'matrix21', '21_30'=>'matrix22', '31_40'=>'matrix23', '46_55'=>'matrix2_vector', '60_60'=>'matrix2_are_contained'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'MTRIX3' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'non_cryst_matrix'}, $REF_FIELD => {'1_6'=>'matrix3', '8_10'=>'matrix3_number', '11_20'=>'matrix31', '21_30'=>'matrix32', '31_40'=>'matrix33', '46_55'=>'matrix3_vector', '60_60'=>'matrix3_are_contained'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'TVECT' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '8_10'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'translation_vectors'}, $REF_FIELD => {'1_6'=>'translation_vectors', '8_10'=>'t_vector_id', '11_20'=>'translation_vector1', '21_30'=>'translation_vector2', '31_40'=>'translation_vector3', '41_70'=>'translation_details'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'MODEL' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => ''}, # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>''}, $REF_FIELD => {'1_6'=>'atom_model', '11_14'=>'model_number'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'ENDMDL' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => ''}, # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>''}, $REF_FIELD => {'1_6'=>'endmdl', '11_14'=>'endmdl'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'TER' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => 'SPECIAL'}, $REF_SPECIAL => {'atom'=>'atom_chain', 'het_atom'=>'atom_chain'}, # What child (key) to use if at parent (value). # $REF_FIELD => {'1_6'=>'ter', '7_70'=>'ter'}}, # Will be printed $REF_FIELD => {'1_6'=>'ter', '31_32'=>'ter'}}, # Will not be printed ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'ATOM' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => '7_11'}, # Master Pivot on Pocessing line $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'atom_chain'}, # creates multi ATOM w/o sigatm etc. $REF_FIELD => {'1_6'=>'atom', '7_11'=>'atom_number', '13_16'=>'atom_name', '17_17'=>'atom_alternate_location', '18_20'=>'atom_residue', '22_22'=>'atom_chain_id', '23_26'=>'atom_seq_num', '27_27'=>'atom_insertion_code', '31_38'=>'atom_X_Angstroms', '39_46'=>'atom_Y_Angstroms', '47_54'=>'atom_Z_Angstroms', '55_60'=>'atom_occupancy', '61_66'=>'atom_temp_factor', '73_76'=>'atom_segment_id', '77_78'=>'atom_element_symbol', '79_80'=>'atom_charge'}}, ########################################################################### #Ensure the current line is using a MultiKey # # Does PDBNode element match the data of one of the keys? Yes return the key number. # $MultiKeyLevelForNode = GetMultiKeyOfLineMatchingPDBNode(\%PDBNode, \%LineInfo); #Match Record field data from left to right # $SharedMultiKeyLevel = CompareFieldsOfLineToNextBasedOnMKeys(\%LineInfo,0); #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'HETATM' => {$REC_TYPE => $REC_MULTIPLE_CONT, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => '7_11'}, # Master Pivot on Pocessing line $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'atom_chain'}, $REF_FIELD => {'1_6'=>'het_atom', '7_11'=>'het_atom_number', '13_16'=>'het_atom_name', '17_17'=>'het_atom_alternate_location', '18_20'=>'het_atom_residue', '22_22'=>'het_atom_chain_id', '23_26'=>'het_atom_seq_num', '27_27'=>'het_atom_insertion_code', '31_38'=>'het_atom_X_Angstroms', '39_46'=>'het_atom_Y_Angstroms', '47_54'=>'het_atom_Z_Angstroms', '55_60'=>'het_atom_occupancy', '61_66'=>'het_atom_temp_factor', '73_76'=>'het_atom_segment_id', '77_78'=>'het_atom_element_symbol', '79_80'=>'het_atom_charge'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SIGATM' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => ''}, # Master Pivot on Pocessing line # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>''}, $REF_FIELD => {'1_6'=>'sigatm', '7_11'=>'sigatm_atom_number', '31_38'=>'standard_dev_X', '39_46'=>'standard_dev_Y', '47_54'=>'standard_dev_Z', '55_60'=>'standard_dev_occupancy', '61_66'=>'standard_dev_temp_factor'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'ANISOU' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => ''}, # Master Pivot on Pocessing line # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>''}, $REF_FIELD => {'1_6'=>'anisou', '7_11'=>'anisou_atom_number', '29_35'=>'anisotropic_temp_factor_11', '36_42'=>'anisotropic_temp_factor_22', '43_49'=>'anisotropic_temp_factor_33', '50_56'=>'anisotropic_temp_factor_12', '57_63'=>'anisotropic_temp_factor_13', '64_70'=>'anisotropic_temp_factor_23'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'SIGUIJ' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $SEARCH, $TOKEN => ''}, # Master Pivot on Pocessing line # $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>''}, $REF_FIELD => {'1_6'=>'siguij', '7_11'=>'siguij_atom_number', '29_35'=>'standard_dev_aniso_temp_fact_11', '36_42'=>'standard_dev_aniso_temp_fact_22', '43_49'=>'standard_dev_aniso_temp_fact_33', '50_56'=>'standard_dev_aniso_temp_fact_12', '57_63'=>'standard_dev_aniso_temp_fact_13', '64_70'=>'standard_dev_aniso_temp_fact_23'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'CONECT' => {$REC_TYPE => $REC_MULTIPLE, $EXIST_TYPE => $EXIST_OPTIONAL, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => '7_11'}, $REF_MULTI_KEY => {$REF_KEY_ORDER => ['1_6'], '1_6' =>'atom_connections'}, $REF_FIELD => {'1_6'=>'atom_connections', '7_11'=>'conn_atom_number', '12_16'=>'bonded_atom_number1', '17_21'=>'bonded_atom_number2', '22_26'=>'bonded_atom_number3', '27_31'=>'bonded_atom_number4', '32_36'=>'H_bonded_atom_number1', '37_41'=>'H_bonded_atom_number2', '42_46'=>'salt_bridged_atom_number1', '47_51'=>'H_bonded_atom_number3', '52_56'=>'H_bonded_atom_number4', '57_61'=>'salt_bridged_atom_number2'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'MASTER' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>'bookkeep_info', '11_15'=>'num_remarks', '21_25'=>'num_hets', '26_30'=>'num_helixes', '31_35'=>'num_sheets', '36_40'=>'num_turns', '41_45'=>'num_sites', '46_50'=>'num_coord_transform', '51_55'=>'num_atomic_coords', '56_60'=>'num_ter', '61_65'=>'num_connections', '66_70'=>'num_seqs'}}, ########################################################################### #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'END' => {$REC_TYPE => $REC_SINGLE, $EXIST_TYPE => $EXIST_REQUIRED, $LOGICAL_REC_COUNT => '', $REF_ACTION => { $ACTION => $READ, $TOKEN => ''}, $REF_FIELD => {'1_6'=>''}}, ########################################################################### ############################################ );# End of %PDB_TABLE ############################################ ########################################################## # END OF: PDB PARSER TABLE - Configuration Infomation. ########################################################## sub GetPDB_DTDTable { return ( \%_PDB_DTD_TABLE); } ########################################################## # BEGIN OF: SEQRES TABLE - Configuration Infomation. ########################################################## ######################################### # # Residue # ######################################### ## Key my $RESIDUE_NAME = 'ResidueName'; my $THREE_LETTER_RESIDUE = 'ThreeLetterRedidue'; my $ONE_LETTER_RESIDUE = 'OneLetterRedidue'; my $PHI_ANGLE = 'PhiAngle'; my $PSI_ANGLE = 'PsiAngle'; my $RAMACHANDRAN = 'Ramachandran'; my $RESIDUE_WEIGHT = 'ResidueWeight'; my $RESIDUE_FORMULA = 'ResidueFormula'; my $HYDROPHOBICITY_HOPP_WOODS = 'HydrophobicityHoppWoods'; my $HYDROPHOBICITY_KYTE_DOOLITTLE = 'HydrophobicityKyteDoolittle'; ############################################ ########## BEGIN Table section ############# ############################################ my %_SEQRES = ( 'ALA' => {$RESIDUE_NAME => 'alanine', $THREE_LETTER_RESIDUE => 'ALA', $ONE_LETTER_RESIDUE => 'A', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '71.03712', $RESIDUE_FORMULA => 'C3H5NO', $HYDROPHOBICITY_HOPP_WOODS => '-0.5', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-1.8'}, 'ASX' => {$RESIDUE_NAME => 'Asparagine or Aspartic Acid', $THREE_LETTER_RESIDUE => 'ASX', $ONE_LETTER_RESIDUE => 'B', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '', $RESIDUE_FORMULA => 'C4H6N2O2 or C4H5NO3', $HYDROPHOBICITY_HOPP_WOODS => '', $HYDROPHOBICITY_KYTE_DOOLITTLE => ''}, 'CYS' => {$RESIDUE_NAME => 'Cysteine', $THREE_LETTER_RESIDUE => 'CYS', $ONE_LETTER_RESIDUE => 'C', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '103.00919', $RESIDUE_FORMULA => 'C3H5NOS', $HYDROPHOBICITY_HOPP_WOODS => '-1', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-2.5'}, 'ASP' => {$RESIDUE_NAME => 'Aspartic Acid', $THREE_LETTER_RESIDUE => 'ASP', $ONE_LETTER_RESIDUE => 'D', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '115.02695', $RESIDUE_FORMULA => 'C4H5NO3', $HYDROPHOBICITY_HOPP_WOODS => '3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '3.5'}, 'GLU' => {$RESIDUE_NAME => 'Glutamic Acid', $THREE_LETTER_RESIDUE => 'GLU', $ONE_LETTER_RESIDUE => 'E', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '129.0426', $RESIDUE_FORMULA => 'C5H7NO3', $HYDROPHOBICITY_HOPP_WOODS => '3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '3.5'}, 'PHE' => {$RESIDUE_NAME => 'Phenylalanine', $THREE_LETTER_RESIDUE => 'PHE', $ONE_LETTER_RESIDUE => 'F', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '147.06842', $RESIDUE_FORMULA => 'C9H9NO', $HYDROPHOBICITY_HOPP_WOODS => '-2.5', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-2.8'}, 'GLY' => {$RESIDUE_NAME => 'Glycine', $THREE_LETTER_RESIDUE => 'GLY', $ONE_LETTER_RESIDUE => 'G', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '57.02147', $RESIDUE_FORMULA => 'C2H3NO', $HYDROPHOBICITY_HOPP_WOODS => '0.0', $HYDROPHOBICITY_KYTE_DOOLITTLE => '0.4'}, 'HIS' => {$RESIDUE_NAME => 'Histidine', $THREE_LETTER_RESIDUE => 'HIS', $ONE_LETTER_RESIDUE => 'H', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '137.05891', $RESIDUE_FORMULA => 'C6H7N3O', $HYDROPHOBICITY_HOPP_WOODS => '-0.5', $HYDROPHOBICITY_KYTE_DOOLITTLE => '3.2'}, 'ILE' => {$RESIDUE_NAME => 'Isoleucine', $THREE_LETTER_RESIDUE => 'ILE', $ONE_LETTER_RESIDUE => 'I', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '113.08407', $RESIDUE_FORMULA => 'C6H11NO', $HYDROPHOBICITY_HOPP_WOODS => '-1.8', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-4.5'}, 'LYS' => {$RESIDUE_NAME => 'Lysine', $THREE_LETTER_RESIDUE => 'LYS', $ONE_LETTER_RESIDUE => 'K', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '128.09497', $RESIDUE_FORMULA => 'C6H12N2O', $HYDROPHOBICITY_HOPP_WOODS => '3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '3.9'}, 'LEU' => {$RESIDUE_NAME => 'Leucine', $THREE_LETTER_RESIDUE => 'LEU', $ONE_LETTER_RESIDUE => 'L', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '113.08407', $RESIDUE_FORMULA => 'C6H11NO', $HYDROPHOBICITY_HOPP_WOODS => '-1.8', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-3.8'}, 'MET' => {$RESIDUE_NAME => 'Methionine', $THREE_LETTER_RESIDUE => 'MET', $ONE_LETTER_RESIDUE => 'M', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '131.04049', $RESIDUE_FORMULA => 'C5H9NOS', $HYDROPHOBICITY_HOPP_WOODS => '-1.3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-1.9'}, 'ASN' => {$RESIDUE_NAME => 'Asparagine', $THREE_LETTER_RESIDUE => 'ASN', $ONE_LETTER_RESIDUE => 'N', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '114.04293', $RESIDUE_FORMULA => 'C4H6N2O2', $HYDROPHOBICITY_HOPP_WOODS => '0.2', $HYDROPHOBICITY_KYTE_DOOLITTLE => '3.5'}, 'PRO' => {$RESIDUE_NAME => 'Proline', $THREE_LETTER_RESIDUE => 'PRO', $ONE_LETTER_RESIDUE => 'P', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '97.05277', $RESIDUE_FORMULA => 'C5H7NO', $HYDROPHOBICITY_HOPP_WOODS => '0.0', $HYDROPHOBICITY_KYTE_DOOLITTLE => '1.6'}, 'GLN' => {$RESIDUE_NAME => 'Glutamine', $THREE_LETTER_RESIDUE => 'GLN', $ONE_LETTER_RESIDUE => 'Q', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '128.05858', $RESIDUE_FORMULA => 'C5H8N2O2', $HYDROPHOBICITY_HOPP_WOODS => '0.2', $HYDROPHOBICITY_KYTE_DOOLITTLE => '3.5'}, 'ARG' => {$RESIDUE_NAME => 'Arginine', $THREE_LETTER_RESIDUE => 'ARG', $ONE_LETTER_RESIDUE => 'R', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '156.10112', $RESIDUE_FORMULA => 'C6H12N4O', $HYDROPHOBICITY_HOPP_WOODS => '3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '4.5'}, 'SER' => {$RESIDUE_NAME => 'Serine', $THREE_LETTER_RESIDUE => 'SER', $ONE_LETTER_RESIDUE => 'S', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '87.03203', $RESIDUE_FORMULA => 'C3H5NO2', $HYDROPHOBICITY_HOPP_WOODS => '0.3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '0.8'}, 'THR' => {$RESIDUE_NAME => 'Threonine', $THREE_LETTER_RESIDUE => 'THR', $ONE_LETTER_RESIDUE => 'T', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '101.04768', $RESIDUE_FORMULA => 'C4H7NO2', $HYDROPHOBICITY_HOPP_WOODS => '-0.4', $HYDROPHOBICITY_KYTE_DOOLITTLE => '0.7'}, 'SEL' => {$RESIDUE_NAME => 'selenocystein', $THREE_LETTER_RESIDUE => 'SEL', $ONE_LETTER_RESIDUE => 'U', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '', $RESIDUE_FORMULA => '', $HYDROPHOBICITY_HOPP_WOODS => '', $HYDROPHOBICITY_KYTE_DOOLITTLE => ''}, 'VAL' => {$RESIDUE_NAME => 'Valine', $THREE_LETTER_RESIDUE => 'VAL', $ONE_LETTER_RESIDUE => 'V', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '99.06842', $RESIDUE_FORMULA => 'C5H9NO', $HYDROPHOBICITY_HOPP_WOODS => '-1.5', $HYDROPHOBICITY_KYTE_DOOLITTLE => '-4.2'}, 'TRP' => {$RESIDUE_NAME => 'Tryptophan', $THREE_LETTER_RESIDUE => 'TRP', $ONE_LETTER_RESIDUE => 'W', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '186.07932', $RESIDUE_FORMULA => 'C11H10N2O', $HYDROPHOBICITY_HOPP_WOODS => '-3.4', $HYDROPHOBICITY_KYTE_DOOLITTLE => '0.9'}, 'XAA' => {$RESIDUE_NAME => 'Isoleucine or Leucine', $THREE_LETTER_RESIDUE => 'XAA', $ONE_LETTER_RESIDUE => 'X', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '113.08407', $RESIDUE_FORMULA => 'C6H11NO or C6H11NO', $HYDROPHOBICITY_HOPP_WOODS => '', $HYDROPHOBICITY_KYTE_DOOLITTLE => ''}, 'TYR' => {$RESIDUE_NAME => 'Tyrosine', $THREE_LETTER_RESIDUE => 'TYR', $ONE_LETTER_RESIDUE => 'Y', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '163.06333', $RESIDUE_FORMULA => 'C9H9NO2', $HYDROPHOBICITY_HOPP_WOODS => '-2.3', $HYDROPHOBICITY_KYTE_DOOLITTLE => '1.3'}, 'GLX' => {$RESIDUE_NAME => 'Glutamic Acid or Glutamine', $THREE_LETTER_RESIDUE => 'GLX', $ONE_LETTER_RESIDUE => 'Z', $PHI_ANGLE => '', $PSI_ANGLE => '', $RAMACHANDRAN => '', $RESIDUE_WEIGHT => '', $RESIDUE_FORMULA => 'C5H7NO3 or C5H8N2O2', $HYDROPHOBICITY_HOPP_WOODS => '', $HYDROPHOBICITY_KYTE_DOOLITTLE => ''}, ############################################ );# End of %_SEQRES ############################################ ########################################################## # END OF: SEQRES TABLE - Configuration Infomation. ########################################################## sub GetSEQRESTable { return ( \%_SEQRES); }