NAME
    SDFileIO

SYNOPSIS
    use FileIO::SDFileIO;

    use FileIO::SDFileIO qw(:all);

DESCRIPTION
    SDFIleIO class provides the following methods:

    new, GenerateMoleculeString, IsSDFile, ParseMoleculeString,
    ReadMolecule, ReadMoleculeString, WriteMolecule

    The following methods can also be used as functions:

    GenerateMoleculeString, IsSDFile, ParseMoleculeString

    Data specific to SDFileIO class not directly used by Molecule, Atom and
    Bond objects - data label/value pairs, atom SteroParity and so on - is
    associated to and retrieved from approptiate objects using following
    methods:

        SetMDL<PropertyName>
        GetMDL<PropertyName>.

    SD data label and values are attached to Molecule object as a refernece
    to a hash using SetDataFieldLabelAndValues and can be retrieved using
    GetDataFieldLabelAndValues method.

    SDFileIO class is derived from *FileIO* class and uses its methods to
    support generic file related functionality.

  METHODS
    new
            $NewSDFileIO = new FileIO::SDFileIO(%NamesAndValues);

        Using specified *SDFileIO* property names and values hash, new
        method creates a new object and returns a reference to newly created
        SDFileIO object.

    GenerateMoleculeString
            $MoleculeString = $SDFileIO->GenerateMoleculeString($Molecule);
            $MoleculeString = FileIO::SDFileIO::GenerateMoleculeString($Molecule);

        Returns a MoleculeString in SD format corresponding to *Molecule*.

    IsSDFile
            $Status = $SDFileIO->IsSDFile($FileName);
            $Status = FileIO::SDFileIO::IsSDFile($FileName);

        Returns 1 or 0 based on whether *FileName* is a SD file.

    ParseMoleculeString
            $Molecule = $SDFileIO->ParseMoleculeString($MoleculeString);
            $Molecule = FileIO::SDFileIO::ParseMoleculeString($MoleculeString);

        Parses *MoleculeString* and returns a Molecule object. SD data field
        label and value pairs are associated to Molecule object as a
        reference to a hash using:

            $Molecule->SetDataFieldLabelAndValues(\%DataLabelsAndValues)

        The reference to hash can be retrieved by:

            $DataLabelsAndValues = $Molecule->GetDataFieldLabelAndValues();
            for $DataLabel (sort keys %{$DataLabelsAndValues}) {
                $DataValue = $DataLabelsAndValues->{$DataLabel};
            }

    ReadMolecule
            $Molecule = $SDFileIO->ReadMolecule($FileHandle);

        Reads data for the next compound in a file using already opened
        *FileHandle*, creates, and returns a Molecule object.

    ReadMoleculeString
            $MoleculeString = $SDFileIO->ReadMoleculeString($FileHandle);

        Reads data for the next compound in a file using already opened
        *FileHandle* and returns a MoleculeString corresponding to compound
        structure and other associated data.

    WriteMolecule
            $SDFileIO->WriteMolecule($Molecule);

        Writes *Molecule* data to a file in MDLMol format and returns
        SDFileIO.

AUTHOR
    Manish Sud <msud@san.rr.com>

SEE ALSO
    MoleculeFileIO.pm, MDLMolFileIO.pm

COPYRIGHT
    Copyright (C) 2018 Manish Sud. All rights reserved.

    This file is part of MayaChemTools.

    MayaChemTools is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 3 of the License, or (at
    your option) any later version.

