use STAR::Parser; ($data) = STAR::Parser->parse('1fbm.cif');
($dict) = STAR::Parser->parse(-file=>'mmcif_dict', -dict=>1, -options=>'l'); #logs activity
STAR::Parser is the parsing module, with the class method parse for parsing
any STAR compliant files or dictionaries, as long as they do not contain nested loops (i.e., only one level of loop is supported). Upon parsing of a file, an array of DataBlock
objects is returned (one for each data_ entry in the file). The class
STAR::DataBlock contains object methods for these objects. STAR::DataBlock
is automatically accessible through STAR::Parser. Upon parsing of a
dictionary (indicated with the -dict=>1
parameter), an array of Dictionary objects is returned. STAR::Dictionary is
a sub-class of STAR::DataBlock.
The methods of this module and the accompanying modules (STAR::DataBlock, STAR::Checker, etc.) support ``named parameters'' style for passing arguments. If only one argument is mandatory, then it may be passed in either a ``named parameters'' or ``unnamed parameters'' style, for example:
@objs = STAR::Parser->parse( -file=>$file, -options=>'d' ); #debugging
@objs = STAR::Parser->parse( -file=>$file ); #no options or: @objs = STAR::Parser->parse( $file );
Usage: @objs = STAR::Parser->parse(-file=>$file[, -dict=>1, -options=>$options]);
or: @objs = STAR::Parser->parse($file); Examples: 1) @objs = STAR::Parser->parse('1fbm.cif'); $data = $objs[0];
OR:
($data) = STAR::Parser->parse('1fbm.cif');
2) @objs = STAR::Parser->parse('7files.txt'); foreach $obj (@objs) { # do something, see STAR::DataBlock }
3) @objs = STAR::Parser->parse(-file=>'mmcif_dict', -dict=>1, -options=>'l'); #logs activity $dict = @objs[0];
This method first searches the file and creates a DataBlock object for each
data_ identifier found in the file. If no data_ identifier is found, then
only one DataBlock object will be created (with $d='untitled'
, see below). If parse is invoked with the -dict=>1
option, then a Dictionary object is created for each data_ identifier
found.
Next, the method populates the data structure of each DataBlock or Dictionary object. The parsed data may be queried or accessed by object methods of the STAR::DataBlock and STAR::Dictionary modules. See the documentation for STAR::DataBlock and STAR::Dictionary.
The method always returns an array of objects, even if it contains only one object (if there is only one data_ block in the file).
Internally, the parsed data is stored in a multidimensional hash with keys
for data blocks ($d
), save blocks ($s
), categories ($c
), and items ($i
). For a file, $s
will always be '-'
, since there are no save blocks in files. For a dictionary, $s
will be '-'
outside of save_ blocks, and 'CATEGORY'
or '_item'
inside save_CATEGORY or save__item blocks (capitalization depends on the
user's dictionary.) If a file is parsed that contains no data_ identifier,
then $d
becomes
'untitled'
. $c
refers to a category, such as _atom_site and
$i
refers to an item, such as _atom_site.id.
The method may be invoked with an $options
string. These
options are the following letters which may be concatenated in any order:
d writes debugging output to STDERR l writes program activity log to STDERR