comparison mayachemtools/docs/modules/man3/Molecule.3 @ 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 .\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings. \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 . ds -- \(*W-
28 . ds PI pi
29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31 . ds L" ""
32 . ds R" ""
33 . ds C` ""
34 . ds C' ""
35 'br\}
36 .el\{\
37 . ds -- \|\(em\|
38 . ds PI \(*p
39 . ds L" ``
40 . ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD. Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 . de IX
53 . tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 . nr % 0
56 . rr F
57 .\}
58 .el \{\
59 . de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear. Run. Save yourself. No user-serviceable parts.
65 . \" fudge factors for nroff and troff
66 .if n \{\
67 . ds #H 0
68 . ds #V .8m
69 . ds #F .3m
70 . ds #[ \f1
71 . ds #] \fP
72 .\}
73 .if t \{\
74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 . ds #V .6m
76 . ds #F 0
77 . ds #[ \&
78 . ds #] \&
79 .\}
80 . \" simple accents for nroff and troff
81 .if n \{\
82 . ds ' \&
83 . ds ` \&
84 . ds ^ \&
85 . ds , \&
86 . ds ~ ~
87 . ds /
88 .\}
89 .if t \{\
90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 . \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 . \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 . \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 . ds : e
114 . ds 8 ss
115 . ds o a
116 . ds d- d\h'-1'\(ga
117 . ds D- D\h'-1'\(hy
118 . ds th \o'bp'
119 . ds Th \o'LP'
120 . ds ae ae
121 . ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "MOLECULE 1"
127 .TH MOLECULE 1 "2015-03-29" "perl v5.14.2" "MayaChemTools"
128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 Molecule \- Molecule class
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 use Molecule;
137 .PP
138 use Molecule qw(:all);
139 .SH "DESCRIPTION"
140 .IX Header "DESCRIPTION"
141 \&\fBMolecule\fR class provides the following methods:
142 .PP
143 new, AddAtom, AddAtoms, AddBond, AddBonds, AddHydrogens, AddPolarHydrogens,
144 ClearRings, Copy, DeleteAromaticity, DeleteAtom, DeleteAtoms, DeleteBond,
145 DeleteBonds, DeleteHydrogens, DeletePolarHydrogens, DetectAromaticity,
146 DetectRings, FormatElementalCompositionInformation, GetAllAtomPaths,
147 GetAllAtomPathsStartingAt, GetAllAtomPathsStartingAtWithLength,
148 GetAllAtomPathsStartingAtWithLengthUpto, GetAllAtomPathsWithLength,
149 GetAllAtomPathsWithLengthUpto, GetAromaticRings, GetAromaticityModel,
150 GetAtomNeighborhoods, GetAtomNeighborhoodsWithRadiusUpto,
151 GetAtomNeighborhoodsWithSuccessorAtoms,
152 GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto, GetAtomPathBonds,
153 GetAtomPaths, GetAtomPathsBetween, GetAtomPathsStartingAt,
154 GetAtomPathsStartingAtWithLength, GetAtomPathsStartingAtWithLengthUpto,
155 GetAtomPathsWithLength, GetAtomPathsWithLengthUpto, GetAtoms, GetBonds, GetCharge,
156 GetConnectedComponents, GetConnectedComponentsAtoms, GetDimensionality,
157 GetElementalComposition, GetElementsAndNonElements, GetExactMass, GetFormalCharge,
158 GetFreeRadicalElectrons, GetFusedAndNonFusedRings, GetLargestConnectedComponent,
159 GetLargestConnectedComponentAtoms, GetLargestRing, GetMolecularFormula,
160 GetMolecularWeight, GetNumOfAromaticRings, GetNumOfAtoms, GetNumOfBonds,
161 GetNumOfConnectedComponents, GetNumOfElementsAndNonElements, GetNumOfHeavyAtoms,
162 GetNumOfHydrogenAtoms, GetNumOfMissingHydrogenAtoms, GetNumOfNonHydrogenAtoms,
163 GetNumOfRings, GetNumOfRingsWithEvenSize, GetNumOfRingsWithOddSize,
164 GetNumOfRingsWithSize, GetNumOfRingsWithSizeGreaterThan,
165 GetNumOfRingsWithSizeLessThan, GetRingBonds, GetRingBondsFromRings, GetRings,
166 GetRingsWithEvenSize, GetRingsWithOddSize, GetRingsWithSize,
167 GetRingsWithSizeGreaterThan, GetRingsWithSizeLessThan, GetSizeOfLargestRing,
168 GetSizeOfSmallestRing, GetSmallestRing, GetSpinMultiplicity,
169 GetSupportedAromaticityModels, GetTopologicallySortedAtoms, GetValenceModel,
170 HasAromaticAtomsInRings, HasAromaticAtomsNotInRings, HasAromaticRings, HasAtom,
171 HasBond, HasFusedRings, HasNoRings, HasOnlyOneRing, HasRings, IsAromatic,
172 IsMolecule, IsRingAromatic, IsSupportedAromaticityModel, IsThreeDimensional,
173 IsTwoDimensional, KeepLargestComponent, KekulizeAromaticAtoms, NewAtom, NewBond,
174 SetActiveRings, SetAromaticityModel, SetID, SetValenceModel, StringifyMolecule
175 .PP
176 The following methods can also be used as functions:
177 .PP
178 FormatElementalCompositionInformation, IsMolecule
179 .PP
180 \&\fBMolecule\fR class is derived from \fBObjectProperty\fR base class which provides methods not explicitly
181 defined in \fBMolecule\fR or \fBObjectProperty\fR class using Perl's \s-1AUTOLOAD\s0 functionality. These methods
182 are generated on-the-fly for a specified object property:
183 .PP
184 .Vb 3
185 \& Set<PropertyName>(<PropertyValue>);
186 \& $PropertyValue = Get<PropertyName>();
187 \& Delete<PropertyName>();
188 .Ve
189 .SS "\s-1METHODS\s0"
190 .IX Subsection "METHODS"
191 .IP "\fBnew\fR" 4
192 .IX Item "new"
193 .Vb 1
194 \& $NewMolecule = new Molecule([%PropertyNameAndValues]);
195 .Ve
196 .Sp
197 Using specified \fIAtom\fR property names and values hash, \fBnew\fR method creates a new object
198 and returns a reference to newly created \fBAtom\fR object. By default, the following properties are
199 initialized:
200 .Sp
201 .Vb 2
202 \& ID = SequentialObjectID
203 \& Name = "Molecule <SequentialObjectID>"
204 .Ve
205 .Sp
206 Examples:
207 .Sp
208 .Vb 1
209 \& $Molecule = new Molecule();
210 \&
211 \& $WaterMolecule = new Molecule(\*(AqName\*(Aq => \*(AqWater\*(Aq);
212 \&
213 \& $Oxygen = new Atom(\*(AqAtomSymbol\*(Aq => \*(AqO\*(Aq, \*(AqXYZ\*(Aq => [0, 0, 0]);
214 \& $Hydrogen1 = new Atom(\*(AqAtomSymbol\*(Aq => \*(AqH\*(Aq,
215 \& \*(AqXYZ\*(Aq => [0.7144, 0.4125, 0]);
216 \& $Hydrogen2 = new Atom(\*(AqAtomSymbol\*(Aq => \*(AqH\*(Aq,
217 \& \*(AqXYZ\*(Aq => [1.1208, \-0.2959, 0]);
218 \& $WaterMolecule\->AddAtoms($Oxygen, $Hydrogen1, $Hydrogen2);
219 \&
220 \& $Bond1 = new Bond(\*(AqAtoms\*(Aq => [$Oxygen, $Hydrogen1],
221 \& \*(AqBondOrder\*(Aq => 1);
222 \& $Bond2 = new Bond(\*(AqAtoms\*(Aq => [$Oxygen, $Hydrogen2],
223 \& \*(AqBondOrder\*(Aq => 1);
224 \& $WaterMolecule\->AddBonds($Bond1, $Bond2);
225 .Ve
226 .IP "\fBAddAtom\fR" 4
227 .IX Item "AddAtom"
228 .Vb 1
229 \& $Molecule\->AddAtom($Atom);
230 .Ve
231 .Sp
232 Adds an \fIAtom\fR to a \fIMolecule\fR and returns \fIMolecule\fR.
233 .IP "\fBAddAtoms\fR" 4
234 .IX Item "AddAtoms"
235 .Vb 1
236 \& $Molecule\->AddAtoms(@Atoms);
237 .Ve
238 .Sp
239 Adds \fIAtoms\fR to a \fIMolecule\fR and returns \fIMolecule\fR.
240 .IP "\fBAddBond\fR" 4
241 .IX Item "AddBond"
242 .Vb 1
243 \& $Molecule\->AddBond($Bond);
244 .Ve
245 .Sp
246 Adds a \fIBond\fR to a \fIMolecule\fR and returns \fIMolecule\fR.
247 .IP "\fBAddBonds\fR" 4
248 .IX Item "AddBonds"
249 .Vb 1
250 \& $Molecule\->AddBonds(@Bonds);
251 .Ve
252 .Sp
253 Adds \fIBonds\fR to a \fIMolecule\fR and returns \fIMolecule\fR.
254 .IP "\fBAddHydrogens\fR" 4
255 .IX Item "AddHydrogens"
256 .Vb 1
257 \& $NumOfHydrogensAdded = $Molecule\->AddHydrogens();
258 .Ve
259 .Sp
260 Adds hydrogens to each atom in a \fIMolecule\fR and returns total number of hydrogens
261 added. The current release of MayaChemTools doesn't assign hydrogen positions.
262 .IP "\fBAddPolarHydrogens\fR" 4
263 .IX Item "AddPolarHydrogens"
264 .Vb 1
265 \& $NumOfHydrogensAdded = $Molecule\->AddPolarHydrogens();
266 .Ve
267 .Sp
268 Adds hydrogens to each polar atom \- N, O, P or S \- in a \fIMolecule\fR and returns total
269 number of polar hydrogens added. The current release of MayaChemTools doesn't
270 assign hydrogen positions.
271 .IP "\fBClearRings\fR" 4
272 .IX Item "ClearRings"
273 .Vb 1
274 \& $Molecule\->ClearRings();
275 .Ve
276 .Sp
277 Deletes all rings associated with \fIMolecule\fR and returns \fIMolecule\fR.
278 .IP "\fBCopy\fR" 4
279 .IX Item "Copy"
280 .Vb 1
281 \& $MoleculeCopy = $Molecule\->Copy();
282 .Ve
283 .Sp
284 Copies \fIMolecule\fR and its associated data using \fBStorable::dclone\fR and returns a new
285 \&\fBMolecule\fR object.
286 .IP "\fBDeleteAromaticity\fR" 4
287 .IX Item "DeleteAromaticity"
288 .Vb 1
289 \& $Molecule\->DeleteAromaticity();
290 .Ve
291 .Sp
292 Deletes aromatic property associated with all atoms and bonds in a \fIMolecule\fR and returns
293 \&\fIMolecule\fR.
294 .IP "\fBDeleteAtom\fR" 4
295 .IX Item "DeleteAtom"
296 .Vb 1
297 \& $Molecule\->DeleteAtom($Atom);
298 .Ve
299 .Sp
300 Deletes \fIAtom\fR from a \fIMolecule\fR and returns \fIMolecule\fR.
301 .IP "\fBDeleteAtoms\fR" 4
302 .IX Item "DeleteAtoms"
303 .Vb 1
304 \& $Molecule\->DeleteAtoms(@Atoms);
305 .Ve
306 .Sp
307 Deletes \fIAtoms\fR from a \fIMolecule\fR and returns \fIMolecule\fR.
308 .IP "\fBDeleteBond\fR" 4
309 .IX Item "DeleteBond"
310 .Vb 1
311 \& $Molecule\->DeleteBond($Bond);
312 .Ve
313 .Sp
314 Deletes \fIBond\fR from a \fIMolecule\fR and returns \fIMolecule\fR.
315 .IP "\fBDeleteBonds\fR" 4
316 .IX Item "DeleteBonds"
317 .Vb 1
318 \& $Molecule\->DeleteBonds(@Bonds);
319 .Ve
320 .Sp
321 Deletes \fIBonds\fR from a \fIMolecule\fR and returns \fIMolecule\fR.
322 .IP "\fBDeleteHydrogens\fR" 4
323 .IX Item "DeleteHydrogens"
324 .Vb 1
325 \& $NumOfHydrogensDeleted = $Molecule\->DeleteHydrogens();
326 .Ve
327 .Sp
328 Removes hydrogens from each atom in a \fIMolecule\fR and returns total number of hydrogens
329 deleted.
330 .IP "\fBDeletePolarHydrogens\fR" 4
331 .IX Item "DeletePolarHydrogens"
332 .Vb 1
333 \& $NumOfHydrogensDeleted = $Molecule\->DeletePolarHydrogens();
334 .Ve
335 .Sp
336 Removes hydrogens to each polar atom \- N, O, P or S \- in a \fIMolecule\fR and returns total
337 number of polar hydrogens deleted.
338 .IP "\fBDetectAromaticity\fR" 4
339 .IX Item "DetectAromaticity"
340 .Vb 1
341 \& $Molecule\->DetectAromaticity();
342 .Ve
343 .Sp
344 Associates \fIAromatic\fR property to atoms and bonds involved in aromatic rings or ring
345 systems in a \fIMolecule\fR and returns \fIMolecule\fR.
346 .Sp
347 This method assumes the ring detection has already been perfomed using \fBDetectRings\fR.
348 And any existing \fIAromatic\fR property associated with atoms and bonds is deleted before
349 performing aromaticity detection.
350 .Sp
351 What is aromaticity? [ Ref 124 ] It's in the code of the implementer, did you
352 say? Agree. The implementation of aromaticity varies widely across different
353 packages [ Ref 125 ]; additionally, the implementation details are not always
354 completely available, and it's not possible to figure out the exact implementation
355 of aromaticity across various packages. Using the publicly available information,
356 however, one can try to reproduce the available results to the extent possible,
357 along with parameterizing all the control parameters used to implement different
358 aromaticity models, and that's exactly what the current release of MayaChemTools
359 does.
360 .Sp
361 The implementation of aromaticity corresponding to various aromaticity models in
362 MayaChemTools package is driven by an external \s-1CSV\s0 file AromaticityModelsData.csv,
363 which is distributed with the package and is available in lib/data directory. The \s-1CSV\s0
364 files contains names of supported aromaticity models, along with various control
365 parameters and their values. This file is loaded and processed during instantiation
366 of Molecule class and data corresponding to specific aromaticity model are used
367 to detect aromaticity for that model. Any new aromaticity model added to the
368 aromaticity data file, using different combinations of values for existing control
369 parameters, would work without any changes to the code; the addition of any new
370 control parameters, however, requires its implementation in the code used to
371 calculate number of pi electrons available towards delocalization in a ring or ring
372 systems.
373 .Sp
374 The current release of MayaChemTools package supports these aromaticity
375 models: MDLAromaticityModel, TriposAromaticityModel, MMFFAromaticityModel,
376 ChemAxonBasicAromaticityModel, ChemAxonGeneralAromaticityModel,
377 DaylightAromaticityModel, MayaChemToolsAromaticityModel.
378 .Sp
379 The current list of control parameters available to detect aromaticity corresponding
380 to different aromaticity models are: AllowHeteroRingAtoms, HeteroRingAtomsList,
381 AllowExocyclicDoubleBonds, AllowHomoNuclearExocyclicDoubleBonds,
382 AllowElectronegativeRingAtomExocyclicDoubleBonds, AllowRingAtomFormalCharge,
383 AllowHeteroRingAtomFormalCharge, MinimumRingSize. The values for these control
384 parameters are specified in AromaticityModelsData.csv file.
385 .Sp
386 Although definition of aromaticity differs across various aromaticity models, a ring
387 or a ring system containing 4n + 2 pi electrons (Huckel's rule) corresponding to
388 alternate single and double bonds, in general, is considered aromatic.
389 .Sp
390 The available valence free electrons on heterocyclic ring atoms, involved in two single
391 ring bonds, are also allowed to participate in pi electron delocalizaiton for most of
392 the supported aromaticity models.
393 .Sp
394 The presence of exocyclic terminal double bond on ring atoms involved in pi electron
395 delocalization is only allowed for some of the aromaticity models. Additionally, the type
396 atoms involved in exocyclic terminal double bonds may result in making a ring or ring
397 system non-aromatic.
398 .Sp
399 For molecules containing fused rings, each fused ring set is considered as one aromatic
400 system for counting pi electrons to satisfy Huckel's rule; In case of a failure, rings in
401 fused set are treated individually for aromaticity detection. Additionally, non-fused
402 rings are handled on their own during aromaticity detection.
403 .IP "\fBDetectRings\fR" 4
404 .IX Item "DetectRings"
405 .Vb 1
406 \& $Molecule\->DetectRings();
407 .Ve
408 .Sp
409 Detects rings in a \fIMolecule\fR and returns \fIMolecule\fR. Ring detection is performed using
410 \&\fBDetectCycles\fR method avaible in \fBGraph\fR class which in turn uses methods available
411 \&\fBGraph::CyclesDetection\fR class. \fBGraph::CyclesDetection\fR class implements collapsing path graph
412 [Ref 31] methodology to detect all cycles in a graph.
413 .IP "\fBFormatElementalCompositionInformation\fR" 4
414 .IX Item "FormatElementalCompositionInformation"
415 .Vb 6
416 \& $FormattedInfo = $Molecule\->FormatElementalCompositionInformation(
417 \& $ElementsRef, $ElementCompositionRef,
418 \& [$Precision]);
419 \& $FormattedInfo = Molecule::FormatElementalCompositionInformation(
420 \& $ElementsRef, $ElementCompositionRef,
421 \& [$Precision]);
422 .Ve
423 .Sp
424 Using \fIElementsRef\fR and \fIElementCompositionRef\fR arrays referneces containg informatio
425 about elements and their composition, formats elemental composition information and returns
426 a \fIFormattedInfo\fR string. Defaule \fIPrecision\fR value: \fI2\fR.
427 .IP "\fBGetAromaticityModel\fR" 4
428 .IX Item "GetAromaticityModel"
429 .Vb 1
430 \& $AromaticityModel = $Molecule\->GetAromaticityModel();
431 .Ve
432 .Sp
433 Returns name of \fBAromaticityModel\fR set for \fIMolecule\fR corresponding to \fBAromaticityModel\fR
434 property or default model name of \fBMayaChemToolsAromaticityModel\fR.
435 .IP "\fBGetAllAtomPaths\fR" 4
436 .IX Item "GetAllAtomPaths"
437 .Vb 1
438 \& $AtomPathsRef = $Molecule\->GetAllAtomPaths([$AllowCycles]);
439 .Ve
440 .Sp
441 Returns all paths as a reference to an array containing reference to arrays with path
442 \&\fBAtom\fR objects.
443 .Sp
444 Path atoms correspond to to all possible paths for each atom in molecule with all
445 possible lengths and sharing of bonds in paths traversed. By default, rings are
446 included in paths. A path containing a ring is terminated at an atom completing the ring.
447 .Sp
448 For molecule without any rings, this method returns the same set of atom paths as
449 \&\fBGetAtomPaths\fR method.
450 .IP "\fBGetAllAtomPathsStartingAt\fR" 4
451 .IX Item "GetAllAtomPathsStartingAt"
452 .Vb 2
453 \& $AtomPathsRef = $Molecule\->GetAllAtomPathsStartingAt($StartAtom,
454 \& [$AllowCycles]);
455 .Ve
456 .Sp
457 Returns all atom paths starting from \fIStartAtom\fR as a reference to an array containing
458 reference to arrays with path \fBAtom\fR objects.
459 .Sp
460 Path atoms atoms correspond to to all possible paths for specified atom in molecule with all
461 possible lengths and sharing of bonds in paths traversed. By default, rings are
462 included in paths. A path containing a ring is terminated at an atom completing the ring.
463 .Sp
464 For molecule without any rings, this method returns the same set of atom paths as
465 \&\fBGetAtomPathsStartingAt\fR method.
466 .IP "\fBGetAllAtomPathsStartingAtWithLength\fR" 4
467 .IX Item "GetAllAtomPathsStartingAtWithLength"
468 .Vb 2
469 \& $AtomPathsRef = $Molecule\->GetAllAtomPathsStartingAtWithLength(
470 \& $StartAtom, $Length, [$AllowCycles]);
471 .Ve
472 .Sp
473 Returns all atom paths starting from \fIStartAtom\fR with specified \fILength\fRas a reference
474 to an array containing reference to arrays with path \fBAtom\fR objects.
475 .Sp
476 Path atoms atoms correspond to to all possible paths for specified atom in molecule with all
477 possible lengths and sharing of bonds in paths traversed. By default, rings are
478 included in paths. A path containing a ring is terminated at an atom completing the ring.
479 .Sp
480 For molecule without any rings, this method returns the same set of atom paths as
481 \&\fBGetAtomPathsStartingAtWithLength\fR method.
482 .IP "\fBGetAllAtomPathsStartingAtWithLengthUpto\fR" 4
483 .IX Item "GetAllAtomPathsStartingAtWithLengthUpto"
484 .Vb 2
485 \& $AtomPathsRef = $Molecule\->GetAllAtomPathsStartingAtWithLengthUpto(
486 \& $StartAtom, $Length, [$AllowCycles]);
487 .Ve
488 .Sp
489 Returns atom paths starting from \fIStartAtom\fR with length up to \fILength\fR as a reference
490 to an array containing reference to arrays with path \fBAtom\fR objects.
491 .Sp
492 Path atoms atoms correspond to all possible paths for specified atom in molecule with length
493 up to a specified length and sharing of bonds in paths traversed. By default, rings are
494 included in paths. A path containing a ring is terminated at an atom completing the ring.
495 .Sp
496 For molecule without any rings, this method returns the same set of atom paths as
497 \&\fIGetAtomPathsStartingAtWithLengthUpto\fR method.
498 .IP "\fBGetAllAtomPathsWithLength\fR" 4
499 .IX Item "GetAllAtomPathsWithLength"
500 .Vb 2
501 \& $AtomPathsRef = $Molecule\->GetAllAtomPathsWithLength($Length,
502 \& [$AllowCycles]);
503 .Ve
504 .Sp
505 Returns all atom paths with specified \fILength\fR as a reference to an array containing
506 reference to arrays with path \fBAtom\fR objects.
507 .Sp
508 Path atoms correspond to to all possible paths for each atom in molecule with length
509 up to a specified length and sharing of bonds in paths traversed. By default, rings are
510 included in paths. A path containing a ring is terminated at an atom completing the ring.
511 .Sp
512 For molecule without any rings, this method returns the same set of atom paths as
513 as \fIGetAtomPathsWithLength\fR method.
514 .IP "\fBGetAllAtomPathsWithLengthUpto\fR" 4
515 .IX Item "GetAllAtomPathsWithLengthUpto"
516 .Vb 2
517 \& $AtomPathsRef = $Molecule\->GetAllAtomPathsWithLengthUpto($Length,
518 \& [$AllowCycles]);
519 .Ve
520 .Sp
521 Returns all atom paths with length up to \fILength\fR as a reference to an array containing
522 reference to arrays with path \fBAtom\fR objects.
523 .Sp
524 Path atoms correspond to to all possible paths for each atom in molecule with length
525 up to a specified length and sharing of bonds in paths traversed. By default, rings are
526 included in paths. A path containing a ring is terminated at an atom completing the ring.
527 .Sp
528 For molecule without any rings, this method returns the same set of atom paths as
529 as \fIGetAtomPathsWithLengthUpto\fR method.
530 .IP "\fBGetAromaticRings\fR" 4
531 .IX Item "GetAromaticRings"
532 .Vb 1
533 \& @AtomaticRings = $Molecule\->GetAromaticRings();
534 .Ve
535 .Sp
536 Returns aromatic rings as an array containing references to arrays of ring \fIAtom\fR objects
537 in a \fIMolecule\fR.
538 .IP "\fBGetAtomNeighborhoods\fR" 4
539 .IX Item "GetAtomNeighborhoods"
540 .Vb 1
541 \& @Neighborhoods = $Molecule\->GetAtomNeighborhoods($StartAtom);
542 .Ve
543 .Sp
544 Returns atom neighborhoods around a \fIStartAtom\fR as an array containing references
545 to arrays with neighborhood \fIAtom\fR objects at possible radii.
546 .IP "\fBGetAtomNeighborhoodsWithRadiusUpto\fR" 4
547 .IX Item "GetAtomNeighborhoodsWithRadiusUpto"
548 .Vb 2
549 \& @Neighborhoods = $Molecule\->GetAtomNeighborhoodsWithRadiusUpto($StartAtom,
550 \& $Radius);
551 .Ve
552 .Sp
553 Returns atom neighborhoods around a \fIStartAtom\fR as an array containing references
554 to arrays with neighborhood \fIAtom\fR objects up to \fIRadius\fR.
555 .IP "\fBGetAtomNeighborhoodsWithSuccessorAtoms\fR" 4
556 .IX Item "GetAtomNeighborhoodsWithSuccessorAtoms"
557 .Vb 2
558 \& @Neighborhoods = $Molecule\->GetAtomNeighborhoodsWithSuccessorAtoms(
559 \& $StartAtom);
560 .Ve
561 .Sp
562 Returns atom neighborhood around a specified \fIStartAtom\fR, along with their successor
563 connected atoms, collected at all radii as an array containing references to arrays with first
564 value corresponding to neighborhood atom at a specific radius and second value as reference
565 to an array containing its successor connected atoms.
566 .Sp
567 For a neighborhood atom at each radius level, the successor connected atoms correspond to the
568 neighborhood atoms at the next radius level. Consequently, the neighborhood atoms at the last
569 radius level don't contain any successor atoms which fall outside the range of specified radius.
570 .IP "\fBGetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto\fR" 4
571 .IX Item "GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto"
572 .Vb 2
573 \& @Neighborhoods = $Molecule\->GetAtomNeighborhoodsWithSuccessorAtomsAndRadiusUpto(
574 \& $StartAtom, $Radius);
575 .Ve
576 .Sp
577 Returns atom neighborhood around a specified \fIStartAtom\fR, along with their successor
578 connected atoms, collected upto specified \fIRadiud\fR as an array containing references to arrays
579 with first value corresponding to neighborhood atom at a specific radius and second value as
580 reference to an array containing its successor connected atoms.
581 .Sp
582 For a neighborhood atom at each radius level, the successor connected atoms correspond to the
583 neighborhood atoms at the next radius level. Consequently, the neighborhood atoms at the last
584 radius level don't contain any successor atoms which fall outside the range of specified radius.
585 .IP "\fBGetAtomPathBonds\fR" 4
586 .IX Item "GetAtomPathBonds"
587 .Vb 1
588 \& $Return = $Molecule\->GetAtomPathBonds(@PathAtoms);
589 .Ve
590 .Sp
591 Returns an array containing \fBBond\fR objects corresponding to successive pair of
592 atoms in \fIPathAtoms\fR
593 .IP "\fBGetAtomPaths\fR" 4
594 .IX Item "GetAtomPaths"
595 .Vb 1
596 \& $AtomPathsRef = $Molecule\->GetAtomPaths([$AllowCycles]);
597 .Ve
598 .Sp
599 Returns all paths as a reference to an array containing reference to arrays with path
600 \&\fBAtom\fR objects.
601 .Sp
602 Path atoms correspond to to all possible paths for each atom in molecule with all
603 possible lengths and no sharing of bonds in paths traversed. By default, rings are
604 included in paths. A path containing a ring is terminated at an atom completing the ring.
605 .IP "\fBGetAtomPathsBetween\fR" 4
606 .IX Item "GetAtomPathsBetween"
607 .Vb 1
608 \& $AtomPathsRef = $Molecule\->GetAtomPathsBetween($StartAtom, $EndAtom);
609 .Ve
610 .Sp
611 Returns all paths as between \fIStartAtom\fR and \fIEndAtom\fR as a reference to an array
612 containing reference to arrays with path \fBAtom\fR objects.
613 .Sp
614 For molecules with rings, atom paths array contains may contain two paths.
615 .IP "\fBGetAtomPathsStartingAt\fR" 4
616 .IX Item "GetAtomPathsStartingAt"
617 .Vb 1
618 \& $AtomPathsRef = $Molecule\->GetAtomPathsStartingAt($StartAtom, [$AllowCycles]);
619 .Ve
620 .Sp
621 Returns paths starting at \fIStartAtom\fR as a reference to an array containing reference to
622 arrays with path \fBAtom\fR objects.
623 .Sp
624 Path atoms correspond to all possible paths for specified atom in molecule with all
625 possible lengths and no sharing of bonds in paths traversed. By default, rings are
626 included in paths. A path containing a ring is terminated at an atom completing the ring.
627 .IP "\fBGetAtomPathsStartingAtWithLength\fR" 4
628 .IX Item "GetAtomPathsStartingAtWithLength"
629 .Vb 2
630 \& $AtomPathsRef = $Molecule\->GetAtomPathsStartingAtWithLength($StartAtom,
631 \& $Length, [$AllowCycles]);
632 .Ve
633 .Sp
634 Returns paths starting at \fIStartAtom\fR with length \fILength\fR as a reference to an array
635 containing reference to arrays with path \fBAtom\fR objects.
636 .Sp
637 Path atoms correspond to all possible paths for specified atom in molecule with length
638 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
639 included in paths. A path containing a ring is terminated at an atom completing the ring.
640 .IP "\fBGetAtomPathsStartingAtWithLengthUpto\fR" 4
641 .IX Item "GetAtomPathsStartingAtWithLengthUpto"
642 .Vb 2
643 \& $AtomPathsRef = $Molecule\->GetAtomPathsStartingAtWithLengthUpto($StartAtom,
644 \& $Length, [$AllowCycles]);
645 .Ve
646 .Sp
647 Returns paths starting at \fIStartAtom\fR with length up to \fILength\fR as a reference to an array
648 containing reference to arrays with path \fBAtom\fR objects.
649 .Sp
650 Path atoms correspond to all possible paths for specified atom in molecule with length
651 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
652 included in paths. A path containing a ring is terminated at an atom completing the ring.
653 .IP "\fBGetAtomPathsWithLength\fR" 4
654 .IX Item "GetAtomPathsWithLength"
655 .Vb 1
656 \& $AtomPathsRef = $Molecule\->GetAtomPathsWithLength($Length, [$AllowCycles]);
657 .Ve
658 .Sp
659 Returns all paths with specified \fILength\fR as a reference to an array containing reference
660 to arrays with path \fBAtom\fR objects.
661 .Sp
662 Path atoms correspond to all possible paths for each atom in molecule with length
663 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
664 included in paths. A path containing a ring is terminated at an atom completing the ring.
665 .IP "\fBGetAtomPathsWithLengthUpto\fR" 4
666 .IX Item "GetAtomPathsWithLengthUpto"
667 .Vb 1
668 \& $AtomPathsRef = $Molecule\->GetAtomPathsWithLengthUpto($Length, [$AllowCycles]);
669 .Ve
670 .Sp
671 Returns all paths with length up to \fILength\fR as a reference to an array containing reference
672 to arrays with path \fBAtom\fR objects.
673 .Sp
674 Path atoms correspond to all possible paths for each atom in molecule with length
675 upto a specified length and no sharing of bonds in paths traversed. By default, rings are
676 included in paths. A path containing a ring is terminated at an atom completing the ring.
677 .IP "\fBGetAtoms\fR" 4
678 .IX Item "GetAtoms"
679 .Vb 2
680 \& @AllAtoms = $Molecule\->GetAtoms();
681 \& @PolarAtoms = $Molecule\->GetAtoms(\*(AqIsPolarAtom\*(Aq);
682 \&
683 \& $NegateMethodResult = 1;
684 \& @NonHydrogenAtoms = $Molecule\->GetAtoms(\*(AqIsHydrogenAtom\*(Aq,
685 \& $NegateMethodResult);
686 \&
687 \& $AtomsCount = $Molecule\->GetAtoms();
688 .Ve
689 .Sp
690 Returns an array of \fIAtoms\fR in a \fIMolecule\fR. In scalar context, it returns number of atoms.
691 Additionally, \fBAtoms\fR array can be filtered by any user specifiable valid \fBAtom\fR class method
692 and the result of the \fBAtom\fR class method used to filter the atoms can also be negated by
693 an optional negate results flag as third parameter.
694 .IP "\fBGetBonds\fR" 4
695 .IX Item "GetBonds"
696 .Vb 2
697 \& @Bonds = $Molecule\->GetBonds();
698 \& $BondsCount = $Molecule\->GetBonds();
699 .Ve
700 .Sp
701 Returns an array of \fIBonds\fR in a \fIMolecule\fR. In scalar context, it returns number of bonds.
702 .IP "\fBGetCharge\fR" 4
703 .IX Item "GetCharge"
704 .Vb 1
705 \& $Charge = $Molecule\->GetCharge();
706 .Ve
707 .Sp
708 Returns net charge on a \fIMolecule\fR using one of the following two methods: explicitly
709 set \fBCharge\fR property or sum of partial atomic charges on each atom.
710 .IP "\fBGetConnectedComponents\fR" 4
711 .IX Item "GetConnectedComponents"
712 .Vb 1
713 \& @ConnectedComponents = $Molecule\->GetConnectedComponents();
714 .Ve
715 .Sp
716 Returns a reference to an array containing \fIMolecule\fR objects corresponding
717 to connected components sorted in decreasing order of component size in a \fIMolecule\fR.
718 .IP "\fBGetConnectedComponentsAtoms\fR" 4
719 .IX Item "GetConnectedComponentsAtoms"
720 .Vb 2
721 \& @ConnectedComponentsAtoms =
722 \& $Molecule\->GetConnectedComponentsAtoms();
723 .Ve
724 .Sp
725 Returns an array containing references to arrays with \fIAtom\fR objects corresponding to
726 atoms of connected components sorted in order of component decreasing size in a
727 \&\fIMolecule\fR.
728 .IP "\fBGetDimensionality\fR" 4
729 .IX Item "GetDimensionality"
730 .Vb 1
731 \& $Dimensionality = $Molecule\->GetDimensionality();
732 .Ve
733 .Sp
734 Returns \fIDimensionality\fR of a \fIMolecule\fR corresponding to explicitly set
735 \&\fIDimensionality\fR property value or by processing atomic.
736 .Sp
737 The \fIDimensionality\fR value from atomic coordinates is calculated as follows:
738 .Sp
739 .Vb 4
740 \& 3D \- Three dimensional: One of X, Y or Z coordinate is non\-zero
741 \& 2D \- Two dimensional: One of X or Y coordinate is non\-zero; All Z
742 \& coordinates are zero
743 \& 0D \- Zero dimensional: All atomic coordinates are zero
744 .Ve
745 .IP "\fBGetElementalComposition\fR" 4
746 .IX Item "GetElementalComposition"
747 .Vb 2
748 \& ($ElementsRef, $CompositionRef) =
749 \& $Molecule\->GetElementalComposition([$IncludeMissingHydrogens]);
750 .Ve
751 .Sp
752 Calculates elemental composition and returns references to arrays containing elements
753 and their percent composition in a \fIMolecule\fR. By default, missing hydrogens are included
754 during the calculation.
755 .IP "\fBGetElementsAndNonElements\fR" 4
756 .IX Item "GetElementsAndNonElements"
757 .Vb 2
758 \& ($ElementsRef, $NonElementsRef) =
759 \& $Molecule\->GetElementsAndNonElements([$IncludeMissingHydrogens]);
760 .Ve
761 .Sp
762 Counts elements and non-elements in a \fIMolecule\fR and returns references to hashes
763 containing element and non-element as hash keys with values corresponding to their
764 count. By default, missing hydrogens are not added to the element hash.
765 .IP "\fBGetExactMass\fR" 4
766 .IX Item "GetExactMass"
767 .Vb 1
768 \& $ExactMass = $Molecule\->GetExactMass();
769 .Ve
770 .Sp
771 Returns exact mass of a \fIMolecule\fR corresponding to sum of exact masses of all
772 the atoms.
773 .IP "\fBGetFormalCharge\fR" 4
774 .IX Item "GetFormalCharge"
775 .Vb 1
776 \& $FormalCharge = $Molecule\->GetFormalCharge();
777 .Ve
778 .Sp
779 Returns net formal charge on a \fIMolecule\fR using one of the following two methods: explicitly
780 set \fBFormalCharge\fR property or sum of formal charges on each atom.
781 .Sp
782 \&\fBFormalCharge\fR is different from \fBCharge\fR property of the molecule which corresponds to
783 sum of partial atomic charges explicitly set for each atom using a specific methodology.
784 .IP "\fBGetFreeRadicalElectrons\fR" 4
785 .IX Item "GetFreeRadicalElectrons"
786 .Vb 1
787 \& $FreeRadicalElectrons = $Molecule\->GetFreeRadicalElectrons();
788 .Ve
789 .Sp
790 Returns total number of free radical electrons available in a \fIMolecule\fR using one of the
791 following two methods: explicitly set \fBFreeRadicalElectrons\fR property or sum of available
792 free radical electrons on each atom.
793 .IP "\fBGetFusedAndNonFusedRings\fR" 4
794 .IX Item "GetFusedAndNonFusedRings"
795 .Vb 2
796 \& ($FusedRingSetRef, $NonFusedRingsRef) =
797 \& $Molecule\->GetFusedAndNonFusedRings();
798 .Ve
799 .Sp
800 Returns references to array of fused ring sets and non-fused rings in a \fIMolecule\fR. Fused ring sets
801 array reference contains refernces to arrays of rings corresponding to ring \fIAtom\fR objects;
802 Non-fused rings array reference contains references to arrays of ring \fIAtom\fR objects.
803 .IP "\fBGetLargestConnectedComponent\fR" 4
804 .IX Item "GetLargestConnectedComponent"
805 .Vb 1
806 \& $ComponentMolecule = $Molecule\->GetLargestConnectedComponent();
807 .Ve
808 .Sp
809 Returns a reference to \fBMolecule\fR object corresponding to a largest connected component
810 in a \fIMolecule\fR.
811 .IP "\fBGetLargestConnectedComponentAtoms\fR" 4
812 .IX Item "GetLargestConnectedComponentAtoms"
813 .Vb 1
814 \& @ComponentAtoms = $Molecule\->GetLargestConnectedComponentAtoms();
815 .Ve
816 .Sp
817 Returns a reference to an array of \fBAtom\fR objects corresponding to a largest connected
818 component in a \fIMolecule\fR.
819 .IP "\fBGetLargestRing\fR" 4
820 .IX Item "GetLargestRing"
821 .Vb 1
822 \& @RingAtoms = $Molecule\->GetLargestRing();
823 .Ve
824 .Sp
825 Returns an array of \fIAtoms\fR objects corresponding to a largest ring in a \fIMolecule\fR.
826 .IP "\fBGetMolecularFormula\fR" 4
827 .IX Item "GetMolecularFormula"
828 .Vb 3
829 \& $FormulaString = $Molecule\->GetMolecularFormula(
830 \& [$IncludeMissingHydrogens,
831 \& $IncludeNonElements]);
832 .Ve
833 .Sp
834 Returns molecular formula of a \fIMolecule\fR by collecting information about all atoms in
835 the molecule and composing the formula using Hills ordering system:
836 .Sp
837 .Vb 4
838 \& o C shows up first and H follows assuming C is present.
839 \& o All other standard elements are sorted alphanumerically.
840 \& o All other non\-stanard atom symbols are also sorted
841 \& alphanumerically and follow standard elements.
842 .Ve
843 .Sp
844 Notes:
845 .Sp
846 .Vb 4
847 \& o By default, missing hydrogens and nonelements are also included.
848 \& o Elements for disconnected fragments are combined into the same
849 \& formula.
850 \& o Formal charge is also used during compoisiton of molecular formula.
851 .Ve
852 .IP "\fBGetMolecularWeight\fR" 4
853 .IX Item "GetMolecularWeight"
854 .Vb 1
855 \& $MolWeight = $Molecule\->GetMolecularWeight();
856 .Ve
857 .Sp
858 Returns molecular weight of a \fIMolecule\fR corresponding to sum of atomic weights of all
859 the atoms.
860 .IP "\fBGetNumOfAromaticRings\fR" 4
861 .IX Item "GetNumOfAromaticRings"
862 .Vb 1
863 \& $NumOfAromaticRings = $Molecule\->GetNumOfAromaticRings();
864 .Ve
865 .Sp
866 Returns number of aromatic rings in a \fIMolecule\fR.
867 .IP "\fBGetNumOfAtoms\fR" 4
868 .IX Item "GetNumOfAtoms"
869 .Vb 1
870 \& $NumOfAtoms = $Molecule\->GetNumOfAtoms();
871 .Ve
872 .Sp
873 Returns number of atoms in a \fIMolecule\fR.
874 .IP "\fBGetNumOfBonds\fR" 4
875 .IX Item "GetNumOfBonds"
876 .Vb 1
877 \& $NumOfBonds = $Molecule\->GetNumOfBonds();
878 .Ve
879 .Sp
880 Returns number of bonds in a \fIMolecule\fR.
881 .IP "\fBGetNumOfConnectedComponents\fR" 4
882 .IX Item "GetNumOfConnectedComponents"
883 .Vb 1
884 \& $NumOfComponents = $Molecule\->GetNumOfConnectedComponents();
885 .Ve
886 .Sp
887 Returns number of connected components in a \fIMolecule\fR.
888 .IP "\fBGetNumOfElementsAndNonElements\fR" 4
889 .IX Item "GetNumOfElementsAndNonElements"
890 .Vb 4
891 \& ($NumOfElements, $NumOfNonElements) = $Molecule\->
892 \& GetNumOfElementsAndNonElements();
893 \& ($NumOfElements, $NumOfNonElements) = $Molecule\->
894 \& GetNumOfElementsAndNonElements($IncludeMissingHydrogens);
895 .Ve
896 .Sp
897 Returns number of elements and non-elements in a \fIMolecule\fR. By default, missing
898 hydrogens are not added to element count.
899 .IP "\fBGetNumOfHeavyAtoms\fR" 4
900 .IX Item "GetNumOfHeavyAtoms"
901 .Vb 1
902 \& $NumOfHeavyAtoms = $Molecule\->GetNumOfHeavyAtoms();
903 .Ve
904 .Sp
905 Returns number of heavy atoms, non-hydrogen atoms, in a \fIMolecule\fR.
906 .IP "\fBGetNumOfHydrogenAtoms\fR" 4
907 .IX Item "GetNumOfHydrogenAtoms"
908 .Vb 1
909 \& $NumOfHydrogenAtoms = $Molecule\->GetNumOfHydrogenAtoms();
910 .Ve
911 .Sp
912 Returns number of hydrogen atoms in a \fIMolecule\fR.
913 .IP "\fBGetNumOfMissingHydrogenAtoms\fR" 4
914 .IX Item "GetNumOfMissingHydrogenAtoms"
915 .Vb 1
916 \& $NumOfMissingHydrogenAtoms = $Molecule\->GetNumOfMissingHydrogenAtoms();
917 .Ve
918 .Sp
919 Returns number of hydrogen atoms in a \fIMolecule\fR.
920 .IP "\fBGetNumOfNonHydrogenAtoms\fR" 4
921 .IX Item "GetNumOfNonHydrogenAtoms"
922 .Vb 1
923 \& $NumOfNonHydrogenAtoms = $Molecule\->GetNumOfNonHydrogenAtoms();
924 .Ve
925 .Sp
926 Returns number of non-hydrogen atoms in a \fIMolecule\fR.
927 .IP "\fBGetNumOfRings\fR" 4
928 .IX Item "GetNumOfRings"
929 .Vb 1
930 \& $RingCount = $Molecule\->GetNumOfRings();
931 .Ve
932 .Sp
933 Returns number of rings in a \fIMolecule\fR.
934 .IP "\fBGetNumOfRingsWithEvenSize\fR" 4
935 .IX Item "GetNumOfRingsWithEvenSize"
936 .Vb 1
937 \& $RingCount = $Molecule\->GetNumOfRingsWithEvenSize();
938 .Ve
939 .Sp
940 Returns number of rings with even size in a \fIMolecule\fR.
941 .IP "\fBGetNumOfRingsWithOddSize\fR" 4
942 .IX Item "GetNumOfRingsWithOddSize"
943 .Vb 1
944 \& $RingCount = $Molecule\->GetNumOfRingsWithOddSize();
945 .Ve
946 .Sp
947 Returns number of rings with odd size in a \fIMolecule\fR.
948 .IP "\fBGetNumOfRingsWithSize\fR" 4
949 .IX Item "GetNumOfRingsWithSize"
950 .Vb 1
951 \& $RingCount = $Molecule\->GetNumOfRingsWithSize($Size);
952 .Ve
953 .Sp
954 Returns number of rings with \fISize\fR in a \fIMolecule\fR.
955 .IP "\fBGetNumOfRingsWithSizeGreaterThan\fR" 4
956 .IX Item "GetNumOfRingsWithSizeGreaterThan"
957 .Vb 1
958 \& $RingCount = $Molecule\->GetNumOfRingsWithSizeGreaterThan($Size);
959 .Ve
960 .Sp
961 Returns number of rings with size greater than \fISize\fR in a \fIMolecule\fR.
962 .IP "\fBGetNumOfRingsWithSizeLessThan\fR" 4
963 .IX Item "GetNumOfRingsWithSizeLessThan"
964 .Vb 1
965 \& $RingCount = $Molecule\->GetNumOfRingsWithSizeLessThan($Size);
966 .Ve
967 .Sp
968 Returns number of rings with size less than \fISize\fR in a \fIMolecule\fR.
969 .IP "\fBGetRingBonds\fR" 4
970 .IX Item "GetRingBonds"
971 .Vb 1
972 \& @RingBonds = $Molecule\->GetRingBonds(@RingAtoms);
973 .Ve
974 .Sp
975 Returns an array of ring \fBBond\fR objects correponding to an array of ring \fIAtoms\fR in a
976 \&\fIMolecule\fR.
977 .IP "\fBGetRingBondsFromRings\fR" 4
978 .IX Item "GetRingBondsFromRings"
979 .Vb 1
980 \& @RingBondsSets = $Molecule\->GetRingBondsFromRings(@RingAtomsSets);
981 .Ve
982 .Sp
983 Returns an array containing references to arrays of ring \fBBond\fR objects for rings specified
984 in an array of references to ring \fIAtom\fR objects.
985 .IP "\fBGetRings\fR" 4
986 .IX Item "GetRings"
987 .Vb 1
988 \& @Rings = $Molecule\->GetRings();
989 .Ve
990 .Sp
991 Returns rings as an array containing references to arrays of ring \fIAtom\fR objects in a \fIMolecule\fR.
992 .IP "\fBGetRingsWithEvenSize\fR" 4
993 .IX Item "GetRingsWithEvenSize"
994 .Vb 1
995 \& @Rings = $Molecule\->GetRingsWithEvenSize();
996 .Ve
997 .Sp
998 Returns even size rings as an array containing references to arrays of ring \fIAtom\fR objects in
999 a \fIMolecule\fR.
1000 .IP "\fBGetRingsWithOddSize\fR" 4
1001 .IX Item "GetRingsWithOddSize"
1002 .Vb 1
1003 \& @Rings = $Molecule\->GetRingsWithOddSize();
1004 .Ve
1005 .Sp
1006 Returns odd size rings as an array containing references to arrays of ring \fIAtom\fR objects in
1007 a \fIMolecule\fR.
1008 .IP "\fBGetRingsWithSize\fR" 4
1009 .IX Item "GetRingsWithSize"
1010 .Vb 1
1011 \& @Rings = $Molecule\->GetRingsWithSize($Size);
1012 .Ve
1013 .Sp
1014 Returns rings with \fISize\fR as an array containing references to arrays of ring \fIAtom\fR objects in
1015 a \fIMolecule\fR.
1016 .IP "\fBGetRingsWithSizeGreaterThan\fR" 4
1017 .IX Item "GetRingsWithSizeGreaterThan"
1018 .Vb 1
1019 \& @Rings = $Molecule\->GetRingsWithSizeGreaterThan($Size);
1020 .Ve
1021 .Sp
1022 Returns rings with size greater than \fISize\fR as an array containing references to arrays of
1023 ring \fIAtom\fR objects in a \fIMolecule\fR.
1024 .IP "\fBGetRingsWithSizeLessThan\fR" 4
1025 .IX Item "GetRingsWithSizeLessThan"
1026 .Vb 1
1027 \& @Rings = $Molecule\->GetRingsWithSizeLessThan($Size);
1028 .Ve
1029 .Sp
1030 Returns rings with size less than \fISize\fR as an array containing references to arrays of
1031 ring \fIAtom\fR objects in a \fIMolecule\fR.
1032 .IP "\fBGetSizeOfLargestRing\fR" 4
1033 .IX Item "GetSizeOfLargestRing"
1034 .Vb 1
1035 \& $Size = $Molecule\->GetSizeOfLargestRing();
1036 .Ve
1037 .Sp
1038 Returns size of the largest ring in a \fIMolecule\fR.
1039 .IP "\fBGetSizeOfSmallestRing\fR" 4
1040 .IX Item "GetSizeOfSmallestRing"
1041 .Vb 1
1042 \& $Size = $Molecule\->GetSizeOfSmallestRing();
1043 .Ve
1044 .Sp
1045 Returns size of the smalles ring in a \fIMolecule\fR.
1046 .IP "\fBGetSmallestRing\fR" 4
1047 .IX Item "GetSmallestRing"
1048 .Vb 1
1049 \& @RingAtoms = $Molecule\->GetSmallestRing();
1050 .Ve
1051 .Sp
1052 Returns an array containing \fIAtom\fR objects corresponding to the smallest ring in
1053 a \fIMolecule\fR.
1054 .IP "\fBGetSpinMultiplicity\fR" 4
1055 .IX Item "GetSpinMultiplicity"
1056 .Vb 1
1057 \& $SpinMultiplicity = $Molecule\->GetSpinMultiplicity();
1058 .Ve
1059 .Sp
1060 Returns net spin multiplicity of a \fIMolecule\fR using one of the following two methods: explicitly
1061 set \fBSpinMultiplicity\fR property or sum of spin multiplicity on each atom.
1062 .IP "\fBGetSupportedAromaticityModels\fR" 4
1063 .IX Item "GetSupportedAromaticityModels"
1064 .Vb 1
1065 \& @SupportedModels = $Molecule\->GetSupportedAromaticityModels();
1066 .Ve
1067 .Sp
1068 Returns an array containing a list of supported aromaticity models.
1069 .IP "\fBGetValenceModel\fR" 4
1070 .IX Item "GetValenceModel"
1071 .Vb 1
1072 \& $ValenceModel = $Molecule\->GetValenceModel();
1073 .Ve
1074 .Sp
1075 Returns valence model for \fIMolecule\fR using one of the following two methods: explicitly
1076 set \fBValenceModel\fR property or defaul value of \fIInternalValenceModel\fR.
1077 .IP "\fBGetTopologicallySortedAtoms\fR" 4
1078 .IX Item "GetTopologicallySortedAtoms"
1079 .Vb 1
1080 \& @SortedAtoms = $Molecule\->GetTopologicallySortedAtoms([$StartAtom]);
1081 .Ve
1082 .Sp
1083 Returns an array of topologically sorted \fIAtom\fR objects starting from \fIStartAtom\fR or
1084 an arbitrary atom in a \fIMolecule\fR.
1085 .IP "\fBHasAromaticRings\fR" 4
1086 .IX Item "HasAromaticRings"
1087 .Vb 1
1088 \& $Status = $Molecule\->HasAromaticRings();
1089 .Ve
1090 .Sp
1091 Returns 1 or 0 based on whether any aromatic ring is present in a \fIMolecule\fR.
1092 .IP "\fBHasAromaticAtomsInRings\fR" 4
1093 .IX Item "HasAromaticAtomsInRings"
1094 .Vb 1
1095 \& $Status = $Molecule\->HasAromaticAtomsInRings();
1096 .Ve
1097 .Sp
1098 Returns 1 or 0 based on whether any aromatic ring atom is present in a \fIMolecule\fR.
1099 .IP "\fBHasAromaticAtomsNotInRings\fR" 4
1100 .IX Item "HasAromaticAtomsNotInRings"
1101 .Vb 1
1102 \& $Status = $Molecule\->HasAromaticAtomsNotInRings();
1103 .Ve
1104 .Sp
1105 Returns 1 or 0 based on whether any non-ring atom is marked aromatic in a \fIMolecule\fR.
1106 .IP "\fBHasAtom\fR" 4
1107 .IX Item "HasAtom"
1108 .Vb 1
1109 \& $Status = $Molecule\->HasAtom($Atom);
1110 .Ve
1111 .Sp
1112 Returns 1 or 0 based on whether \fIAtom\fR is present in a \fIMolecule\fR.
1113 .IP "\fBHasBond\fR" 4
1114 .IX Item "HasBond"
1115 .Vb 1
1116 \& $Status = $Molecule\->HasBond($Bond);
1117 .Ve
1118 .Sp
1119 Returns 1 or 0 based on whether \fIBond\fR is present in a \fIMolecule\fR.
1120 .IP "\fBHasFusedRings\fR" 4
1121 .IX Item "HasFusedRings"
1122 .Vb 1
1123 \& $Status = $Molecule\->HasFusedRings();
1124 .Ve
1125 .Sp
1126 Returns 1 or 0 based on whether any fused rings set is present in a \fIMolecule\fR.
1127 .IP "\fBHasNoRings\fR" 4
1128 .IX Item "HasNoRings"
1129 .Vb 1
1130 \& $Status = $Molecule\->HasNoRings();
1131 .Ve
1132 .Sp
1133 Returns 0 or 1 based on whether any ring is present in a \fIMolecule\fR.
1134 .IP "\fBHasOnlyOneRing\fR" 4
1135 .IX Item "HasOnlyOneRing"
1136 .Vb 1
1137 \& $Status = $Molecule\->HasOnlyOneRing();
1138 .Ve
1139 .Sp
1140 Returns 1 or 0 based on whether only one ring is present in a \fIMolecule\fR.
1141 .IP "\fBHasRings\fR" 4
1142 .IX Item "HasRings"
1143 .Vb 1
1144 \& $Status = $Molecule\->HasRings();
1145 .Ve
1146 .Sp
1147 Returns 1 or 0 based on whether rings are present in a \fIMolecule\fR.
1148 .IP "\fBIsAromatic\fR" 4
1149 .IX Item "IsAromatic"
1150 .Vb 1
1151 \& $Status = $Molecule\->IsAromatic();
1152 .Ve
1153 .Sp
1154 Returns 1 or 0 based on whether \fIMolecule\fR is aromatic.
1155 .IP "\fBIsMolecule\fR" 4
1156 .IX Item "IsMolecule"
1157 .Vb 1
1158 \& $Status = Molecule::IsMolecule();
1159 .Ve
1160 .Sp
1161 Returns 1 or 0 based on whether \fIObject\fR is a \fBMolecule\fR object.
1162 .IP "\fBIsRingAromatic\fR" 4
1163 .IX Item "IsRingAromatic"
1164 .Vb 1
1165 \& $Status = $Molecule\->IsRingAromatic(@RingAtoms);
1166 .Ve
1167 .Sp
1168 Returns 1 or 0 based on whether all \fIRingAtoms\fR are aromatic.
1169 .IP "\fBIsSupportedAromaticityModel\fR" 4
1170 .IX Item "IsSupportedAromaticityModel"
1171 .Vb 2
1172 \& $Status = $Molecule\->IsSupportedAromaticityModel($AromaticityModel);
1173 \& $Status = Molecule::IsSupportedAromaticityModel($AromaticityModel);
1174 .Ve
1175 .Sp
1176 Returns 1 or 0 based on whether specified \fIAromaticityModel\fR is supported.
1177 .IP "\fBIsTwoDimensional\fR" 4
1178 .IX Item "IsTwoDimensional"
1179 .Vb 1
1180 \& $Status = $Molecule\->IsTwoDimensional();
1181 .Ve
1182 .Sp
1183 Returns 1 or 0 based on whether any atom in \fIMolecule\fR has a non-zero value
1184 for X or Y coordinate and all atoms have zero value for Z coordinates.
1185 .IP "\fBIsThreeDimensional\fR" 4
1186 .IX Item "IsThreeDimensional"
1187 .Vb 1
1188 \& $Status = $Molecule\->IsThreeDimensional();
1189 .Ve
1190 .Sp
1191 Returns 1 or 0 based on whether any atom in \fIMolecule\fR has a non-zero value
1192 for Z coordinate.
1193 .IP "\fBKeepLargestComponent\fR" 4
1194 .IX Item "KeepLargestComponent"
1195 .Vb 1
1196 \& $Molecule\->KeepLargestComponent();
1197 .Ve
1198 .Sp
1199 Deletes atoms corresponding to all other connected components Except for the largest
1200 connected component in a \fIMolecule\fR and returns \fIMolecule\fR.
1201 .IP "\fBKekulizeAromaticAtoms\fR" 4
1202 .IX Item "KekulizeAromaticAtoms"
1203 .Vb 1
1204 \& $Status = $Molecule\->KekulizeAromaticAtoms();
1205 .Ve
1206 .Sp
1207 Kekulize marked ring and non-ring aromatic atoms in a molecule and return 1 or 1 based
1208 on whether the kekulization succeeded.
1209 .IP "\fBNewAtom\fR" 4
1210 .IX Item "NewAtom"
1211 .Vb 1
1212 \& $NewAtom = $Molecule\->NewAtom(%AtomPropertyNamesAndValues);
1213 .Ve
1214 .Sp
1215 Creates a new atom using \fIAtomPropertyNamesAndValues\fR, add its to \fIMolecule\fR, and returns
1216 new \fBAtom\fR object.
1217 .IP "\fBNewBond\fR" 4
1218 .IX Item "NewBond"
1219 .Vb 1
1220 \& $NewBond = $Molecule\->NewBond(%BondPropertyNamesAndValues);
1221 .Ve
1222 .Sp
1223 Creates a new bond using \fIAtomPropertyNamesAndValues\fR, add its to \fIMolecule\fR, and returns
1224 new \fBBond\fR object.
1225 .IP "\fBSetActiveRings\fR" 4
1226 .IX Item "SetActiveRings"
1227 .Vb 1
1228 \& $Molecule\->SetActiveRings($RingsType);
1229 .Ve
1230 .Sp
1231 Sets up type of detected ring sets to use during all ring related methods and returns \fIMolecule\fR.
1232 Possible \fIRingType\fR values: \fIIndependent or All\fR. By default, \fIIndependent\fR ring set is used
1233 during all ring methods.
1234 .IP "\fBSetAromaticityModel\fR" 4
1235 .IX Item "SetAromaticityModel"
1236 .Vb 1
1237 \& $Molecule = $Molecule\->SetAromaticityModel($AromaticityModel);
1238 .Ve
1239 .Sp
1240 Sets up \fIAromaticityModel\fR property value for \fIMolecule\fR and retrurns \fIMolecule\fR.
1241 .IP "\fBSetValenceModel\fR" 4
1242 .IX Item "SetValenceModel"
1243 .Vb 1
1244 \& $Molecule = $Molecule\->SetValenceModel(ValenceModel);
1245 .Ve
1246 .Sp
1247 Sets up \fIValenceModel\fR property value for \fIMolecule\fR and retrurns \fIMolecule\fR.
1248 .IP "\fBStringifyMolecule\fR" 4
1249 .IX Item "StringifyMolecule"
1250 .Vb 1
1251 \& $MoleculeString = $Molecule\->StringifyMolecule();
1252 .Ve
1253 .Sp
1254 Returns a string containing information about \fIMolecule\fR object
1255 .SH "AUTHOR"
1256 .IX Header "AUTHOR"
1257 Manish Sud <msud@san.rr.com>
1258 .SH "SEE ALSO"
1259 .IX Header "SEE ALSO"
1260 Atom.pm, Bond.pm, MoleculeFileIO.pm, MolecularFormula.pm
1261 .SH "COPYRIGHT"
1262 .IX Header "COPYRIGHT"
1263 Copyright (C) 2015 Manish Sud. All rights reserved.
1264 .PP
1265 This file is part of MayaChemTools.
1266 .PP
1267 MayaChemTools is free software; you can redistribute it and/or modify it under
1268 the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free
1269 Software Foundation; either version 3 of the License, or (at your option)
1270 any later version.