Mercurial > repos > deepakjadmin > mayatool3_test3
diff mayachemtools/docs/modules/man3/Molecule.3 @ 0:73ae111cf86f draft
Uploaded
author | deepakjadmin |
---|---|
date | Wed, 20 Jan 2016 11:55:01 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mayachemtools/docs/modules/man3/Molecule.3 Wed Jan 20 11:55:01 2016 -0500 @@ -0,0 +1,1270 @@ +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "MOLECULE 1" +.TH MOLECULE 1 "2015-03-29" "perl v5.14.2" "MayaChemTools" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +Molecule \- Molecule class +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +use Molecule; +.PP +use Molecule qw(:all); +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBMolecule\fR class provides the following methods: +.PP +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 +.PP +The following methods can also be used as functions: +.PP +FormatElementalCompositionInformation, IsMolecule +.PP +\&\fBMolecule\fR class is derived from \fBObjectProperty\fR base class which provides methods not explicitly +defined in \fBMolecule\fR or \fBObjectProperty\fR class using Perl's \s-1AUTOLOAD\s0 functionality. These methods +are generated on-the-fly for a specified object property: +.PP +.Vb 3 +\& Set<PropertyName>(<PropertyValue>); +\& $PropertyValue = Get<PropertyName>(); +\& Delete<PropertyName>(); +.Ve +.SS "\s-1METHODS\s0" +.IX Subsection "METHODS" +.IP "\fBnew\fR" 4 +.IX Item "new" +.Vb 1 +\& $NewMolecule = new Molecule([%PropertyNameAndValues]); +.Ve +.Sp +Using specified \fIAtom\fR property names and values hash, \fBnew\fR method creates a new object +and returns a reference to newly created \fBAtom\fR object. By default, the following properties are +initialized: +.Sp +.Vb 2 +\& ID = SequentialObjectID +\& Name = "Molecule <SequentialObjectID>" +.Ve +.Sp +Examples: +.Sp +.Vb 1 +\& $Molecule = new Molecule(); +\& +\& $WaterMolecule = new Molecule(\*(AqName\*(Aq => \*(AqWater\*(Aq); +\& +\& $Oxygen = new Atom(\*(AqAtomSymbol\*(Aq => \*(AqO\*(Aq, \*(AqXYZ\*(Aq => [0, 0, 0]); +\& $Hydrogen1 = new Atom(\*(AqAtomSymbol\*(Aq => \*(AqH\*(Aq, +\& \*(AqXYZ\*(Aq => [0.7144, 0.4125, 0]); +\& $Hydrogen2 = new Atom(\*(AqAtomSymbol\*(Aq => \*(AqH\*(Aq, +\& \*(AqXYZ\*(Aq => [1.1208, \-0.2959, 0]); +\& $WaterMolecule\->AddAtoms($Oxygen, $Hydrogen1, $Hydrogen2); +\& +\& $Bond1 = new Bond(\*(AqAtoms\*(Aq => [$Oxygen, $Hydrogen1], +\& \*(AqBondOrder\*(Aq => 1); +\& $Bond2 = new Bond(\*(AqAtoms\*(Aq => [$Oxygen, $Hydrogen2], +\& \*(AqBondOrder\*(Aq => 1); +\& $WaterMolecule\->AddBonds($Bond1, $Bond2); +.Ve +.IP "\fBAddAtom\fR" 4 +.IX Item "AddAtom" +.Vb 1 +\& $Molecule\->AddAtom($Atom); +.Ve +.Sp +Adds an \fIAtom\fR to a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBAddAtoms\fR" 4 +.IX Item "AddAtoms" +.Vb 1 +\& $Molecule\->AddAtoms(@Atoms); +.Ve +.Sp +Adds \fIAtoms\fR to a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBAddBond\fR" 4 +.IX Item "AddBond" +.Vb 1 +\& $Molecule\->AddBond($Bond); +.Ve +.Sp +Adds a \fIBond\fR to a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBAddBonds\fR" 4 +.IX Item "AddBonds" +.Vb 1 +\& $Molecule\->AddBonds(@Bonds); +.Ve +.Sp +Adds \fIBonds\fR to a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBAddHydrogens\fR" 4 +.IX Item "AddHydrogens" +.Vb 1 +\& $NumOfHydrogensAdded = $Molecule\->AddHydrogens(); +.Ve +.Sp +Adds hydrogens to each atom in a \fIMolecule\fR and returns total number of hydrogens +added. The current release of MayaChemTools doesn't assign hydrogen positions. +.IP "\fBAddPolarHydrogens\fR" 4 +.IX Item "AddPolarHydrogens" +.Vb 1 +\& $NumOfHydrogensAdded = $Molecule\->AddPolarHydrogens(); +.Ve +.Sp +Adds hydrogens to each polar atom \- N, O, P or S \- in a \fIMolecule\fR and returns total +number of polar hydrogens added. The current release of MayaChemTools doesn't +assign hydrogen positions. +.IP "\fBClearRings\fR" 4 +.IX Item "ClearRings" +.Vb 1 +\& $Molecule\->ClearRings(); +.Ve +.Sp +Deletes all rings associated with \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBCopy\fR" 4 +.IX Item "Copy" +.Vb 1 +\& $MoleculeCopy = $Molecule\->Copy(); +.Ve +.Sp +Copies \fIMolecule\fR and its associated data using \fBStorable::dclone\fR and returns a new +\&\fBMolecule\fR object. +.IP "\fBDeleteAromaticity\fR" 4 +.IX Item "DeleteAromaticity" +.Vb 1 +\& $Molecule\->DeleteAromaticity(); +.Ve +.Sp +Deletes aromatic property associated with all atoms and bonds in a \fIMolecule\fR and returns +\&\fIMolecule\fR. +.IP "\fBDeleteAtom\fR" 4 +.IX Item "DeleteAtom" +.Vb 1 +\& $Molecule\->DeleteAtom($Atom); +.Ve +.Sp +Deletes \fIAtom\fR from a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBDeleteAtoms\fR" 4 +.IX Item "DeleteAtoms" +.Vb 1 +\& $Molecule\->DeleteAtoms(@Atoms); +.Ve +.Sp +Deletes \fIAtoms\fR from a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBDeleteBond\fR" 4 +.IX Item "DeleteBond" +.Vb 1 +\& $Molecule\->DeleteBond($Bond); +.Ve +.Sp +Deletes \fIBond\fR from a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBDeleteBonds\fR" 4 +.IX Item "DeleteBonds" +.Vb 1 +\& $Molecule\->DeleteBonds(@Bonds); +.Ve +.Sp +Deletes \fIBonds\fR from a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBDeleteHydrogens\fR" 4 +.IX Item "DeleteHydrogens" +.Vb 1 +\& $NumOfHydrogensDeleted = $Molecule\->DeleteHydrogens(); +.Ve +.Sp +Removes hydrogens from each atom in a \fIMolecule\fR and returns total number of hydrogens +deleted. +.IP "\fBDeletePolarHydrogens\fR" 4 +.IX Item "DeletePolarHydrogens" +.Vb 1 +\& $NumOfHydrogensDeleted = $Molecule\->DeletePolarHydrogens(); +.Ve +.Sp +Removes hydrogens to each polar atom \- N, O, P or S \- in a \fIMolecule\fR and returns total +number of polar hydrogens deleted. +.IP "\fBDetectAromaticity\fR" 4 +.IX Item "DetectAromaticity" +.Vb 1 +\& $Molecule\->DetectAromaticity(); +.Ve +.Sp +Associates \fIAromatic\fR property to atoms and bonds involved in aromatic rings or ring +systems in a \fIMolecule\fR and returns \fIMolecule\fR. +.Sp +This method assumes the ring detection has already been perfomed using \fBDetectRings\fR. +And any existing \fIAromatic\fR property associated with atoms and bonds is deleted before +performing aromaticity detection. +.Sp +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. +.Sp +The implementation of aromaticity corresponding to various aromaticity models in +MayaChemTools package is driven by an external \s-1CSV\s0 file AromaticityModelsData.csv, +which is distributed with the package and is available in lib/data directory. The \s-1CSV\s0 +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. +.Sp +The current release of MayaChemTools package supports these aromaticity +models: MDLAromaticityModel, TriposAromaticityModel, MMFFAromaticityModel, +ChemAxonBasicAromaticityModel, ChemAxonGeneralAromaticityModel, +DaylightAromaticityModel, MayaChemToolsAromaticityModel. +.Sp +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. +.Sp +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. +.Sp +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. +.Sp +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. +.Sp +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. +.IP "\fBDetectRings\fR" 4 +.IX Item "DetectRings" +.Vb 1 +\& $Molecule\->DetectRings(); +.Ve +.Sp +Detects rings in a \fIMolecule\fR and returns \fIMolecule\fR. Ring detection is performed using +\&\fBDetectCycles\fR method avaible in \fBGraph\fR class which in turn uses methods available +\&\fBGraph::CyclesDetection\fR class. \fBGraph::CyclesDetection\fR class implements collapsing path graph +[Ref 31] methodology to detect all cycles in a graph. +.IP "\fBFormatElementalCompositionInformation\fR" 4 +.IX Item "FormatElementalCompositionInformation" +.Vb 6 +\& $FormattedInfo = $Molecule\->FormatElementalCompositionInformation( +\& $ElementsRef, $ElementCompositionRef, +\& [$Precision]); +\& $FormattedInfo = Molecule::FormatElementalCompositionInformation( +\& $ElementsRef, $ElementCompositionRef, +\& [$Precision]); +.Ve +.Sp +Using \fIElementsRef\fR and \fIElementCompositionRef\fR arrays referneces containg informatio +about elements and their composition, formats elemental composition information and returns +a \fIFormattedInfo\fR string. Defaule \fIPrecision\fR value: \fI2\fR. +.IP "\fBGetAromaticityModel\fR" 4 +.IX Item "GetAromaticityModel" +.Vb 1 +\& $AromaticityModel = $Molecule\->GetAromaticityModel(); +.Ve +.Sp +Returns name of \fBAromaticityModel\fR set for \fIMolecule\fR corresponding to \fBAromaticityModel\fR +property or default model name of \fBMayaChemToolsAromaticityModel\fR. +.IP "\fBGetAllAtomPaths\fR" 4 +.IX Item "GetAllAtomPaths" +.Vb 1 +\& $AtomPathsRef = $Molecule\->GetAllAtomPaths([$AllowCycles]); +.Ve +.Sp +Returns all paths as a reference to an array containing reference to arrays with path +\&\fBAtom\fR objects. +.Sp +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. +.Sp +For molecule without any rings, this method returns the same set of atom paths as +\&\fBGetAtomPaths\fR method. +.IP "\fBGetAllAtomPathsStartingAt\fR" 4 +.IX Item "GetAllAtomPathsStartingAt" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAllAtomPathsStartingAt($StartAtom, +\& [$AllowCycles]); +.Ve +.Sp +Returns all atom paths starting from \fIStartAtom\fR as a reference to an array containing +reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.Sp +For molecule without any rings, this method returns the same set of atom paths as +\&\fBGetAtomPathsStartingAt\fR method. +.IP "\fBGetAllAtomPathsStartingAtWithLength\fR" 4 +.IX Item "GetAllAtomPathsStartingAtWithLength" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAllAtomPathsStartingAtWithLength( +\& $StartAtom, $Length, [$AllowCycles]); +.Ve +.Sp +Returns all atom paths starting from \fIStartAtom\fR with specified \fILength\fRas a reference +to an array containing reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.Sp +For molecule without any rings, this method returns the same set of atom paths as +\&\fBGetAtomPathsStartingAtWithLength\fR method. +.IP "\fBGetAllAtomPathsStartingAtWithLengthUpto\fR" 4 +.IX Item "GetAllAtomPathsStartingAtWithLengthUpto" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAllAtomPathsStartingAtWithLengthUpto( +\& $StartAtom, $Length, [$AllowCycles]); +.Ve +.Sp +Returns atom paths starting from \fIStartAtom\fR with length up to \fILength\fR as a reference +to an array containing reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.Sp +For molecule without any rings, this method returns the same set of atom paths as +\&\fIGetAtomPathsStartingAtWithLengthUpto\fR method. +.IP "\fBGetAllAtomPathsWithLength\fR" 4 +.IX Item "GetAllAtomPathsWithLength" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAllAtomPathsWithLength($Length, +\& [$AllowCycles]); +.Ve +.Sp +Returns all atom paths with specified \fILength\fR as a reference to an array containing +reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.Sp +For molecule without any rings, this method returns the same set of atom paths as +as \fIGetAtomPathsWithLength\fR method. +.IP "\fBGetAllAtomPathsWithLengthUpto\fR" 4 +.IX Item "GetAllAtomPathsWithLengthUpto" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAllAtomPathsWithLengthUpto($Length, +\& [$AllowCycles]); +.Ve +.Sp +Returns all atom paths with length up to \fILength\fR as a reference to an array containing +reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.Sp +For molecule without any rings, this method returns the same set of atom paths as +as \fIGetAtomPathsWithLengthUpto\fR method. +.IP "\fBGetAromaticRings\fR" 4 +.IX Item "GetAromaticRings" +.Vb 1 +\& @AtomaticRings = $Molecule\->GetAromaticRings(); +.Ve +.Sp +Returns aromatic rings as an array containing references to arrays of ring \fIAtom\fR objects +in a \fIMolecule\fR. +.IP "\fBGetAtomNeighborhoods\fR" 4 +.IX Item "GetAtomNeighborhoods" +.Vb 1 +\& @Neighborhoods = $Molecule\->GetAtomNeighborhoods($StartAtom); +.Ve +.Sp +Returns atom neighborhoods around a \fIStartAtom\fR as an array containing references +to arrays with neighborhood \fIAtom\fR objects at possible radii. +.IP "\fBGetAtomNeighborhoodsWithRadiusUpto\fR" 4 +.IX Item "GetAtomNeighborhoodsWithRadiusUpto" +.Vb 2 +\& @Neighborhoods = $Molecule\->GetAtomNeighborhoodsWithRadiusUpto($StartAtom, +\& $Radius); +.Ve +.Sp +Returns atom neighborhoods around a \fIStartAtom\fR as an array containing references +to arrays with neighborhood \fIAtom\fR objects up to \fIRadius\fR. +.IP "\fBGetAtomNeighborhoodsWithSuccessorAtoms\fR" 4 +.IX Item "GetAtomNeighborhoodsWithSuccessorAtoms" +.Vb 2 +\& @Neighborhoods = $Molecule\->GetAtomNeighborhoodsWithSuccessorAtoms( +\& $StartAtom); +.Ve +.Sp +Returns atom neighborhood around a specified \fIStartAtom\fR, 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. +.Sp +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. +.IP "\fBGetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto\fR" 4 +.IX Item "GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto" +.Vb 2 +\& @Neighborhoods = $Molecule\->GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto( +\& $StartAtom, $Radius); +.Ve +.Sp +Returns atom neighborhood around a specified \fIStartAtom\fR, along with their successor +connected atoms, collected upto specified \fIRadiud\fR 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. +.Sp +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. +.IP "\fBGetAtomPathBonds\fR" 4 +.IX Item "GetAtomPathBonds" +.Vb 1 +\& $Return = $Molecule\->GetAtomPathBonds(@PathAtoms); +.Ve +.Sp +Returns an array containing \fBBond\fR objects corresponding to successive pair of +atoms in \fIPathAtoms\fR +.IP "\fBGetAtomPaths\fR" 4 +.IX Item "GetAtomPaths" +.Vb 1 +\& $AtomPathsRef = $Molecule\->GetAtomPaths([$AllowCycles]); +.Ve +.Sp +Returns all paths as a reference to an array containing reference to arrays with path +\&\fBAtom\fR objects. +.Sp +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. +.IP "\fBGetAtomPathsBetween\fR" 4 +.IX Item "GetAtomPathsBetween" +.Vb 1 +\& $AtomPathsRef = $Molecule\->GetAtomPathsBetween($StartAtom, $EndAtom); +.Ve +.Sp +Returns all paths as between \fIStartAtom\fR and \fIEndAtom\fR as a reference to an array +containing reference to arrays with path \fBAtom\fR objects. +.Sp +For molecules with rings, atom paths array contains may contain two paths. +.IP "\fBGetAtomPathsStartingAt\fR" 4 +.IX Item "GetAtomPathsStartingAt" +.Vb 1 +\& $AtomPathsRef = $Molecule\->GetAtomPathsStartingAt($StartAtom, [$AllowCycles]); +.Ve +.Sp +Returns paths starting at \fIStartAtom\fR as a reference to an array containing reference to +arrays with path \fBAtom\fR objects. +.Sp +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. +.IP "\fBGetAtomPathsStartingAtWithLength\fR" 4 +.IX Item "GetAtomPathsStartingAtWithLength" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAtomPathsStartingAtWithLength($StartAtom, +\& $Length, [$AllowCycles]); +.Ve +.Sp +Returns paths starting at \fIStartAtom\fR with length \fILength\fR as a reference to an array +containing reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.IP "\fBGetAtomPathsStartingAtWithLengthUpto\fR" 4 +.IX Item "GetAtomPathsStartingAtWithLengthUpto" +.Vb 2 +\& $AtomPathsRef = $Molecule\->GetAtomPathsStartingAtWithLengthUpto($StartAtom, +\& $Length, [$AllowCycles]); +.Ve +.Sp +Returns paths starting at \fIStartAtom\fR with length up to \fILength\fR as a reference to an array +containing reference to arrays with path \fBAtom\fR objects. +.Sp +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. +.IP "\fBGetAtomPathsWithLength\fR" 4 +.IX Item "GetAtomPathsWithLength" +.Vb 1 +\& $AtomPathsRef = $Molecule\->GetAtomPathsWithLength($Length, [$AllowCycles]); +.Ve +.Sp +Returns all paths with specified \fILength\fR as a reference to an array containing reference +to arrays with path \fBAtom\fR objects. +.Sp +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. +.IP "\fBGetAtomPathsWithLengthUpto\fR" 4 +.IX Item "GetAtomPathsWithLengthUpto" +.Vb 1 +\& $AtomPathsRef = $Molecule\->GetAtomPathsWithLengthUpto($Length, [$AllowCycles]); +.Ve +.Sp +Returns all paths with length up to \fILength\fR as a reference to an array containing reference +to arrays with path \fBAtom\fR objects. +.Sp +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. +.IP "\fBGetAtoms\fR" 4 +.IX Item "GetAtoms" +.Vb 2 +\& @AllAtoms = $Molecule\->GetAtoms(); +\& @PolarAtoms = $Molecule\->GetAtoms(\*(AqIsPolarAtom\*(Aq); +\& +\& $NegateMethodResult = 1; +\& @NonHydrogenAtoms = $Molecule\->GetAtoms(\*(AqIsHydrogenAtom\*(Aq, +\& $NegateMethodResult); +\& +\& $AtomsCount = $Molecule\->GetAtoms(); +.Ve +.Sp +Returns an array of \fIAtoms\fR in a \fIMolecule\fR. In scalar context, it returns number of atoms. +Additionally, \fBAtoms\fR array can be filtered by any user specifiable valid \fBAtom\fR class method +and the result of the \fBAtom\fR class method used to filter the atoms can also be negated by +an optional negate results flag as third parameter. +.IP "\fBGetBonds\fR" 4 +.IX Item "GetBonds" +.Vb 2 +\& @Bonds = $Molecule\->GetBonds(); +\& $BondsCount = $Molecule\->GetBonds(); +.Ve +.Sp +Returns an array of \fIBonds\fR in a \fIMolecule\fR. In scalar context, it returns number of bonds. +.IP "\fBGetCharge\fR" 4 +.IX Item "GetCharge" +.Vb 1 +\& $Charge = $Molecule\->GetCharge(); +.Ve +.Sp +Returns net charge on a \fIMolecule\fR using one of the following two methods: explicitly +set \fBCharge\fR property or sum of partial atomic charges on each atom. +.IP "\fBGetConnectedComponents\fR" 4 +.IX Item "GetConnectedComponents" +.Vb 1 +\& @ConnectedComponents = $Molecule\->GetConnectedComponents(); +.Ve +.Sp +Returns a reference to an array containing \fIMolecule\fR objects corresponding +to connected components sorted in decreasing order of component size in a \fIMolecule\fR. +.IP "\fBGetConnectedComponentsAtoms\fR" 4 +.IX Item "GetConnectedComponentsAtoms" +.Vb 2 +\& @ConnectedComponentsAtoms = +\& $Molecule\->GetConnectedComponentsAtoms(); +.Ve +.Sp +Returns an array containing references to arrays with \fIAtom\fR objects corresponding to +atoms of connected components sorted in order of component decreasing size in a +\&\fIMolecule\fR. +.IP "\fBGetDimensionality\fR" 4 +.IX Item "GetDimensionality" +.Vb 1 +\& $Dimensionality = $Molecule\->GetDimensionality(); +.Ve +.Sp +Returns \fIDimensionality\fR of a \fIMolecule\fR corresponding to explicitly set +\&\fIDimensionality\fR property value or by processing atomic. +.Sp +The \fIDimensionality\fR value from atomic coordinates is calculated as follows: +.Sp +.Vb 4 +\& 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 +.Ve +.IP "\fBGetElementalComposition\fR" 4 +.IX Item "GetElementalComposition" +.Vb 2 +\& ($ElementsRef, $CompositionRef) = +\& $Molecule\->GetElementalComposition([$IncludeMissingHydrogens]); +.Ve +.Sp +Calculates elemental composition and returns references to arrays containing elements +and their percent composition in a \fIMolecule\fR. By default, missing hydrogens are included +during the calculation. +.IP "\fBGetElementsAndNonElements\fR" 4 +.IX Item "GetElementsAndNonElements" +.Vb 2 +\& ($ElementsRef, $NonElementsRef) = +\& $Molecule\->GetElementsAndNonElements([$IncludeMissingHydrogens]); +.Ve +.Sp +Counts elements and non-elements in a \fIMolecule\fR 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. +.IP "\fBGetExactMass\fR" 4 +.IX Item "GetExactMass" +.Vb 1 +\& $ExactMass = $Molecule\->GetExactMass(); +.Ve +.Sp +Returns exact mass of a \fIMolecule\fR corresponding to sum of exact masses of all +the atoms. +.IP "\fBGetFormalCharge\fR" 4 +.IX Item "GetFormalCharge" +.Vb 1 +\& $FormalCharge = $Molecule\->GetFormalCharge(); +.Ve +.Sp +Returns net formal charge on a \fIMolecule\fR using one of the following two methods: explicitly +set \fBFormalCharge\fR property or sum of formal charges on each atom. +.Sp +\&\fBFormalCharge\fR is different from \fBCharge\fR property of the molecule which corresponds to +sum of partial atomic charges explicitly set for each atom using a specific methodology. +.IP "\fBGetFreeRadicalElectrons\fR" 4 +.IX Item "GetFreeRadicalElectrons" +.Vb 1 +\& $FreeRadicalElectrons = $Molecule\->GetFreeRadicalElectrons(); +.Ve +.Sp +Returns total number of free radical electrons available in a \fIMolecule\fR using one of the +following two methods: explicitly set \fBFreeRadicalElectrons\fR property or sum of available +free radical electrons on each atom. +.IP "\fBGetFusedAndNonFusedRings\fR" 4 +.IX Item "GetFusedAndNonFusedRings" +.Vb 2 +\& ($FusedRingSetRef, $NonFusedRingsRef) = +\& $Molecule\->GetFusedAndNonFusedRings(); +.Ve +.Sp +Returns references to array of fused ring sets and non-fused rings in a \fIMolecule\fR. Fused ring sets +array reference contains refernces to arrays of rings corresponding to ring \fIAtom\fR objects; +Non-fused rings array reference contains references to arrays of ring \fIAtom\fR objects. +.IP "\fBGetLargestConnectedComponent\fR" 4 +.IX Item "GetLargestConnectedComponent" +.Vb 1 +\& $ComponentMolecule = $Molecule\->GetLargestConnectedComponent(); +.Ve +.Sp +Returns a reference to \fBMolecule\fR object corresponding to a largest connected component +in a \fIMolecule\fR. +.IP "\fBGetLargestConnectedComponentAtoms\fR" 4 +.IX Item "GetLargestConnectedComponentAtoms" +.Vb 1 +\& @ComponentAtoms = $Molecule\->GetLargestConnectedComponentAtoms(); +.Ve +.Sp +Returns a reference to an array of \fBAtom\fR objects corresponding to a largest connected +component in a \fIMolecule\fR. +.IP "\fBGetLargestRing\fR" 4 +.IX Item "GetLargestRing" +.Vb 1 +\& @RingAtoms = $Molecule\->GetLargestRing(); +.Ve +.Sp +Returns an array of \fIAtoms\fR objects corresponding to a largest ring in a \fIMolecule\fR. +.IP "\fBGetMolecularFormula\fR" 4 +.IX Item "GetMolecularFormula" +.Vb 3 +\& $FormulaString = $Molecule\->GetMolecularFormula( +\& [$IncludeMissingHydrogens, +\& $IncludeNonElements]); +.Ve +.Sp +Returns molecular formula of a \fIMolecule\fR by collecting information about all atoms in +the molecule and composing the formula using Hills ordering system: +.Sp +.Vb 4 +\& 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. +.Ve +.Sp +Notes: +.Sp +.Vb 4 +\& 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. +.Ve +.IP "\fBGetMolecularWeight\fR" 4 +.IX Item "GetMolecularWeight" +.Vb 1 +\& $MolWeight = $Molecule\->GetMolecularWeight(); +.Ve +.Sp +Returns molecular weight of a \fIMolecule\fR corresponding to sum of atomic weights of all +the atoms. +.IP "\fBGetNumOfAromaticRings\fR" 4 +.IX Item "GetNumOfAromaticRings" +.Vb 1 +\& $NumOfAromaticRings = $Molecule\->GetNumOfAromaticRings(); +.Ve +.Sp +Returns number of aromatic rings in a \fIMolecule\fR. +.IP "\fBGetNumOfAtoms\fR" 4 +.IX Item "GetNumOfAtoms" +.Vb 1 +\& $NumOfAtoms = $Molecule\->GetNumOfAtoms(); +.Ve +.Sp +Returns number of atoms in a \fIMolecule\fR. +.IP "\fBGetNumOfBonds\fR" 4 +.IX Item "GetNumOfBonds" +.Vb 1 +\& $NumOfBonds = $Molecule\->GetNumOfBonds(); +.Ve +.Sp +Returns number of bonds in a \fIMolecule\fR. +.IP "\fBGetNumOfConnectedComponents\fR" 4 +.IX Item "GetNumOfConnectedComponents" +.Vb 1 +\& $NumOfComponents = $Molecule\->GetNumOfConnectedComponents(); +.Ve +.Sp +Returns number of connected components in a \fIMolecule\fR. +.IP "\fBGetNumOfElementsAndNonElements\fR" 4 +.IX Item "GetNumOfElementsAndNonElements" +.Vb 4 +\& ($NumOfElements, $NumOfNonElements) = $Molecule\-> +\& GetNumOfElementsAndNonElements(); +\& ($NumOfElements, $NumOfNonElements) = $Molecule\-> +\& GetNumOfElementsAndNonElements($IncludeMissingHydrogens); +.Ve +.Sp +Returns number of elements and non-elements in a \fIMolecule\fR. By default, missing +hydrogens are not added to element count. +.IP "\fBGetNumOfHeavyAtoms\fR" 4 +.IX Item "GetNumOfHeavyAtoms" +.Vb 1 +\& $NumOfHeavyAtoms = $Molecule\->GetNumOfHeavyAtoms(); +.Ve +.Sp +Returns number of heavy atoms, non-hydrogen atoms, in a \fIMolecule\fR. +.IP "\fBGetNumOfHydrogenAtoms\fR" 4 +.IX Item "GetNumOfHydrogenAtoms" +.Vb 1 +\& $NumOfHydrogenAtoms = $Molecule\->GetNumOfHydrogenAtoms(); +.Ve +.Sp +Returns number of hydrogen atoms in a \fIMolecule\fR. +.IP "\fBGetNumOfMissingHydrogenAtoms\fR" 4 +.IX Item "GetNumOfMissingHydrogenAtoms" +.Vb 1 +\& $NumOfMissingHydrogenAtoms = $Molecule\->GetNumOfMissingHydrogenAtoms(); +.Ve +.Sp +Returns number of hydrogen atoms in a \fIMolecule\fR. +.IP "\fBGetNumOfNonHydrogenAtoms\fR" 4 +.IX Item "GetNumOfNonHydrogenAtoms" +.Vb 1 +\& $NumOfNonHydrogenAtoms = $Molecule\->GetNumOfNonHydrogenAtoms(); +.Ve +.Sp +Returns number of non-hydrogen atoms in a \fIMolecule\fR. +.IP "\fBGetNumOfRings\fR" 4 +.IX Item "GetNumOfRings" +.Vb 1 +\& $RingCount = $Molecule\->GetNumOfRings(); +.Ve +.Sp +Returns number of rings in a \fIMolecule\fR. +.IP "\fBGetNumOfRingsWithEvenSize\fR" 4 +.IX Item "GetNumOfRingsWithEvenSize" +.Vb 1 +\& $RingCount = $Molecule\->GetNumOfRingsWithEvenSize(); +.Ve +.Sp +Returns number of rings with even size in a \fIMolecule\fR. +.IP "\fBGetNumOfRingsWithOddSize\fR" 4 +.IX Item "GetNumOfRingsWithOddSize" +.Vb 1 +\& $RingCount = $Molecule\->GetNumOfRingsWithOddSize(); +.Ve +.Sp +Returns number of rings with odd size in a \fIMolecule\fR. +.IP "\fBGetNumOfRingsWithSize\fR" 4 +.IX Item "GetNumOfRingsWithSize" +.Vb 1 +\& $RingCount = $Molecule\->GetNumOfRingsWithSize($Size); +.Ve +.Sp +Returns number of rings with \fISize\fR in a \fIMolecule\fR. +.IP "\fBGetNumOfRingsWithSizeGreaterThan\fR" 4 +.IX Item "GetNumOfRingsWithSizeGreaterThan" +.Vb 1 +\& $RingCount = $Molecule\->GetNumOfRingsWithSizeGreaterThan($Size); +.Ve +.Sp +Returns number of rings with size greater than \fISize\fR in a \fIMolecule\fR. +.IP "\fBGetNumOfRingsWithSizeLessThan\fR" 4 +.IX Item "GetNumOfRingsWithSizeLessThan" +.Vb 1 +\& $RingCount = $Molecule\->GetNumOfRingsWithSizeLessThan($Size); +.Ve +.Sp +Returns number of rings with size less than \fISize\fR in a \fIMolecule\fR. +.IP "\fBGetRingBonds\fR" 4 +.IX Item "GetRingBonds" +.Vb 1 +\& @RingBonds = $Molecule\->GetRingBonds(@RingAtoms); +.Ve +.Sp +Returns an array of ring \fBBond\fR objects correponding to an array of ring \fIAtoms\fR in a +\&\fIMolecule\fR. +.IP "\fBGetRingBondsFromRings\fR" 4 +.IX Item "GetRingBondsFromRings" +.Vb 1 +\& @RingBondsSets = $Molecule\->GetRingBondsFromRings(@RingAtomsSets); +.Ve +.Sp +Returns an array containing references to arrays of ring \fBBond\fR objects for rings specified +in an array of references to ring \fIAtom\fR objects. +.IP "\fBGetRings\fR" 4 +.IX Item "GetRings" +.Vb 1 +\& @Rings = $Molecule\->GetRings(); +.Ve +.Sp +Returns rings as an array containing references to arrays of ring \fIAtom\fR objects in a \fIMolecule\fR. +.IP "\fBGetRingsWithEvenSize\fR" 4 +.IX Item "GetRingsWithEvenSize" +.Vb 1 +\& @Rings = $Molecule\->GetRingsWithEvenSize(); +.Ve +.Sp +Returns even size rings as an array containing references to arrays of ring \fIAtom\fR objects in +a \fIMolecule\fR. +.IP "\fBGetRingsWithOddSize\fR" 4 +.IX Item "GetRingsWithOddSize" +.Vb 1 +\& @Rings = $Molecule\->GetRingsWithOddSize(); +.Ve +.Sp +Returns odd size rings as an array containing references to arrays of ring \fIAtom\fR objects in +a \fIMolecule\fR. +.IP "\fBGetRingsWithSize\fR" 4 +.IX Item "GetRingsWithSize" +.Vb 1 +\& @Rings = $Molecule\->GetRingsWithSize($Size); +.Ve +.Sp +Returns rings with \fISize\fR as an array containing references to arrays of ring \fIAtom\fR objects in +a \fIMolecule\fR. +.IP "\fBGetRingsWithSizeGreaterThan\fR" 4 +.IX Item "GetRingsWithSizeGreaterThan" +.Vb 1 +\& @Rings = $Molecule\->GetRingsWithSizeGreaterThan($Size); +.Ve +.Sp +Returns rings with size greater than \fISize\fR as an array containing references to arrays of +ring \fIAtom\fR objects in a \fIMolecule\fR. +.IP "\fBGetRingsWithSizeLessThan\fR" 4 +.IX Item "GetRingsWithSizeLessThan" +.Vb 1 +\& @Rings = $Molecule\->GetRingsWithSizeLessThan($Size); +.Ve +.Sp +Returns rings with size less than \fISize\fR as an array containing references to arrays of +ring \fIAtom\fR objects in a \fIMolecule\fR. +.IP "\fBGetSizeOfLargestRing\fR" 4 +.IX Item "GetSizeOfLargestRing" +.Vb 1 +\& $Size = $Molecule\->GetSizeOfLargestRing(); +.Ve +.Sp +Returns size of the largest ring in a \fIMolecule\fR. +.IP "\fBGetSizeOfSmallestRing\fR" 4 +.IX Item "GetSizeOfSmallestRing" +.Vb 1 +\& $Size = $Molecule\->GetSizeOfSmallestRing(); +.Ve +.Sp +Returns size of the smalles ring in a \fIMolecule\fR. +.IP "\fBGetSmallestRing\fR" 4 +.IX Item "GetSmallestRing" +.Vb 1 +\& @RingAtoms = $Molecule\->GetSmallestRing(); +.Ve +.Sp +Returns an array containing \fIAtom\fR objects corresponding to the smallest ring in +a \fIMolecule\fR. +.IP "\fBGetSpinMultiplicity\fR" 4 +.IX Item "GetSpinMultiplicity" +.Vb 1 +\& $SpinMultiplicity = $Molecule\->GetSpinMultiplicity(); +.Ve +.Sp +Returns net spin multiplicity of a \fIMolecule\fR using one of the following two methods: explicitly +set \fBSpinMultiplicity\fR property or sum of spin multiplicity on each atom. +.IP "\fBGetSupportedAromaticityModels\fR" 4 +.IX Item "GetSupportedAromaticityModels" +.Vb 1 +\& @SupportedModels = $Molecule\->GetSupportedAromaticityModels(); +.Ve +.Sp +Returns an array containing a list of supported aromaticity models. +.IP "\fBGetValenceModel\fR" 4 +.IX Item "GetValenceModel" +.Vb 1 +\& $ValenceModel = $Molecule\->GetValenceModel(); +.Ve +.Sp +Returns valence model for \fIMolecule\fR using one of the following two methods: explicitly +set \fBValenceModel\fR property or defaul value of \fIInternalValenceModel\fR. +.IP "\fBGetTopologicallySortedAtoms\fR" 4 +.IX Item "GetTopologicallySortedAtoms" +.Vb 1 +\& @SortedAtoms = $Molecule\->GetTopologicallySortedAtoms([$StartAtom]); +.Ve +.Sp +Returns an array of topologically sorted \fIAtom\fR objects starting from \fIStartAtom\fR or +an arbitrary atom in a \fIMolecule\fR. +.IP "\fBHasAromaticRings\fR" 4 +.IX Item "HasAromaticRings" +.Vb 1 +\& $Status = $Molecule\->HasAromaticRings(); +.Ve +.Sp +Returns 1 or 0 based on whether any aromatic ring is present in a \fIMolecule\fR. +.IP "\fBHasAromaticAtomsInRings\fR" 4 +.IX Item "HasAromaticAtomsInRings" +.Vb 1 +\& $Status = $Molecule\->HasAromaticAtomsInRings(); +.Ve +.Sp +Returns 1 or 0 based on whether any aromatic ring atom is present in a \fIMolecule\fR. +.IP "\fBHasAromaticAtomsNotInRings\fR" 4 +.IX Item "HasAromaticAtomsNotInRings" +.Vb 1 +\& $Status = $Molecule\->HasAromaticAtomsNotInRings(); +.Ve +.Sp +Returns 1 or 0 based on whether any non-ring atom is marked aromatic in a \fIMolecule\fR. +.IP "\fBHasAtom\fR" 4 +.IX Item "HasAtom" +.Vb 1 +\& $Status = $Molecule\->HasAtom($Atom); +.Ve +.Sp +Returns 1 or 0 based on whether \fIAtom\fR is present in a \fIMolecule\fR. +.IP "\fBHasBond\fR" 4 +.IX Item "HasBond" +.Vb 1 +\& $Status = $Molecule\->HasBond($Bond); +.Ve +.Sp +Returns 1 or 0 based on whether \fIBond\fR is present in a \fIMolecule\fR. +.IP "\fBHasFusedRings\fR" 4 +.IX Item "HasFusedRings" +.Vb 1 +\& $Status = $Molecule\->HasFusedRings(); +.Ve +.Sp +Returns 1 or 0 based on whether any fused rings set is present in a \fIMolecule\fR. +.IP "\fBHasNoRings\fR" 4 +.IX Item "HasNoRings" +.Vb 1 +\& $Status = $Molecule\->HasNoRings(); +.Ve +.Sp +Returns 0 or 1 based on whether any ring is present in a \fIMolecule\fR. +.IP "\fBHasOnlyOneRing\fR" 4 +.IX Item "HasOnlyOneRing" +.Vb 1 +\& $Status = $Molecule\->HasOnlyOneRing(); +.Ve +.Sp +Returns 1 or 0 based on whether only one ring is present in a \fIMolecule\fR. +.IP "\fBHasRings\fR" 4 +.IX Item "HasRings" +.Vb 1 +\& $Status = $Molecule\->HasRings(); +.Ve +.Sp +Returns 1 or 0 based on whether rings are present in a \fIMolecule\fR. +.IP "\fBIsAromatic\fR" 4 +.IX Item "IsAromatic" +.Vb 1 +\& $Status = $Molecule\->IsAromatic(); +.Ve +.Sp +Returns 1 or 0 based on whether \fIMolecule\fR is aromatic. +.IP "\fBIsMolecule\fR" 4 +.IX Item "IsMolecule" +.Vb 1 +\& $Status = Molecule::IsMolecule(); +.Ve +.Sp +Returns 1 or 0 based on whether \fIObject\fR is a \fBMolecule\fR object. +.IP "\fBIsRingAromatic\fR" 4 +.IX Item "IsRingAromatic" +.Vb 1 +\& $Status = $Molecule\->IsRingAromatic(@RingAtoms); +.Ve +.Sp +Returns 1 or 0 based on whether all \fIRingAtoms\fR are aromatic. +.IP "\fBIsSupportedAromaticityModel\fR" 4 +.IX Item "IsSupportedAromaticityModel" +.Vb 2 +\& $Status = $Molecule\->IsSupportedAromaticityModel($AromaticityModel); +\& $Status = Molecule::IsSupportedAromaticityModel($AromaticityModel); +.Ve +.Sp +Returns 1 or 0 based on whether specified \fIAromaticityModel\fR is supported. +.IP "\fBIsTwoDimensional\fR" 4 +.IX Item "IsTwoDimensional" +.Vb 1 +\& $Status = $Molecule\->IsTwoDimensional(); +.Ve +.Sp +Returns 1 or 0 based on whether any atom in \fIMolecule\fR has a non-zero value +for X or Y coordinate and all atoms have zero value for Z coordinates. +.IP "\fBIsThreeDimensional\fR" 4 +.IX Item "IsThreeDimensional" +.Vb 1 +\& $Status = $Molecule\->IsThreeDimensional(); +.Ve +.Sp +Returns 1 or 0 based on whether any atom in \fIMolecule\fR has a non-zero value +for Z coordinate. +.IP "\fBKeepLargestComponent\fR" 4 +.IX Item "KeepLargestComponent" +.Vb 1 +\& $Molecule\->KeepLargestComponent(); +.Ve +.Sp +Deletes atoms corresponding to all other connected components Except for the largest +connected component in a \fIMolecule\fR and returns \fIMolecule\fR. +.IP "\fBKekulizeAromaticAtoms\fR" 4 +.IX Item "KekulizeAromaticAtoms" +.Vb 1 +\& $Status = $Molecule\->KekulizeAromaticAtoms(); +.Ve +.Sp +Kekulize marked ring and non-ring aromatic atoms in a molecule and return 1 or 1 based +on whether the kekulization succeeded. +.IP "\fBNewAtom\fR" 4 +.IX Item "NewAtom" +.Vb 1 +\& $NewAtom = $Molecule\->NewAtom(%AtomPropertyNamesAndValues); +.Ve +.Sp +Creates a new atom using \fIAtomPropertyNamesAndValues\fR, add its to \fIMolecule\fR, and returns +new \fBAtom\fR object. +.IP "\fBNewBond\fR" 4 +.IX Item "NewBond" +.Vb 1 +\& $NewBond = $Molecule\->NewBond(%BondPropertyNamesAndValues); +.Ve +.Sp +Creates a new bond using \fIAtomPropertyNamesAndValues\fR, add its to \fIMolecule\fR, and returns +new \fBBond\fR object. +.IP "\fBSetActiveRings\fR" 4 +.IX Item "SetActiveRings" +.Vb 1 +\& $Molecule\->SetActiveRings($RingsType); +.Ve +.Sp +Sets up type of detected ring sets to use during all ring related methods and returns \fIMolecule\fR. +Possible \fIRingType\fR values: \fIIndependent or All\fR. By default, \fIIndependent\fR ring set is used +during all ring methods. +.IP "\fBSetAromaticityModel\fR" 4 +.IX Item "SetAromaticityModel" +.Vb 1 +\& $Molecule = $Molecule\->SetAromaticityModel($AromaticityModel); +.Ve +.Sp +Sets up \fIAromaticityModel\fR property value for \fIMolecule\fR and retrurns \fIMolecule\fR. +.IP "\fBSetValenceModel\fR" 4 +.IX Item "SetValenceModel" +.Vb 1 +\& $Molecule = $Molecule\->SetValenceModel(ValenceModel); +.Ve +.Sp +Sets up \fIValenceModel\fR property value for \fIMolecule\fR and retrurns \fIMolecule\fR. +.IP "\fBStringifyMolecule\fR" 4 +.IX Item "StringifyMolecule" +.Vb 1 +\& $MoleculeString = $Molecule\->StringifyMolecule(); +.Ve +.Sp +Returns a string containing information about \fIMolecule\fR object +.SH "AUTHOR" +.IX Header "AUTHOR" +Manish Sud <msud@san.rr.com> +.SH "SEE ALSO" +.IX Header "SEE ALSO" +Atom.pm, Bond.pm, MoleculeFileIO.pm, MolecularFormula.pm +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright (C) 2015 Manish Sud. All rights reserved. +.PP +This file is part of MayaChemTools. +.PP +MayaChemTools is free software; you can redistribute it and/or modify it under +the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free +Software Foundation; either version 3 of the License, or (at your option) +any later version.