NAME
    DREIDINGAtomTypes

SYNOPSIS
    use AtomTypes::DREIDINGAtomTypes;

    use AtomTypes::DREIDINGAtomTypes qw(:all);

DESCRIPTION
    DREIDINGAtomTypes class provides the following methods:

    new, AssignAtomTypes, GetAllPossibleDREIDINGAtomTypes,
    GetAllPossibleDREIDINGNonHydrogenAtomTypes, GetDREIDINGAtomTypesData,
    StringifyDREIDINGAtomTypes

    The following functions are available:

    GetAllPossibleDREIDINGAtomTypes,
    GetAllPossibleDREIDINGNonHydrogenAtomTypes, GetDREIDINGAtomTypesData

    DREIDINGAtomTypes is derived from AtomTypes class which in turn is
    derived from ObjectProperty base class that provides methods not
    explicitly defined in DREIDINGAtomTypes, AtomTypes or ObjectProperty
    classes using Perl's AUTOLOAD functionality. These methods are generated
    on-the-fly for a specified object property:

        Set<PropertyName>(<PropertyValue>);
        $PropertyValue = Get<PropertyName>();
        Delete<PropertyName>();

    The data file DREIDINGAtomTypes.csv distributed with MayaChemTools
    release contains all possible DREIDING [ Ref 88 ] atom types.

    Format of a Five-character mnemonic label used for DREIDING atom types:

        o First two characters correspond to chemical symbol with an
          underscore as second character for elements with one character symbol
        o Third character describes hybridization: 1 - linear (sp);
          2 - trigonal (sp2); 3 = tetrahedral (sp3); R - sp2 involved in
          resonance situation
        o Fourth character used to indicate number of implicit hydrogens
        o Fourth and fifth characters are used as indicators of alternate
          parameters: formal oxidation state, bridging hydrogens and so on.
          The _HB type denotes a hydrogen atom capable of forming hydrogen
          bonds attached to (N, O, F). The H_b is the bridging hydrogen
          of diborane.

    Examples of DREIDING atom types:

        H_, C_3, C_R, C_2, N_3, N_R, O_3, O_R and so on

  METHODS
    new
            $NewDREIDINGAtomTypes = new AtomTypes::DREIDINGAtomTypes(%NamesAndValues);

        Using specified *DREIDINGAtomTypes* property names and values hash,
        new method creates a new object and returns a reference to newly
        created DREIDINGAtomTypes object. By default, the following
        properties are initialized:

            Molecule = ''
            Type = 'DREIDING'
            IgnoreHydrogens = 0

        Examples:

            $DREIDINGAtomTypes = new AtomTypes::DREIDINGAtomTypes(
                                      'Molecule' => $Molecule,
                                      'IgnoreHydrogens' => 0);

    AssignAtomTypes
            $DREIDINGAtomTypes->AssignAtomTypes();

        Assigns DREIDING atom types to all the atoms in a molecule and
        returns *DREIDINGAtomTypes*.

    GetAllPossibleDREIDINGAtomTypes
            $AllAtomTypesDataRef = $DREIDINGAtomTypes->
                                   GetAllPossibleDREIDINGAtomTypes();
            $AllAtomTypesDataRef = AtomTypes::DREIDINGAtomTypes::
                                   GetAllPossibleDREIDINGAtomTypes();

        Returns all possible DREIDING atom types corresponding to hydrogen
        and non-hydrogen atoms as an array reference.

    GetAllPossibleDREIDINGNonHydrogenAtomTypes
            $AtomTypesDataRef = $DREIDINGAtomTypes->
                                GetAllPossibleDREIDINGNonHydrogenAtomTypes();
            $AtomTypesDataRef = AtomTypes::DREIDINGAtomTypes::
                                GetAllPossibleDREIDINGNonHydrogenAtomTypes();

        Returns all possible DREIDING atom types corresponding to
        non-hydrogen atoms as an array reference.

    GetDREIDINGAtomTypesData
            $AtomTypesDataMapRef = $DREIDINGAtomTypes->GetDREIDINGAtomTypesData();
            $AtomTypesDataMapRef = AtomTypes::DREIDINGAtomTypes::
                                   GetDREIDINGAtomTypesData();

        Returns DREIDING atom types and associated data loaded from DREIDING
        data file as a reference to hash with the following hash data
        format:

            @{$DREIDINGAtomTypesDataMap{AtomTypes}} - Array of all possible atom
                                      types for all atoms
            @{$DREIDINGAtomTypesDataMap{NonHydrogenAtomTypes}} - Array of all
                                      possible atom types for non-hydrogen atoms
            @{$DREIDINGAtomTypesDataMap->{ColLabels}} - Array of column labels
            %{$DREIDINGAtomTypesDataMap->{DataCol<Num>}} - Hash keys pair:
                                                           DataCol<Num>, AtomType

    StringifyDREIDINGAtomTypes
            $String = $DREIDINGAtomTypes->StringifyDREIDINGAtomTypes();

        Returns a string containing information about *DREIDINGAtomTypes*
        object.

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

SEE ALSO
    AtomTypes.pm, AtomicInvariantsAtomTypes.pm, EStateAtomTypes.pm,
    FunctionalClassAtomTypes.pm, MMFF94AtomTypes.pm, SLogPAtomTypes.pm,
    SYBYLAtomTypes.pm, TPSAAtomTypes.pm, UFFAtomTypes.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.

