NAME
    RotatableBondsDescriptors

SYNOPSIS
    use MolecularDescriptors::RotatableBondsDescriptors;

    use MolecularDescriptors::RotatableBondsDescriptors qw(:all);

DESCRIPTION
    RotatableBondsDescriptors class provides the following methods:

    new, GenerateDescriptors, GetDescriptorNames,
    StringifyRotatableBondsDescriptors

    RotatableBondsDescriptors is derived from MolecularDescriptors class
    which in turn is derived from ObjectProperty base class that provides
    methods not explicitly defined in RotatableBondsDescriptors,
    MolecularDescriptors 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>();

    A rotatable bond [ Ref 92 ] is defined as any single bond which is not
    in a ring and involves only non-hydrogen atoms. By default, the
    following types of single bonds are not considered rotatable bonds:

        o Terminal bonds
        o Bonds attached to triple bonds
        o Amide C-N bonds
        o Thioamide C-N bond bonds
        o Sulfonamide S-N bonds

  METHODS
    new
            $RotatableBondsDescriptors = new MolecularDescriptors::
                                         RotatableBondsDescriptors(
                                         %NamesAndValues);

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

            Molecule = ''
            Type = 'RotatableBonds'
            IgnoreTerminalBonds = 1
            IgnoreBondsToTripleBonds = 1
            IgnoreAmideBonds = 1
            IgnoreThioamideBonds = 1
            IgnoreSulfonamideBonds = 1
            @DescriptorNames = ('RotatableBonds')
            @DescriptorValues = ('None')

        Examples:

            $RotatableBondsDescriptors = new MolecularDescriptors::
                                         RotatableBondsDescriptors();

            $RotatableBondsDescriptors = new MolecularDescriptors::
                                         RotatableBondsDescriptors(
                                         'IgnoreAmideBonds' => 0,
                                         'IgnoreThioamideBonds' => 0,
                                         'IgnoreSulfonamideBonds' => 0);

            $RotatableBondsDescriptors->SetMolecule($Molecule);
            $RotatableBondsDescriptors->GenerateDescriptors();
            print "RotatableBondsDescriptors: $RotatableBondsDescriptors\n";

    GenerateDescriptors
            $RotatableBondsDescriptors->GenerateDescriptors();

        Calculates number of rotatable bonds descriptors in a molecule and
        returns *RotatableBondsDescriptors*.

    GetDescriptorNames
            @DescriptorNames = $RotatableBondsDescriptors->GetDescriptorNames();
            @DescriptorNames = MolecularDescriptors::RotatableBondsDescriptors::
                               GetDescriptorNames();

        Returns all available descriptor names as an array.

    StringifyRotatableBondsDescriptors
            $String = $RotatableBondsDescriptors->StringifyRotatableBondsDescriptors();

        Returns a string containing information about
        *RotatableBondsDescriptors* object.

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

SEE ALSO
    MolecularDescriptors.pm, MolecularDescriptorsGenerator.pm

COPYRIGHT
    Copyright (C) 2015 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.

