NAME
    UFFAtomTypes

SYNOPSIS
    use AtomTypes::UFFAtomTypes;

    use AtomTypes::UFFAtomTypes qw(:all);

DESCRIPTION
    UFFAtomTypes class provides the following methods:

    new, AssignAtomTypes, GetAllPossibleUFFAtomTypes,
    GetAllPossibleUFFNonHydrogenAtomTypes, GetUFFAtomTypesData,
    StringifyUFFAtomTypes

    The following functions are available:

    GetAllPossibleUFFAtomTypes, GetAllPossibleUFFNonHydrogenAtomTypes,
    GetUFFAtomTypesData

    UFFAtomTypes is derived from AtomTypes class which in turn is derived
    from ObjectProperty base class that provides methods not explicitly
    defined in UFFAtomTypes, 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 UFFAomTypes.csv distributed with MayaChemTools release
    contains all possible UFF [ Ref 81-82 ] atom types.

    Format of a Five-character mnemonic label used for UFF 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 or geometry: 1 - linear;
          2 - trigonal; R - resonant; 3 = tetrahedral; 4 - square planar;
          5 - trigonal bipyramidal; 6 - octahedral
        o Fourth and fifth characters are used as indicators of alternate
          parameters: formal oxidation state, bridging hydrogens and so on.

    Examples of UFF atom types:

        C_3, C_2, C_R, N_3, N_R, O_3, O_2, and so on

  METHODS
    new
            $NewUFFAtomTypes = new AtomTypes::UFFAtomTypes(%NamesAndValues);

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

            Molecule = ''
            Type = 'UFF'
            IgnoreHydrogens = 0

        Examples:

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

    AssignAtomTypes
            $UFFAtomTypes->AssignAtomTypes();

        Assigns UFF atom types to all the atoms in a molecule and returns
        *UFFAtomTypes*.

    GetAllPossibleUFFAtomTypes
            $AllAtomTypesDataRef = $UFFAtomTypes->
                                   GetAllPossibleUFFAtomTypes();
            $AllAtomTypesDataRef = AtomTypes::UFFAtomTypes::
                                   GetAllPossibleUFFAtomTypes();

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

    GetAllPossibleUFFNonHydrogenAtomTypes
            $AtomTypesDataRef = $UFFAtomTypes->
                                GetAllPossibleUFFNonHydrogenAtomTypes();
            $AtomTypesDataRef = AtomTypes::UFFAtomTypes::
                                GetAllPossibleUFFNonHydrogenAtomTypes();

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

    GetUFFAtomTypesData
            $AtomTypesDataMapRef = $UFFAtomTypes->GetUFFAtomTypesData();
            $AtomTypesDataMapRef = AtomTypes::UFFAtomTypes::GetUFFAtomTypesData();

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

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

    StringifyUFFAtomTypes
            $String = $UFFAtomTypes->StringifyUFFAtomTypes();

        Returns a string containing information about *UFFAtomTypes* object.

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

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

