comparison mayachemtools/docs/modules/html/Molecule.html @ 0:73ae111cf86f draft

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 11:55:01 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:73ae111cf86f
1 <html>
2 <head>
3 <title>MayaChemTools:Documentation:Molecule.pm</title>
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
5 <link rel="stylesheet" type="text/css" href="../../css/MayaChemTools.css">
6 </head>
7 <body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10">
8 <br/>
9 <center>
10 <a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a>
11 </center>
12 <br/>
13 <div class="DocNav">
14 <table width="100%" border=0 cellpadding=0 cellspacing=2>
15 <tr align="left" valign="top"><td width="33%" align="left"><a href="./MolecularFormula.html" title="MolecularFormula.html">Previous</a>&nbsp;&nbsp;<a href="./index.html" title="Table of Contents">TOC</a>&nbsp;&nbsp;<a href="./MoleculeFileIO.html" title="MoleculeFileIO.html">Next</a></td><td width="34%" align="middle"><strong>Molecule.pm</strong></td><td width="33%" align="right"><a href="././code/Molecule.html" title="View source code">Code</a>&nbsp;|&nbsp;<a href="./../pdf/Molecule.pdf" title="PDF US Letter Size">PDF</a>&nbsp;|&nbsp;<a href="./../pdfgreen/Molecule.pdf" title="PDF US Letter Size with narrow margins: www.changethemargins.com">PDFGreen</a>&nbsp;|&nbsp;<a href="./../pdfa4/Molecule.pdf" title="PDF A4 Size">PDFA4</a>&nbsp;|&nbsp;<a href="./../pdfa4green/Molecule.pdf" title="PDF A4 Size with narrow margins: www.changethemargins.com">PDFA4Green</a></td></tr>
16 </table>
17 </div>
18 <p>
19 </p>
20 <h2>NAME</h2>
21 <p>Molecule - Molecule class</p>
22 <p>
23 </p>
24 <h2>SYNOPSIS</h2>
25 <p>use Molecule;</p>
26 <p>use Molecule qw(:all);</p>
27 <p>
28 </p>
29 <h2>DESCRIPTION</h2>
30 <p><strong>Molecule</strong> class provides the following methods:</p>
31 <p> <a href="#new">new</a>, <a href="#addatom">AddAtom</a>, <a href="#addatoms">AddAtoms</a>, <a href="#addbond">AddBond</a>, <a href="#addbonds">AddBonds</a>, <a href="#addhydrogens">AddHydrogens</a>, <a href="#addpolarhydrogens">AddPolarHydrogens</a>
32 , <a href="#clearrings">ClearRings</a>, <a href="#copy">Copy</a>, <a href="#deletearomaticity">DeleteAromaticity</a>, <a href="#deleteatom">DeleteAtom</a>, <a href="#deleteatoms">DeleteAtoms</a>, <a href="#deletebond">DeleteBond</a>
33 , <a href="#deletebonds">DeleteBonds</a>, <a href="#deletehydrogens">DeleteHydrogens</a>, <a href="#deletepolarhydrogens">DeletePolarHydrogens</a>, <a href="#detectaromaticity">DetectAromaticity</a>
34 , <a href="#detectrings">DetectRings</a>, <a href="#formatelementalcompositioninformation">FormatElementalCompositionInformation</a>, <a href="#getallatompaths">GetAllAtomPaths</a>
35 , <a href="#getallatompathsstartingat">GetAllAtomPathsStartingAt</a>, <a href="#getallatompathsstartingatwithlength">GetAllAtomPathsStartingAtWithLength</a>
36 , <a href="#getallatompathsstartingatwithlengthupto">GetAllAtomPathsStartingAtWithLengthUpto</a>, <a href="#getallatompathswithlength">GetAllAtomPathsWithLength</a>
37 , <a href="#getallatompathswithlengthupto">GetAllAtomPathsWithLengthUpto</a>, <a href="#getaromaticrings">GetAromaticRings</a>, <a href="#getaromaticitymodel">GetAromaticityModel</a>
38 , <a href="#getatomneighborhoods">GetAtomNeighborhoods</a>, <a href="#getatomneighborhoodswithradiusupto">GetAtomNeighborhoodsWithRadiusUpto</a>
39 , <a href="#getatomneighborhoodswithsuccessoratoms">GetAtomNeighborhoodsWithSuccessorAtoms</a>
40 , <a href="#getatomneighborhoodswithsuccessoratomsandradiusupto">GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto</a>, <a href="#getatompathbonds">GetAtomPathBonds</a>
41 , <a href="#getatompaths">GetAtomPaths</a>, <a href="#getatompathsbetween">GetAtomPathsBetween</a>, <a href="#getatompathsstartingat">GetAtomPathsStartingAt</a>
42 , <a href="#getatompathsstartingatwithlength">GetAtomPathsStartingAtWithLength</a>, <a href="#getatompathsstartingatwithlengthupto">GetAtomPathsStartingAtWithLengthUpto</a>
43 , <a href="#getatompathswithlength">GetAtomPathsWithLength</a>, <a href="#getatompathswithlengthupto">GetAtomPathsWithLengthUpto</a>, <a href="#getatoms">GetAtoms</a>, <a href="#getbonds">GetBonds</a>, <a href="#getcharge">GetCharge</a>
44 , <a href="#getconnectedcomponents">GetConnectedComponents</a>, <a href="#getconnectedcomponentsatoms">GetConnectedComponentsAtoms</a>, <a href="#getdimensionality">GetDimensionality</a>
45 , <a href="#getelementalcomposition">GetElementalComposition</a>, <a href="#getelementsandnonelements">GetElementsAndNonElements</a>, <a href="#getexactmass">GetExactMass</a>, <a href="#getformalcharge">GetFormalCharge</a>
46 , <a href="#getfreeradicalelectrons">GetFreeRadicalElectrons</a>, <a href="#getfusedandnonfusedrings">GetFusedAndNonFusedRings</a>, <a href="#getlargestconnectedcomponent">GetLargestConnectedComponent</a>
47 , <a href="#getlargestconnectedcomponentatoms">GetLargestConnectedComponentAtoms</a>, <a href="#getlargestring">GetLargestRing</a>, <a href="#getmolecularformula">GetMolecularFormula</a>
48 , <a href="#getmolecularweight">GetMolecularWeight</a>, <a href="#getnumofaromaticrings">GetNumOfAromaticRings</a>, <a href="#getnumofatoms">GetNumOfAtoms</a>, <a href="#getnumofbonds">GetNumOfBonds</a>
49 , <a href="#getnumofconnectedcomponents">GetNumOfConnectedComponents</a>, <a href="#getnumofelementsandnonelements">GetNumOfElementsAndNonElements</a>, <a href="#getnumofheavyatoms">GetNumOfHeavyAtoms</a>
50 , <a href="#getnumofhydrogenatoms">GetNumOfHydrogenAtoms</a>, <a href="#getnumofmissinghydrogenatoms">GetNumOfMissingHydrogenAtoms</a>, <a href="#getnumofnonhydrogenatoms">GetNumOfNonHydrogenAtoms</a>
51 , <a href="#getnumofrings">GetNumOfRings</a>, <a href="#getnumofringswithevensize">GetNumOfRingsWithEvenSize</a>, <a href="#getnumofringswithoddsize">GetNumOfRingsWithOddSize</a>
52 , <a href="#getnumofringswithsize">GetNumOfRingsWithSize</a>, <a href="#getnumofringswithsizegreaterthan">GetNumOfRingsWithSizeGreaterThan</a>
53 , <a href="#getnumofringswithsizelessthan">GetNumOfRingsWithSizeLessThan</a>, <a href="#getringbonds">GetRingBonds</a>, <a href="#getringbondsfromrings">GetRingBondsFromRings</a>, <a href="#getrings">GetRings</a>
54 , <a href="#getringswithevensize">GetRingsWithEvenSize</a>, <a href="#getringswithoddsize">GetRingsWithOddSize</a>, <a href="#getringswithsize">GetRingsWithSize</a>
55 , <a href="#getringswithsizegreaterthan">GetRingsWithSizeGreaterThan</a>, <a href="#getringswithsizelessthan">GetRingsWithSizeLessThan</a>, <a href="#getsizeoflargestring">GetSizeOfLargestRing</a>
56 , <a href="#getsizeofsmallestring">GetSizeOfSmallestRing</a>, <a href="#getsmallestring">GetSmallestRing</a>, <a href="#getspinmultiplicity">GetSpinMultiplicity</a>
57 , <a href="#getsupportedaromaticitymodels">GetSupportedAromaticityModels</a>, <a href="#gettopologicallysortedatoms">GetTopologicallySortedAtoms</a>, <a href="#getvalencemodel">GetValenceModel</a>
58 , <a href="#hasaromaticatomsinrings">HasAromaticAtomsInRings</a>, <a href="#hasaromaticatomsnotinrings">HasAromaticAtomsNotInRings</a>, <a href="#hasaromaticrings">HasAromaticRings</a>, <a href="#hasatom">HasAtom</a>
59 , <a href="#hasbond">HasBond</a>, <a href="#hasfusedrings">HasFusedRings</a>, <a href="#hasnorings">HasNoRings</a>, <a href="#hasonlyonering">HasOnlyOneRing</a>, <a href="#hasrings">HasRings</a>, <a href="#isaromatic">IsAromatic</a>
60 , <a href="#ismolecule">IsMolecule</a>, <a href="#isringaromatic">IsRingAromatic</a>, <a href="#issupportedaromaticitymodel">IsSupportedAromaticityModel</a>, <a href="#isthreedimensional">IsThreeDimensional</a>
61 , <a href="#istwodimensional">IsTwoDimensional</a>, <a href="#keeplargestcomponent">KeepLargestComponent</a>, <a href="#kekulizearomaticatoms">KekulizeAromaticAtoms</a>, <a href="#newatom">NewAtom</a>, <a href="#newbond">NewBond</a>
62 , <a href="#setactiverings">SetActiveRings</a>, <a href="#setaromaticitymodel">SetAromaticityModel</a>, <a href="#setid">SetID</a>, <a href="#setvalencemodel">SetValenceModel</a>, <a href="#stringifymolecule">StringifyMolecule</a>
63 </p><p>The following methods can also be used as functions:</p>
64 <p>FormatElementalCompositionInformation, IsMolecule</p>
65 <p><strong>Molecule</strong> class is derived from <strong>ObjectProperty</strong> base class which provides methods not explicitly
66 defined in <strong>Molecule</strong> or <strong>ObjectProperty</strong> class using Perl's AUTOLOAD functionality. These methods
67 are generated on-the-fly for a specified object property:</p>
68 <div class="OptionsBox">
69 Set&lt;PropertyName&gt;(&lt;PropertyValue&gt;);
70 <br/> $PropertyValue = Get&lt;PropertyName&gt;();
71 <br/> Delete&lt;PropertyName&gt;();</div>
72 <p>
73 </p>
74 <h2>METHODS</h2>
75 <dl>
76 <dt><strong><a name="new" class="item"><strong>new</strong></a></strong></dt>
77 <dd>
78 <div class="OptionsBox">
79 $NewMolecule = new Molecule([%PropertyNameAndValues]);</div>
80 <p>Using specified <em>Atom</em> property names and values hash, <strong>new</strong> method creates a new object
81 and returns a reference to newly created <strong>Atom</strong> object. By default, the following properties are
82 initialized:</p>
83 <div class="OptionsBox">
84 ID = SequentialObjectID
85 <br/> Name = &quot;Molecule &lt;SequentialObjectID&gt;&quot;</div>
86 <p>Examples:</p>
87 <div class="OptionsBox">
88 $Molecule = new Molecule();</div>
89 <div class="OptionsBox">
90 $WaterMolecule = new Molecule('Name' =&gt; 'Water');</div>
91 <div class="OptionsBox">
92 $Oxygen = new Atom('AtomSymbol' =&gt; 'O', 'XYZ' =&gt; [0, 0, 0]);
93 <br/> $Hydrogen1 = new Atom('AtomSymbol' =&gt; 'H',
94 'XYZ' =&gt; [0.7144, 0.4125, 0]);
95 <br/> $Hydrogen2 = new Atom('AtomSymbol' =&gt; 'H',
96 'XYZ' =&gt; [1.1208, -0.2959, 0]);
97 <br/> $WaterMolecule-&gt;AddAtoms($Oxygen, $Hydrogen1, $Hydrogen2);</div>
98 <div class="OptionsBox">
99 $Bond1 = new Bond('Atoms' =&gt; [$Oxygen, $Hydrogen1],
100 'BondOrder' =&gt; 1);
101 <br/> $Bond2 = new Bond('Atoms' =&gt; [$Oxygen, $Hydrogen2],
102 'BondOrder' =&gt; 1);
103 <br/> $WaterMolecule-&gt;AddBonds($Bond1, $Bond2);</div>
104 </dd>
105 <dt><strong><a name="addatom" class="item"><strong>AddAtom</strong></a></strong></dt>
106 <dd>
107 <div class="OptionsBox">
108 $Molecule-&gt;AddAtom($Atom);</div>
109 <p>Adds an <em>Atom</em> to a <em>Molecule</em> and returns <em>Molecule</em>.</p>
110 </dd>
111 <dt><strong><a name="addatoms" class="item"><strong>AddAtoms</strong></a></strong></dt>
112 <dd>
113 <div class="OptionsBox">
114 $Molecule-&gt;AddAtoms(@Atoms);</div>
115 <p>Adds <em>Atoms</em> to a <em>Molecule</em> and returns <em>Molecule</em>.</p>
116 </dd>
117 <dt><strong><a name="addbond" class="item"><strong>AddBond</strong></a></strong></dt>
118 <dd>
119 <div class="OptionsBox">
120 $Molecule-&gt;AddBond($Bond);</div>
121 <p>Adds a <em>Bond</em> to a <em>Molecule</em> and returns <em>Molecule</em>.</p>
122 </dd>
123 <dt><strong><a name="addbonds" class="item"><strong>AddBonds</strong></a></strong></dt>
124 <dd>
125 <div class="OptionsBox">
126 $Molecule-&gt;AddBonds(@Bonds);</div>
127 <p>Adds <em>Bonds</em> to a <em>Molecule</em> and returns <em>Molecule</em>.</p>
128 </dd>
129 <dt><strong><a name="addhydrogens" class="item"><strong>AddHydrogens</strong></a></strong></dt>
130 <dd>
131 <div class="OptionsBox">
132 $NumOfHydrogensAdded = $Molecule-&gt;AddHydrogens();</div>
133 <p>Adds hydrogens to each atom in a <em>Molecule</em> and returns total number of hydrogens
134 added. The current release of MayaChemTools doesn't assign hydrogen positions.</p>
135 </dd>
136 <dt><strong><a name="addpolarhydrogens" class="item"><strong>AddPolarHydrogens</strong></a></strong></dt>
137 <dd>
138 <div class="OptionsBox">
139 $NumOfHydrogensAdded = $Molecule-&gt;AddPolarHydrogens();</div>
140 <p>Adds hydrogens to each polar atom - N, O, P or S - in a <em>Molecule</em> and returns total
141 number of polar hydrogens added. The current release of MayaChemTools doesn't
142 assign hydrogen positions.</p>
143 </dd>
144 <dt><strong><a name="clearrings" class="item"><strong>ClearRings</strong></a></strong></dt>
145 <dd>
146 <div class="OptionsBox">
147 $Molecule-&gt;ClearRings();</div>
148 <p>Deletes all rings associated with <em>Molecule</em> and returns <em>Molecule</em>.</p>
149 </dd>
150 <dt><strong><a name="copy" class="item"><strong>Copy</strong></a></strong></dt>
151 <dd>
152 <div class="OptionsBox">
153 $MoleculeCopy = $Molecule-&gt;Copy();</div>
154 <p>Copies <em>Molecule</em> and its associated data using <strong>Storable::dclone</strong> and returns a new
155 <strong>Molecule</strong> object.</p>
156 </dd>
157 <dt><strong><a name="deletearomaticity" class="item"><strong>DeleteAromaticity</strong></a></strong></dt>
158 <dd>
159 <div class="OptionsBox">
160 $Molecule-&gt;DeleteAromaticity();</div>
161 <p>Deletes aromatic property associated with all atoms and bonds in a <em>Molecule</em> and returns
162 <em>Molecule</em>.</p>
163 </dd>
164 <dt><strong><a name="deleteatom" class="item"><strong>DeleteAtom</strong></a></strong></dt>
165 <dd>
166 <div class="OptionsBox">
167 $Molecule-&gt;DeleteAtom($Atom);</div>
168 <p>Deletes <em>Atom</em> from a <em>Molecule</em> and returns <em>Molecule</em>.</p>
169 </dd>
170 <dt><strong><a name="deleteatoms" class="item"><strong>DeleteAtoms</strong></a></strong></dt>
171 <dd>
172 <div class="OptionsBox">
173 $Molecule-&gt;DeleteAtoms(@Atoms);</div>
174 <p>Deletes <em>Atoms</em> from a <em>Molecule</em> and returns <em>Molecule</em>.</p>
175 </dd>
176 <dt><strong><a name="deletebond" class="item"><strong>DeleteBond</strong></a></strong></dt>
177 <dd>
178 <div class="OptionsBox">
179 $Molecule-&gt;DeleteBond($Bond);</div>
180 <p>Deletes <em>Bond</em> from a <em>Molecule</em> and returns <em>Molecule</em>.</p>
181 </dd>
182 <dt><strong><a name="deletebonds" class="item"><strong>DeleteBonds</strong></a></strong></dt>
183 <dd>
184 <div class="OptionsBox">
185 $Molecule-&gt;DeleteBonds(@Bonds);</div>
186 <p>Deletes <em>Bonds</em> from a <em>Molecule</em> and returns <em>Molecule</em>.</p>
187 </dd>
188 <dt><strong><a name="deletehydrogens" class="item"><strong>DeleteHydrogens</strong></a></strong></dt>
189 <dd>
190 <div class="OptionsBox">
191 $NumOfHydrogensDeleted = $Molecule-&gt;DeleteHydrogens();</div>
192 <p>Removes hydrogens from each atom in a <em>Molecule</em> and returns total number of hydrogens
193 deleted.</p>
194 </dd>
195 <dt><strong><a name="deletepolarhydrogens" class="item"><strong>DeletePolarHydrogens</strong></a></strong></dt>
196 <dd>
197 <div class="OptionsBox">
198 $NumOfHydrogensDeleted = $Molecule-&gt;DeletePolarHydrogens();</div>
199 <p>Removes hydrogens to each polar atom - N, O, P or S - in a <em>Molecule</em> and returns total
200 number of polar hydrogens deleted.</p>
201 </dd>
202 <dt><strong><a name="detectaromaticity" class="item"><strong>DetectAromaticity</strong></a></strong></dt>
203 <dd>
204 <div class="OptionsBox">
205 $Molecule-&gt;DetectAromaticity();</div>
206 <p>Associates <em>Aromatic</em> property to atoms and bonds involved in aromatic rings or ring
207 systems in a <em>Molecule</em> and returns <em>Molecule</em>.</p>
208 <p>This method assumes the ring detection has already been perfomed using <strong>DetectRings</strong>.
209 And any existing <em>Aromatic</em> property associated with atoms and bonds is deleted before
210 performing aromaticity detection.</p>
211 <p>What is aromaticity? [ Ref 124 ] It's in the code of the implementer, did you
212 say? Agree. The implementation of aromaticity varies widely across different
213 packages [ Ref 125 ]; additionally, the implementation details are not always
214 completely available, and it's not possible to figure out the exact implementation
215 of aromaticity across various packages. Using the publicly available information,
216 however, one can try to reproduce the available results to the extent possible,
217 along with parameterizing all the control parameters used to implement different
218 aromaticity models, and that's exactly what the current release of MayaChemTools
219 does.</p>
220 <p>The implementation of aromaticity corresponding to various aromaticity models in
221 MayaChemTools package is driven by an external CSV file AromaticityModelsData.csv,
222 which is distributed with the package and is available in lib/data directory. The CSV
223 files contains names of supported aromaticity models, along with various control
224 parameters and their values. This file is loaded and processed during instantiation
225 of Molecule class and data corresponding to specific aromaticity model are used
226 to detect aromaticity for that model. Any new aromaticity model added to the
227 aromaticity data file, using different combinations of values for existing control
228 parameters, would work without any changes to the code; the addition of any new
229 control parameters, however, requires its implementation in the code used to
230 calculate number of pi electrons available towards delocalization in a ring or ring
231 systems.</p>
232 <p>The current release of MayaChemTools package supports these aromaticity
233 models: MDLAromaticityModel, TriposAromaticityModel, MMFFAromaticityModel,
234 ChemAxonBasicAromaticityModel, ChemAxonGeneralAromaticityModel,
235 DaylightAromaticityModel, MayaChemToolsAromaticityModel.</p>
236 <p>The current list of control parameters available to detect aromaticity corresponding
237 to different aromaticity models are: AllowHeteroRingAtoms, HeteroRingAtomsList,
238 AllowExocyclicDoubleBonds, AllowHomoNuclearExocyclicDoubleBonds,
239 AllowElectronegativeRingAtomExocyclicDoubleBonds, AllowRingAtomFormalCharge,
240 AllowHeteroRingAtomFormalCharge, MinimumRingSize. The values for these control
241 parameters are specified in AromaticityModelsData.csv file.</p>
242 <p>Although definition of aromaticity differs across various aromaticity models, a ring
243 or a ring system containing 4n + 2 pi electrons (Huckel's rule) corresponding to
244 alternate single and double bonds, in general, is considered aromatic.</p>
245 <p>The available valence free electrons on heterocyclic ring atoms, involved in two single
246 ring bonds, are also allowed to participate in pi electron delocalizaiton for most of
247 the supported aromaticity models.</p>
248 <p>The presence of exocyclic terminal double bond on ring atoms involved in pi electron
249 delocalization is only allowed for some of the aromaticity models. Additionally, the type
250 atoms involved in exocyclic terminal double bonds may result in making a ring or ring
251 system non-aromatic.</p>
252 <p>For molecules containing fused rings, each fused ring set is considered as one aromatic
253 system for counting pi electrons to satisfy Huckel's rule; In case of a failure, rings in
254 fused set are treated individually for aromaticity detection. Additionally, non-fused
255 rings are handled on their own during aromaticity detection.</p>
256 </dd>
257 <dt><strong><a name="detectrings" class="item"><strong>DetectRings</strong></a></strong></dt>
258 <dd>
259 <div class="OptionsBox">
260 $Molecule-&gt;DetectRings();</div>
261 <p>Detects rings in a <em>Molecule</em> and returns <em>Molecule</em>. Ring detection is performed using
262 <strong>DetectCycles</strong> method avaible in <strong>Graph</strong> class which in turn uses methods available
263 <strong>Graph::CyclesDetection</strong> class. <strong>Graph::CyclesDetection</strong> class implements collapsing path graph
264 [Ref 31] methodology to detect all cycles in a graph.</p>
265 </dd>
266 <dt><strong><a name="formatelementalcompositioninformation" class="item"><strong>FormatElementalCompositionInformation</strong></a></strong></dt>
267 <dd>
268 <div class="OptionsBox">
269 $FormattedInfo = $Molecule-&gt;FormatElementalCompositionInformation(
270 $ElementsRef, $ElementCompositionRef,
271 [$Precision]);
272 <br/> $FormattedInfo = Molecule::FormatElementalCompositionInformation(
273 $ElementsRef, $ElementCompositionRef,
274 [$Precision]);</div>
275 <p>Using <em>ElementsRef</em> and <em>ElementCompositionRef</em> arrays referneces containg informatio
276 about elements and their composition, formats elemental composition information and returns
277 a <em>FormattedInfo</em> string. Defaule <em>Precision</em> value: <em>2</em>.</p>
278 </dd>
279 <dt><strong><a name="getaromaticitymodel" class="item"><strong>GetAromaticityModel</strong></a></strong></dt>
280 <dd>
281 <div class="OptionsBox">
282 $AromaticityModel = $Molecule-&gt;GetAromaticityModel();</div>
283 <p>Returns name of <strong>AromaticityModel</strong> set for <em>Molecule</em> corresponding to <strong>AromaticityModel</strong>
284 property or default model name of <strong>MayaChemToolsAromaticityModel</strong>.</p>
285 </dd>
286 <dt><strong><a name="getallatompaths" class="item"><strong>GetAllAtomPaths</strong></a></strong></dt>
287 <dd>
288 <div class="OptionsBox">
289 $AtomPathsRef = $Molecule-&gt;GetAllAtomPaths([$AllowCycles]);</div>
290 <p>Returns all paths as a reference to an array containing reference to arrays with path
291 <strong>Atom</strong> objects.</p>
292 <p>Path atoms correspond to to all possible paths for each atom in molecule with all
293 possible lengths and sharing of bonds in paths traversed. By default, rings are
294 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
295 <p>For molecule without any rings, this method returns the same set of atom paths as
296 <strong>GetAtomPaths</strong> method.</p>
297 </dd>
298 <dt><strong><a name="getallatompathsstartingat" class="item"><strong>GetAllAtomPathsStartingAt</strong></a></strong></dt>
299 <dd>
300 <div class="OptionsBox">
301 $AtomPathsRef = $Molecule-&gt;GetAllAtomPathsStartingAt($StartAtom,
302 [$AllowCycles]);</div>
303 <p>Returns all atom paths starting from <em>StartAtom</em> as a reference to an array containing
304 reference to arrays with path <strong>Atom</strong> objects.</p>
305 <p>Path atoms atoms correspond to to all possible paths for specified atom in molecule with all
306 possible lengths and sharing of bonds in paths traversed. By default, rings are
307 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
308 <p>For molecule without any rings, this method returns the same set of atom paths as
309 <strong>GetAtomPathsStartingAt</strong> method.</p>
310 </dd>
311 <dt><strong><a name="getallatompathsstartingatwithlength" class="item"><strong>GetAllAtomPathsStartingAtWithLength</strong></a></strong></dt>
312 <dd>
313 <div class="OptionsBox">
314 $AtomPathsRef = $Molecule-&gt;GetAllAtomPathsStartingAtWithLength(
315 $StartAtom, $Length, [$AllowCycles]);</div>
316 <p>Returns all atom paths starting from <em>StartAtom</em> with specified <em>Length</em>as a reference
317 to an array containing reference to arrays with path <strong>Atom</strong> objects.</p>
318 <p>Path atoms atoms correspond to to all possible paths for specified atom in molecule with all
319 possible lengths and sharing of bonds in paths traversed. By default, rings are
320 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
321 <p>For molecule without any rings, this method returns the same set of atom paths as
322 <strong>GetAtomPathsStartingAtWithLength</strong> method.</p>
323 </dd>
324 <dt><strong><a name="getallatompathsstartingatwithlengthupto" class="item"><strong>GetAllAtomPathsStartingAtWithLengthUpto</strong></a></strong></dt>
325 <dd>
326 <div class="OptionsBox">
327 $AtomPathsRef = $Molecule-&gt;GetAllAtomPathsStartingAtWithLengthUpto(
328 $StartAtom, $Length, [$AllowCycles]);</div>
329 <p>Returns atom paths starting from <em>StartAtom</em> with length up to <em>Length</em> as a reference
330 to an array containing reference to arrays with path <strong>Atom</strong> objects.</p>
331 <p>Path atoms atoms correspond to all possible paths for specified atom in molecule with length
332 up to a specified length and sharing of bonds in paths traversed. By default, rings are
333 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
334 <p>For molecule without any rings, this method returns the same set of atom paths as
335 <em>GetAtomPathsStartingAtWithLengthUpto</em> method.</p>
336 </dd>
337 <dt><strong><a name="getallatompathswithlength" class="item"><strong>GetAllAtomPathsWithLength</strong></a></strong></dt>
338 <dd>
339 <div class="OptionsBox">
340 $AtomPathsRef = $Molecule-&gt;GetAllAtomPathsWithLength($Length,
341 [$AllowCycles]);</div>
342 <p>Returns all atom paths with specified <em>Length</em> as a reference to an array containing
343 reference to arrays with path <strong>Atom</strong> objects.</p>
344 <p>Path atoms correspond to to all possible paths for each atom in molecule with length
345 up to a specified length and sharing of bonds in paths traversed. By default, rings are
346 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
347 <p>For molecule without any rings, this method returns the same set of atom paths as
348 as <em>GetAtomPathsWithLength</em> method.</p>
349 </dd>
350 <dt><strong><a name="getallatompathswithlengthupto" class="item"><strong>GetAllAtomPathsWithLengthUpto</strong></a></strong></dt>
351 <dd>
352 <div class="OptionsBox">
353 $AtomPathsRef = $Molecule-&gt;GetAllAtomPathsWithLengthUpto($Length,
354 [$AllowCycles]);</div>
355 <p>Returns all atom paths with length up to <em>Length</em> as a reference to an array containing
356 reference to arrays with path <strong>Atom</strong> objects.</p>
357 <p>Path atoms correspond to to all possible paths for each atom in molecule with length
358 up to a specified length and sharing of bonds in paths traversed. By default, rings are
359 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
360 <p>For molecule without any rings, this method returns the same set of atom paths as
361 as <em>GetAtomPathsWithLengthUpto</em> method.</p>
362 </dd>
363 <dt><strong><a name="getaromaticrings" class="item"><strong>GetAromaticRings</strong></a></strong></dt>
364 <dd>
365 <div class="OptionsBox">
366 @AtomaticRings = $Molecule-&gt;GetAromaticRings();</div>
367 <p>Returns aromatic rings as an array containing references to arrays of ring <em>Atom</em> objects
368 in a <em>Molecule</em>.</p>
369 </dd>
370 <dt><strong><a name="getatomneighborhoods" class="item"><strong>GetAtomNeighborhoods</strong></a></strong></dt>
371 <dd>
372 <div class="OptionsBox">
373 @Neighborhoods = $Molecule-&gt;GetAtomNeighborhoods($StartAtom);</div>
374 <p>Returns atom neighborhoods around a <em>StartAtom</em> as an array containing references
375 to arrays with neighborhood <em>Atom</em> objects at possible radii.</p>
376 </dd>
377 <dt><strong><a name="getatomneighborhoodswithradiusupto" class="item"><strong>GetAtomNeighborhoodsWithRadiusUpto</strong></a></strong></dt>
378 <dd>
379 <div class="OptionsBox">
380 @Neighborhoods = $Molecule-&gt;GetAtomNeighborhoodsWithRadiusUpto($StartAtom,
381 $Radius);</div>
382 <p>Returns atom neighborhoods around a <em>StartAtom</em> as an array containing references
383 to arrays with neighborhood <em>Atom</em> objects up to <em>Radius</em>.</p>
384 </dd>
385 <dt><strong><a name="getatomneighborhoodswithsuccessoratoms" class="item"><strong>GetAtomNeighborhoodsWithSuccessorAtoms</strong></a></strong></dt>
386 <dd>
387 <div class="OptionsBox">
388 @Neighborhoods = $Molecule-&gt;GetAtomNeighborhoodsWithSuccessorAtoms(
389 $StartAtom);</div>
390 <p>Returns atom neighborhood around a specified <em>StartAtom</em>, along with their successor
391 connected atoms, collected at all radii as an array containing references to arrays with first
392 value corresponding to neighborhood atom at a specific radius and second value as reference
393 to an array containing its successor connected atoms.</p>
394 <p>For a neighborhood atom at each radius level, the successor connected atoms correspond to the
395 neighborhood atoms at the next radius level. Consequently, the neighborhood atoms at the last
396 radius level don't contain any successor atoms which fall outside the range of specified radius.</p>
397 </dd>
398 <dt><strong><a name="getatomneighborhoodswithsuccessoratomsandradiusupto" class="item"><strong>GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto</strong></a></strong></dt>
399 <dd>
400 <div class="OptionsBox">
401 @Neighborhoods = $Molecule-&gt;GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto(
402 $StartAtom, $Radius);</div>
403 <p>Returns atom neighborhood around a specified <em>StartAtom</em>, along with their successor
404 connected atoms, collected upto specified <em>Radiud</em> as an array containing references to arrays
405 with first value corresponding to neighborhood atom at a specific radius and second value as
406 reference to an array containing its successor connected atoms.</p>
407 <p>For a neighborhood atom at each radius level, the successor connected atoms correspond to the
408 neighborhood atoms at the next radius level. Consequently, the neighborhood atoms at the last
409 radius level don't contain any successor atoms which fall outside the range of specified radius.</p>
410 </dd>
411 <dt><strong><a name="getatompathbonds" class="item"><strong>GetAtomPathBonds</strong></a></strong></dt>
412 <dd>
413 <div class="OptionsBox">
414 $Return = $Molecule-&gt;GetAtomPathBonds(@PathAtoms);</div>
415 <p>Returns an array containing <strong>Bond</strong> objects corresponding to successive pair of
416 atoms in <em>PathAtoms</em></p>
417 </dd>
418 <dt><strong><a name="getatompaths" class="item"><strong>GetAtomPaths</strong></a></strong></dt>
419 <dd>
420 <div class="OptionsBox">
421 $AtomPathsRef = $Molecule-&gt;GetAtomPaths([$AllowCycles]);</div>
422 <p>Returns all paths as a reference to an array containing reference to arrays with path
423 <strong>Atom</strong> objects.</p>
424 <p>Path atoms correspond to to all possible paths for each atom in molecule with all
425 possible lengths and no sharing of bonds in paths traversed. By default, rings are
426 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
427 </dd>
428 <dt><strong><a name="getatompathsbetween" class="item"><strong>GetAtomPathsBetween</strong></a></strong></dt>
429 <dd>
430 <div class="OptionsBox">
431 $AtomPathsRef = $Molecule-&gt;GetAtomPathsBetween($StartAtom, $EndAtom);</div>
432 <p>Returns all paths as between <em>StartAtom</em> and <em>EndAtom</em> as a reference to an array
433 containing reference to arrays with path <strong>Atom</strong> objects.</p>
434 <p>For molecules with rings, atom paths array contains may contain two paths.</p>
435 </dd>
436 <dt><strong><a name="getatompathsstartingat" class="item"><strong>GetAtomPathsStartingAt</strong></a></strong></dt>
437 <dd>
438 <div class="OptionsBox">
439 $AtomPathsRef = $Molecule-&gt;GetAtomPathsStartingAt($StartAtom, [$AllowCycles]);</div>
440 <p>Returns paths starting at <em>StartAtom</em> as a reference to an array containing reference to
441 arrays with path <strong>Atom</strong> objects.</p>
442 <p>Path atoms correspond to all possible paths for specified atom in molecule with all
443 possible lengths and no sharing of bonds in paths traversed. By default, rings are
444 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
445 </dd>
446 <dt><strong><a name="getatompathsstartingatwithlength" class="item"><strong>GetAtomPathsStartingAtWithLength</strong></a></strong></dt>
447 <dd>
448 <div class="OptionsBox">
449 $AtomPathsRef = $Molecule-&gt;GetAtomPathsStartingAtWithLength($StartAtom,
450 $Length, [$AllowCycles]);</div>
451 <p>Returns paths starting at <em>StartAtom</em> with length <em>Length</em> as a reference to an array
452 containing reference to arrays with path <strong>Atom</strong> objects.</p>
453 <p>Path atoms correspond to all possible paths for specified atom in molecule with length
454 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
455 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
456 </dd>
457 <dt><strong><a name="getatompathsstartingatwithlengthupto" class="item"><strong>GetAtomPathsStartingAtWithLengthUpto</strong></a></strong></dt>
458 <dd>
459 <div class="OptionsBox">
460 $AtomPathsRef = $Molecule-&gt;GetAtomPathsStartingAtWithLengthUpto($StartAtom,
461 $Length, [$AllowCycles]);</div>
462 <p>Returns paths starting at <em>StartAtom</em> with length up to <em>Length</em> as a reference to an array
463 containing reference to arrays with path <strong>Atom</strong> objects.</p>
464 <p>Path atoms correspond to all possible paths for specified atom in molecule with length
465 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
466 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
467 </dd>
468 <dt><strong><a name="getatompathswithlength" class="item"><strong>GetAtomPathsWithLength</strong></a></strong></dt>
469 <dd>
470 <div class="OptionsBox">
471 $AtomPathsRef = $Molecule-&gt;GetAtomPathsWithLength($Length, [$AllowCycles]);</div>
472 <p>Returns all paths with specified <em>Length</em> as a reference to an array containing reference
473 to arrays with path <strong>Atom</strong> objects.</p>
474 <p>Path atoms correspond to all possible paths for each atom in molecule with length
475 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
476 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
477 </dd>
478 <dt><strong><a name="getatompathswithlengthupto" class="item"><strong>GetAtomPathsWithLengthUpto</strong></a></strong></dt>
479 <dd>
480 <div class="OptionsBox">
481 $AtomPathsRef = $Molecule-&gt;GetAtomPathsWithLengthUpto($Length, [$AllowCycles]);</div>
482 <p>Returns all paths with length up to <em>Length</em> as a reference to an array containing reference
483 to arrays with path <strong>Atom</strong> objects.</p>
484 <p>Path atoms correspond to all possible paths for each atom in molecule with length
485 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
486 included in paths. A path containing a ring is terminated at an atom completing the ring.</p>
487 </dd>
488 <dt><strong><a name="getatoms" class="item"><strong>GetAtoms</strong></a></strong></dt>
489 <dd>
490 <div class="OptionsBox">
491 @AllAtoms = $Molecule-&gt;GetAtoms();
492 <br/> @PolarAtoms = $Molecule-&gt;GetAtoms('IsPolarAtom');</div>
493 <div class="OptionsBox">
494 $NegateMethodResult = 1;
495 <br/> @NonHydrogenAtoms = $Molecule-&gt;GetAtoms('IsHydrogenAtom',
496 $NegateMethodResult);</div>
497 <div class="OptionsBox">
498 $AtomsCount = $Molecule-&gt;GetAtoms();</div>
499 <p>Returns an array of <em>Atoms</em> in a <em>Molecule</em>. In scalar context, it returns number of atoms.
500 Additionally, <strong>Atoms</strong> array can be filtered by any user specifiable valid <strong>Atom</strong> class method
501 and the result of the <strong>Atom</strong> class method used to filter the atoms can also be negated by
502 an optional negate results flag as third parameter.</p>
503 </dd>
504 <dt><strong><a name="getbonds" class="item"><strong>GetBonds</strong></a></strong></dt>
505 <dd>
506 <div class="OptionsBox">
507 @Bonds = $Molecule-&gt;GetBonds();
508 <br/> $BondsCount = $Molecule-&gt;GetBonds();</div>
509 <p>Returns an array of <em>Bonds</em> in a <em>Molecule</em>. In scalar context, it returns number of bonds.</p>
510 </dd>
511 <dt><strong><a name="getcharge" class="item"><strong>GetCharge</strong></a></strong></dt>
512 <dd>
513 <div class="OptionsBox">
514 $Charge = $Molecule-&gt;GetCharge();</div>
515 <p>Returns net charge on a <em>Molecule</em> using one of the following two methods: explicitly
516 set <strong>Charge</strong> property or sum of partial atomic charges on each atom.</p>
517 </dd>
518 <dt><strong><a name="getconnectedcomponents" class="item"><strong>GetConnectedComponents</strong></a></strong></dt>
519 <dd>
520 <div class="OptionsBox">
521 @ConnectedComponents = $Molecule-&gt;GetConnectedComponents();</div>
522 <p>Returns a reference to an array containing <em>Molecule</em> objects corresponding
523 to connected components sorted in decreasing order of component size in a <em>Molecule</em>.</p>
524 </dd>
525 <dt><strong><a name="getconnectedcomponentsatoms" class="item"><strong>GetConnectedComponentsAtoms</strong></a></strong></dt>
526 <dd>
527 <div class="OptionsBox">
528 @ConnectedComponentsAtoms =
529 $Molecule-&gt;GetConnectedComponentsAtoms();</div>
530 <p>Returns an array containing references to arrays with <em>Atom</em> objects corresponding to
531 atoms of connected components sorted in order of component decreasing size in a
532 <em>Molecule</em>.</p>
533 </dd>
534 <dt><strong><a name="getdimensionality" class="item"><strong>GetDimensionality</strong></a></strong></dt>
535 <dd>
536 <div class="OptionsBox">
537 $Dimensionality = $Molecule-&gt;GetDimensionality();</div>
538 <p>Returns <em>Dimensionality</em> of a <em>Molecule</em> corresponding to explicitly set
539 <em>Dimensionality</em> property value or by processing atomic.</p>
540 <p>The <em>Dimensionality</em> value from atomic coordinates is calculated as follows:</p>
541 <div class="OptionsBox">
542 3D - Three dimensional: One of X, Y or Z coordinate is non-zero
543 <br/> 2D - Two dimensional: One of X or Y coordinate is non-zero; All Z
544 coordinates are zero
545 <br/> 0D - Zero dimensional: All atomic coordinates are zero</div>
546 </dd>
547 <dt><strong><a name="getelementalcomposition" class="item"><strong>GetElementalComposition</strong></a></strong></dt>
548 <dd>
549 <div class="OptionsBox">
550 ($ElementsRef, $CompositionRef) =
551 $Molecule-&gt;GetElementalComposition([$IncludeMissingHydrogens]);</div>
552 <p>Calculates elemental composition and returns references to arrays containing elements
553 and their percent composition in a <em>Molecule</em>. By default, missing hydrogens are included
554 during the calculation.</p>
555 </dd>
556 <dt><strong><a name="getelementsandnonelements" class="item"><strong>GetElementsAndNonElements</strong></a></strong></dt>
557 <dd>
558 <div class="OptionsBox">
559 ($ElementsRef, $NonElementsRef) =
560 $Molecule-&gt;GetElementsAndNonElements([$IncludeMissingHydrogens]);</div>
561 <p>Counts elements and non-elements in a <em>Molecule</em> and returns references to hashes
562 containing element and non-element as hash keys with values corresponding to their
563 count. By default, missing hydrogens are not added to the element hash.</p>
564 </dd>
565 <dt><strong><a name="getexactmass" class="item"><strong>GetExactMass</strong></a></strong></dt>
566 <dd>
567 <div class="OptionsBox">
568 $ExactMass = $Molecule-&gt;GetExactMass();</div>
569 <p>Returns exact mass of a <em>Molecule</em> corresponding to sum of exact masses of all
570 the atoms.</p>
571 </dd>
572 <dt><strong><a name="getformalcharge" class="item"><strong>GetFormalCharge</strong></a></strong></dt>
573 <dd>
574 <div class="OptionsBox">
575 $FormalCharge = $Molecule-&gt;GetFormalCharge();</div>
576 <p>Returns net formal charge on a <em>Molecule</em> using one of the following two methods: explicitly
577 set <strong>FormalCharge</strong> property or sum of formal charges on each atom.</p>
578 <p><strong>FormalCharge</strong> is different from <strong>Charge</strong> property of the molecule which corresponds to
579 sum of partial atomic charges explicitly set for each atom using a specific methodology.</p>
580 </dd>
581 <dt><strong><a name="getfreeradicalelectrons" class="item"><strong>GetFreeRadicalElectrons</strong></a></strong></dt>
582 <dd>
583 <div class="OptionsBox">
584 $FreeRadicalElectrons = $Molecule-&gt;GetFreeRadicalElectrons();</div>
585 <p>Returns total number of free radical electrons available in a <em>Molecule</em> using one of the
586 following two methods: explicitly set <strong>FreeRadicalElectrons</strong> property or sum of available
587 free radical electrons on each atom.</p>
588 </dd>
589 <dt><strong><a name="getfusedandnonfusedrings" class="item"><strong>GetFusedAndNonFusedRings</strong></a></strong></dt>
590 <dd>
591 <div class="OptionsBox">
592 ($FusedRingSetRef, $NonFusedRingsRef) =
593 $Molecule-&gt;GetFusedAndNonFusedRings();</div>
594 <p>Returns references to array of fused ring sets and non-fused rings in a <em>Molecule</em>. Fused ring sets
595 array reference contains refernces to arrays of rings corresponding to ring <em>Atom</em> objects;
596 Non-fused rings array reference contains references to arrays of ring <em>Atom</em> objects.</p>
597 </dd>
598 <dt><strong><a name="getlargestconnectedcomponent" class="item"><strong>GetLargestConnectedComponent</strong></a></strong></dt>
599 <dd>
600 <div class="OptionsBox">
601 $ComponentMolecule = $Molecule-&gt;GetLargestConnectedComponent();</div>
602 <p>Returns a reference to <strong>Molecule</strong> object corresponding to a largest connected component
603 in a <em>Molecule</em>.</p>
604 </dd>
605 <dt><strong><a name="getlargestconnectedcomponentatoms" class="item"><strong>GetLargestConnectedComponentAtoms</strong></a></strong></dt>
606 <dd>
607 <div class="OptionsBox">
608 @ComponentAtoms = $Molecule-&gt;GetLargestConnectedComponentAtoms();</div>
609 <p>Returns a reference to an array of <strong>Atom</strong> objects corresponding to a largest connected
610 component in a <em>Molecule</em>.</p>
611 </dd>
612 <dt><strong><a name="getlargestring" class="item"><strong>GetLargestRing</strong></a></strong></dt>
613 <dd>
614 <div class="OptionsBox">
615 @RingAtoms = $Molecule-&gt;GetLargestRing();</div>
616 <p>Returns an array of <em>Atoms</em> objects corresponding to a largest ring in a <em>Molecule</em>.</p>
617 </dd>
618 <dt><strong><a name="getmolecularformula" class="item"><strong>GetMolecularFormula</strong></a></strong></dt>
619 <dd>
620 <div class="OptionsBox">
621 $FormulaString = $Molecule-&gt;GetMolecularFormula(
622 [$IncludeMissingHydrogens,
623 $IncludeNonElements]);</div>
624 <p>Returns molecular formula of a <em>Molecule</em> by collecting information about all atoms in
625 the molecule and composing the formula using Hills ordering system:</p>
626 <div class="OptionsBox">
627 o C shows up first and H follows assuming C is present.
628 <br/> o All other standard elements are sorted alphanumerically.
629 <br/> o All other non-stanard atom symbols are also sorted
630 alphanumerically and follow standard elements.</div>
631 <p>Notes:</p>
632 <div class="OptionsBox">
633 o By default, missing hydrogens and nonelements are also included.
634 <br/> o Elements for disconnected fragments are combined into the same
635 formula.
636 <br/> o Formal charge is also used during compoisiton of molecular formula.</div>
637 </dd>
638 <dt><strong><a name="getmolecularweight" class="item"><strong>GetMolecularWeight</strong></a></strong></dt>
639 <dd>
640 <div class="OptionsBox">
641 $MolWeight = $Molecule-&gt;GetMolecularWeight();</div>
642 <p>Returns molecular weight of a <em>Molecule</em> corresponding to sum of atomic weights of all
643 the atoms.</p>
644 </dd>
645 <dt><strong><a name="getnumofaromaticrings" class="item"><strong>GetNumOfAromaticRings</strong></a></strong></dt>
646 <dd>
647 <div class="OptionsBox">
648 $NumOfAromaticRings = $Molecule-&gt;GetNumOfAromaticRings();</div>
649 <p>Returns number of aromatic rings in a <em>Molecule</em>.</p>
650 </dd>
651 <dt><strong><a name="getnumofatoms" class="item"><strong>GetNumOfAtoms</strong></a></strong></dt>
652 <dd>
653 <div class="OptionsBox">
654 $NumOfAtoms = $Molecule-&gt;GetNumOfAtoms();</div>
655 <p>Returns number of atoms in a <em>Molecule</em>.</p>
656 </dd>
657 <dt><strong><a name="getnumofbonds" class="item"><strong>GetNumOfBonds</strong></a></strong></dt>
658 <dd>
659 <div class="OptionsBox">
660 $NumOfBonds = $Molecule-&gt;GetNumOfBonds();</div>
661 <p>Returns number of bonds in a <em>Molecule</em>.</p>
662 </dd>
663 <dt><strong><a name="getnumofconnectedcomponents" class="item"><strong>GetNumOfConnectedComponents</strong></a></strong></dt>
664 <dd>
665 <div class="OptionsBox">
666 $NumOfComponents = $Molecule-&gt;GetNumOfConnectedComponents();</div>
667 <p>Returns number of connected components in a <em>Molecule</em>.</p>
668 </dd>
669 <dt><strong><a name="getnumofelementsandnonelements" class="item"><strong>GetNumOfElementsAndNonElements</strong></a></strong></dt>
670 <dd>
671 <div class="OptionsBox">
672 ($NumOfElements, $NumOfNonElements) = $Molecule-&gt;
673 GetNumOfElementsAndNonElements();
674 <br/> ($NumOfElements, $NumOfNonElements) = $Molecule-&gt;
675 GetNumOfElementsAndNonElements($IncludeMissingHydrogens);</div>
676 <p>Returns number of elements and non-elements in a <em>Molecule</em>. By default, missing
677 hydrogens are not added to element count.</p>
678 </dd>
679 <dt><strong><a name="getnumofheavyatoms" class="item"><strong>GetNumOfHeavyAtoms</strong></a></strong></dt>
680 <dd>
681 <div class="OptionsBox">
682 $NumOfHeavyAtoms = $Molecule-&gt;GetNumOfHeavyAtoms();</div>
683 <p>Returns number of heavy atoms, non-hydrogen atoms, in a <em>Molecule</em>.</p>
684 </dd>
685 <dt><strong><a name="getnumofhydrogenatoms" class="item"><strong>GetNumOfHydrogenAtoms</strong></a></strong></dt>
686 <dd>
687 <div class="OptionsBox">
688 $NumOfHydrogenAtoms = $Molecule-&gt;GetNumOfHydrogenAtoms();</div>
689 <p>Returns number of hydrogen atoms in a <em>Molecule</em>.</p>
690 </dd>
691 <dt><strong><a name="getnumofmissinghydrogenatoms" class="item"><strong>GetNumOfMissingHydrogenAtoms</strong></a></strong></dt>
692 <dd>
693 <div class="OptionsBox">
694 $NumOfMissingHydrogenAtoms = $Molecule-&gt;GetNumOfMissingHydrogenAtoms();</div>
695 <p>Returns number of hydrogen atoms in a <em>Molecule</em>.</p>
696 </dd>
697 <dt><strong><a name="getnumofnonhydrogenatoms" class="item"><strong>GetNumOfNonHydrogenAtoms</strong></a></strong></dt>
698 <dd>
699 <div class="OptionsBox">
700 $NumOfNonHydrogenAtoms = $Molecule-&gt;GetNumOfNonHydrogenAtoms();</div>
701 <p>Returns number of non-hydrogen atoms in a <em>Molecule</em>.</p>
702 </dd>
703 <dt><strong><a name="getnumofrings" class="item"><strong>GetNumOfRings</strong></a></strong></dt>
704 <dd>
705 <div class="OptionsBox">
706 $RingCount = $Molecule-&gt;GetNumOfRings();</div>
707 <p>Returns number of rings in a <em>Molecule</em>.</p>
708 </dd>
709 <dt><strong><a name="getnumofringswithevensize" class="item"><strong>GetNumOfRingsWithEvenSize</strong></a></strong></dt>
710 <dd>
711 <div class="OptionsBox">
712 $RingCount = $Molecule-&gt;GetNumOfRingsWithEvenSize();</div>
713 <p>Returns number of rings with even size in a <em>Molecule</em>.</p>
714 </dd>
715 <dt><strong><a name="getnumofringswithoddsize" class="item"><strong>GetNumOfRingsWithOddSize</strong></a></strong></dt>
716 <dd>
717 <div class="OptionsBox">
718 $RingCount = $Molecule-&gt;GetNumOfRingsWithOddSize();</div>
719 <p>Returns number of rings with odd size in a <em>Molecule</em>.</p>
720 </dd>
721 <dt><strong><a name="getnumofringswithsize" class="item"><strong>GetNumOfRingsWithSize</strong></a></strong></dt>
722 <dd>
723 <div class="OptionsBox">
724 $RingCount = $Molecule-&gt;GetNumOfRingsWithSize($Size);</div>
725 <p>Returns number of rings with <em>Size</em> in a <em>Molecule</em>.</p>
726 </dd>
727 <dt><strong><a name="getnumofringswithsizegreaterthan" class="item"><strong>GetNumOfRingsWithSizeGreaterThan</strong></a></strong></dt>
728 <dd>
729 <div class="OptionsBox">
730 $RingCount = $Molecule-&gt;GetNumOfRingsWithSizeGreaterThan($Size);</div>
731 <p>Returns number of rings with size greater than <em>Size</em> in a <em>Molecule</em>.</p>
732 </dd>
733 <dt><strong><a name="getnumofringswithsizelessthan" class="item"><strong>GetNumOfRingsWithSizeLessThan</strong></a></strong></dt>
734 <dd>
735 <div class="OptionsBox">
736 $RingCount = $Molecule-&gt;GetNumOfRingsWithSizeLessThan($Size);</div>
737 <p>Returns number of rings with size less than <em>Size</em> in a <em>Molecule</em>.</p>
738 </dd>
739 <dt><strong><a name="getringbonds" class="item"><strong>GetRingBonds</strong></a></strong></dt>
740 <dd>
741 <div class="OptionsBox">
742 @RingBonds = $Molecule-&gt;GetRingBonds(@RingAtoms);</div>
743 <p>Returns an array of ring <strong>Bond</strong> objects correponding to an array of ring <em>Atoms</em> in a
744 <em>Molecule</em>.</p>
745 </dd>
746 <dt><strong><a name="getringbondsfromrings" class="item"><strong>GetRingBondsFromRings</strong></a></strong></dt>
747 <dd>
748 <div class="OptionsBox">
749 @RingBondsSets = $Molecule-&gt;GetRingBondsFromRings(@RingAtomsSets);</div>
750 <p>Returns an array containing references to arrays of ring <strong>Bond</strong> objects for rings specified
751 in an array of references to ring <em>Atom</em> objects.</p>
752 </dd>
753 <dt><strong><a name="getrings" class="item"><strong>GetRings</strong></a></strong></dt>
754 <dd>
755 <div class="OptionsBox">
756 @Rings = $Molecule-&gt;GetRings();</div>
757 <p>Returns rings as an array containing references to arrays of ring <em>Atom</em> objects in a <em>Molecule</em>.</p>
758 </dd>
759 <dt><strong><a name="getringswithevensize" class="item"><strong>GetRingsWithEvenSize</strong></a></strong></dt>
760 <dd>
761 <div class="OptionsBox">
762 @Rings = $Molecule-&gt;GetRingsWithEvenSize();</div>
763 <p>Returns even size rings as an array containing references to arrays of ring <em>Atom</em> objects in
764 a <em>Molecule</em>.</p>
765 </dd>
766 <dt><strong><a name="getringswithoddsize" class="item"><strong>GetRingsWithOddSize</strong></a></strong></dt>
767 <dd>
768 <div class="OptionsBox">
769 @Rings = $Molecule-&gt;GetRingsWithOddSize();</div>
770 <p>Returns odd size rings as an array containing references to arrays of ring <em>Atom</em> objects in
771 a <em>Molecule</em>.</p>
772 </dd>
773 <dt><strong><a name="getringswithsize" class="item"><strong>GetRingsWithSize</strong></a></strong></dt>
774 <dd>
775 <div class="OptionsBox">
776 @Rings = $Molecule-&gt;GetRingsWithSize($Size);</div>
777 <p>Returns rings with <em>Size</em> as an array containing references to arrays of ring <em>Atom</em> objects in
778 a <em>Molecule</em>.</p>
779 </dd>
780 <dt><strong><a name="getringswithsizegreaterthan" class="item"><strong>GetRingsWithSizeGreaterThan</strong></a></strong></dt>
781 <dd>
782 <div class="OptionsBox">
783 @Rings = $Molecule-&gt;GetRingsWithSizeGreaterThan($Size);</div>
784 <p>Returns rings with size greater than <em>Size</em> as an array containing references to arrays of
785 ring <em>Atom</em> objects in a <em>Molecule</em>.</p>
786 </dd>
787 <dt><strong><a name="getringswithsizelessthan" class="item"><strong>GetRingsWithSizeLessThan</strong></a></strong></dt>
788 <dd>
789 <div class="OptionsBox">
790 @Rings = $Molecule-&gt;GetRingsWithSizeLessThan($Size);</div>
791 <p>Returns rings with size less than <em>Size</em> as an array containing references to arrays of
792 ring <em>Atom</em> objects in a <em>Molecule</em>.</p>
793 </dd>
794 <dt><strong><a name="getsizeoflargestring" class="item"><strong>GetSizeOfLargestRing</strong></a></strong></dt>
795 <dd>
796 <div class="OptionsBox">
797 $Size = $Molecule-&gt;GetSizeOfLargestRing();</div>
798 <p>Returns size of the largest ring in a <em>Molecule</em>.</p>
799 </dd>
800 <dt><strong><a name="getsizeofsmallestring" class="item"><strong>GetSizeOfSmallestRing</strong></a></strong></dt>
801 <dd>
802 <div class="OptionsBox">
803 $Size = $Molecule-&gt;GetSizeOfSmallestRing();</div>
804 <p>Returns size of the smalles ring in a <em>Molecule</em>.</p>
805 </dd>
806 <dt><strong><a name="getsmallestring" class="item"><strong>GetSmallestRing</strong></a></strong></dt>
807 <dd>
808 <div class="OptionsBox">
809 @RingAtoms = $Molecule-&gt;GetSmallestRing();</div>
810 <p>Returns an array containing <em>Atom</em> objects corresponding to the smallest ring in
811 a <em>Molecule</em>.</p>
812 </dd>
813 <dt><strong><a name="getspinmultiplicity" class="item"><strong>GetSpinMultiplicity</strong></a></strong></dt>
814 <dd>
815 <div class="OptionsBox">
816 $SpinMultiplicity = $Molecule-&gt;GetSpinMultiplicity();</div>
817 <p>Returns net spin multiplicity of a <em>Molecule</em> using one of the following two methods: explicitly
818 set <strong>SpinMultiplicity</strong> property or sum of spin multiplicity on each atom.</p>
819 </dd>
820 <dt><strong><a name="getsupportedaromaticitymodels" class="item"><strong>GetSupportedAromaticityModels</strong></a></strong></dt>
821 <dd>
822 <div class="OptionsBox">
823 @SupportedModels = $Molecule-&gt;GetSupportedAromaticityModels();</div>
824 <p>Returns an array containing a list of supported aromaticity models.</p>
825 </dd>
826 <dt><strong><a name="getvalencemodel" class="item"><strong>GetValenceModel</strong></a></strong></dt>
827 <dd>
828 <div class="OptionsBox">
829 $ValenceModel = $Molecule-&gt;GetValenceModel();</div>
830 <p>Returns valence model for <em>Molecule</em> using one of the following two methods: explicitly
831 set <strong>ValenceModel</strong> property or defaul value of <em>InternalValenceModel</em>.</p>
832 </dd>
833 <dt><strong><a name="gettopologicallysortedatoms" class="item"><strong>GetTopologicallySortedAtoms</strong></a></strong></dt>
834 <dd>
835 <div class="OptionsBox">
836 @SortedAtoms = $Molecule-&gt;GetTopologicallySortedAtoms([$StartAtom]);</div>
837 <p>Returns an array of topologically sorted <em>Atom</em> objects starting from <em>StartAtom</em> or
838 an arbitrary atom in a <em>Molecule</em>.</p>
839 </dd>
840 <dt><strong><a name="hasaromaticrings" class="item"><strong>HasAromaticRings</strong></a></strong></dt>
841 <dd>
842 <div class="OptionsBox">
843 $Status = $Molecule-&gt;HasAromaticRings();</div>
844 <p>Returns 1 or 0 based on whether any aromatic ring is present in a <em>Molecule</em>.</p>
845 </dd>
846 <dt><strong><a name="hasaromaticatomsinrings" class="item"><strong>HasAromaticAtomsInRings</strong></a></strong></dt>
847 <dd>
848 <div class="OptionsBox">
849 $Status = $Molecule-&gt;HasAromaticAtomsInRings();</div>
850 <p>Returns 1 or 0 based on whether any aromatic ring atom is present in a <em>Molecule</em>.</p>
851 </dd>
852 <dt><strong><a name="hasaromaticatomsnotinrings" class="item"><strong>HasAromaticAtomsNotInRings</strong></a></strong></dt>
853 <dd>
854 <div class="OptionsBox">
855 $Status = $Molecule-&gt;HasAromaticAtomsNotInRings();</div>
856 <p>Returns 1 or 0 based on whether any non-ring atom is marked aromatic in a <em>Molecule</em>.</p>
857 </dd>
858 <dt><strong><a name="hasatom" class="item"><strong>HasAtom</strong></a></strong></dt>
859 <dd>
860 <div class="OptionsBox">
861 $Status = $Molecule-&gt;HasAtom($Atom);</div>
862 <p>Returns 1 or 0 based on whether <em>Atom</em> is present in a <em>Molecule</em>.</p>
863 </dd>
864 <dt><strong><a name="hasbond" class="item"><strong>HasBond</strong></a></strong></dt>
865 <dd>
866 <div class="OptionsBox">
867 $Status = $Molecule-&gt;HasBond($Bond);</div>
868 <p>Returns 1 or 0 based on whether <em>Bond</em> is present in a <em>Molecule</em>.</p>
869 </dd>
870 <dt><strong><a name="hasfusedrings" class="item"><strong>HasFusedRings</strong></a></strong></dt>
871 <dd>
872 <div class="OptionsBox">
873 $Status = $Molecule-&gt;HasFusedRings();</div>
874 <p>Returns 1 or 0 based on whether any fused rings set is present in a <em>Molecule</em>.</p>
875 </dd>
876 <dt><strong><a name="hasnorings" class="item"><strong>HasNoRings</strong></a></strong></dt>
877 <dd>
878 <div class="OptionsBox">
879 $Status = $Molecule-&gt;HasNoRings();</div>
880 <p>Returns 0 or 1 based on whether any ring is present in a <em>Molecule</em>.</p>
881 </dd>
882 <dt><strong><a name="hasonlyonering" class="item"><strong>HasOnlyOneRing</strong></a></strong></dt>
883 <dd>
884 <div class="OptionsBox">
885 $Status = $Molecule-&gt;HasOnlyOneRing();</div>
886 <p>Returns 1 or 0 based on whether only one ring is present in a <em>Molecule</em>.</p>
887 </dd>
888 <dt><strong><a name="hasrings" class="item"><strong>HasRings</strong></a></strong></dt>
889 <dd>
890 <div class="OptionsBox">
891 $Status = $Molecule-&gt;HasRings();</div>
892 <p>Returns 1 or 0 based on whether rings are present in a <em>Molecule</em>.</p>
893 </dd>
894 <dt><strong><a name="isaromatic" class="item"><strong>IsAromatic</strong></a></strong></dt>
895 <dd>
896 <div class="OptionsBox">
897 $Status = $Molecule-&gt;IsAromatic();</div>
898 <p>Returns 1 or 0 based on whether <em>Molecule</em> is aromatic.</p>
899 </dd>
900 <dt><strong><a name="ismolecule" class="item"><strong>IsMolecule</strong></a></strong></dt>
901 <dd>
902 <div class="OptionsBox">
903 $Status = Molecule::IsMolecule();</div>
904 <p>Returns 1 or 0 based on whether <em>Object</em> is a <strong>Molecule</strong> object.</p>
905 </dd>
906 <dt><strong><a name="isringaromatic" class="item"><strong>IsRingAromatic</strong></a></strong></dt>
907 <dd>
908 <div class="OptionsBox">
909 $Status = $Molecule-&gt;IsRingAromatic(@RingAtoms);</div>
910 <p>Returns 1 or 0 based on whether all <em>RingAtoms</em> are aromatic.</p>
911 </dd>
912 <dt><strong><a name="issupportedaromaticitymodel" class="item"><strong>IsSupportedAromaticityModel</strong></a></strong></dt>
913 <dd>
914 <div class="OptionsBox">
915 $Status = $Molecule-&gt;IsSupportedAromaticityModel($AromaticityModel);
916 <br/> $Status = Molecule::IsSupportedAromaticityModel($AromaticityModel);</div>
917 <p>Returns 1 or 0 based on whether specified <em>AromaticityModel</em> is supported.</p>
918 </dd>
919 <dt><strong><a name="istwodimensional" class="item"><strong>IsTwoDimensional</strong></a></strong></dt>
920 <dd>
921 <div class="OptionsBox">
922 $Status = $Molecule-&gt;IsTwoDimensional();</div>
923 <p>Returns 1 or 0 based on whether any atom in <em>Molecule</em> has a non-zero value
924 for X or Y coordinate and all atoms have zero value for Z coordinates.</p>
925 </dd>
926 <dt><strong><a name="isthreedimensional" class="item"><strong>IsThreeDimensional</strong></a></strong></dt>
927 <dd>
928 <div class="OptionsBox">
929 $Status = $Molecule-&gt;IsThreeDimensional();</div>
930 <p>Returns 1 or 0 based on whether any atom in <em>Molecule</em> has a non-zero value
931 for Z coordinate.</p>
932 </dd>
933 <dt><strong><a name="keeplargestcomponent" class="item"><strong>KeepLargestComponent</strong></a></strong></dt>
934 <dd>
935 <div class="OptionsBox">
936 $Molecule-&gt;KeepLargestComponent();</div>
937 <p>Deletes atoms corresponding to all other connected components Except for the largest
938 connected component in a <em>Molecule</em> and returns <em>Molecule</em>.</p>
939 </dd>
940 <dt><strong><a name="kekulizearomaticatoms" class="item"><strong>KekulizeAromaticAtoms</strong></a></strong></dt>
941 <dd>
942 <div class="OptionsBox">
943 $Status = $Molecule-&gt;KekulizeAromaticAtoms();</div>
944 <p>Kekulize marked ring and non-ring aromatic atoms in a molecule and return 1 or 1 based
945 on whether the kekulization succeeded.</p>
946 </dd>
947 <dt><strong><a name="newatom" class="item"><strong>NewAtom</strong></a></strong></dt>
948 <dd>
949 <div class="OptionsBox">
950 $NewAtom = $Molecule-&gt;NewAtom(%AtomPropertyNamesAndValues);</div>
951 <p>Creates a new atom using <em>AtomPropertyNamesAndValues</em>, add its to <em>Molecule</em>, and returns
952 new <strong>Atom</strong> object.</p>
953 </dd>
954 <dt><strong><a name="newbond" class="item"><strong>NewBond</strong></a></strong></dt>
955 <dd>
956 <div class="OptionsBox">
957 $NewBond = $Molecule-&gt;NewBond(%BondPropertyNamesAndValues);</div>
958 <p>Creates a new bond using <em>AtomPropertyNamesAndValues</em>, add its to <em>Molecule</em>, and returns
959 new <strong>Bond</strong> object.</p>
960 </dd>
961 <dt><strong><a name="setactiverings" class="item"><strong>SetActiveRings</strong></a></strong></dt>
962 <dd>
963 <div class="OptionsBox">
964 $Molecule-&gt;SetActiveRings($RingsType);</div>
965 <p>Sets up type of detected ring sets to use during all ring related methods and returns <em>Molecule</em>.
966 Possible <em>RingType</em> values: <em>Independent or All</em>. By default, <em>Independent</em> ring set is used
967 during all ring methods.</p>
968 </dd>
969 <dt><strong><a name="setaromaticitymodel" class="item"><strong>SetAromaticityModel</strong></a></strong></dt>
970 <dd>
971 <div class="OptionsBox">
972 $Molecule = $Molecule-&gt;SetAromaticityModel($AromaticityModel);</div>
973 <p>Sets up <em>AromaticityModel</em> property value for <em>Molecule</em> and retrurns <em>Molecule</em>.</p>
974 </dd>
975 <dt><strong><a name="setvalencemodel" class="item"><strong>SetValenceModel</strong></a></strong></dt>
976 <dd>
977 <div class="OptionsBox">
978 $Molecule = $Molecule-&gt;SetValenceModel(ValenceModel);</div>
979 <p>Sets up <em>ValenceModel</em> property value for <em>Molecule</em> and retrurns <em>Molecule</em>.</p>
980 </dd>
981 <dt><strong><a name="stringifymolecule" class="item"><strong>StringifyMolecule</strong></a></strong></dt>
982 <dd>
983 <div class="OptionsBox">
984 $MoleculeString = $Molecule-&gt;StringifyMolecule();</div>
985 <p>Returns a string containing information about <em>Molecule</em> object</p>
986 </dd>
987 </dl>
988 <p>
989 </p>
990 <h2>AUTHOR</h2>
991 <p><a href="mailto:msud@san.rr.com">Manish Sud</a></p>
992 <p>
993 </p>
994 <h2>SEE ALSO</h2>
995 <p><a href="./Atom.html">Atom.pm</a>,&nbsp<a href="./Bond.html">Bond.pm</a>,&nbsp<a href="./MoleculeFileIO.html">MoleculeFileIO.pm</a>,&nbsp<a href="./MolecularFormula.html">MolecularFormula.pm</a>
996 </p>
997 <p>
998 </p>
999 <h2>COPYRIGHT</h2>
1000 <p>Copyright (C) 2015 Manish Sud. All rights reserved.</p>
1001 <p>This file is part of MayaChemTools.</p>
1002 <p>MayaChemTools is free software; you can redistribute it and/or modify it under
1003 the terms of the GNU Lesser General Public License as published by the Free
1004 Software Foundation; either version 3 of the License, or (at your option)
1005 any later version.</p>
1006 <p>&nbsp</p><p>&nbsp</p><div class="DocNav">
1007 <table width="100%" border=0 cellpadding=0 cellspacing=2>
1008 <tr align="left" valign="top"><td width="33%" align="left"><a href="./MolecularFormula.html" title="MolecularFormula.html">Previous</a>&nbsp;&nbsp;<a href="./index.html" title="Table of Contents">TOC</a>&nbsp;&nbsp;<a href="./MoleculeFileIO.html" title="MoleculeFileIO.html">Next</a></td><td width="34%" align="middle"><strong>March 29, 2015</strong></td><td width="33%" align="right"><strong>Molecule.pm</strong></td></tr>
1009 </table>
1010 </div>
1011 <br />
1012 <center>
1013 <img src="../../images/h2o2.png">
1014 </center>
1015 </body>
1016 </html>