comparison docs/modules/txt/PathLengthFingerprints.txt @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4816e4a8ae95
1 NAME
2 PathLengthFingerprints
3
4 SYNOPSIS
5 use Fingerprints::PathLengthFingerprints;
6
7 use Fingerprints::PathLengthFingerprints qw(:all);
8
9 DESCRIPTION
10 PathLengthFingerprints class provides the following methods:
11
12 new, GenerateFingerprints, , GetDescription, SetAtomIdentifierType,
13 SetAtomicInvariantsToUse, SetFunctionalClassesToUse, SetMaxLength,
14 SetMinLength, SetNumOfBitsToSetPerPath, SetType,
15 StringifyPathLengthFingerprints
16
17 PathLengthFingerprints is derived from Fingerprints class which in turn
18 is derived from ObjectProperty base class that provides methods not
19 explicitly defined in PathLengthFingerprints, Fingerprints or
20 ObjectProperty classes using Perl's AUTOLOAD functionality. These
21 methods are generated on-the-fly for a specified object property:
22
23 Set<PropertyName>(<PropertyValue>);
24 $PropertyValue = Get<PropertyName>();
25 Delete<PropertyName>();
26
27 The current release of MayaChemTools supports generation of
28 AtomTypesFingerpritns corresponding to following AtomtomIdentifierTypes:
29
30 AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
31 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
32 SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
33
34 Based on the values specified for Type, AtomtomIdentifierTypes,
35 MinPathLength and MaxPathLength, all appropriate atom paths are
36 generated for each atom in the molecule and collected in a list and the
37 list is filtered to remove any structurally duplicate paths as indicated
38 by the value of UseUniquePaths.
39
40 For molecules containing rings, atom paths starting from each atom can
41 be traversed in four different ways:
42
43 o Atom paths without any rings and sharing of bonds in traversed paths.
44 o Atom paths containing rings and without any sharing of bonds in
45 traversed paths
46 o All possible atom paths without any rings and sharing of bonds in
47 traversed paths
48 o All possible atom paths containing rings and with sharing of bonds in
49 traversed paths.
50
51 Atom path traversal is terminated at the last ring atom. For molecules
52 containing no rings, first two and last two types described above are
53 equivalent.
54
55 AllowSharedBonds and AllowRings allow generation of different types of
56 paths to be used for fingerprints generation.
57
58 The combination of AllowSharedBonds, AllowRings, and UseBondSymbols
59 allows generation of 8 different types of path length fingerprints:
60
61 AllowSharedBonds AllowRings UseBondSymbols
62
63 0 0 1 - AtomPathsNoCyclesWithBondSymbols
64 0 1 1 - AtomPathsWithCyclesWithBondSymbols
65
66 1 0 1 - AllAtomPathsNoCyclesWithBondSymbols
67 1 1 1 - AllAtomPathsWithCyclesWithBondSymbols
68 [ DEFAULT ]
69
70 0 0 0 - AtomPathsNoCyclesNoBondSymbols
71 0 1 0 - AtomPathsWithCyclesNoBondSymbols
72
73 1 0 0 - AllAtomPathsNoCyclesNoBondSymbols
74 1 1 0 - AllAtomPathsWithCyclesNoWithBondSymbols
75
76 Additionally, possible values for option --AtomIdentifierType in
77 conjunction with corresponding specified values for
78 AtomicInvariantsToUse and FunctionalClassesToUse changes the nature of
79 atom path length strings and the fingerprints.
80
81 For each atom path in the filtered atom paths list, an atom path string
82 is created using value of AtomIdentifierType and specified values to use
83 for a particular atom identifier type. Value of UseBondSymbols controls
84 whether bond order symbols are used during generation of atom path
85 string. Atom symbol corresponds to element symbol and characters used to
86 represent bond order are: *1 - None; 2 - '='; 3 - '#'; 1.5 or aromatic -
87 ':'; others: bond order value*. By default, bond symbols are included in
88 atom path strings. Exclusion of bond symbols in atom path strings
89 results in fingerprints which correspond purely to atom paths without
90 considering bonds.
91
92 UseUniquePaths controls the removal of structurally duplicate atom path
93 strings are removed from the list.
94
95 For *PathLengthBits* value of Type, each atom path is hashed to a 32 bit
96 unsigned integer key using TextUtil::HashCode function. Using the hash
97 key as a seed for a random number generator, a random integer value
98 between 0 and Size is used to set corresponding bits in the fingerprint
99 bit-vector string. Value of NumOfBitsToSetPerPaths option controls the
100 number of time a random number is generated to set corresponding bits.
101
102 For * PathLengthCount* value of Typen, the number of times an atom path
103 appears is tracked and a fingerprints count-string corresponding to
104 count of atom paths is generated.
105
106 The current release of MayaChemTools generates the following types of
107 path length fingerprints bit-vector and vector strings:
108
109 FingerprintsBitVector;PathLengthBits:AtomicInvariantsAtomTypes:MinLeng
110 th1:MaxLength8;1024;BinaryString;Ascending;001000010011010101011000110
111 0100010101011000101001011100110001000010001001101000001001001001001000
112 0010110100000111001001000001001010100100100000000011000000101001011100
113 0010000001000101010100000100111100110111011011011000000010110111001101
114 0101100011000000010001000011000010100011101100001000001000100000000...
115
116 FingerprintsBitVector;PathLengthBits:AtomicInvariantsAtomTypes:MinLeng
117 th1:MaxLength8;1024;HexadecimalString;Ascending;48caa1315d82d91122b029
118 42861c9409a4208182d12015509767bd0867653604481a8b1288000056090583603078
119 9cedae54e26596889ab121309800900490515224208421502120a0dd9200509723ae89
120 00024181b86c0122821d4e4880c38620dab280824b455404009f082003d52c212b4e6d
121 6ea05280140069c780290c43
122
123 FingerprintsVector;PathLengthCount:AtomicInvariantsAtomTypes:MinLength
124 1:MaxLength8;432;NumericalValues;IDsAndValuesPairsString;C.X1.BO1.H3 2
125 C.X2.BO2.H2 4 C.X2.BO3.H1 14 C.X3.BO3.H1 3 C.X3.BO4 10 F.X1.BO1 1 N.X
126 2.BO2.H1 1 N.X3.BO3 1 O.X1.BO1.H1 3 O.X1.BO2 2 C.X1.BO1.H3C.X3.BO3.H1
127 2 C.X2.BO2.H2C.X2.BO2.H2 1 C.X2.BO2.H2C.X3.BO3.H1 4 C.X2.BO2.H2C.X3.BO
128 4 1 C.X2.BO2.H2N.X3.BO3 1 C.X2.BO3.H1:C.X2.BO3.H1 10 C.X2.BO3.H1:C....
129
130 FingerprintsVector;PathLengthCount:DREIDINGAtomTypes:MinLength1:MaxLen
131 gth8;410;NumericalValues;IDsAndValuesPairsString;C_2 2 C_3 9 C_R 22 F_
132 1 N_3 1 N_R 1 O_2 2 O_3 3 C_2=O_2 2 C_2C_3 1 C_2C_R 1 C_2N_3 1 C_2O_3
133 1 C_3C_3 7 C_3C_R 1 C_3N_R 1 C_3O_3 2 C_R:C_R 21 C_R:N_R 2 C_RC_R 2 C
134 _RF_ 1 C_RN_3 1 C_2C_3C_3 1 C_2C_R:C_R 2 C_2N_3C_R 1 C_3C_2=O_2 1 C_3C
135 _2O_3 1 C_3C_3C_3 5 C_3C_3C_R 2 C_3C_3N_R 1 C_3C_3O_3 4 C_3C_R:C_R ...
136
137 FingerprintsVector;PathLengthCount:EStateAtomTypes:MinLength1:MaxLengt
138 h8;454;NumericalValues;IDsAndValuesPairsString;aaCH 14 aasC 8 aasN 1 d
139 O 2 dssC 2 sCH3 2 sF 1 sOH 3 ssCH2 4 ssNH 1 sssCH 3 aaCH:aaCH 10 aaCH:
140 aasC 8 aasC:aasC 3 aasC:aasN 2 aasCaasC 2 aasCdssC 1 aasCsF 1 aasCssNH
141 1 aasCsssCH 1 aasNssCH2 1 dO=dssC 2 dssCsOH 1 dssCssCH2 1 dssCssNH 1
142 sCH3sssCH 2 sOHsssCH 2 ssCH2ssCH2 1 ssCH2sssCH 4 aaCH:aaCH:aaCH 6 a...
143
144 FingerprintsVector;PathLengthCount:FunctionalClassAtomTypes:MinLength1
145 :MaxLength8;404;NumericalValues;IDsAndValuesPairsString;Ar 22 Ar.HBA 1
146 HBA 2 HBA.HBD 3 HBD 1 Hal 1 NI 1 None 10 Ar.HBA:Ar 2 Ar.HBANone 1 Ar:
147 Ar 21 ArAr 2 ArHBD 1 ArHal 1 ArNone 2 HBA.HBDNI 1 HBA.HBDNone 2 HBA=NI
148 1 HBA=None 1 HBDNone 1 NINone 1 NoneNone 7 Ar.HBA:Ar:Ar 2 Ar.HBA:ArAr
149 1 Ar.HBA:ArNone 1 Ar.HBANoneNone 1 Ar:Ar.HBA:Ar 1 Ar:Ar.HBANone 2 ...
150
151 FingerprintsVector;PathLengthCount:MMFF94AtomTypes:MinLength1:MaxLengt
152 h8;463;NumericalValues;IDsAndValuesPairsString;C5A 2 C5B 2 C=ON 1 CB 1
153 8 COO 1 CR 9 F 1 N5 1 NC=O 1 O=CN 1 O=CO 1 OC=O 1 OR 2 C5A:C5B 2 C5A:N
154 5 2 C5ACB 1 C5ACR 1 C5B:C5B 1 C5BC=ON 1 C5BCB 1 C=ON=O=CN 1 C=ONNC=O 1
155 CB:CB 18 CBF 1 CBNC=O 1 COO=O=CO 1 COOCR 1 COOOC=O 1 CRCR 7 CRN5 1 CR
156 OR 2 C5A:C5B:C5B 2 C5A:C5BC=ON 1 C5A:C5BCB 1 C5A:N5:C5A 1 C5A:N5CR ...
157
158 FingerprintsVector;PathLengthCount:SLogPAtomTypes:MinLength1:MaxLength
159 8;518;NumericalValues;IDsAndValuesPairsString;C1 5 C10 1 C11 1 C14 1 C
160 18 14 C20 4 C21 2 C22 1 C5 2 CS 2 F 1 N11 1 N4 1 O10 1 O2 3 O9 1 C10C1
161 1 C10N11 1 C11C1 2 C11C21 1 C14:C18 2 C14F 1 C18:C18 10 C18:C20 4 C18
162 :C22 2 C1C5 1 C1CS 4 C20:C20 1 C20:C21 1 C20:N11 1 C20C20 2 C21:C21 1
163 C21:N11 1 C21C5 1 C22N4 1 C5=O10 1 C5=O9 1 C5N4 1 C5O2 1 CSO2 2 C10...
164
165 FingerprintsVector;PathLengthCount:SYBYLAtomTypes:MinLength1:MaxLength
166 8;412;NumericalValues;IDsAndValuesPairsString;C.2 2 C.3 9 C.ar 22 F 1
167 N.am 1 N.ar 1 O.2 1 O.3 2 O.co2 2 C.2=O.2 1 C.2=O.co2 1 C.2C.3 1 C.2C.
168 ar 1 C.2N.am 1 C.2O.co2 1 C.3C.3 7 C.3C.ar 1 C.3N.ar 1 C.3O.3 2 C.ar:C
169 .ar 21 C.ar:N.ar 2 C.arC.ar 2 C.arF 1 C.arN.am 1 C.2C.3C.3 1 C.2C.ar:C
170 .ar 2 C.2N.amC.ar 1 C.3C.2=O.co2 1 C.3C.2O.co2 1 C.3C.3C.3 5 C.3C.3...
171
172 FingerprintsVector;PathLengthCount:TPSAAtomTypes:MinLength1:MaxLength8
173 ;331;NumericalValues;IDsAndValuesPairsString;N21 1 N7 1 None 34 O3 2 O
174 4 3 N21:None 2 N21None 1 N7None 2 None:None 21 None=O3 2 NoneNone 13 N
175 oneO4 3 N21:None:None 2 N21:NoneNone 2 N21NoneNone 1 N7None:None 2 N7N
176 one=O3 1 N7NoneNone 1 None:N21:None 1 None:N21None 2 None:None:None 20
177 None:NoneNone 12 NoneN7None 1 NoneNone=O3 2 NoneNoneNone 8 NoneNon...
178
179 FingerprintsVector;PathLengthCount:UFFAtomTypes:MinLength1:MaxLength8;
180 410;NumericalValues;IDsAndValuesPairsString;C_2 2 C_3 9 C_R 22 F_ 1 N_
181 3 1 N_R 1 O_2 2 O_3 3 C_2=O_2 2 C_2C_3 1 C_2C_R 1 C_2N_3 1 C_2O_3 1 C_
182 3C_3 7 C_3C_R 1 C_3N_R 1 C_3O_3 2 C_R:C_R 21 C_R:N_R 2 C_RC_R 2 C_RF_
183 1 C_RN_3 1 C_2C_3C_3 1 C_2C_R:C_R 2 C_2N_3C_R 1 C_3C_2=O_2 1 C_3C_2O_3
184 1 C_3C_3C_3 5 C_3C_3C_R 2 C_3C_3N_R 1 C_3C_3O_3 4 C_3C_R:C_R 1 C_3...
185
186 METHODS
187 new
188 $NewPathLengthFingerprints = new PathLengthFingerprints(
189 %NamesAndValues);
190
191 Using specified *PathLengthFingerprints* property names and values
192 hash, new method creates a new object and returns a reference to
193 newly created PathLengthFingerprints object. By default, the
194 following properties are initialized:
195
196 Molecule = '';
197 Type = ''
198 Size = 1024
199 MinSize = 32
200 MaxSize = 2**32
201 NumOfBitsToSetPerPath = 1
202 MinLength = 1
203 MaxLength = 8
204 AllowSharedBonds = 1
205 AllowRings = 1
206 UseBondSymbols = 1
207 UseUniquePaths = ''
208 AtomIdentifierType = ''
209 SetAtomicInvariantsToUse = ['AS']
210 FunctionalClassesToUse = ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal']
211
212 Examples:
213
214 $PathLengthFingerprints = new PathLengthFingerprints(
215 'Molecule' => $Molecule,
216 'Type' => 'PathLengthBits',
217 'AtomIdentifierType' =
218 'AtomicInvariantsAtomTypes');
219
220 $PathLengthFingerprints = new PathLengthFingerprints(
221 'Molecule' => $Molecule,
222 'Type' => 'PathLengthBits',
223 'Size' => 1024,
224 'MinLength' => 1,
225 'MaxLength' => 8,
226 'AllowRings' => 1,
227 'AllowSharedBonds' => 1,
228 'UseBondSymbols' => 1,
229 'UseUniquePaths' => 1,
230 'AtomIdentifierType' =
231 'AtomicInvariantsAtomTypes',
232 'AtomicInvariantsToUse' => ['AS']);
233
234 $PathLengthFingerprints = new PathLengthFingerprints(
235 'Molecule' => $Molecule,
236 'Type' => 'PathLengthCount',
237 'MinLength' => 1,
238 'MaxLength' => 8,
239 'AllowRings' => 1,
240 'AllowSharedBonds' => 1,
241 'UseBondSymbols' => 1,
242 'UseUniquePaths' => 1,
243 'AtomIdentifierType' =>
244 'AtomicInvariantsAtomTypes',
245 'AtomicInvariantsToUse' => ['AS']);
246
247 $PathLengthFingerprints = new PathLengthFingerprints(
248 'Molecule' => $Molecule,
249 'Type' => 'PathLengthBits',
250 'AtomIdentifierType' =
251 'SLogPAtomTypes');
252
253 $PathLengthFingerprints = new PathLengthFingerprints(
254 'Molecule' => $Molecule,
255 'Type' => 'PathLengthCount',
256 'AtomIdentifierType' =
257 'SYBYLAtomTypes');
258
259 $PathLengthFingerprints = new PathLengthFingerprints(
260 'Molecule' => $Molecule,
261 'Type' => 'PathLengthBits',
262 'AtomIdentifierType' =
263 'FunctionalClassAtomTypes',
264 'FunctionalClassesToUse' => ['HBD', 'HBA', 'Ar']);
265
266 $PathLengthFingerprints->GenerateFingerprints();
267 print "$PathLengthFingerprints\n";
268
269 GetDescription
270 $Description = $PathLengthFingerprints->GetDescription();
271
272 Returns a string containing description of path length fingerprints.
273
274 GenerateFingerprints
275 $PathLengthFingerprints->GenerateFingerprints();
276
277 Generates path length fingerprints and returns
278 *PathLengthFingerprints*.
279
280 SetMaxLength
281 $PathLengthFingerprints->SetMaxLength($Length);
282
283 Sets maximum value of atom path length to be used during atom path
284 length fingerprints generation and returns *PathLengthFingerprints*
285
286 SetAtomIdentifierType
287 $PathLengthFingerprints->SetAtomIdentifierType();
288
289 Sets atom *IdentifierType* to use during path length fingerprints
290 generation and returns *PathLengthFingerprints*.
291
292 Possible values: *AtomicInvariantsAtomTypes, DREIDINGAtomTypes,
293 EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes,
294 SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes*.
295
296 SetAtomicInvariantsToUse
297 $PathLengthFingerprints->SetAtomicInvariantsToUse($ValuesRef);
298 $PathLengthFingerprints->SetAtomicInvariantsToUse(@Values);
299
300 Sets atomic invariants to use during *AtomicInvariantsAtomTypes*
301 value of *AtomIdentifierType* for path length fingerprints
302 generation and returns *PathLengthFingerprints*.
303
304 Possible values for atomic invariants are: *AS, X, BO, LBO, SB, DB,
305 TB, H, Ar, RA, FC, MN, SM*. Default value: *AS*.
306
307 The atomic invariants abbreviations correspond to:
308
309 AS = Atom symbol corresponding to element symbol
310
311 X<n> = Number of non-hydrogen atom neighbors or heavy atoms
312 BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms
313 LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms
314 SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms
315 DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms
316 TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms
317 H<n> = Number of implicit and explicit hydrogens for atom
318 Ar = Aromatic annotation indicating whether atom is aromatic
319 RA = Ring atom annotation indicating whether atom is a ring
320 FC<+n/-n> = Formal charge assigned to atom
321 MN<n> = Mass number indicating isotope other than most abundant isotope
322 SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or
323 3 (triplet)
324
325 Atom type generated by AtomTypes::AtomicInvariantsAtomTypes class
326 corresponds to:
327
328 AS.X<n>.BO<n>.LBO<n>.<SB><n>.<DB><n>.<TB><n>.H<n>.Ar.RA.FC<+n/-n>.MN<n>.SM<n>
329
330 Except for AS which is a required atomic invariant in atom types,
331 all other atomic invariants are optional. Atom type specification
332 doesn't include atomic invariants with zero or undefined values.
333
334 In addition to usage of abbreviations for specifying atomic
335 invariants, the following descriptive words are also allowed:
336
337 X : NumOfNonHydrogenAtomNeighbors or NumOfHeavyAtomNeighbors
338 BO : SumOfBondOrdersToNonHydrogenAtoms or SumOfBondOrdersToHeavyAtoms
339 LBO : LargestBondOrderToNonHydrogenAtoms or LargestBondOrderToHeavyAtoms
340 SB : NumOfSingleBondsToNonHydrogenAtoms or NumOfSingleBondsToHeavyAtoms
341 DB : NumOfDoubleBondsToNonHydrogenAtoms or NumOfDoubleBondsToHeavyAtoms
342 TB : NumOfTripleBondsToNonHydrogenAtoms or NumOfTripleBondsToHeavyAtoms
343 H : NumOfImplicitAndExplicitHydrogens
344 Ar : Aromatic
345 RA : RingAtom
346 FC : FormalCharge
347 MN : MassNumber
348 SM : SpinMultiplicity
349
350 *AtomTypes::AtomicInvariantsAtomTypes* module is used to assign
351 atomic invariant atom types.
352
353 SetFunctionalClassesToUse
354 $PathLengthFingerprints->SetFunctionalClassesToUse($ValuesRef);
355 $PathLengthFingerprints->SetFunctionalClassesToUse(@Values);
356
357 Sets functional classes invariants to use during
358 *FunctionalClassAtomTypes* value of *AtomIdentifierType* for path
359 length fingerprints generation and returns *PathLengthFingerprints*.
360
361 Possible values for atom functional classes are: *Ar, CA, H, HBA,
362 HBD, Hal, NI, PI, RA*. Default value [ Ref 24 ]:
363 *HBD,HBA,PI,NI,Ar,Hal*.
364
365 The functional class abbreviations correspond to:
366
367 HBD: HydrogenBondDonor
368 HBA: HydrogenBondAcceptor
369 PI : PositivelyIonizable
370 NI : NegativelyIonizable
371 Ar : Aromatic
372 Hal : Halogen
373 H : Hydrophobic
374 RA : RingAtom
375 CA : ChainAtom
376
377 Functional class atom type specification for an atom corresponds to:
378
379 Ar.CA.H.HBA.HBD.Hal.NI.PI.RA or None
380
381 *AtomTypes::FunctionalClassAtomTypes* module is used to assign
382 functional class atom types. It uses following definitions [ Ref
383 60-61, Ref 65-66 ]:
384
385 HydrogenBondDonor: NH, NH2, OH
386 HydrogenBondAcceptor: N[!H], O
387 PositivelyIonizable: +, NH2
388 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
389
390 SetMinLength
391 $PathLengthFingerprints->SetMinLength($Length);
392
393 Sets minimum value of atom path length to be used during atom path
394 length fingerprints generation and returns *PathLengthFingerprints*.
395
396 SetMaxLength
397 $PathLengthFingerprints->SetMaxLength($Length);
398
399 Sets maximum value of atom path length to be used during atom path
400 length fingerprints generation and returns *PathLengthFingerprints*.
401
402 SetNumOfBitsToSetPerPath
403 $PathLengthFingerprints->SetNumOfBitsToSetPerPath($NumOfBits);
404
405 Sets number of bits to set for each path during *PathLengthBits*
406 Type during path length fingerprints generation and returns
407 *PathLengthFingerprints*.
408
409 SetType
410 $PathLengthFingerprints->SetType($Type);
411
412 Sets type of path length fingerprints and returns
413 *PathLengthFingerprints*. Possible values: *PathLengthBits or
414 PathLengthCount*.
415
416 StringifyPathLengthFingerprints
417 $String = $PathLengthFingerprints->StringifyPathLengthFingerprints();
418
419 Returns a string containing information about
420 *PathLengthFingerprints* object.
421
422 AUTHOR
423 Manish Sud <msud@san.rr.com>
424
425 SEE ALSO
426 Fingerprints.pm, FingerprintsStringUtil.pm,
427 AtomNeighborhoodsFingerprints.pm, AtomTypesFingerprints.pm,
428 EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
429 MACCSKeys.pm, TopologicalAtomPairsFingerprints.pm,
430 TopologicalAtomTripletsFingerprints.pm,
431 TopologicalAtomTorsionsFingerprints.pm,
432 TopologicalPharmacophoreAtomPairsFingerprints.pm,
433 TopologicalPharmacophoreAtomTripletsFingerprints.pm
434
435 COPYRIGHT
436 Copyright (C) 2015 Manish Sud. All rights reserved.
437
438 This file is part of MayaChemTools.
439
440 MayaChemTools is free software; you can redistribute it and/or modify it
441 under the terms of the GNU Lesser General Public License as published by
442 the Free Software Foundation; either version 3 of the License, or (at
443 your option) any later version.
444