Mercurial > repos > deepakjadmin > mayatool3_test2
diff docs/modules/txt/Molecule.txt @ 0:4816e4a8ae95 draft default tip
Uploaded
author | deepakjadmin |
---|---|
date | Wed, 20 Jan 2016 09:23:18 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/modules/txt/Molecule.txt Wed Jan 20 09:23:18 2016 -0500 @@ -0,0 +1,988 @@ +NAME + Molecule - Molecule class + +SYNOPSIS + use Molecule; + + use Molecule qw(:all); + +DESCRIPTION + Molecule class provides the following methods: + + new, AddAtom, AddAtoms, AddBond, AddBonds, AddHydrogens, + AddPolarHydrogens, ClearRings, Copy, DeleteAromaticity, DeleteAtom, + DeleteAtoms, DeleteBond, DeleteBonds, DeleteHydrogens, + DeletePolarHydrogens, DetectAromaticity, DetectRings, + FormatElementalCompositionInformation, GetAllAtomPaths, + GetAllAtomPathsStartingAt, GetAllAtomPathsStartingAtWithLength, + GetAllAtomPathsStartingAtWithLengthUpto, GetAllAtomPathsWithLength, + GetAllAtomPathsWithLengthUpto, GetAromaticRings, GetAromaticityModel, + GetAtomNeighborhoods, GetAtomNeighborhoodsWithRadiusUpto, + GetAtomNeighborhoodsWithSuccessorAtoms, + GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto, GetAtomPathBonds, + GetAtomPaths, GetAtomPathsBetween, GetAtomPathsStartingAt, + GetAtomPathsStartingAtWithLength, GetAtomPathsStartingAtWithLengthUpto, + GetAtomPathsWithLength, GetAtomPathsWithLengthUpto, GetAtoms, GetBonds, + GetCharge, GetConnectedComponents, GetConnectedComponentsAtoms, + GetDimensionality, GetElementalComposition, GetElementsAndNonElements, + GetExactMass, GetFormalCharge, GetFreeRadicalElectrons, + GetFusedAndNonFusedRings, GetLargestConnectedComponent, + GetLargestConnectedComponentAtoms, GetLargestRing, GetMolecularFormula, + GetMolecularWeight, GetNumOfAromaticRings, GetNumOfAtoms, GetNumOfBonds, + GetNumOfConnectedComponents, GetNumOfElementsAndNonElements, + GetNumOfHeavyAtoms, GetNumOfHydrogenAtoms, GetNumOfMissingHydrogenAtoms, + GetNumOfNonHydrogenAtoms, GetNumOfRings, GetNumOfRingsWithEvenSize, + GetNumOfRingsWithOddSize, GetNumOfRingsWithSize, + GetNumOfRingsWithSizeGreaterThan, GetNumOfRingsWithSizeLessThan, + GetRingBonds, GetRingBondsFromRings, GetRings, GetRingsWithEvenSize, + GetRingsWithOddSize, GetRingsWithSize, GetRingsWithSizeGreaterThan, + GetRingsWithSizeLessThan, GetSizeOfLargestRing, GetSizeOfSmallestRing, + GetSmallestRing, GetSpinMultiplicity, GetSupportedAromaticityModels, + GetTopologicallySortedAtoms, GetValenceModel, HasAromaticAtomsInRings, + HasAromaticAtomsNotInRings, HasAromaticRings, HasAtom, HasBond, + HasFusedRings, HasNoRings, HasOnlyOneRing, HasRings, IsAromatic, + IsMolecule, IsRingAromatic, IsSupportedAromaticityModel, + IsThreeDimensional, IsTwoDimensional, KeepLargestComponent, + KekulizeAromaticAtoms, NewAtom, NewBond, SetActiveRings, + SetAromaticityModel, SetID, SetValenceModel, StringifyMolecule + + The following methods can also be used as functions: + + FormatElementalCompositionInformation, IsMolecule + + Molecule class is derived from ObjectProperty base class which provides + methods not explicitly defined in Molecule or ObjectProperty class 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>(); + + METHODS + new + $NewMolecule = new Molecule([%PropertyNameAndValues]); + + Using specified *Atom* property names and values hash, new method + creates a new object and returns a reference to newly created Atom + object. By default, the following properties are initialized: + + ID = SequentialObjectID + Name = "Molecule <SequentialObjectID>" + + Examples: + + $Molecule = new Molecule(); + + $WaterMolecule = new Molecule('Name' => 'Water'); + + $Oxygen = new Atom('AtomSymbol' => 'O', 'XYZ' => [0, 0, 0]); + $Hydrogen1 = new Atom('AtomSymbol' => 'H', + 'XYZ' => [0.7144, 0.4125, 0]); + $Hydrogen2 = new Atom('AtomSymbol' => 'H', + 'XYZ' => [1.1208, -0.2959, 0]); + $WaterMolecule->AddAtoms($Oxygen, $Hydrogen1, $Hydrogen2); + + $Bond1 = new Bond('Atoms' => [$Oxygen, $Hydrogen1], + 'BondOrder' => 1); + $Bond2 = new Bond('Atoms' => [$Oxygen, $Hydrogen2], + 'BondOrder' => 1); + $WaterMolecule->AddBonds($Bond1, $Bond2); + + AddAtom + $Molecule->AddAtom($Atom); + + Adds an *Atom* to a *Molecule* and returns *Molecule*. + + AddAtoms + $Molecule->AddAtoms(@Atoms); + + Adds *Atoms* to a *Molecule* and returns *Molecule*. + + AddBond + $Molecule->AddBond($Bond); + + Adds a *Bond* to a *Molecule* and returns *Molecule*. + + AddBonds + $Molecule->AddBonds(@Bonds); + + Adds *Bonds* to a *Molecule* and returns *Molecule*. + + AddHydrogens + $NumOfHydrogensAdded = $Molecule->AddHydrogens(); + + Adds hydrogens to each atom in a *Molecule* and returns total number + of hydrogens added. The current release of MayaChemTools doesn't + assign hydrogen positions. + + AddPolarHydrogens + $NumOfHydrogensAdded = $Molecule->AddPolarHydrogens(); + + Adds hydrogens to each polar atom - N, O, P or S - in a *Molecule* + and returns total number of polar hydrogens added. The current + release of MayaChemTools doesn't assign hydrogen positions. + + ClearRings + $Molecule->ClearRings(); + + Deletes all rings associated with *Molecule* and returns *Molecule*. + + Copy + $MoleculeCopy = $Molecule->Copy(); + + Copies *Molecule* and its associated data using Storable::dclone and + returns a new Molecule object. + + DeleteAromaticity + $Molecule->DeleteAromaticity(); + + Deletes aromatic property associated with all atoms and bonds in a + *Molecule* and returns *Molecule*. + + DeleteAtom + $Molecule->DeleteAtom($Atom); + + Deletes *Atom* from a *Molecule* and returns *Molecule*. + + DeleteAtoms + $Molecule->DeleteAtoms(@Atoms); + + Deletes *Atoms* from a *Molecule* and returns *Molecule*. + + DeleteBond + $Molecule->DeleteBond($Bond); + + Deletes *Bond* from a *Molecule* and returns *Molecule*. + + DeleteBonds + $Molecule->DeleteBonds(@Bonds); + + Deletes *Bonds* from a *Molecule* and returns *Molecule*. + + DeleteHydrogens + $NumOfHydrogensDeleted = $Molecule->DeleteHydrogens(); + + Removes hydrogens from each atom in a *Molecule* and returns total + number of hydrogens deleted. + + DeletePolarHydrogens + $NumOfHydrogensDeleted = $Molecule->DeletePolarHydrogens(); + + Removes hydrogens to each polar atom - N, O, P or S - in a + *Molecule* and returns total number of polar hydrogens deleted. + + DetectAromaticity + $Molecule->DetectAromaticity(); + + Associates *Aromatic* property to atoms and bonds involved in + aromatic rings or ring systems in a *Molecule* and returns + *Molecule*. + + This method assumes the ring detection has already been perfomed + using DetectRings. And any existing *Aromatic* property associated + with atoms and bonds is deleted before performing aromaticity + detection. + + What is aromaticity? [ Ref 124 ] It's in the code of the + implementer, did you say? Agree. The implementation of aromaticity + varies widely across different packages [ Ref 125 ]; additionally, + the implementation details are not always completely available, and + it's not possible to figure out the exact implementation of + aromaticity across various packages. Using the publicly available + information, however, one can try to reproduce the available results + to the extent possible, along with parameterizing all the control + parameters used to implement different aromaticity models, and + that's exactly what the current release of MayaChemTools does. + + The implementation of aromaticity corresponding to various + aromaticity models in MayaChemTools package is driven by an external + CSV file AromaticityModelsData.csv, which is distributed with the + package and is available in lib/data directory. The CSV files + contains names of supported aromaticity models, along with various + control parameters and their values. This file is loaded and + processed during instantiation of Molecule class and data + corresponding to specific aromaticity model are used to detect + aromaticity for that model. Any new aromaticity model added to the + aromaticity data file, using different combinations of values for + existing control parameters, would work without any changes to the + code; the addition of any new control parameters, however, requires + its implementation in the code used to calculate number of pi + electrons available towards delocalization in a ring or ring + systems. + + The current release of MayaChemTools package supports these + aromaticity models: MDLAromaticityModel, TriposAromaticityModel, + MMFFAromaticityModel, ChemAxonBasicAromaticityModel, + ChemAxonGeneralAromaticityModel, DaylightAromaticityModel, + MayaChemToolsAromaticityModel. + + The current list of control parameters available to detect + aromaticity corresponding to different aromaticity models are: + AllowHeteroRingAtoms, HeteroRingAtomsList, + AllowExocyclicDoubleBonds, AllowHomoNuclearExocyclicDoubleBonds, + AllowElectronegativeRingAtomExocyclicDoubleBonds, + AllowRingAtomFormalCharge, AllowHeteroRingAtomFormalCharge, + MinimumRingSize. The values for these control parameters are + specified in AromaticityModelsData.csv file. + + Although definition of aromaticity differs across various + aromaticity models, a ring or a ring system containing 4n + 2 pi + electrons (Huckel's rule) corresponding to alternate single and + double bonds, in general, is considered aromatic. + + The available valence free electrons on heterocyclic ring atoms, + involved in two single ring bonds, are also allowed to participate + in pi electron delocalizaiton for most of the supported aromaticity + models. + + The presence of exocyclic terminal double bond on ring atoms + involved in pi electron delocalization is only allowed for some of + the aromaticity models. Additionally, the type atoms involved in + exocyclic terminal double bonds may result in making a ring or ring + system non-aromatic. + + For molecules containing fused rings, each fused ring set is + considered as one aromatic system for counting pi electrons to + satisfy Huckel's rule; In case of a failure, rings in fused set are + treated individually for aromaticity detection. Additionally, + non-fused rings are handled on their own during aromaticity + detection. + + DetectRings + $Molecule->DetectRings(); + + Detects rings in a *Molecule* and returns *Molecule*. Ring detection + is performed using DetectCycles method avaible in Graph class which + in turn uses methods available Graph::CyclesDetection class. + Graph::CyclesDetection class implements collapsing path graph [Ref + 31] methodology to detect all cycles in a graph. + + FormatElementalCompositionInformation + $FormattedInfo = $Molecule->FormatElementalCompositionInformation( + $ElementsRef, $ElementCompositionRef, + [$Precision]); + $FormattedInfo = Molecule::FormatElementalCompositionInformation( + $ElementsRef, $ElementCompositionRef, + [$Precision]); + + Using *ElementsRef* and *ElementCompositionRef* arrays referneces + containg informatio about elements and their composition, formats + elemental composition information and returns a *FormattedInfo* + string. Defaule *Precision* value: *2*. + + GetAromaticityModel + $AromaticityModel = $Molecule->GetAromaticityModel(); + + Returns name of AromaticityModel set for *Molecule* corresponding to + AromaticityModel property or default model name of + MayaChemToolsAromaticityModel. + + GetAllAtomPaths + $AtomPathsRef = $Molecule->GetAllAtomPaths([$AllowCycles]); + + Returns all paths as a reference to an array containing reference to + arrays with path Atom objects. + + Path atoms correspond to to all possible paths for each atom in + molecule with all possible lengths and sharing of bonds in paths + traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + For molecule without any rings, this method returns the same set of + atom paths as GetAtomPaths method. + + GetAllAtomPathsStartingAt + $AtomPathsRef = $Molecule->GetAllAtomPathsStartingAt($StartAtom, + [$AllowCycles]); + + Returns all atom paths starting from *StartAtom* as a reference to + an array containing reference to arrays with path Atom objects. + + Path atoms atoms correspond to to all possible paths for specified + atom in molecule with all possible lengths and sharing of bonds in + paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + For molecule without any rings, this method returns the same set of + atom paths as GetAtomPathsStartingAt method. + + GetAllAtomPathsStartingAtWithLength + $AtomPathsRef = $Molecule->GetAllAtomPathsStartingAtWithLength( + $StartAtom, $Length, [$AllowCycles]); + + Returns all atom paths starting from *StartAtom* with specified + *Length*as a reference to an array containing reference to arrays + with path Atom objects. + + Path atoms atoms correspond to to all possible paths for specified + atom in molecule with all possible lengths and sharing of bonds in + paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + For molecule without any rings, this method returns the same set of + atom paths as GetAtomPathsStartingAtWithLength method. + + GetAllAtomPathsStartingAtWithLengthUpto + $AtomPathsRef = $Molecule->GetAllAtomPathsStartingAtWithLengthUpto( + $StartAtom, $Length, [$AllowCycles]); + + Returns atom paths starting from *StartAtom* with length up to + *Length* as a reference to an array containing reference to arrays + with path Atom objects. + + Path atoms atoms correspond to all possible paths for specified atom + in molecule with length up to a specified length and sharing of + bonds in paths traversed. By default, rings are included in paths. A + path containing a ring is terminated at an atom completing the ring. + + For molecule without any rings, this method returns the same set of + atom paths as *GetAtomPathsStartingAtWithLengthUpto* method. + + GetAllAtomPathsWithLength + $AtomPathsRef = $Molecule->GetAllAtomPathsWithLength($Length, + [$AllowCycles]); + + Returns all atom paths with specified *Length* as a reference to an + array containing reference to arrays with path Atom objects. + + Path atoms correspond to to all possible paths for each atom in + molecule with length up to a specified length and sharing of bonds + in paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + For molecule without any rings, this method returns the same set of + atom paths as as *GetAtomPathsWithLength* method. + + GetAllAtomPathsWithLengthUpto + $AtomPathsRef = $Molecule->GetAllAtomPathsWithLengthUpto($Length, + [$AllowCycles]); + + Returns all atom paths with length up to *Length* as a reference to + an array containing reference to arrays with path Atom objects. + + Path atoms correspond to to all possible paths for each atom in + molecule with length up to a specified length and sharing of bonds + in paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + For molecule without any rings, this method returns the same set of + atom paths as as *GetAtomPathsWithLengthUpto* method. + + GetAromaticRings + @AtomaticRings = $Molecule->GetAromaticRings(); + + Returns aromatic rings as an array containing references to arrays + of ring *Atom* objects in a *Molecule*. + + GetAtomNeighborhoods + @Neighborhoods = $Molecule->GetAtomNeighborhoods($StartAtom); + + Returns atom neighborhoods around a *StartAtom* as an array + containing references to arrays with neighborhood *Atom* objects at + possible radii. + + GetAtomNeighborhoodsWithRadiusUpto + @Neighborhoods = $Molecule->GetAtomNeighborhoodsWithRadiusUpto($StartAtom, + $Radius); + + Returns atom neighborhoods around a *StartAtom* as an array + containing references to arrays with neighborhood *Atom* objects up + to *Radius*. + + GetAtomNeighborhoodsWithSuccessorAtoms + @Neighborhoods = $Molecule->GetAtomNeighborhoodsWithSuccessorAtoms( + $StartAtom); + + Returns atom neighborhood around a specified *StartAtom*, along with + their successor connected atoms, collected at all radii as an array + containing references to arrays with first value corresponding to + neighborhood atom at a specific radius and second value as reference + to an array containing its successor connected atoms. + + For a neighborhood atom at each radius level, the successor + connected atoms correspond to the neighborhood atoms at the next + radius level. Consequently, the neighborhood atoms at the last + radius level don't contain any successor atoms which fall outside + the range of specified radius. + + GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto + @Neighborhoods = $Molecule->GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto( + $StartAtom, $Radius); + + Returns atom neighborhood around a specified *StartAtom*, along with + their successor connected atoms, collected upto specified *Radiud* + as an array containing references to arrays with first value + corresponding to neighborhood atom at a specific radius and second + value as reference to an array containing its successor connected + atoms. + + For a neighborhood atom at each radius level, the successor + connected atoms correspond to the neighborhood atoms at the next + radius level. Consequently, the neighborhood atoms at the last + radius level don't contain any successor atoms which fall outside + the range of specified radius. + + GetAtomPathBonds + $Return = $Molecule->GetAtomPathBonds(@PathAtoms); + + Returns an array containing Bond objects corresponding to successive + pair of atoms in *PathAtoms* + + GetAtomPaths + $AtomPathsRef = $Molecule->GetAtomPaths([$AllowCycles]); + + Returns all paths as a reference to an array containing reference to + arrays with path Atom objects. + + Path atoms correspond to to all possible paths for each atom in + molecule with all possible lengths and no sharing of bonds in paths + traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + GetAtomPathsBetween + $AtomPathsRef = $Molecule->GetAtomPathsBetween($StartAtom, $EndAtom); + + Returns all paths as between *StartAtom* and *EndAtom* as a + reference to an array containing reference to arrays with path Atom + objects. + + For molecules with rings, atom paths array contains may contain two + paths. + + GetAtomPathsStartingAt + $AtomPathsRef = $Molecule->GetAtomPathsStartingAt($StartAtom, [$AllowCycles]); + + Returns paths starting at *StartAtom* as a reference to an array + containing reference to arrays with path Atom objects. + + Path atoms correspond to all possible paths for specified atom in + molecule with all possible lengths and no sharing of bonds in paths + traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + GetAtomPathsStartingAtWithLength + $AtomPathsRef = $Molecule->GetAtomPathsStartingAtWithLength($StartAtom, + $Length, [$AllowCycles]); + + Returns paths starting at *StartAtom* with length *Length* as a + reference to an array containing reference to arrays with path Atom + objects. + + Path atoms correspond to all possible paths for specified atom in + molecule with length upto a specified length and no sharing of bonds + in paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + GetAtomPathsStartingAtWithLengthUpto + $AtomPathsRef = $Molecule->GetAtomPathsStartingAtWithLengthUpto($StartAtom, + $Length, [$AllowCycles]); + + Returns paths starting at *StartAtom* with length up to *Length* as + a reference to an array containing reference to arrays with path + Atom objects. + + Path atoms correspond to all possible paths for specified atom in + molecule with length upto a specified length and no sharing of bonds + in paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + GetAtomPathsWithLength + $AtomPathsRef = $Molecule->GetAtomPathsWithLength($Length, [$AllowCycles]); + + Returns all paths with specified *Length* as a reference to an array + containing reference to arrays with path Atom objects. + + Path atoms correspond to all possible paths for each atom in + molecule with length upto a specified length and no sharing of bonds + in paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + GetAtomPathsWithLengthUpto + $AtomPathsRef = $Molecule->GetAtomPathsWithLengthUpto($Length, [$AllowCycles]); + + Returns all paths with length up to *Length* as a reference to an + array containing reference to arrays with path Atom objects. + + Path atoms correspond to all possible paths for each atom in + molecule with length upto a specified length and no sharing of bonds + in paths traversed. By default, rings are included in paths. A path + containing a ring is terminated at an atom completing the ring. + + GetAtoms + @AllAtoms = $Molecule->GetAtoms(); + @PolarAtoms = $Molecule->GetAtoms('IsPolarAtom'); + + $NegateMethodResult = 1; + @NonHydrogenAtoms = $Molecule->GetAtoms('IsHydrogenAtom', + $NegateMethodResult); + + $AtomsCount = $Molecule->GetAtoms(); + + Returns an array of *Atoms* in a *Molecule*. In scalar context, it + returns number of atoms. Additionally, Atoms array can be filtered + by any user specifiable valid Atom class method and the result of + the Atom class method used to filter the atoms can also be negated + by an optional negate results flag as third parameter. + + GetBonds + @Bonds = $Molecule->GetBonds(); + $BondsCount = $Molecule->GetBonds(); + + Returns an array of *Bonds* in a *Molecule*. In scalar context, it + returns number of bonds. + + GetCharge + $Charge = $Molecule->GetCharge(); + + Returns net charge on a *Molecule* using one of the following two + methods: explicitly set Charge property or sum of partial atomic + charges on each atom. + + GetConnectedComponents + @ConnectedComponents = $Molecule->GetConnectedComponents(); + + Returns a reference to an array containing *Molecule* objects + corresponding to connected components sorted in decreasing order of + component size in a *Molecule*. + + GetConnectedComponentsAtoms + @ConnectedComponentsAtoms = + $Molecule->GetConnectedComponentsAtoms(); + + Returns an array containing references to arrays with *Atom* objects + corresponding to atoms of connected components sorted in order of + component decreasing size in a *Molecule*. + + GetDimensionality + $Dimensionality = $Molecule->GetDimensionality(); + + Returns *Dimensionality* of a *Molecule* corresponding to explicitly + set *Dimensionality* property value or by processing atomic. + + The *Dimensionality* value from atomic coordinates is calculated as + follows: + + 3D - Three dimensional: One of X, Y or Z coordinate is non-zero + 2D - Two dimensional: One of X or Y coordinate is non-zero; All Z + coordinates are zero + 0D - Zero dimensional: All atomic coordinates are zero + + GetElementalComposition + ($ElementsRef, $CompositionRef) = + $Molecule->GetElementalComposition([$IncludeMissingHydrogens]); + + Calculates elemental composition and returns references to arrays + containing elements and their percent composition in a *Molecule*. + By default, missing hydrogens are included during the calculation. + + GetElementsAndNonElements + ($ElementsRef, $NonElementsRef) = + $Molecule->GetElementsAndNonElements([$IncludeMissingHydrogens]); + + Counts elements and non-elements in a *Molecule* and returns + references to hashes containing element and non-element as hash keys + with values corresponding to their count. By default, missing + hydrogens are not added to the element hash. + + GetExactMass + $ExactMass = $Molecule->GetExactMass(); + + Returns exact mass of a *Molecule* corresponding to sum of exact + masses of all the atoms. + + GetFormalCharge + $FormalCharge = $Molecule->GetFormalCharge(); + + Returns net formal charge on a *Molecule* using one of the following + two methods: explicitly set FormalCharge property or sum of formal + charges on each atom. + + FormalCharge is different from Charge property of the molecule which + corresponds to sum of partial atomic charges explicitly set for each + atom using a specific methodology. + + GetFreeRadicalElectrons + $FreeRadicalElectrons = $Molecule->GetFreeRadicalElectrons(); + + Returns total number of free radical electrons available in a + *Molecule* using one of the following two methods: explicitly set + FreeRadicalElectrons property or sum of available free radical + electrons on each atom. + + GetFusedAndNonFusedRings + ($FusedRingSetRef, $NonFusedRingsRef) = + $Molecule->GetFusedAndNonFusedRings(); + + Returns references to array of fused ring sets and non-fused rings + in a *Molecule*. Fused ring sets array reference contains refernces + to arrays of rings corresponding to ring *Atom* objects; Non-fused + rings array reference contains references to arrays of ring *Atom* + objects. + + GetLargestConnectedComponent + $ComponentMolecule = $Molecule->GetLargestConnectedComponent(); + + Returns a reference to Molecule object corresponding to a largest + connected component in a *Molecule*. + + GetLargestConnectedComponentAtoms + @ComponentAtoms = $Molecule->GetLargestConnectedComponentAtoms(); + + Returns a reference to an array of Atom objects corresponding to a + largest connected component in a *Molecule*. + + GetLargestRing + @RingAtoms = $Molecule->GetLargestRing(); + + Returns an array of *Atoms* objects corresponding to a largest ring + in a *Molecule*. + + GetMolecularFormula + $FormulaString = $Molecule->GetMolecularFormula( + [$IncludeMissingHydrogens, + $IncludeNonElements]); + + Returns molecular formula of a *Molecule* by collecting information + about all atoms in the molecule and composing the formula using + Hills ordering system: + + o C shows up first and H follows assuming C is present. + o All other standard elements are sorted alphanumerically. + o All other non-stanard atom symbols are also sorted + alphanumerically and follow standard elements. + + Notes: + + o By default, missing hydrogens and nonelements are also included. + o Elements for disconnected fragments are combined into the same + formula. + o Formal charge is also used during compoisiton of molecular formula. + + GetMolecularWeight + $MolWeight = $Molecule->GetMolecularWeight(); + + Returns molecular weight of a *Molecule* corresponding to sum of + atomic weights of all the atoms. + + GetNumOfAromaticRings + $NumOfAromaticRings = $Molecule->GetNumOfAromaticRings(); + + Returns number of aromatic rings in a *Molecule*. + + GetNumOfAtoms + $NumOfAtoms = $Molecule->GetNumOfAtoms(); + + Returns number of atoms in a *Molecule*. + + GetNumOfBonds + $NumOfBonds = $Molecule->GetNumOfBonds(); + + Returns number of bonds in a *Molecule*. + + GetNumOfConnectedComponents + $NumOfComponents = $Molecule->GetNumOfConnectedComponents(); + + Returns number of connected components in a *Molecule*. + + GetNumOfElementsAndNonElements + ($NumOfElements, $NumOfNonElements) = $Molecule-> + GetNumOfElementsAndNonElements(); + ($NumOfElements, $NumOfNonElements) = $Molecule-> + GetNumOfElementsAndNonElements($IncludeMissingHydrogens); + + Returns number of elements and non-elements in a *Molecule*. By + default, missing hydrogens are not added to element count. + + GetNumOfHeavyAtoms + $NumOfHeavyAtoms = $Molecule->GetNumOfHeavyAtoms(); + + Returns number of heavy atoms, non-hydrogen atoms, in a *Molecule*. + + GetNumOfHydrogenAtoms + $NumOfHydrogenAtoms = $Molecule->GetNumOfHydrogenAtoms(); + + Returns number of hydrogen atoms in a *Molecule*. + + GetNumOfMissingHydrogenAtoms + $NumOfMissingHydrogenAtoms = $Molecule->GetNumOfMissingHydrogenAtoms(); + + Returns number of hydrogen atoms in a *Molecule*. + + GetNumOfNonHydrogenAtoms + $NumOfNonHydrogenAtoms = $Molecule->GetNumOfNonHydrogenAtoms(); + + Returns number of non-hydrogen atoms in a *Molecule*. + + GetNumOfRings + $RingCount = $Molecule->GetNumOfRings(); + + Returns number of rings in a *Molecule*. + + GetNumOfRingsWithEvenSize + $RingCount = $Molecule->GetNumOfRingsWithEvenSize(); + + Returns number of rings with even size in a *Molecule*. + + GetNumOfRingsWithOddSize + $RingCount = $Molecule->GetNumOfRingsWithOddSize(); + + Returns number of rings with odd size in a *Molecule*. + + GetNumOfRingsWithSize + $RingCount = $Molecule->GetNumOfRingsWithSize($Size); + + Returns number of rings with *Size* in a *Molecule*. + + GetNumOfRingsWithSizeGreaterThan + $RingCount = $Molecule->GetNumOfRingsWithSizeGreaterThan($Size); + + Returns number of rings with size greater than *Size* in a + *Molecule*. + + GetNumOfRingsWithSizeLessThan + $RingCount = $Molecule->GetNumOfRingsWithSizeLessThan($Size); + + Returns number of rings with size less than *Size* in a *Molecule*. + + GetRingBonds + @RingBonds = $Molecule->GetRingBonds(@RingAtoms); + + Returns an array of ring Bond objects correponding to an array of + ring *Atoms* in a *Molecule*. + + GetRingBondsFromRings + @RingBondsSets = $Molecule->GetRingBondsFromRings(@RingAtomsSets); + + Returns an array containing references to arrays of ring Bond + objects for rings specified in an array of references to ring *Atom* + objects. + + GetRings + @Rings = $Molecule->GetRings(); + + Returns rings as an array containing references to arrays of ring + *Atom* objects in a *Molecule*. + + GetRingsWithEvenSize + @Rings = $Molecule->GetRingsWithEvenSize(); + + Returns even size rings as an array containing references to arrays + of ring *Atom* objects in a *Molecule*. + + GetRingsWithOddSize + @Rings = $Molecule->GetRingsWithOddSize(); + + Returns odd size rings as an array containing references to arrays + of ring *Atom* objects in a *Molecule*. + + GetRingsWithSize + @Rings = $Molecule->GetRingsWithSize($Size); + + Returns rings with *Size* as an array containing references to + arrays of ring *Atom* objects in a *Molecule*. + + GetRingsWithSizeGreaterThan + @Rings = $Molecule->GetRingsWithSizeGreaterThan($Size); + + Returns rings with size greater than *Size* as an array containing + references to arrays of ring *Atom* objects in a *Molecule*. + + GetRingsWithSizeLessThan + @Rings = $Molecule->GetRingsWithSizeLessThan($Size); + + Returns rings with size less than *Size* as an array containing + references to arrays of ring *Atom* objects in a *Molecule*. + + GetSizeOfLargestRing + $Size = $Molecule->GetSizeOfLargestRing(); + + Returns size of the largest ring in a *Molecule*. + + GetSizeOfSmallestRing + $Size = $Molecule->GetSizeOfSmallestRing(); + + Returns size of the smalles ring in a *Molecule*. + + GetSmallestRing + @RingAtoms = $Molecule->GetSmallestRing(); + + Returns an array containing *Atom* objects corresponding to the + smallest ring in a *Molecule*. + + GetSpinMultiplicity + $SpinMultiplicity = $Molecule->GetSpinMultiplicity(); + + Returns net spin multiplicity of a *Molecule* using one of the + following two methods: explicitly set SpinMultiplicity property or + sum of spin multiplicity on each atom. + + GetSupportedAromaticityModels + @SupportedModels = $Molecule->GetSupportedAromaticityModels(); + + Returns an array containing a list of supported aromaticity models. + + GetValenceModel + $ValenceModel = $Molecule->GetValenceModel(); + + Returns valence model for *Molecule* using one of the following two + methods: explicitly set ValenceModel property or defaul value of + *InternalValenceModel*. + + GetTopologicallySortedAtoms + @SortedAtoms = $Molecule->GetTopologicallySortedAtoms([$StartAtom]); + + Returns an array of topologically sorted *Atom* objects starting + from *StartAtom* or an arbitrary atom in a *Molecule*. + + HasAromaticRings + $Status = $Molecule->HasAromaticRings(); + + Returns 1 or 0 based on whether any aromatic ring is present in a + *Molecule*. + + HasAromaticAtomsInRings + $Status = $Molecule->HasAromaticAtomsInRings(); + + Returns 1 or 0 based on whether any aromatic ring atom is present in + a *Molecule*. + + HasAromaticAtomsNotInRings + $Status = $Molecule->HasAromaticAtomsNotInRings(); + + Returns 1 or 0 based on whether any non-ring atom is marked aromatic + in a *Molecule*. + + HasAtom + $Status = $Molecule->HasAtom($Atom); + + Returns 1 or 0 based on whether *Atom* is present in a *Molecule*. + + HasBond + $Status = $Molecule->HasBond($Bond); + + Returns 1 or 0 based on whether *Bond* is present in a *Molecule*. + + HasFusedRings + $Status = $Molecule->HasFusedRings(); + + Returns 1 or 0 based on whether any fused rings set is present in a + *Molecule*. + + HasNoRings + $Status = $Molecule->HasNoRings(); + + Returns 0 or 1 based on whether any ring is present in a *Molecule*. + + HasOnlyOneRing + $Status = $Molecule->HasOnlyOneRing(); + + Returns 1 or 0 based on whether only one ring is present in a + *Molecule*. + + HasRings + $Status = $Molecule->HasRings(); + + Returns 1 or 0 based on whether rings are present in a *Molecule*. + + IsAromatic + $Status = $Molecule->IsAromatic(); + + Returns 1 or 0 based on whether *Molecule* is aromatic. + + IsMolecule + $Status = Molecule::IsMolecule(); + + Returns 1 or 0 based on whether *Object* is a Molecule object. + + IsRingAromatic + $Status = $Molecule->IsRingAromatic(@RingAtoms); + + Returns 1 or 0 based on whether all *RingAtoms* are aromatic. + + IsSupportedAromaticityModel + $Status = $Molecule->IsSupportedAromaticityModel($AromaticityModel); + $Status = Molecule::IsSupportedAromaticityModel($AromaticityModel); + + Returns 1 or 0 based on whether specified *AromaticityModel* is + supported. + + IsTwoDimensional + $Status = $Molecule->IsTwoDimensional(); + + Returns 1 or 0 based on whether any atom in *Molecule* has a + non-zero value for X or Y coordinate and all atoms have zero value + for Z coordinates. + + IsThreeDimensional + $Status = $Molecule->IsThreeDimensional(); + + Returns 1 or 0 based on whether any atom in *Molecule* has a + non-zero value for Z coordinate. + + KeepLargestComponent + $Molecule->KeepLargestComponent(); + + Deletes atoms corresponding to all other connected components Except + for the largest connected component in a *Molecule* and returns + *Molecule*. + + KekulizeAromaticAtoms + $Status = $Molecule->KekulizeAromaticAtoms(); + + Kekulize marked ring and non-ring aromatic atoms in a molecule and + return 1 or 1 based on whether the kekulization succeeded. + + NewAtom + $NewAtom = $Molecule->NewAtom(%AtomPropertyNamesAndValues); + + Creates a new atom using *AtomPropertyNamesAndValues*, add its to + *Molecule*, and returns new Atom object. + + NewBond + $NewBond = $Molecule->NewBond(%BondPropertyNamesAndValues); + + Creates a new bond using *AtomPropertyNamesAndValues*, add its to + *Molecule*, and returns new Bond object. + + SetActiveRings + $Molecule->SetActiveRings($RingsType); + + Sets up type of detected ring sets to use during all ring related + methods and returns *Molecule*. Possible *RingType* values: + *Independent or All*. By default, *Independent* ring set is used + during all ring methods. + + SetAromaticityModel + $Molecule = $Molecule->SetAromaticityModel($AromaticityModel); + + Sets up *AromaticityModel* property value for *Molecule* and + retrurns *Molecule*. + + SetValenceModel + $Molecule = $Molecule->SetValenceModel(ValenceModel); + + Sets up *ValenceModel* property value for *Molecule* and retrurns + *Molecule*. + + StringifyMolecule + $MoleculeString = $Molecule->StringifyMolecule(); + + Returns a string containing information about *Molecule* object + +AUTHOR + Manish Sud <msud@san.rr.com> + +SEE ALSO + Atom.pm, Bond.pm, MoleculeFileIO.pm, MolecularFormula.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. +