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);
}





