0
|
1 NAME
|
|
2 AtomNeighborhoodsFingerprints
|
|
3
|
|
4 SYNOPSIS
|
|
5 use Fingerprints::AtomNeighborhoodsFingerprints;
|
|
6
|
|
7 use Fingerprints::AtomNeighborhoodsFingerprints qw(:all);
|
|
8
|
|
9 DESCRIPTION
|
|
10 AtomNeighborhoodsFingerprints [ Ref 53-56, Ref 73 ] class provides the
|
|
11 following methods:
|
|
12
|
|
13 new, GenerateFingerprints, GetDescription, SetAtomIdentifierType,
|
|
14 SetAtomicInvariantsToUse, SetFunctionalClassesToUse,
|
|
15 SetMaxNeighborhoodRadius, SetMinNeighborhoodRadius,
|
|
16 StringifyAtomNeighborhoodsFingerprints
|
|
17
|
|
18 AtomNeighborhoodsFingerprints is derived from Fingerprints class which
|
|
19 in turn is derived from ObjectProperty base class that provides methods
|
|
20 not explicitly defined in AtomNeighborhoodsFingerprints, Fingerprints or
|
|
21 ObjectProperty classes using Perl's AUTOLOAD functionality. These
|
|
22 methods are generated on-the-fly for a specified object property:
|
|
23
|
|
24 Set<PropertyName>(<PropertyValue>);
|
|
25 $PropertyValue = Get<PropertyName>();
|
|
26 Delete<PropertyName>();
|
|
27
|
|
28 The current release of MayaChemTools supports generation of
|
|
29 AtomNeighborhoodsFingerprints corresponding to following
|
|
30 AtomIdentifierTypes:
|
|
31
|
|
32 AtomicInvariantsAtomTypes, DREIDINGAtomTypes, EStateAtomTypes,
|
|
33 FunctionalClassAtomTypes, MMFF94AtomTypes, SLogPAtomTypes,
|
|
34 SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes
|
|
35
|
|
36 Based on the values specified for AtomIdentifierType along with other
|
|
37 specified sucb as AtomicInvariantsToUse and FunctionalClassesToUse,
|
|
38 initial atom types are assigned to all non-hydrogen atoms in a molecule.
|
|
39 Using atom neighborhoods around each non-hydrogen central atom
|
|
40 corresponding to radii between specified values MinNeighborhoodRadius
|
|
41 and MaxNeighborhoodRadius, unique atom types at each radii level are
|
|
42 counted and an atom neighborhood identifier is generated.
|
|
43
|
|
44 The format of an atom neighborhood identifier around a central
|
|
45 non-hydrogen atom at a specific radius is:
|
|
46
|
|
47 NR<n>-<AtomType>-ATC<n>
|
|
48
|
|
49 NR: Neighborhood radius
|
|
50 AtomType: Assigned atom type
|
|
51 ATC: Atom type count
|
|
52
|
|
53 The atom neighborhood identifier for non-hydrogen central atom
|
|
54 corresponding to all specified radii is generated by concatenating
|
|
55 neighborhood identifiers at each radii by colon as a delimiter:
|
|
56
|
|
57 NR<n>-<AtomType>-ATC<n>:NR<n>-<AtomType>-ATC<n>:...
|
|
58
|
|
59 The atom neighborhood identifiers for all non-hydrogen central atoms at
|
|
60 all specified radii are concatenated using space as a delimiter and
|
|
61 constitute atom neighborhood fingerprint of the molecule.
|
|
62
|
|
63 The current release of MayaChemTools generates the following types of
|
|
64 atom neighborhoods fingerprints vector strings:
|
|
65
|
|
66 FingerprintsVector;AtomNeighborhoods:AtomicInvariantsAtomTypes:MinRadi
|
|
67 us0:MaxRadius2;41;AlphaNumericalValues;ValuesString;NR0-C.X1.BO1.H3-AT
|
|
68 C1:NR1-C.X3.BO3.H1-ATC1:NR2-C.X1.BO1.H3-ATC1:NR2-C.X3.BO4-ATC1 NR0-C.X
|
|
69 1.BO1.H3-ATC1:NR1-C.X3.BO3.H1-ATC1:NR2-C.X1.BO1.H3-ATC1:NR2-C.X3.BO4-A
|
|
70 TC1 NR0-C.X2.BO2.H2-ATC1:NR1-C.X2.BO2.H2-ATC1:NR1-C.X3.BO3.H1-ATC1:NR2
|
|
71 -C.X2.BO2.H2-ATC1:NR2-N.X3.BO3-ATC1:NR2-O.X1.BO1.H1-ATC1 NR0-C.X2.B...
|
|
72
|
|
73 FingerprintsVector;AtomNeighborhoods:DREIDINGAtomTypes:MinRadius0:MaxR
|
|
74 adius2;41;AlphaNumericalValues;ValuesString;NR0-C_2-ATC1:NR1-C_3-ATC1:
|
|
75 NR1-O_2-ATC1:NR1-O_3-ATC1:NR2-C_3-ATC1 NR0-C_2-ATC1:NR1-C_R-ATC1:NR1-N
|
|
76 _3-ATC1:NR1-O_2-ATC1:NR2-C_R-ATC3 NR0-C_3-ATC1:NR1-C_2-ATC1:NR1-C_3-AT
|
|
77 C1:NR2-C_3-ATC1:NR2-O_2-ATC1:NR2-O_3-ATC2 NR0-C_3-ATC1:NR1-C_3-ATC1:NR
|
|
78 1-N_R-ATC1:NR2-C_3-ATC1:NR2-C_R-ATC2 NR0-C_3-ATC1:NR1-C_3-ATC1:NR2-...
|
|
79
|
|
80 FingerprintsVector;AtomNeighborhoods:EStateAtomTypes:MinRadius0:MaxRad
|
|
81 ius2;41;AlphaNumericalValues;ValuesString;NR0-aaCH-ATC1:NR1-aaCH-ATC1:
|
|
82 NR1-aasC-ATC1:NR2-aaCH-ATC1:NR2-aasC-ATC1:NR2-sF-ATC1 NR0-aaCH-ATC1:NR
|
|
83 1-aaCH-ATC1:NR1-aasC-ATC1:NR2-aaCH-ATC1:NR2-aasC-ATC1:NR2-sF-ATC1 NR0-
|
|
84 aaCH-ATC1:NR1-aaCH-ATC1:NR1-aasC-ATC1:NR2-aaCH-ATC1:NR2-aasC-ATC2 NR0-
|
|
85 aaCH-ATC1:NR1-aaCH-ATC1:NR1-aasC-ATC1:NR2-aaCH-ATC1:NR2-aasC-ATC2 N...
|
|
86
|
|
87 FingerprintsVector;AtomNeighborhoods:FunctionalClassAtomTypes:MinRadiu
|
|
88 s0:MaxRadius2;41;AlphaNumericalValues;ValuesString;NR0-Ar-ATC1:NR1-Ar-
|
|
89 ATC1:NR1-Ar.HBA-ATC1:NR1-None-ATC1:NR2-Ar-ATC2:NR2-None-ATC4 NR0-Ar-AT
|
|
90 C1:NR1-Ar-ATC2:NR1-Ar.HBA-ATC1:NR2-Ar-ATC5:NR2-None-ATC1 NR0-Ar-ATC1:N
|
|
91 R1-Ar-ATC2:NR1-HBD-ATC1:NR2-Ar-ATC2:NR2-None-ATC1 NR0-Ar-ATC1:NR1-Ar-A
|
|
92 TC2:NR1-Hal-ATC1:NR2-Ar-ATC2 NR0-Ar-ATC1:NR1-Ar-ATC2:NR1-None-ATC1:...
|
|
93
|
|
94 FingerprintsVector;AtomNeighborhoods:MMFF94AtomTypes:MinRadius0:MaxRad
|
|
95 ius2;41;AlphaNumericalValues;ValuesString;NR0-C5A-ATC1:NR1-C5B-ATC1:NR
|
|
96 1-CB-ATC1:NR1-N5-ATC1:NR2-C5A-ATC1:NR2-C5B-ATC1:NR2-CB-ATC3:NR2-CR-ATC
|
|
97 1 NR0-C5A-ATC1:NR1-C5B-ATC1:NR1-CR-ATC1:NR1-N5-ATC1:NR2-C5A-ATC1:NR2-C
|
|
98 5B-ATC1:NR2-C=ON-ATC1:NR2-CR-ATC3 NR0-C5B-ATC1:NR1-C5A-ATC1:NR1-C5B-AT
|
|
99 C1:NR1-C=ON-ATC1:NR2-C5A-ATC1:NR2-CB-ATC1:NR2-CR-ATC1:NR2-N5-ATC1:N...
|
|
100
|
|
101 FingerprintsVector;AtomNeighborhoods:SLogPAtomTypes:MinRadius0:MaxRadi
|
|
102 us2;41;AlphaNumericalValues;ValuesString;NR0-C1-ATC1:NR1-C10-ATC1:NR1-
|
|
103 CS-ATC1:NR2-C1-ATC1:NR2-N11-ATC1:NR2-O2-ATC1 NR0-C1-ATC1:NR1-C11-ATC1:
|
|
104 NR2-C1-ATC1:NR2-C21-ATC1 NR0-C1-ATC1:NR1-C11-ATC1:NR2-C1-ATC1:NR2-C21-
|
|
105 ATC1 NR0-C1-ATC1:NR1-C5-ATC1:NR1-CS-ATC1:NR2-C1-ATC1:NR2-O2-ATC2:NR2-O
|
|
106 9-ATC1 NR0-C1-ATC1:NR1-CS-ATC2:NR2-C1-ATC2:NR2-O2-ATC2 NR0-C10-ATC1...
|
|
107
|
|
108 FingerprintsVector;AtomNeighborhoods:SYBYLAtomTypes:MinRadius0:MaxRadi
|
|
109 us2;41;AlphaNumericalValues;ValuesString;NR0-C.2-ATC1:NR1-C.3-ATC1:NR1
|
|
110 -O.co2-ATC2:NR2-C.3-ATC1 NR0-C.2-ATC1:NR1-C.ar-ATC1:NR1-N.am-ATC1:NR1-
|
|
111 O.2-ATC1:NR2-C.ar-ATC3 NR0-C.3-ATC1:NR1-C.2-ATC1:NR1-C.3-ATC1:NR2-C.3-
|
|
112 ATC1:NR2-O.3-ATC1:NR2-O.co2-ATC2 NR0-C.3-ATC1:NR1-C.3-ATC1:NR1-N.ar-AT
|
|
113 C1:NR2-C.3-ATC1:NR2-C.ar-ATC2 NR0-C.3-ATC1:NR1-C.3-ATC1:NR2-C.3-ATC...
|
|
114
|
|
115 FingerprintsVector;AtomNeighborhoods:TPSAAtomTypes:MinRadius0:MaxRadiu
|
|
116 s2;41;AlphaNumericalValues;ValuesString;NR0-N21-ATC1:NR1-None-ATC3:NR2
|
|
117 -None-ATC5 NR0-N7-ATC1:NR1-None-ATC2:NR2-None-ATC3:NR2-O3-ATC1 NR0-Non
|
|
118 e-ATC1:NR1-N21-ATC1:NR1-None-ATC1:NR2-None-ATC3 NR0-None-ATC1:NR1-N21-
|
|
119 ATC1:NR1-None-ATC2:NR2-None-ATC6 NR0-None-ATC1:NR1-N21-ATC1:NR1-None-A
|
|
120 TC2:NR2-None-ATC6 NR0-None-ATC1:NR1-N7-ATC1:NR1-None-ATC1:NR1-O3-AT...
|
|
121
|
|
122 FingerprintsVector;AtomNeighborhoods:UFFAtomTypes:MinRadius0:MaxRadius
|
|
123 2;41;AlphaNumericalValues;ValuesString;NR0-C_2-ATC1:NR1-C_3-ATC1:NR1-O
|
|
124 _2-ATC1:NR1-O_3-ATC1:NR2-C_3-ATC1 NR0-C_2-ATC1:NR1-C_R-ATC1:NR1-N_3-AT
|
|
125 C1:NR1-O_2-ATC1:NR2-C_R-ATC3 NR0-C_3-ATC1:NR1-C_2-ATC1:NR1-C_3-ATC1:NR
|
|
126 2-C_3-ATC1:NR2-O_2-ATC1:NR2-O_3-ATC2 NR0-C_3-ATC1:NR1-C_3-ATC1:NR1-N_R
|
|
127 -ATC1:NR2-C_3-ATC1:NR2-C_R-ATC2 NR0-C_3-ATC1:NR1-C_3-ATC1:NR2-C_3-A...
|
|
128
|
|
129 METHODS
|
|
130 new
|
|
131 $NewAtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
132 %NamesAndValues);
|
|
133
|
|
134 Using specified *AtomNeighborhoodsFingerprints* property names and
|
|
135 values hash, new method creates a new object and returns a reference
|
|
136 to newly created AtomNeighborhoodsFingerprints object. By default,
|
|
137 the following properties are initialized:
|
|
138
|
|
139 Molecule = ''
|
|
140 Type = 'AtomNeighborhoods'
|
|
141 MinNeighborhoodRadius = 0
|
|
142 MaxNeighborhoodRadius = 2
|
|
143 AtomIdentifierType = ''
|
|
144 AtomicInvariantsToUse = ['AS', 'X', 'BO', 'H', 'FC', 'MN']
|
|
145 FunctionalClassesToUse = ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal']
|
|
146
|
|
147 Examples:
|
|
148
|
|
149 $AtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
150 'Molecule' => $Molecule,
|
|
151 'AtomIdentifierType' =>
|
|
152 "AtomicInvariantsAtomTypes");
|
|
153
|
|
154 $AtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
155 'Molecule' => $Molecule,
|
|
156 'MinNeighborhoodRadius' => 0,
|
|
157 'MaxNeighborhoodRadius' => 2,
|
|
158 'AtomIdentifierType' =>
|
|
159 'AtomicInvariantsAtomTypes',
|
|
160 'AtomicInvariantsToUse' =>
|
|
161 ['AS', 'X', 'BO', 'H', 'FC'] );
|
|
162
|
|
163 $AtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
164 'Molecule' => $Molecule,
|
|
165 'AtomIdentifierType' =>
|
|
166 'SYBYLAtomTypes');
|
|
167
|
|
168 $AtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
169 'Molecule' => $Molecule,
|
|
170 'AtomIdentifierType' =>
|
|
171 'MMFF94AtomTypes');
|
|
172
|
|
173 $AtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
174 'Molecule' => $Molecule,
|
|
175 'AtomIdentifierType' =>
|
|
176 'AtomicInvariantsAtomTypes');
|
|
177
|
|
178 $AtomNeighborhoodsFingerprints = new AtomNeighborhoodsFingerprints(
|
|
179 'Molecule' => $Molecule,
|
|
180 'MinNeighborhoodRadius' => 0,
|
|
181 'MaxNeighborhoodRadius' => 2,
|
|
182 'AtomIdentifierType' =>
|
|
183 'FunctionalClassAtomTypes',
|
|
184 'FunctionalClassesToUse' =>
|
|
185 ['HBD', 'HBA', 'PI', 'NI', 'Ar', 'Hal'] );
|
|
186
|
|
187 $AtomNeighborhoodsFingerprints->GenerateFingerprints();
|
|
188 print "$AtomNeighborhoodsFingerprints\n";
|
|
189
|
|
190 GenerateFingerprints
|
|
191 $AtomNeighborhoodsFingerprints->GenerateFingerprints();
|
|
192
|
|
193 Generates atom neighborhood fingerprints and returns
|
|
194 *AtomNeighborhoodsFingerprints*.
|
|
195
|
|
196 GetDescription
|
|
197 $Description = $AtomNeighborhoodsFingerprints->GetDescription();
|
|
198
|
|
199 Returns a string containing description of atom neighborhood
|
|
200 fingerprints.
|
|
201
|
|
202 SetAtomIdentifierType
|
|
203 $AtomNeighborhoodsFingerprints->SetAtomIdentifierType($IdentifierType);
|
|
204
|
|
205 Sets atom *IdentifierType* to use during atom neighborhood
|
|
206 fingerprints generation and returns *AtomNeighborhoodsFingerprints*.
|
|
207
|
|
208 Possible values: *AtomicInvariantsAtomTypes, DREIDINGAtomTypes,
|
|
209 EStateAtomTypes, FunctionalClassAtomTypes, MMFF94AtomTypes,
|
|
210 SLogPAtomTypes, SYBYLAtomTypes, TPSAAtomTypes, UFFAtomTypes*.
|
|
211
|
|
212 SetAtomicInvariantsToUse
|
|
213 $AtomNeighborhoodsFingerprints->SetAtomicInvariantsToUse($ValuesRef);
|
|
214 $AtomNeighborhoodsFingerprints->SetAtomicInvariantsToUse(@Values);
|
|
215
|
|
216 Sets atomic invariants to use during *AtomicInvariantsAtomTypes*
|
|
217 value of *AtomIdentifierType* for atom neighborhood fingerprints
|
|
218 generation and returns *AtomNeighborhoodsFingerprints*.
|
|
219
|
|
220 Possible values for atomic invariants are: *AS, X, BO, LBO, SB, DB,
|
|
221 TB, H, Ar, RA, FC, MN, SM*. Default value: *AS,X,BO,H,FC*.
|
|
222
|
|
223 The atomic invariants abbreviations correspond to:
|
|
224
|
|
225 AS = Atom symbol corresponding to element symbol
|
|
226
|
|
227 X<n> = Number of non-hydrogen atom neighbors or heavy atoms
|
|
228 BO<n> = Sum of bond orders to non-hydrogen atom neighbors or heavy atoms
|
|
229 LBO<n> = Largest bond order of non-hydrogen atom neighbors or heavy atoms
|
|
230 SB<n> = Number of single bonds to non-hydrogen atom neighbors or heavy atoms
|
|
231 DB<n> = Number of double bonds to non-hydrogen atom neighbors or heavy atoms
|
|
232 TB<n> = Number of triple bonds to non-hydrogen atom neighbors or heavy atoms
|
|
233 H<n> = Number of implicit and explicit hydrogens for atom
|
|
234 Ar = Aromatic annotation indicating whether atom is aromatic
|
|
235 RA = Ring atom annotation indicating whether atom is a ring
|
|
236 FC<+n/-n> = Formal charge assigned to atom
|
|
237 MN<n> = Mass number indicating isotope other than most abundant isotope
|
|
238 SM<n> = Spin multiplicity of atom. Possible values: 1 (singlet), 2 (doublet) or
|
|
239 3 (triplet)
|
|
240
|
|
241 Atom type generated by AtomTypes::AtomicInvariantsAtomTypes class
|
|
242 corresponds to:
|
|
243
|
|
244 AS.X<n>.BO<n>.LBO<n>.<SB><n>.<DB><n>.<TB><n>.H<n>.Ar.RA.FC<+n/-n>.MN<n>.SM<n>
|
|
245
|
|
246 Except for AS which is a required atomic invariant in atom types,
|
|
247 all other atomic invariants are optional. Atom type specification
|
|
248 doesn't include atomic invariants with zero or undefined values.
|
|
249
|
|
250 In addition to usage of abbreviations for specifying atomic
|
|
251 invariants, the following descriptive words are also allowed:
|
|
252
|
|
253 X : NumOfNonHydrogenAtomNeighbors or NumOfHeavyAtomNeighbors
|
|
254 BO : SumOfBondOrdersToNonHydrogenAtoms or SumOfBondOrdersToHeavyAtoms
|
|
255 LBO : LargestBondOrderToNonHydrogenAtoms or LargestBondOrderToHeavyAtoms
|
|
256 SB : NumOfSingleBondsToNonHydrogenAtoms or NumOfSingleBondsToHeavyAtoms
|
|
257 DB : NumOfDoubleBondsToNonHydrogenAtoms or NumOfDoubleBondsToHeavyAtoms
|
|
258 TB : NumOfTripleBondsToNonHydrogenAtoms or NumOfTripleBondsToHeavyAtoms
|
|
259 H : NumOfImplicitAndExplicitHydrogens
|
|
260 Ar : Aromatic
|
|
261 RA : RingAtom
|
|
262 FC : FormalCharge
|
|
263 MN : MassNumber
|
|
264 SM : SpinMultiplicity
|
|
265
|
|
266 *AtomTypes::AtomicInvariantsAtomTypes* module is used to assign
|
|
267 atomic invariant atom types.
|
|
268
|
|
269 SetFunctionalClassesToUse
|
|
270 $AtomNeighborhoodsFingerprints->SetFunctionalClassesToUse($ValuesRef);
|
|
271 $AtomNeighborhoodsFingerprints->SetFunctionalClassesToUse(@Values);
|
|
272
|
|
273 Sets functional classes invariants to use during
|
|
274 *FunctionalClassAtomTypes* value of *AtomIdentifierType* for atom
|
|
275 neighborhoods fingerprints generation and returns
|
|
276 *AtomNeighborhoodsFingerprints*.
|
|
277
|
|
278 Possible values for atom functional classes are: *Ar, CA, H, HBA,
|
|
279 HBD, Hal, NI, PI, RA*. Default value [ Ref 24 ]:
|
|
280 *HBD,HBA,PI,NI,Ar,Hal*.
|
|
281
|
|
282 The functional class abbreviations correspond to:
|
|
283
|
|
284 HBD: HydrogenBondDonor
|
|
285 HBA: HydrogenBondAcceptor
|
|
286 PI : PositivelyIonizable
|
|
287 NI : NegativelyIonizable
|
|
288 Ar : Aromatic
|
|
289 Hal : Halogen
|
|
290 H : Hydrophobic
|
|
291 RA : RingAtom
|
|
292 CA : ChainAtom
|
|
293
|
|
294 Functional class atom type specification for an atom corresponds to:
|
|
295
|
|
296 Ar.CA.H.HBA.HBD.Hal.NI.PI.RA or None
|
|
297
|
|
298 *AtomTypes::FunctionalClassAtomTypes* module is used to assign
|
|
299 functional class atom types. It uses following definitions [ Ref
|
|
300 60-61, Ref 65-66 ]:
|
|
301
|
|
302 HydrogenBondDonor: NH, NH2, OH
|
|
303 HydrogenBondAcceptor: N[!H], O
|
|
304 PositivelyIonizable: +, NH2
|
|
305 NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
|
|
306
|
|
307 SetMaxNeighborhoodRadius
|
|
308 $AtomNeighborhoodsFingerprints->SetMaxNeighborhoodRadius($Radius);
|
|
309
|
|
310 Sets maximum neighborhood radius to use during atom neighborhood
|
|
311 fingerprints generation and returns *AtomNeighborhoodsFingerprints*.
|
|
312
|
|
313 SetMinNeighborhoodRadius
|
|
314 $AtomNeighborhoodsFingerprints->SetMinNeighborhoodRadius($Radius);
|
|
315
|
|
316 Sets minimum neighborhood radius to use during atom neighborhood
|
|
317 fingerprints generation and returns *AtomNeighborhoodsFingerprints*.
|
|
318
|
|
319 StringifyAtomNeighborhoodsFingerprints
|
|
320 $String = $Fingerprints->StringifyAtomNeighborhoodsFingerprints();
|
|
321
|
|
322 Returns a string containing information about
|
|
323 *AtomNeighborhoodsFingerprints* object.
|
|
324
|
|
325 AUTHOR
|
|
326 Manish Sud <msud@san.rr.com>
|
|
327
|
|
328 SEE ALSO
|
|
329 Fingerprints.pm, FingerprintsStringUtil.pm, AtomTypesFingerprints.pm,
|
|
330 EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
|
|
331 MACCSKeys.pm, PathLengthFingerprints.pm,
|
|
332 TopologicalAtomPairsFingerprints.pm,
|
|
333 TopologicalAtomTripletsFingerprints.pm,
|
|
334 TopologicalAtomTorsionsFingerprints.pm,
|
|
335 TopologicalPharmacophoreAtomPairsFingerprints.pm,
|
|
336 TopologicalPharmacophoreAtomTripletsFingerprints.pm
|
|
337
|
|
338 COPYRIGHT
|
|
339 Copyright (C) 2015 Manish Sud. All rights reserved.
|
|
340
|
|
341 This file is part of MayaChemTools.
|
|
342
|
|
343 MayaChemTools is free software; you can redistribute it and/or modify it
|
|
344 under the terms of the GNU Lesser General Public License as published by
|
|
345 the Free Software Foundation; either version 3 of the License, or (at
|
|
346 your option) any later version.
|
|
347
|